diff --git a/cli/asc.json b/cli/asc.json index f94fb9fed9..34edc5a756 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -215,7 +215,7 @@ " simd SIMD types and operations.", " threads Threading and atomic operations.", " reference-types Reference types and operations.", - " gc Garbage collection (anyref, WIP).", + " gc Garbage collection (WIP).", "" ], "TODO_doesNothingYet": [ diff --git a/package-lock.json b/package-lock.json index 6eb1880e0a..342ea1609b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,39 +1,3130 @@ { "name": "assemblyscript", "version": "0.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "0.0.0", + "license": "Apache-2.0", + "dependencies": { + "binaryen": "100.0.0", + "long": "^4.0.0", + "source-map-support": "^0.5.19", + "ts-node": "^6.2.0" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "devDependencies": { + "@types/node": "^14.14.12", + "@typescript-eslint/eslint-plugin": "^4.9.1", + "@typescript-eslint/parser": "^4.9.1", + "diff": "^5.0.0", + "eslint": "^7.15.0", + "glob": "^7.1.6", + "physical-cpu-count": "^2.0.0", + "source-map-support": "^0.5.19", + "ts-loader": "^8.0.12", + "ts-node": "^6.2.0", + "typescript": "^4.1.2", + "webpack": "^5.10.0", + "webpack-cli": "^4.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/eslint": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", + "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.16.1.tgz", + "integrity": "sha512-SK777klBdlkUZpZLC1mPvyOWk9yAFCWmug13eAjVQ4/Q1LATE/NbcQL1xDHkptQkZOLnPmLUA1Y54m8dqYwnoQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.16.1", + "@typescript-eslint/scope-manager": "4.16.1", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz", + "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.16.1.tgz", + "integrity": "sha512-/c0LEZcDL5y8RyI1zLcmZMvJrsR6SM1uetskFkoh3dvqDKVXPsXI+wFB/CbVw7WkEyyTKobC1mUNp/5y6gRvXg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", + "debug": "^4.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz", + "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz", + "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz", + "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz", + "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.16.1", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binaryen": { + "version": "100.0.0", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0.tgz", + "integrity": "sha512-nxOt8d8/VXAuSVEtAWUdKrqpqCy365QqD223EzzB1GzS5himiZAfM/R5lXx+M/5q8TB8cYp3tYxv5rTjNTJveQ==", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001196", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001196.tgz", + "integrity": "sha512-CPvObjD3ovWrNBaXlAIGWmg2gQQuJ5YhuciUOjPRox6hIQttu8O+b51dx6VIpIY9ESd2d0Vac1RKpICdG4rGUg==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.681", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.681.tgz", + "integrity": "sha512-W6uYvSUTHuyX2DZklIESAqx57jfmGjUkd7Z3RWqLdj9Mmt39ylhBuvFXlskQnvBHj0MYXIeQI+mjiwVddZLSvA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/envinfo": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-module-lexer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz", + "integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "dev": true, + "dependencies": { + "mime-db": "1.46.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "dependencies": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "dev": true, + "dependencies": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-loader": { + "version": "8.0.17", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.17.tgz", + "integrity": "sha512-OeVfSshx6ot/TCxRwpBHQ/4lRzfgyTkvi7ghDVrLXOHzTbSK413ROgu/xNqM72i3AFeAIJgQy78FwSMKmOW68w==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-node": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz", + "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==", + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.24.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.3.tgz", + "integrity": "sha512-x7lrWZ7wlWAdyKdML6YPvfVZkhD1ICuIZGODE5SzKJjqI9A4SpqGTjGJTc6CwaHqn19gGaoOR3ONJ46nYsn9rw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.46", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.7.0", + "es-module-lexer": "^0.4.0", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.1", + "@webpack-cli/info": "^1.2.2", + "@webpack-cli/serve": "^1.3.0", + "colorette": "^1.2.1", + "commander": "^7.0.0", + "enquirer": "^2.3.6", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/init": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", + "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "engines": { + "node": ">=4" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, + "@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true + }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -43,57 +3134,33 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.19", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.4", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.4", "fastq": "^1.6.0" } }, @@ -118,364 +3185,274 @@ } }, "@types/estree": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", - "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", "dev": true }, "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/node": { - "version": "14.14.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.12.tgz", - "integrity": "sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g==", + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.9.1.tgz", - "integrity": "sha512-QRLDSvIPeI1pz5tVuurD+cStNR4sle4avtHhxA+2uyixWGFjKzJ+EaFVRW6dA/jOgjV5DTAjOxboQkRDE8cRlQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.16.1.tgz", + "integrity": "sha512-SK777klBdlkUZpZLC1mPvyOWk9yAFCWmug13eAjVQ4/Q1LATE/NbcQL1xDHkptQkZOLnPmLUA1Y54m8dqYwnoQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.9.1", - "@typescript-eslint/scope-manager": "4.9.1", + "@typescript-eslint/experimental-utils": "4.16.1", + "@typescript-eslint/scope-manager": "4.16.1", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", "regexpp": "^3.0.0", "semver": "^7.3.2", "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@typescript-eslint/experimental-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.9.1.tgz", - "integrity": "sha512-c3k/xJqk0exLFs+cWSJxIjqLYwdHCuLWhnpnikmPQD2+NGAx9KjLYlBDcSI81EArh9FDYSL6dslAUSwILeWOxg==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz", + "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.9.1", - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/typescript-estree": "4.9.1", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.9.1.tgz", - "integrity": "sha512-Gv2VpqiomvQ2v4UL+dXlQcZ8zCX4eTkoIW+1aGVWT6yTO+6jbxsw7yQl2z2pPl/4B9qa5JXeIbhJpONKjXIy3g==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.16.1.tgz", + "integrity": "sha512-/c0LEZcDL5y8RyI1zLcmZMvJrsR6SM1uetskFkoh3dvqDKVXPsXI+wFB/CbVw7WkEyyTKobC1mUNp/5y6gRvXg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.9.1", - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/typescript-estree": "4.9.1", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@typescript-eslint/scope-manager": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.9.1.tgz", - "integrity": "sha512-sa4L9yUfD/1sg9Kl8OxPxvpUcqxKXRjBeZxBuZSSV1v13hjfEJkn84n0An2hN8oLQ1PmEl2uA6FkI07idXeFgQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz", + "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/visitor-keys": "4.9.1" + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1" } }, "@typescript-eslint/types": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.9.1.tgz", - "integrity": "sha512-fjkT+tXR13ks6Le7JiEdagnwEFc49IkOyys7ueWQ4O8k4quKPwPJudrwlVOJCUQhXo45PrfIvIarcrEjFTNwUA==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz", + "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.9.1.tgz", - "integrity": "sha512-bzP8vqwX6Vgmvs81bPtCkLtM/Skh36NE6unu6tsDeU/ZFoYthlTXbBmpIrvosgiDKlWTfb2ZpPELHH89aQjeQw==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz", + "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/visitor-keys": "4.9.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", - "lodash": "^4.17.15", "semver": "^7.3.2", "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@typescript-eslint/visitor-keys": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.9.1.tgz", - "integrity": "sha512-9gspzc6UqLQHd7lXQS7oWs+hrYggspv/rk6zzEMhCbYwPE/sF7oxo7GAjkS35Tdlt7wguIG+ViWCPtVZHz/ybQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz", + "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", + "@typescript-eslint/types": "4.16.1", "eslint-visitor-keys": "^2.0.0" } }, "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", "dev": true }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" } }, "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" } }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", + "@webassemblyjs/ast": "1.11.0", "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "@webpack-cli/configtest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } + "requires": {} }, "@webpack-cli/info": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.1.0.tgz", - "integrity": "sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.1.0.tgz", - "integrity": "sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg==", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -499,7 +3476,8 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "ajv": { "version": "6.12.6", @@ -517,7 +3495,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "4.1.1", @@ -532,12 +3511,12 @@ "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "argparse": { @@ -549,12 +3528,6 @@ "sprintf-js": "~1.0.2" } }, - "array-back": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", - "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", - "dev": true - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -567,9 +3540,9 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "balanced-match": { @@ -585,9 +3558,9 @@ "dev": true }, "binaryen": { - "version": "98.0.0-nightly.20210106", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-98.0.0-nightly.20210106.tgz", - "integrity": "sha512-iunAgesqT9PXVYCc72FA4h0sCCKLifruT6NuUH63xqlFJGpChhZLgOtyIb/fIgTibN5Pd692cxfBViyCWFsJ9Q==" + "version": "100.0.0", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0.tgz", + "integrity": "sha512-nxOt8d8/VXAuSVEtAWUdKrqpqCy365QqD223EzzB1GzS5himiZAfM/R5lXx+M/5q8TB8cYp3tYxv5rTjNTJveQ==" }, "brace-expansion": { "version": "1.1.11", @@ -609,16 +3582,16 @@ } }, "browserslist": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", - "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001165", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.621", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.67" + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -633,20 +3606,19 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001165", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz", - "integrity": "sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==", + "version": "1.0.30001196", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001196.tgz", + "integrity": "sha512-CPvObjD3ovWrNBaXlAIGWmg2gQQuJ5YhuciUOjPRox6hIQttu8O+b51dx6VIpIY9ESd2d0Vac1RKpICdG4rGUg==", "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "chrome-trace-event": { @@ -658,39 +3630,38 @@ "tslib": "^1.9.0" } }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, - "command-line-usage": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", - "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", - "dev": true, - "requires": { - "array-back": "^4.0.1", - "chalk": "^2.4.2", - "table-layout": "^1.0.1", - "typical": "^5.2.0" - } - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -720,11 +3691,14 @@ "which": "^2.0.1" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } }, "deep-is": { "version": "0.1.3", @@ -757,36 +3731,27 @@ } }, "electron-to-chromium": { - "version": "1.3.622", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.622.tgz", - "integrity": "sha512-AJT0Fm1W0uZlMVVkkJrcCVvczDuF8tPm3bwzQf5WO8AaASB2hwTRP7B8pU5rqjireH+ib6am8+hH5/QkXzzYKw==", + "version": "1.3.681", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.681.tgz", + "integrity": "sha512-W6uYvSUTHuyX2DZklIESAqx57jfmGjUkd7Z3RWqLdj9Mmt39ylhBuvFXlskQnvBHj0MYXIeQI+mjiwVddZLSvA==", "dev": true }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "emojis-list": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -804,20 +3769,26 @@ } }, "envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", "dev": true }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "requires": { "prr": "~1.0.1" } }, + "es-module-lexer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "dev": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -831,13 +3802,13 @@ "dev": true }, "eslint": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", - "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz", + "integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -848,9 +3819,9 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", @@ -861,7 +3832,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -870,90 +3841,9 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "eslint-scope": { @@ -1015,9 +3905,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -1061,25 +3951,25 @@ "dev": true }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, @@ -1090,9 +3980,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -1115,19 +4005,25 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, "fastq": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", - "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "requires": { "reusify": "^1.0.4" } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -1143,12 +4039,12 @@ } }, "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, @@ -1160,23 +4056,12 @@ "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "fs.realpath": { @@ -1198,13 +4083,10 @@ "dev": true }, "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true }, "glob": { "version": "7.1.6", @@ -1245,9 +4127,9 @@ } }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -1256,12 +4138,20 @@ "ignore": "^5.1.4", "merge2": "^1.3.0", "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "has": { @@ -1274,27 +4164,27 @@ } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1309,54 +4199,6 @@ "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } } }, "imurmurhash": { @@ -1403,9 +4245,9 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { @@ -1423,6 +4265,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -1441,6 +4292,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -1450,23 +4307,6 @@ "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "js-tokens": { @@ -1504,18 +4344,18 @@ "dev": true }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "levn": { @@ -1529,35 +4369,35 @@ } }, "loader-runner": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.1.0.tgz", - "integrity": "sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" } }, "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "long": { @@ -1612,18 +4452,18 @@ } }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, "requires": { - "mime-db": "1.44.0" + "mime-db": "1.46.0" } }, "mimic-fn": { @@ -1654,6 +4494,12 @@ "minimist": "^1.2.5" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -1667,9 +4513,9 @@ "dev": true }, "node-releases": { - "version": "1.1.67", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", - "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "npm-run-path": { @@ -1723,12 +4569,23 @@ } }, "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, "p-try": { @@ -1789,12 +4646,12 @@ "dev": true }, "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^5.0.0" + "find-up": "^4.0.0" } }, "prelude-ls": { @@ -1821,22 +4678,18 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -1870,25 +4723,25 @@ "resolve": "^1.9.0" } }, - "reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true - }, "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -1921,11 +4774,23 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } }, "safe-buffer": { "version": "5.1.2", @@ -1945,10 +4810,13 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "serialize-javascript": { "version": "5.0.1", @@ -1959,6 +4827,15 @@ "randombytes": "^2.1.0" } }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1987,14 +4864,14 @@ "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, "source-list-map": { @@ -2023,34 +4900,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -2060,6 +4909,17 @@ "safe-buffer": "~5.1.0" } }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -2082,36 +4942,44 @@ "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - } - }, - "table-layout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", - "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "tapable": { @@ -2121,9 +4989,9 @@ "dev": true }, "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -2140,17 +5008,17 @@ } }, "terser-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", "dev": true, "requires": { - "jest-worker": "^26.6.1", - "p-limit": "^3.0.2", + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", "schema-utils": "^3.0.0", "serialize-javascript": "^5.0.1", "source-map": "^0.6.1", - "terser": "^5.3.8" + "terser": "^5.5.1" } }, "text-table": { @@ -2169,16 +5037,16 @@ } }, "ts-loader": { - "version": "8.0.12", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.12.tgz", - "integrity": "sha512-UIivVfGVJDdwwjgSrbtcL9Nf10c1BWnL1mxAQUVcnhNIn/P9W3nP5v60Z0aBMtc7ZrE11lMmU6+5jSgAXmGaYw==", + "version": "8.0.17", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.17.tgz", + "integrity": "sha512-OeVfSshx6ot/TCxRwpBHQ/4lRzfgyTkvi7ghDVrLXOHzTbSK413ROgu/xNqM72i3AFeAIJgQy78FwSMKmOW68w==", "dev": true, "requires": { - "chalk": "^2.3.0", + "chalk": "^4.1.0", "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", + "loader-utils": "^2.0.0", "micromatch": "^4.0.0", - "semver": "^6.0.0" + "semver": "^7.3.4" } }, "ts-node": { @@ -2210,9 +5078,9 @@ "dev": true }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -2234,21 +5102,15 @@ "dev": true }, "typescript": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", - "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", - "dev": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -2261,15 +5123,15 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "watchpack": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", - "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -2277,59 +5139,52 @@ } }, "webpack": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.10.0.tgz", - "integrity": "sha512-P0bHAXmIz0zsNcHNLqFmLY1ZtrT+jtBr7FqpuDtA2o7GiHC+zBsfhgK7SmJ1HG7BAEb3G9JoMdSVi7mEDvG3Zg==", + "version": "5.24.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.3.tgz", + "integrity": "sha512-x7lrWZ7wlWAdyKdML6YPvfVZkhD1ICuIZGODE5SzKJjqI9A4SpqGTjGJTc6CwaHqn19gGaoOR3ONJ46nYsn9rw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.45", - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", + "@types/estree": "^0.0.46", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", "acorn": "^8.0.4", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.3.1", + "enhanced-resolve": "^5.7.0", + "es-module-lexer": "^0.4.0", "eslint-scope": "^5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.4", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.1.0", + "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "pkg-dir": "^5.0.0", "schema-utils": "^3.0.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.0.3", + "terser-webpack-plugin": "^5.1.1", "watchpack": "^2.0.0", "webpack-sources": "^2.1.1" }, "dependencies": { "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", + "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", "dev": true }, "enhanced-resolve": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.4.0.tgz", - "integrity": "sha512-ZmqfWURB2lConOBM1JdCVfPyMRv5RdKWktLXO6123p97ovVm2CLBgw9t5MBj3jJWA6eHyOeIws9iJQoGFR4euQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", - "tapable": "^2.0.0" + "tapable": "^2.2.0" } }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, "tapable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", @@ -2339,47 +5194,43 @@ } }, "webpack-cli": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.2.0.tgz", - "integrity": "sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", "dev": true, "requires": { - "@webpack-cli/info": "^1.1.0", - "@webpack-cli/serve": "^1.1.0", + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.1", + "@webpack-cli/info": "^1.2.2", + "@webpack-cli/serve": "^1.3.0", "colorette": "^1.2.1", - "command-line-usage": "^6.1.0", - "commander": "^6.2.0", + "commander": "^7.0.0", "enquirer": "^2.3.6", - "execa": "^4.1.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", - "leven": "^3.1.0", "rechoir": "^0.7.0", "v8-compile-cache": "^2.2.0", - "webpack-merge": "^4.2.2" + "webpack-merge": "^5.7.3" }, "dependencies": { "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true } } }, "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } }, "webpack-sources": { @@ -2401,22 +5252,18 @@ "isexe": "^2.0.0" } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "wordwrapjs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.0.tgz", - "integrity": "sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ==", - "dev": true, - "requires": { - "reduce-flatten": "^2.0.0", - "typical": "^5.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 01f1d81b6d..6e179c8153 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "98.0.0-nightly.20210106", + "binaryen": "100.0.0", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" diff --git a/src/builtins.ts b/src/builtins.ts index 8d1a765dd5..2b9a5252a3 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -58,6 +58,7 @@ import { SIMDReplaceOp, SIMDShiftOp, SIMDTernaryOp, + RefIsOp, NativeType, ExpressionRef, ExpressionId, @@ -353,14 +354,24 @@ export namespace BuiltinNames { export const v128_load_splat = "~lib/builtins/v128.load_splat"; export const v128_load_ext = "~lib/builtins/v128.load_ext"; export const v128_load = "~lib/builtins/v128.load"; + export const v128_load8x8_s = "~lib/builtins/v128.load8x8_s"; + export const v128_load8x8_u = "~lib/builtins/v128.load8x8_u"; + export const v128_load16x4_s = "~lib/builtins/v128.load16x4_s"; + export const v128_load16x4_u = "~lib/builtins/v128.load16x4_u"; + export const v128_load32x2_s = "~lib/builtins/v128.load32x2_s"; + export const v128_load32x2_u = "~lib/builtins/v128.load32x2_u"; + export const v128_load8_splat = "~lib/builtins/v128.load8_splat"; + export const v128_load16_splat = "~lib/builtins/v128.load16_splat"; + export const v128_load32_splat = "~lib/builtins/v128.load32_splat"; + export const v128_load64_splat = "~lib/builtins/v128.load64_splat"; export const v128_store = "~lib/builtins/v128.store"; export const v128_add = "~lib/builtins/v128.add"; export const v128_sub = "~lib/builtins/v128.sub"; export const v128_mul = "~lib/builtins/v128.mul"; export const v128_div = "~lib/builtins/v128.div"; export const v128_neg = "~lib/builtins/v128.neg"; - export const v128_add_saturate = "~lib/builtins/v128.add_saturate"; - export const v128_sub_saturate = "~lib/builtins/v128.sub_saturate"; + export const v128_add_sat = "~lib/builtins/v128.add_sat"; + export const v128_sub_sat = "~lib/builtins/v128.sub_sat"; export const v128_shl = "~lib/builtins/v128.shl"; export const v128_shr = "~lib/builtins/v128.shr"; export const v128_and = "~lib/builtins/v128.and"; @@ -393,10 +404,8 @@ export namespace BuiltinNames { export const v128_convert = "~lib/builtins/v128.convert"; export const v128_trunc_sat = "~lib/builtins/v128.trunc_sat"; export const v128_narrow = "~lib/builtins/v128.narrow"; - export const v128_widen_low = "~lib/builtins/v128.widen_low"; - export const v128_widen_high = "~lib/builtins/v128.widen_high"; - export const v128_qfma = "~lib/builtins/v128.qfma"; - export const v128_qfms = "~lib/builtins/v128.qfms"; + export const v128_extend_low = "~lib/builtins/v128.extend_low"; + export const v128_extend_high = "~lib/builtins/v128.extend_high"; export const i8x16 = "~lib/builtins/i8x16"; export const i16x8 = "~lib/builtins/i16x8"; @@ -419,14 +428,13 @@ export namespace BuiltinNames { export const i8x16_avgr_u = "~lib/builtins/i8x16.avgr_u"; export const i8x16_abs = "~lib/builtins/i8x16.abs"; export const i8x16_neg = "~lib/builtins/i8x16.neg"; - export const i8x16_add_saturate_s = "~lib/builtins/i8x16.add_saturate_s"; - export const i8x16_add_saturate_u = "~lib/builtins/i8x16.add_saturate_u"; - export const i8x16_sub_saturate_s = "~lib/builtins/i8x16.sub_saturate_s"; - export const i8x16_sub_saturate_u = "~lib/builtins/i8x16.sub_saturate_u"; + export const i8x16_add_sat_s = "~lib/builtins/i8x16.add_sat_s"; + export const i8x16_add_sat_u = "~lib/builtins/i8x16.add_sat_u"; + export const i8x16_sub_sat_s = "~lib/builtins/i8x16.sub_sat_s"; + export const i8x16_sub_sat_u = "~lib/builtins/i8x16.sub_sat_u"; export const i8x16_shl = "~lib/builtins/i8x16.shl"; export const i8x16_shr_s = "~lib/builtins/i8x16.shr_s"; export const i8x16_shr_u = "~lib/builtins/i8x16.shr_u"; - export const i8x16_any_true = "~lib/builtins/i8x16.any_true"; export const i8x16_all_true = "~lib/builtins/i8x16.all_true"; export const i8x16_bitmask = "~lib/builtins/i8x16.bitmask"; export const i8x16_eq = "~lib/builtins/i8x16.eq"; @@ -441,6 +449,8 @@ export namespace BuiltinNames { export const i8x16_ge_u = "~lib/builtins/i8x16.ge_u"; export const i8x16_narrow_i16x8_s = "~lib/builtins/i8x16.narrow_i16x8_s"; export const i8x16_narrow_i16x8_u = "~lib/builtins/i8x16.narrow_i16x8_u"; + export const i8x16_shuffle = "~lib/builtins/i8x16.shuffle"; + export const i8x16_swizzle = "~lib/builtins/i8x16.swizzle"; export const i16x8_splat = "~lib/builtins/i16x8.splat"; export const i16x8_extract_lane_s = "~lib/builtins/i16x8.extract_lane_s"; @@ -456,14 +466,13 @@ export namespace BuiltinNames { export const i16x8_avgr_u = "~lib/builtins/i16x8.avgr_u"; export const i16x8_abs = "~lib/builtins/i16x8.abs"; export const i16x8_neg = "~lib/builtins/i16x8.neg"; - export const i16x8_add_saturate_s = "~lib/builtins/i16x8.add_saturate_s"; - export const i16x8_add_saturate_u = "~lib/builtins/i16x8.add_saturate_u"; - export const i16x8_sub_saturate_s = "~lib/builtins/i16x8.sub_saturate_s"; - export const i16x8_sub_saturate_u = "~lib/builtins/i16x8.sub_saturate_u"; + export const i16x8_add_sat_s = "~lib/builtins/i16x8.add_sat_s"; + export const i16x8_add_sat_u = "~lib/builtins/i16x8.add_sat_u"; + export const i16x8_sub_sat_s = "~lib/builtins/i16x8.sub_sat_s"; + export const i16x8_sub_sat_u = "~lib/builtins/i16x8.sub_sat_u"; export const i16x8_shl = "~lib/builtins/i16x8.shl"; export const i16x8_shr_s = "~lib/builtins/i16x8.shr_s"; export const i16x8_shr_u = "~lib/builtins/i16x8.shr_u"; - export const i16x8_any_true = "~lib/builtins/i16x8.any_true"; export const i16x8_all_true = "~lib/builtins/i16x8.all_true"; export const i16x8_bitmask = "~lib/builtins/i16x8.bitmask"; export const i16x8_eq = "~lib/builtins/i16x8.eq"; @@ -478,12 +487,10 @@ export namespace BuiltinNames { export const i16x8_ge_u = "~lib/builtins/i16x8.ge_u"; export const i16x8_narrow_i32x4_s = "~lib/builtins/i16x8.narrow_i32x4_s"; export const i16x8_narrow_i32x4_u = "~lib/builtins/i16x8.narrow_i32x4_u"; - export const i16x8_widen_low_i8x16_s = "~lib/builtins/i16x8.widen_low_i8x16_s"; - export const i16x8_widen_low_i8x16_u = "~lib/builtins/i16x8.widen_low_i8x16_u"; - export const i16x8_widen_high_i8x16_s = "~lib/builtins/i16x8.widen_high_i8x16_s"; - export const i16x8_widen_high_i8x16_u = "~lib/builtins/i16x8.widen_high_i8x16_u"; - export const i16x8_load8x8_s = "~lib/builtins/i16x8.load8x8_s"; - export const i16x8_load8x8_u = "~lib/builtins/i16x8.load8x8_u"; + export const i16x8_extend_low_i8x16_s = "~lib/builtins/i16x8.extend_low_i8x16_s"; + export const i16x8_extend_low_i8x16_u = "~lib/builtins/i16x8.extend_low_i8x16_u"; + export const i16x8_extend_high_i8x16_s = "~lib/builtins/i16x8.extend_high_i8x16_s"; + export const i16x8_extend_high_i8x16_u = "~lib/builtins/i16x8.extend_high_i8x16_u"; export const i32x4_splat = "~lib/builtins/i32x4.splat"; export const i32x4_extract_lane = "~lib/builtins/i32x4.extract_lane"; @@ -501,7 +508,6 @@ export namespace BuiltinNames { export const i32x4_shl = "~lib/builtins/i32x4.shl"; export const i32x4_shr_s = "~lib/builtins/i32x4.shr_s"; export const i32x4_shr_u = "~lib/builtins/i32x4.shr_u"; - export const i32x4_any_true = "~lib/builtins/i32x4.any_true"; export const i32x4_all_true = "~lib/builtins/i32x4.all_true"; export const i32x4_bitmask = "~lib/builtins/i32x4.bitmask"; export const i32x4_eq = "~lib/builtins/i32x4.eq"; @@ -516,28 +522,36 @@ export namespace BuiltinNames { export const i32x4_ge_u = "~lib/builtins/i32x4.ge_u"; export const i32x4_trunc_sat_f32x4_s = "~lib/builtins/i32x4.trunc_sat_f32x4_s"; export const i32x4_trunc_sat_f32x4_u = "~lib/builtins/i32x4.trunc_sat_f32x4_u"; - export const i32x4_widen_low_i16x8_s = "~lib/builtins/i32x4.widen_low_i16x8_s"; - export const i32x4_widen_low_i16x8_u = "~lib/builtins/i32x4.widen_low_i16x8_u"; - export const i32x4_widen_high_i16x8_s = "~lib/builtins/i32x4.widen_high_i16x8_s"; - export const i32x4_widen_high_i16x8_u = "~lib/builtins/i32x4.widen_high_i16x8_u"; - export const i32x4_load16x4_s = "~lib/builtins/i32x4.load16x4_s"; - export const i32x4_load16x4_u = "~lib/builtins/i32x4.load16x4_u"; + export const i32x4_extend_low_i16x8_s = "~lib/builtins/i32x4.extend_low_i16x8_s"; + export const i32x4_extend_low_i16x8_u = "~lib/builtins/i32x4.extend_low_i16x8_u"; + export const i32x4_extend_high_i16x8_s = "~lib/builtins/i32x4.extend_high_i16x8_s"; + export const i32x4_extend_high_i16x8_u = "~lib/builtins/i32x4.extend_high_i16x8_u"; export const i64x2_splat = "~lib/builtins/i64x2.splat"; export const i64x2_extract_lane = "~lib/builtins/i64x2.extract_lane"; export const i64x2_replace_lane = "~lib/builtins/i64x2.replace_lane"; export const i64x2_add = "~lib/builtins/i64x2.add"; - export const i64x2_sub = "~lib/builtins/i64x2.sub"; // i64x2 has no .mul + export const i64x2_sub = "~lib/builtins/i64x2.sub"; + export const i64x2_mul = "~lib/builtins/i64x2.mul"; export const i64x2_neg = "~lib/builtins/i64x2.neg"; export const i64x2_shl = "~lib/builtins/i64x2.shl"; export const i64x2_shr_s = "~lib/builtins/i64x2.shr_s"; export const i64x2_shr_u = "~lib/builtins/i64x2.shr_u"; - export const i64x2_any_true = "~lib/builtins/i64x2.any_true"; - export const i64x2_all_true = "~lib/builtins/i64x2.all_true"; // i64x2 has no .eq etc. - export const i64x2_trunc_sat_f64x2_s = "~lib/builtins/i64x2.trunc_sat_f64x2_s"; - export const i64x2_trunc_sat_f64x2_u = "~lib/builtins/i64x2.trunc_sat_f64x2_u"; - export const i64x2_load32x2_s = "~lib/builtins/i64x2.load32x2_s"; - export const i64x2_load32x2_u = "~lib/builtins/i64x2.load32x2_u"; + export const i64x2_all_true = "~lib/builtins/i64x2.all_true"; + export const i64x2_eq = "~lib/builtins/i64x2.eq"; + export const i64x2_ne = "~lib/builtins/i64x2.ne"; + export const i64x2_lt_s = "~lib/builtins/i64x2.lt_s"; + export const i64x2_lt_u = "~lib/builtins/i64x2.lt_u"; + export const i64x2_le_s = "~lib/builtins/i64x2.le_s"; + export const i64x2_le_u = "~lib/builtins/i64x2.le_u"; + export const i64x2_gt_s = "~lib/builtins/i64x2.gt_s"; + export const i64x2_gt_u = "~lib/builtins/i64x2.gt_u"; + export const i64x2_ge_s = "~lib/builtins/i64x2.ge_s"; + export const i64x2_ge_u = "~lib/builtins/i64x2.ge_u"; + export const i64x2_extend_low_i32x4_s = "~lib/builtins/i64x2.extend_low_i32x4_s"; + export const i64x2_extend_low_i32x4_u = "~lib/builtins/i64x2.extend_low_i32x4_u"; + export const i64x2_extend_high_i32x4_s = "~lib/builtins/i64x2.extend_high_i32x4_s"; + export const i64x2_extend_high_i32x4_u = "~lib/builtins/i64x2.extend_high_i32x4_u"; export const f32x4_splat = "~lib/builtins/f32x4.splat"; export const f32x4_extract_lane = "~lib/builtins/f32x4.extract_lane"; @@ -565,8 +579,6 @@ export namespace BuiltinNames { export const f32x4_ge = "~lib/builtins/f32x4.ge"; export const f32x4_convert_i32x4_s = "~lib/builtins/f32x4.convert_i32x4_s"; export const f32x4_convert_i32x4_u = "~lib/builtins/f32x4.convert_i32x4_u"; - export const f32x4_qfma = "~lib/builtins/f32x4.qfma"; - export const f32x4_qfms = "~lib/builtins/f32x4.qfms"; export const f64x2_splat = "~lib/builtins/f64x2.splat"; export const f64x2_extract_lane = "~lib/builtins/f64x2.extract_lane"; @@ -592,17 +604,9 @@ export namespace BuiltinNames { export const f64x2_le = "~lib/builtins/f64x2.le"; export const f64x2_gt = "~lib/builtins/f64x2.gt"; export const f64x2_ge = "~lib/builtins/f64x2.ge"; - export const f64x2_convert_i64x2_s = "~lib/builtins/f64x2.convert_i64x2_s"; - export const f64x2_convert_i64x2_u = "~lib/builtins/f64x2.convert_i64x2_u"; - export const f64x2_qfma = "~lib/builtins/f64x2.qfma"; - export const f64x2_qfms = "~lib/builtins/f64x2.qfms"; - - export const v8x16_shuffle = "~lib/builtins/v8x16.shuffle"; - export const v8x16_swizzle = "~lib/builtins/v8x16.swizzle"; - export const v8x16_load_splat = "~lib/builtins/v8x16.load_splat"; - export const v16x8_load_splat = "~lib/builtins/v16x8.load_splat"; - export const v32x4_load_splat = "~lib/builtins/v32x4.load_splat"; - export const v64x2_load_splat = "~lib/builtins/v64x2.load_splat"; + + export const i31_new = "~lib/builtins/i31.new"; + export const i31_get = "~lib/builtins/i31.get"; // internals export const data_end = "~lib/memory/__data_end"; @@ -2919,6 +2923,41 @@ function builtin_memory_data(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.memory_data, builtin_memory_data); +// === GC ===================================================================================== + +function builtin_i31_new(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkTypeAbsent(ctx) | + checkArgsRequired(ctx, 1) + ) return module.unreachable(); + var operands = ctx.operands; + var arg0 = compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT); + compiler.currentType = Type.i31ref; + return module.i31_new(arg0); +} +builtins.set(BuiltinNames.i31_new, builtin_i31_new); + +function builtin_i31_get(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkTypeAbsent(ctx) | + checkArgsRequired(ctx, 1) + ) return module.unreachable(); + var operands = ctx.operands; + var arg0 = compiler.compileExpression(operands[0], Type.i31ref, Constraints.CONV_IMPLICIT); + if (ctx.contextualType.is(TypeFlags.UNSIGNED)) { + compiler.currentType = Type.u32; + return module.i31_get(arg0, false); + } else { + compiler.currentType = Type.i32; + return module.i31_get(arg0, true); + } +} +builtins.set(BuiltinNames.i31_get, builtin_i31_get); + // === Helpers ================================================================================ // changetype(value: *) -> T @@ -3037,8 +3076,10 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { case TypeKind.F64: return module.if(module.binary(BinaryOp.EqF64, arg0, module.f64(0)), abort); case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: - case TypeKind.ANYREF: return module.if(module.ref_is_null(arg0), abort); + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.DATAREF: + case TypeKind.I31REF: return module.if(module.ref_is(RefIsOp.RefIsNull, arg0), abort); } } else { @@ -3119,15 +3160,17 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: - case TypeKind.ANYREF: { + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.DATAREF: + case TypeKind.I31REF: { let temp = flow.getTempLocal(type); let ret = module.if( - module.ref_is_null( + module.ref_is(RefIsOp.RefIsNull, module.local_tee(temp.index, arg0, false) // ref ), abort, - module.local_get(temp.index, NativeType.F64) + module.local_get(temp.index, type.toNativeType()) ); flow.freeTempLocal(temp); return ret; @@ -4133,19 +4176,14 @@ function builtin_v128_mul(ctx: BuiltinContext): ExpressionRef { var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { - case TypeKind.I8: - case TypeKind.U8: return module.binary(BinaryOp.MulI8x16, arg0, arg1); case TypeKind.I16: case TypeKind.U16: return module.binary(BinaryOp.MulI16x8, arg0, arg1); case TypeKind.I32: case TypeKind.U32: return module.binary(BinaryOp.MulI32x4, arg0, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.binary(BinaryOp.MulI64x2, arg0, arg1); case TypeKind.ISIZE: - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.MulI32x4, arg0, arg1); - } - break; - } + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.MulI64x2 : BinaryOp.MulI32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.MulF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.MulF64x2, arg0, arg1); } @@ -4189,8 +4227,8 @@ function builtin_v128_div(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_div, builtin_v128_div); -// v128.add_saturate(a: v128, b: v128) -> v128 -function builtin_v128_add_saturate(ctx: BuiltinContext): ExpressionRef { +// v128.add_sat(a: v128, b: v128) -> v128 +function builtin_v128_add_sat(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -4216,14 +4254,14 @@ function builtin_v128_add_saturate(ctx: BuiltinContext): ExpressionRef { } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.add_saturate", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.add_sat", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_add_saturate, builtin_v128_add_saturate); +builtins.set(BuiltinNames.v128_add_sat, builtin_v128_add_sat); -// v128.sub_saturate(a: v128, b: v128) -> v128 -function builtin_v128_sub_saturate(ctx: BuiltinContext): ExpressionRef { +// v128.sub_sat(a: v128, b: v128) -> v128 +function builtin_v128_sub_sat(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -4249,11 +4287,11 @@ function builtin_v128_sub_saturate(ctx: BuiltinContext): ExpressionRef { } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.sub_saturate", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.sub_sat", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_sub_saturate, builtin_v128_sub_saturate); +builtins.set(BuiltinNames.v128_sub_sat, builtin_v128_sub_sat); // v128.min(a: v128, b: v128) -> v128 function builtin_v128_min(ctx: BuiltinContext): ExpressionRef { @@ -4493,13 +4531,10 @@ function builtin_v128_eq(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.EqI16x8, arg0, arg1); case TypeKind.I32: case TypeKind.U32: return module.binary(BinaryOp.EqI32x4, arg0, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.binary(BinaryOp.EqI64x2, arg0, arg1); case TypeKind.ISIZE: - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.EqI32x4, arg0, arg1); - } - break; - } + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.EqI64x2 : BinaryOp.EqI32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.EqF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.EqF64x2, arg0, arg1); } @@ -4537,13 +4572,10 @@ function builtin_v128_ne(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.NeI16x8, arg0, arg1); case TypeKind.I32: case TypeKind.U32: return module.binary(BinaryOp.NeI32x4, arg0, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.binary(BinaryOp.NeI64x2, arg0, arg1); case TypeKind.ISIZE: - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.NeI32x4, arg0, arg1); - } - break; - } + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.NeI64x2 : BinaryOp.NeI32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.NeF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.NeF64x2, arg0, arg1); } @@ -4581,18 +4613,10 @@ function builtin_v128_lt(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.LtU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.LtI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.LtU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LtI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LtU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.LtI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.LtU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LtI64x2 : BinaryOp.LtI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LtU64x2 : BinaryOp.LtU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.LtF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.LtF64x2, arg0, arg1); } @@ -4630,18 +4654,10 @@ function builtin_v128_le(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.LeU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.LeI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.LeU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LeI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LeU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.LeI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.LeU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LeI64x2 : BinaryOp.LeI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LeU64x2 : BinaryOp.LeU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.LeF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.LeF64x2, arg0, arg1); } @@ -4679,18 +4695,10 @@ function builtin_v128_gt(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.GtU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.GtI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.GtU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GtI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GtU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.GtI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.GtU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GtI64x2 : BinaryOp.GtI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GtU64x2 : BinaryOp.GtU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.GtF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.GtF64x2, arg0, arg1); } @@ -4728,18 +4736,10 @@ function builtin_v128_ge(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.GeU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.GeI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.GeU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GeI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GeU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.GeI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.GeU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GeI64x2 : BinaryOp.GeI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GeU64x2 : BinaryOp.GeU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.GeF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.GeF64x2, arg0, arg1); } @@ -5044,10 +5044,16 @@ function builtin_v128_convert(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.I32: return module.unary(UnaryOp.ConvertI32x4ToF32x4, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.U32: return module.unary(UnaryOp.ConvertU32x4ToF32x4, arg0); - case TypeKind.I64: return module.unary(UnaryOp.ConvertI64x2ToF64x2, arg0); - case TypeKind.U64: return module.unary(UnaryOp.ConvertU64x2ToF64x2, arg0); } } compiler.error( @@ -5076,10 +5082,16 @@ function builtin_v128_trunc_sat(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.I32: return module.unary(UnaryOp.TruncSatF32x4ToI32x4, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.U32: return module.unary(UnaryOp.TruncSatF32x4ToU32x4, arg0); - case TypeKind.I64: return module.unary(UnaryOp.TruncSatF64x2ToI64x2, arg0); - case TypeKind.U64: return module.unary(UnaryOp.TruncSatF64x2ToU64x2, arg0); } } compiler.error( @@ -5090,8 +5102,8 @@ function builtin_v128_trunc_sat(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_trunc_sat, builtin_v128_trunc_sat); -// v128.widen_low(a: v128) -> v128 -function builtin_v128_widen_low(ctx: BuiltinContext): ExpressionRef { +// v128.extend_low(a: v128) -> v128 +function builtin_v128_extend_low(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -5108,22 +5120,32 @@ function builtin_v128_widen_low(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { - case TypeKind.I8: return module.unary(UnaryOp.WidenLowI8x16ToI16x8, arg0); - case TypeKind.U8: return module.unary(UnaryOp.WidenLowU8x16ToU16x8, arg0); - case TypeKind.I16: return module.unary(UnaryOp.WidenLowI16x8ToI32x4, arg0); - case TypeKind.U16: return module.unary(UnaryOp.WidenLowU16x8ToU32x4, arg0); + case TypeKind.I8: return module.unary(UnaryOp.ExtendLowI8x16ToI16x8, arg0); + case TypeKind.U8: return module.unary(UnaryOp.ExtendLowU8x16ToU16x8, arg0); + case TypeKind.I16: return module.unary(UnaryOp.ExtendLowI16x8ToI32x4, arg0); + case TypeKind.U16: return module.unary(UnaryOp.ExtendLowU16x8ToU32x4, arg0); + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.I32: return module.unary(UnaryOp.ExtendLowI32x4ToI64x2, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.U32: return module.unary(UnaryOp.ExtendLowU32x4ToU64x2, arg0); } } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.widen_low", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.extend_low", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_widen_low, builtin_v128_widen_low); +builtins.set(BuiltinNames.v128_extend_low, builtin_v128_extend_low); -// v128.widen_high(a: v128) -> v128 -function builtin_v128_widen_high(ctx: BuiltinContext): ExpressionRef { +// v128.extend_high(a: v128) -> v128 +function builtin_v128_extend_high(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -5140,19 +5162,29 @@ function builtin_v128_widen_high(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { - case TypeKind.I8: return module.unary(UnaryOp.WidenHighI8x16ToI16x8, arg0); - case TypeKind.U8: return module.unary(UnaryOp.WidenHighU8x16ToU16x8, arg0); - case TypeKind.I16: return module.unary(UnaryOp.WidenHighI16x8ToI32x4, arg0); - case TypeKind.U16: return module.unary(UnaryOp.WidenHighU16x8ToU32x4, arg0); + case TypeKind.I8: return module.unary(UnaryOp.ExtendHighI8x16ToI16x8, arg0); + case TypeKind.U8: return module.unary(UnaryOp.ExtendHighU8x16ToU16x8, arg0); + case TypeKind.I16: return module.unary(UnaryOp.ExtendHighI16x8ToI32x4, arg0); + case TypeKind.U16: return module.unary(UnaryOp.ExtendHighU16x8ToU32x4, arg0); + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.I32: return module.unary(UnaryOp.ExtendHighI32x4ToI64x2, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.U32: return module.unary(UnaryOp.ExtendHighU32x4ToU64x2, arg0); } } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.widen_high", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.extend_high", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_widen_high, builtin_v128_widen_high); +builtins.set(BuiltinNames.v128_extend_high, builtin_v128_extend_high); // v128.shl(a: v128, b: i32) -> v128 function builtin_v128_shl(ctx: BuiltinContext): ExpressionRef { @@ -5340,48 +5372,22 @@ function builtin_v128_bitselect(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_bitselect, builtin_v128_bitselect); -// v128.any_true(a: v128) -> bool +// v128.any_true(a: v128) -> bool function builtin_v128_any_true(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( checkFeatureEnabled(ctx, Feature.SIMD) | - checkTypeRequired(ctx) | + checkTypeAbsent(ctx) | checkArgsRequired(ctx, 1) ) { compiler.currentType = Type.bool; return module.unreachable(); } var operands = ctx.operands; - var type = ctx.typeArguments![0]; var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); compiler.currentType = Type.bool; - if (type.isValue) { - switch (type.kind) { - case TypeKind.I8: - case TypeKind.U8: return module.unary(UnaryOp.AnyTrueI8x16, arg0); - case TypeKind.I16: - case TypeKind.U16: return module.unary(UnaryOp.AnyTrueI16x8, arg0); - case TypeKind.I32: - case TypeKind.U32: return module.unary(UnaryOp.AnyTrueI32x4, arg0); - case TypeKind.I64: - case TypeKind.U64: return module.unary(UnaryOp.AnyTrueI64x2, arg0); - case TypeKind.ISIZE: - case TypeKind.USIZE: { - return module.unary( - compiler.options.isWasm64 - ? UnaryOp.AnyTrueI64x2 - : UnaryOp.AnyTrueI32x4, - arg0 - ); - } - } - } - compiler.error( - DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.any_true", type.toString() - ); - return module.unreachable(); + return module.unary(UnaryOp.AnyTrueI8x16, arg0); } builtins.set(BuiltinNames.v128_any_true, builtin_v128_any_true); @@ -5413,12 +5419,7 @@ function builtin_v128_all_true(ctx: BuiltinContext): ExpressionRef { case TypeKind.U64: return module.unary(UnaryOp.AllTrueI64x2, arg0); case TypeKind.ISIZE: case TypeKind.USIZE: { - return module.unary( - compiler.options.isWasm64 - ? UnaryOp.AllTrueI64x2 - : UnaryOp.AllTrueI32x4, - arg0 - ); + return module.unary(compiler.options.isWasm64 ? UnaryOp.AllTrueI64x2 : UnaryOp.AllTrueI32x4, arg0); } } } @@ -5469,68 +5470,6 @@ function builtin_v128_bitmask(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_bitmask, builtin_v128_bitmask); -// v128.qfma(a: v128, b: v128, c: v128) -> v128 -function builtin_v128_qfma(ctx: BuiltinContext): ExpressionRef { - var compiler = ctx.compiler; - var module = compiler.module; - if ( - checkFeatureEnabled(ctx, Feature.SIMD) | - checkTypeRequired(ctx) | - checkArgsRequired(ctx, 3) - ) { - compiler.currentType = Type.v128; - return module.unreachable(); - } - var operands = ctx.operands; - var type = ctx.typeArguments![0]; - var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); - var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); - var arg2 = compiler.compileExpression(operands[2], Type.v128, Constraints.CONV_IMPLICIT); - if (type.isValue) { - switch (type.kind) { - case TypeKind.F32: return module.simd_ternary(SIMDTernaryOp.QFMAF32x4, arg0, arg1, arg2); - case TypeKind.F64: return module.simd_ternary(SIMDTernaryOp.QFMAF64x2, arg0, arg1, arg2); - } - } - compiler.error( - DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.qfma", type.toString() - ); - return module.unreachable(); -} -builtins.set(BuiltinNames.v128_qfma, builtin_v128_qfma); - -// v128.qfms(a: v128, b: v128, c: v128) -> v128 -function builtin_v128_qfms(ctx: BuiltinContext): ExpressionRef { - var compiler = ctx.compiler; - var module = compiler.module; - if ( - checkFeatureEnabled(ctx, Feature.SIMD) | - checkTypeRequired(ctx) | - checkArgsRequired(ctx, 3) - ) { - compiler.currentType = Type.v128; - return module.unreachable(); - } - var operands = ctx.operands; - var type = ctx.typeArguments![0]; - var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); - var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); - var arg2 = compiler.compileExpression(operands[2], Type.v128, Constraints.CONV_IMPLICIT); - if (type.isValue) { - switch (type.kind) { - case TypeKind.F32: return module.simd_ternary(SIMDTernaryOp.QFMSF32x4, arg0, arg1, arg2); - case TypeKind.F64: return module.simd_ternary(SIMDTernaryOp.QFMSF64x2, arg0, arg1, arg2); - } - } - compiler.error( - DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.qfms", type.toString() - ); - return module.unreachable(); -} -builtins.set(BuiltinNames.v128_qfms, builtin_v128_qfms); - // === Internal runtime ======================================================================= // __visit_globals(cookie: u32) -> void @@ -6894,6 +6833,96 @@ function builtin_v128_load(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_load, builtin_v128_load); +// v128.load8x8_s -> v128.load_ext +function builtin_v128_load8x8_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load8x8_s, builtin_v128_load8x8_s); + +// v128.load8x8_u -> v128.load_ext +function builtin_v128_load8x8_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load8x8_u, builtin_v128_load8x8_u); + +// v128.load16x4_s -> v128.load_ext +function builtin_v128_load16x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load16x4_s, builtin_v128_load16x4_s); + +// v128.load16x4_u -> v128.load_ext +function builtin_v128_load16x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load16x4_u, builtin_v128_load16x4_u); + +// v128.load32x2_s -> v128.load_ext +function builtin_v128_load32x2_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load32x2_s, builtin_v128_load32x2_s); + +// v128.load32x2_u -> v128.load_ext +function builtin_v128_load32x2_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load32x2_u, builtin_v128_load32x2_u); + +// v128.load8_splat -> v128.load_splat +function builtin_v128_load8_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load8_splat, builtin_v128_load8_splat); + +// v128.load16_splat -> v128.load_splat +function builtin_v128_load16_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load16_splat, builtin_v128_load16_splat); + +// v128.load32_splat -> v128.load_splat +function builtin_v128_load32_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load32_splat, builtin_v128_load32_splat); + +// v128.load64_splat -> v128.load_splat +function builtin_v128_load64_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load64_splat, builtin_v128_load64_splat); + // v128.store -> store function builtin_v128_store(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -6958,15 +6987,6 @@ function builtin_i8x16_sub(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_sub, builtin_i8x16_sub); -// i8x16.mul -> v128.mul -function builtin_i8x16_mul(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_mul(ctx); -} -builtins.set(BuiltinNames.i8x16_mul, builtin_i8x16_mul); - // i8x16.min_s -> v128.min function builtin_i8x16_min_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7030,41 +7050,41 @@ function builtin_i8x16_neg(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_neg, builtin_i8x16_neg); -// i8x16.add_saturate_s -> v128.add_saturate -function builtin_i8x16_add_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i8x16.add_sat_s -> v128.add_sat +function builtin_i8x16_add_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i8x16_add_saturate_s, builtin_i8x16_add_saturate_s); +builtins.set(BuiltinNames.i8x16_add_sat_s, builtin_i8x16_add_sat_s); -// i8x16.add_saturate_u -> v128.add_saturate -function builtin_i8x16_add_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i8x16.add_sat_u -> v128.add_sat +function builtin_i8x16_add_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i8x16_add_saturate_u, builtin_i8x16_add_saturate_u); +builtins.set(BuiltinNames.i8x16_add_sat_u, builtin_i8x16_add_sat_u); -// i8x16.sub_saturate_s -> v128.sub_saturate -function builtin_i8x16_sub_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i8x16.sub_sat_s -> v128.sub_sat +function builtin_i8x16_sub_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i8x16_sub_saturate_s, builtin_i8x16_sub_saturate_s); +builtins.set(BuiltinNames.i8x16_sub_sat_s, builtin_i8x16_sub_sat_s); -// i8x16.sub_saturate_u -> v128.sub_saturate -function builtin_i8x16_sub_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i8x16.sub_sat_u -> v128.sub_sat +function builtin_i8x16_sub_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i8x16_sub_saturate_u, builtin_i8x16_sub_saturate_u); +builtins.set(BuiltinNames.i8x16_sub_sat_u, builtin_i8x16_sub_sat_u); // i8x16.shl -> v128.shl function builtin_i8x16_shl(ctx: BuiltinContext): ExpressionRef { @@ -7093,15 +7113,6 @@ function builtin_i8x16_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_shr_u, builtin_i8x16_shr_u); -// i8x16.any_true -> v128.any_true -function builtin_i8x16_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i8x16_any_true, builtin_i8x16_any_true); - // i8x16.all_true -> v128.all_true function builtin_i8x16_all_true(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7228,6 +7239,24 @@ function builtin_i8x16_narrow_i16x8_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_narrow_i16x8_u, builtin_i8x16_narrow_i16x8_u); +// i8x16.shuffle -> v128.shuffle +function builtin_i8x16_shuffle(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_shuffle(ctx); +} +builtins.set(BuiltinNames.i8x16_shuffle, builtin_i8x16_shuffle); + +// i8x16.swizzle -> v128.swizzle +function builtin_i8x16_swizzle(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = null; + ctx.contextualType = Type.v128; + return builtin_v128_swizzle(ctx); +} +builtins.set(BuiltinNames.i8x16_swizzle, builtin_i8x16_swizzle); + // i16x8.splat -> v128.splat function builtin_i16x8_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7354,41 +7383,41 @@ function builtin_i16x8_neg(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_neg, builtin_i16x8_neg); -// i16x8.add_saturate_s -> v128.add_saturate -function builtin_i16x8_add_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.add_sat_s -> v128.add_sat +function builtin_i16x8_add_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i16x8_add_saturate_s, builtin_i16x8_add_saturate_s); +builtins.set(BuiltinNames.i16x8_add_sat_s, builtin_i16x8_add_sat_s); -// i16x8.add_saturate_u -> v128.add_saturate -function builtin_i16x8_add_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.add_sat_u -> v128.add_sat +function builtin_i16x8_add_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i16x8_add_saturate_u, builtin_i16x8_add_saturate_u); +builtins.set(BuiltinNames.i16x8_add_sat_u, builtin_i16x8_add_sat_u); -// i16x8.sub_saturate_s -> v128.sub_saturate -function builtin_i16x8_sub_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.sub_sat_s -> v128.sub_sat +function builtin_i16x8_sub_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i16x8_sub_saturate_s, builtin_i16x8_sub_saturate_s); +builtins.set(BuiltinNames.i16x8_sub_sat_s, builtin_i16x8_sub_sat_s); -// i16x8.sub_saturate_u -> v128.sub_saturate -function builtin_i16x8_sub_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.sub_sat_u -> v128.sub_sat +function builtin_i16x8_sub_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i16x8_sub_saturate_u, builtin_i16x8_sub_saturate_u); +builtins.set(BuiltinNames.i16x8_sub_sat_u, builtin_i16x8_sub_sat_u); // i16x8.shl -> v128.shl function builtin_i16x8_shl(ctx: BuiltinContext): ExpressionRef { @@ -7417,15 +7446,6 @@ function builtin_i16x8_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_shr_u, builtin_i16x8_shr_u); -// i16x8.any_true -> v128.any_true -function builtin_i16x8_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i16 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i16x8_any_true, builtin_i16x8_any_true); - // i16x8.all_true -> v128.all_true function builtin_i16x8_all_true(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7552,59 +7572,41 @@ function builtin_i16x8_narrow_i32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_narrow_i32x4_u, builtin_i16x8_narrow_i32x4_u); -// i16x8.widen_low_i8x16_s -> v128.widen_low -function builtin_i16x8_widen_low_i8x16_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_low_i8x16_s -> v128.extend_low +function builtin_i16x8_extend_low_i8x16_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i16x8_widen_low_i8x16_s, builtin_i16x8_widen_low_i8x16_s); +builtins.set(BuiltinNames.i16x8_extend_low_i8x16_s, builtin_i16x8_extend_low_i8x16_s); -// i16x8.widen_low_i8x16_u -> v128.widen_low -function builtin_i16x8_widen_low_i8x16_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_low_i8x16_u -> v128.extend_low +function builtin_i16x8_extend_low_i8x16_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i16x8_widen_low_i8x16_u, builtin_i16x8_widen_low_i8x16_u); +builtins.set(BuiltinNames.i16x8_extend_low_i8x16_u, builtin_i16x8_extend_low_i8x16_u); -// i16x8.widen_high_i8x16_s -> v128.widen_high -function builtin_i16x8_widen_high_i8x16_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_high_i8x16_s -> v128.extend_high +function builtin_i16x8_extend_high_i8x16_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i16x8_widen_high_i8x16_s, builtin_i16x8_widen_high_i8x16_s); +builtins.set(BuiltinNames.i16x8_extend_high_i8x16_s, builtin_i16x8_extend_high_i8x16_s); -// i16x8.widen_high_i8x16_u -> v128.widen_high -function builtin_i16x8_widen_high_i8x16_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_high_i8x16_u -> v128.extend_high +function builtin_i16x8_extend_high_i8x16_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i16x8_widen_high_i8x16_u, builtin_i16x8_widen_high_i8x16_u); - -// i16x8.load8x8_s -> v128.load_ext -function builtin_i16x8_load8x8_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i16x8_load8x8_s, builtin_i16x8_load8x8_s); - -// i16x8.load8x8_u -> v128.load_ext -function builtin_i16x8_load8x8_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i16x8_load8x8_u, builtin_i16x8_load8x8_u); +builtins.set(BuiltinNames.i16x8_extend_high_i8x16_u, builtin_i16x8_extend_high_i8x16_u); // i32x4.splat -> v128.splat function builtin_i32x4_splat(ctx: BuiltinContext): ExpressionRef { @@ -7750,15 +7752,6 @@ function builtin_i32x4_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i32x4_shr_u, builtin_i32x4_shr_u); -// i32x4.any_true -> v128.any_true -function builtin_i32x4_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i32 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i32x4_any_true, builtin_i32x4_any_true); - // i32x4.all_true -> v128.all_true function builtin_i32x4_all_true(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7885,59 +7878,41 @@ function builtin_i32x4_trunc_sat_f32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i32x4_trunc_sat_f32x4_u, builtin_i32x4_trunc_sat_f32x4_u); -// i32x4.widen_low_i16x8_s -> // v128.widen_low -function builtin_i32x4_widen_low_i16x8_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i16 ]; - ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); -} -builtins.set(BuiltinNames.i32x4_widen_low_i16x8_s, builtin_i32x4_widen_low_i16x8_s); - -// i32x4.widen_low_i16x8_u -> v128.widen_low -function builtin_i32x4_widen_low_i16x8_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u16 ]; - ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); -} -builtins.set(BuiltinNames.i32x4_widen_low_i16x8_u, builtin_i32x4_widen_low_i16x8_u); - -// i32x4.widen_high_i16x8_s -> v128.widen_high -function builtin_i32x4_widen_high_i16x8_s(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_low_i16x8_s -> // v128.extend_low +function builtin_i32x4_extend_low_i16x8_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i32x4_widen_high_i16x8_s, builtin_i32x4_widen_high_i16x8_s); +builtins.set(BuiltinNames.i32x4_extend_low_i16x8_s, builtin_i32x4_extend_low_i16x8_s); -// i32x4.widen_high_i16x8_u -> v128.widen_high -function builtin_i32x4_widen_high_i16x8_u(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_low_i16x8_u -> v128.extend_low +function builtin_i32x4_extend_low_i16x8_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i32x4_widen_high_i16x8_u, builtin_i32x4_widen_high_i16x8_u); +builtins.set(BuiltinNames.i32x4_extend_low_i16x8_u, builtin_i32x4_extend_low_i16x8_u); -// i32x4.load16x4_s -> v128.load_ext -function builtin_i32x4_load16x4_s(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_high_i16x8_s -> v128.extend_high +function builtin_i32x4_extend_high_i16x8_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i32x4_load16x4_s, builtin_i32x4_load16x4_s); +builtins.set(BuiltinNames.i32x4_extend_high_i16x8_s, builtin_i32x4_extend_high_i16x8_s); -// i32x4.load16x4_u -> v128.load_ext -function builtin_i32x4_load16x4_u(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_high_i16x8_u -> v128.extend_high +function builtin_i32x4_extend_high_i16x8_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i32x4_load16x4_u, builtin_i32x4_load16x4_u); +builtins.set(BuiltinNames.i32x4_extend_high_i16x8_u, builtin_i32x4_extend_high_i16x8_u); // i64x2.splat -> v128.splat function builtin_i64x2_splat(ctx: BuiltinContext): ExpressionRef { @@ -7984,6 +7959,15 @@ function builtin_i64x2_sub(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_sub, builtin_i64x2_sub); +// i64x2.mul -> v128.mul +function builtin_i64x2_mul(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_mul(ctx); +} +builtins.set(BuiltinNames.i64x2_mul, builtin_i64x2_mul); + // i64x2.neg -> v128.neg function builtin_i64x2_neg(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8020,15 +8004,6 @@ function builtin_i64x2_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_shr_u, builtin_i64x2_shr_u); -// i64x2.any_true -> v128.any_true -function builtin_i64x2_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i64 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i64x2_any_true, builtin_i64x2_any_true); - // i64x2.all_true -> v128.all_true function builtin_i64x2_all_true(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8038,41 +8013,131 @@ function builtin_i64x2_all_true(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_all_true, builtin_i64x2_all_true); -// i64x2.trunc_sat_f64x2_s -> v128.trunc_sat -function builtin_i64x2_trunc_sat_f64x2_s(ctx: BuiltinContext): ExpressionRef { +// i64x2.eq -> v128.eq +function builtin_i64x2_eq(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i64 ]; ctx.contextualType = Type.v128; - return builtin_v128_trunc_sat(ctx); + return builtin_v128_eq(ctx); +} +builtins.set(BuiltinNames.i64x2_eq, builtin_i64x2_eq); + +// i64x2.ne -> v128.ne +function builtin_i64x2_ne(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_ne(ctx); +} +builtins.set(BuiltinNames.i64x2_ne, builtin_i64x2_ne); + +// i64x2.lt_s -> v128.lt +function builtin_i64x2_lt_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_lt(ctx); } -builtins.set(BuiltinNames.i64x2_trunc_sat_f64x2_s, builtin_i64x2_trunc_sat_f64x2_s); +builtins.set(BuiltinNames.i64x2_lt_s, builtin_i64x2_lt_s); -// i64x2.trunc_sat_f64x2_u -> v128.trunc_sat -function builtin_i64x2_trunc_sat_f64x2_u(ctx: BuiltinContext): ExpressionRef { +// i64x2.lt_u -> v128.lt +function builtin_i64x2_lt_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u64 ]; ctx.contextualType = Type.v128; - return builtin_v128_trunc_sat(ctx); + return builtin_v128_lt(ctx); } -builtins.set(BuiltinNames.i64x2_trunc_sat_f64x2_u, builtin_i64x2_trunc_sat_f64x2_u); +builtins.set(BuiltinNames.i64x2_lt_u, builtin_i64x2_lt_u); -// i64x2.load32x2_s -> v128.load_ext -function builtin_i64x2_load32x2_s(ctx: BuiltinContext): ExpressionRef { +// i64x2.le_s -> v128.le +function builtin_i64x2_le_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_le(ctx); +} +builtins.set(BuiltinNames.i64x2_le_s, builtin_i64x2_le_s); + +// i64x2.le_u -> v128.le +function builtin_i64x2_le_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_le(ctx); +} +builtins.set(BuiltinNames.i64x2_le_u, builtin_i64x2_le_u); + +// i64x2.gt_s -> v128.gt +function builtin_i64x2_gt_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_gt(ctx); +} +builtins.set(BuiltinNames.i64x2_gt_s, builtin_i64x2_gt_s); + +// i64x2.gt_u -> v128.gt +function builtin_i64x2_gt_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_gt(ctx); +} +builtins.set(BuiltinNames.i64x2_gt_u, builtin_i64x2_gt_u); + +// i64x2.ge_s -> v128.ge +function builtin_i64x2_ge_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_ge(ctx); +} +builtins.set(BuiltinNames.i64x2_ge_s, builtin_i64x2_ge_s); + +// i64x2.ge_u -> v128.ge +function builtin_i64x2_ge_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_ge(ctx); +} +builtins.set(BuiltinNames.i64x2_ge_u, builtin_i64x2_ge_u); + +// i64x2.extend_low_i32x4_s -> // v128.extend_low +function builtin_i64x2_extend_low_i32x4_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i32 ]; ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i64x2_load32x2_s, builtin_i64x2_load32x2_s); +builtins.set(BuiltinNames.i64x2_extend_low_i32x4_s, builtin_i64x2_extend_low_i32x4_s); -// i64x2.load32x2_u -> v128.load_ext -function builtin_i64x2_load32x2_u(ctx: BuiltinContext): ExpressionRef { +// i64x2.extend_low_i32x4_u -> v128.extend_low +function builtin_i64x2_extend_low_i32x4_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u32 ]; ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); + return builtin_v128_extend_low(ctx); +} +builtins.set(BuiltinNames.i64x2_extend_low_i32x4_u, builtin_i64x2_extend_low_i32x4_u); + +// i64x2.extend_high_i32x4_s -> v128.extend_high +function builtin_i64x2_extend_high_i32x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extend_high(ctx); +} +builtins.set(BuiltinNames.i64x2_extend_high_i32x4_s, builtin_i64x2_extend_high_i32x4_s); + +// i64x2.extend_high_i32x4_u -> v128.extend_high +function builtin_i64x2_extend_high_i32x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i64x2_load32x2_u, builtin_i64x2_load32x2_u); +builtins.set(BuiltinNames.i64x2_extend_high_i32x4_u, builtin_i64x2_extend_high_i32x4_u); // f32x4.splat -> v128.splat function builtin_f32x4_splat(ctx: BuiltinContext): ExpressionRef { @@ -8308,24 +8373,6 @@ function builtin_f32x4_convert_i32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f32x4_convert_i32x4_u, builtin_f32x4_convert_i32x4_u); -// f32x4.qfma -> v128.qfma -function builtin_f32x4_qfma(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfma(ctx); -} -builtins.set(BuiltinNames.f32x4_qfma, builtin_f32x4_qfma); - -// f32x4.qfms -> v128.qfms -function builtin_f32x4_qfms(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfms(ctx); -} -builtins.set(BuiltinNames.f32x4_qfms, builtin_f32x4_qfms); - // f64x2.splat -> v128.splat function builtin_f64x2_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8542,96 +8589,6 @@ function builtin_f64x2_ge(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f64x2_ge, builtin_f64x2_ge); -// f64x2.convert_i64x2_s -> v128.convert -function builtin_f64x2_convert_i64x2_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_convert(ctx); -} -builtins.set(BuiltinNames.f64x2_convert_i64x2_s, builtin_f64x2_convert_i64x2_s); - -// f64x2.convert_i64x2_u -> v128.convert -function builtin_f64x2_convert_i64x2_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_convert(ctx); -} -builtins.set(BuiltinNames.f64x2_convert_i64x2_u, builtin_f64x2_convert_i64x2_u); - -// f64x2.qfma -> v128.qfma -function builtin_f64x2_qfma(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfma(ctx); -} -builtins.set(BuiltinNames.f64x2_qfma, builtin_f64x2_qfma); - -// f64x2.qfms -> v128.qfms -function builtin_f64x2_qfms(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfms(ctx); -} -builtins.set(BuiltinNames.f64x2_qfms, builtin_f64x2_qfms); - -// v8x16.shuffle -> v128.shuffle -function builtin_v8x16_shuffle(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_shuffle(ctx); -} -builtins.set(BuiltinNames.v8x16_shuffle, builtin_v8x16_shuffle); - -// v8x16.swizzle -> v128.swizzle -function builtin_v8x16_swizzle(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = null; - ctx.contextualType = Type.v128; - return builtin_v128_swizzle(ctx); -} -builtins.set(BuiltinNames.v8x16_swizzle, builtin_v8x16_swizzle); - -// v8x16.load_splat -> v128.load_splat -function builtin_v8x16_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v8x16_load_splat, builtin_v8x16_load_splat); - -// v16x8.load_splat -> v128.load_splat -function builtin_v16x8_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u16 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v16x8_load_splat, builtin_v16x8_load_splat); - -// v32x4.load_splat -> v128.load_splat -function builtin_v32x4_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v32x4_load_splat, builtin_v32x4_load_splat); - -// v64x2.load_splat -> v128.load_splat -function builtin_v64x2_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v64x2_load_splat, builtin_v64x2_load_splat); - // === Internal helpers ======================================================================= /** Compiles the `visit_globals` function. */ diff --git a/src/common.ts b/src/common.ts index 9ca1591fb9..55ad0eee06 100644 --- a/src/common.ts +++ b/src/common.ts @@ -125,8 +125,10 @@ export namespace CommonNames { export const v128 = "v128"; export const funcref = "funcref"; export const externref = "externref"; - export const exnref = "exnref"; export const anyref = "anyref"; + export const eqref = "eqref"; + export const i31ref = "i31ref"; + export const dataref = "dataref"; export const i8x16 = "i8x16"; export const u8x16 = "u8x16"; export const i16x8 = "i16x8"; @@ -193,8 +195,10 @@ export namespace CommonNames { export const V128 = "V128"; export const Funcref = "Funcref"; export const Externref = "Externref"; - export const Exnref = "Exnref"; export const Anyref = "Anyref"; + export const Eqref = "Eqref"; + export const I31ref = "I31ref"; + export const Dataref = "Dataref"; export const String = "String"; export const Array = "Array"; export const StaticArray = "StaticArray"; diff --git a/src/compiler.ts b/src/compiler.ts index 8ffd265ccb..4acdbfa2bd 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -25,6 +25,7 @@ import { ExpressionRef, UnaryOp, BinaryOp, + RefIsOp, NativeType, FunctionRef, ExpressionId, @@ -668,15 +669,6 @@ export class Compiler extends DiagnosticEmitter { // import memory if requested (default memory is named '0' by Binaryen) if (options.importMemory) module.addMemoryImport("0", "env", "memory", isSharedMemory); - // set up function table (first elem is blank) - var tableBase = this.options.tableBase; - if (!tableBase) tableBase = 1; // leave first elem blank - var functionTableNames = new Array(functionTable.length); - for (let i = 0, k = functionTable.length; i < k; ++i) { - functionTableNames[i] = functionTable[i].internalName; - } - module.setFunctionTable(tableBase + functionTable.length, Module.UNLIMITED_TABLE, functionTableNames, module.i32(tableBase)); - // import and/or export table if requested (default table is named '0' by Binaryen) if (options.importTable) { module.addTableImport("0", "env", "table"); @@ -697,6 +689,15 @@ export class Compiler extends DiagnosticEmitter { } } + // set up function table (first elem is blank) + var tableBase = this.options.tableBase; + if (!tableBase) tableBase = 1; // leave first elem blank + var functionTableNames = new Array(functionTable.length); + for (let i = 0, k = functionTable.length; i < k; ++i) { + functionTableNames[i] = functionTable[i].internalName; + } + module.setFunctionTable(tableBase + functionTable.length, Module.UNLIMITED_TABLE, functionTableNames, module.i32(tableBase)); + // expose the arguments length helper if there are varargs exports if (this.runtimeFeatures & RuntimeFeatures.setArgumentsLength) { module.addFunction(BuiltinNames.setArgumentsLength, NativeType.I32, NativeType.None, null, @@ -4932,9 +4933,13 @@ export class Compiler extends DiagnosticEmitter { module.binary(BinaryOp.EqI8x16, leftExpr, rightExpr) ); } + case TypeKind.EQREF: + case TypeKind.I31REF: + case TypeKind.DATAREF: { + return module.ref_eq(leftExpr, rightExpr); + } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: case TypeKind.ANYREF: { this.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, @@ -4991,9 +4996,15 @@ export class Compiler extends DiagnosticEmitter { module.binary(BinaryOp.NeI8x16, leftExpr, rightExpr) ); } + case TypeKind.EQREF: + case TypeKind.I31REF: + case TypeKind.DATAREF: { + return module.unary(UnaryOp.EqzI32, + module.ref_eq(leftExpr, rightExpr) + ); + } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: case TypeKind.ANYREF: { this.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, @@ -9711,11 +9722,10 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.FUNCREF: case TypeKind.EXTERNREF: return this.checkFeatureEnabled(Feature.REFERENCE_TYPES, reportNode); - case TypeKind.EXNREF: { - return this.checkFeatureEnabled(Feature.REFERENCE_TYPES, reportNode) - && this.checkFeatureEnabled(Feature.EXCEPTION_HANDLING, reportNode); - } - case TypeKind.ANYREF: { + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.I31REF: + case TypeKind.DATAREF: { return this.checkFeatureEnabled(Feature.REFERENCE_TYPES, reportNode) && this.checkFeatureEnabled(Feature.GC, reportNode); } @@ -9817,9 +9827,10 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.V128: return module.v128(v128_zero); case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: case TypeKind.ANYREF: - return module.ref_null(type.toNativeType()); + case TypeKind.EQREF: + case TypeKind.DATAREF: return module.ref_null(type.toNativeType()); + case TypeKind.I31REF: return module.i31_new(module.i32(0)); } } @@ -9841,6 +9852,7 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.U64: return module.i64(1); case TypeKind.F32: return module.f32(1); case TypeKind.F64: return module.f64(1); + case TypeKind.I31REF: return module.i31_new(module.i32(1)); } } @@ -9926,9 +9938,11 @@ export class Compiler extends DiagnosticEmitter { } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: - case TypeKind.ANYREF:{ - return module.ref_is_null(expr); + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.DATAREF: + case TypeKind.I31REF: { + return module.ref_is(RefIsOp.RefIsNull, expr); } default: { assert(false); diff --git a/src/definitions.ts b/src/definitions.ts index 62b80efbf6..474fc8a567 100644 --- a/src/definitions.ts +++ b/src/definitions.ts @@ -592,8 +592,10 @@ export class TSDBuilder extends ExportsWalker { case TypeKind.VOID: return "void"; case TypeKind.FUNCREF: return "funcref"; case TypeKind.EXTERNREF: return "externref"; - case TypeKind.EXNREF: return "exnref"; case TypeKind.ANYREF: return "anyref"; + case TypeKind.EQREF: return "eqref"; + case TypeKind.I31REF: return "i31ref"; + case TypeKind.DATAREF: return "dataref"; default: { assert(false); return "any"; diff --git a/src/flow.ts b/src/flow.ts index 7c9549aee1..7e1547b26a 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -305,8 +305,10 @@ export class Flow { case NativeType.V128: { temps = parentFunction.tempV128s; break; } case NativeType.Funcref: { temps = parentFunction.tempFuncrefs; break; } case NativeType.Externref: { temps = parentFunction.tempExternrefs; break; } - case NativeType.Exnref: { temps = parentFunction.tempExnrefs; break; } case NativeType.Anyref: { temps = parentFunction.tempAnyrefs; break; } + case NativeType.Eqref: { temps = parentFunction.tempEqrefs; break; } + case NativeType.I31ref: { temps = parentFunction.tempI31refs; break; } + case NativeType.Dataref: { temps = parentFunction.tempDatarefs; break; } default: throw new Error("concrete type expected"); } var local: Local; @@ -390,18 +392,30 @@ export class Flow { else parentFunction.tempExternrefs = temps = []; break; } - case NativeType.Exnref: { - let tempExnrefs = parentFunction.tempExnrefs; - if (tempExnrefs) temps = tempExnrefs; - else parentFunction.tempExnrefs = temps = []; - break; - } case NativeType.Anyref: { let tempAnyrefs = parentFunction.tempAnyrefs; if (tempAnyrefs) temps = tempAnyrefs; else parentFunction.tempAnyrefs = temps = []; break; } + case NativeType.Eqref: { + let tempEqrefs = parentFunction.tempEqrefs; + if (tempEqrefs) temps = tempEqrefs; + else parentFunction.tempEqrefs = temps = []; + break; + } + case NativeType.I31ref: { + let tempI31refs = parentFunction.tempI31refs; + if (tempI31refs) temps = tempI31refs; + else parentFunction.tempI31refs = temps = []; + break; + } + case NativeType.Dataref: { + let tempDatarefs = parentFunction.tempDatarefs; + if (tempDatarefs) temps = tempDatarefs; + else parentFunction.tempDatarefs = temps = []; + break; + } default: throw new Error("concrete type expected"); } assert(local.index >= 0); diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 8e5980b139..79fb483759 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -36,8 +36,10 @@ export declare function _BinaryenTypeFloat64(): BinaryenType; export declare function _BinaryenTypeVec128(): BinaryenType; export declare function _BinaryenTypeFuncref(): BinaryenType; export declare function _BinaryenTypeExternref(): BinaryenType; -export declare function _BinaryenTypeNullref(): BinaryenType; -export declare function _BinaryenTypeExnref(): BinaryenType; +export declare function _BinaryenTypeAnyref(): BinaryenType; +export declare function _BinaryenTypeEqref(): BinaryenType; +export declare function _BinaryenTypeI31ref(): BinaryenType; +export declare function _BinaryenTypeDataref(): BinaryenType; export declare function _BinaryenTypeUnreachable(): BinaryenType; export declare function _BinaryenTypeAuto(): BinaryenType; @@ -59,6 +61,7 @@ export declare function _BinaryenFeatureTailCall(): BinaryenFeatureFlags; export declare function _BinaryenFeatureReferenceTypes(): BinaryenFeatureFlags; export declare function _BinaryenFeatureMultivalue(): BinaryenFeatureFlags; export declare function _BinaryenFeatureGC(): BinaryenFeatureFlags; +export declare function _BinaryenFeatureTypedFunctionReferences(): BinaryenFeatureFlags; export declare function _BinaryenFeatureAll(): BinaryenFeatureFlags; type BinaryenExpressionId = i32; @@ -103,13 +106,13 @@ export declare function _BinaryenDataDropId(): BinaryenExpressionId; export declare function _BinaryenMemoryCopyId(): BinaryenExpressionId; export declare function _BinaryenMemoryFillId(): BinaryenExpressionId; export declare function _BinaryenRefNullId(): BinaryenExpressionId; -export declare function _BinaryenRefIsNullId(): BinaryenExpressionId; +export declare function _BinaryenRefIsId(): BinaryenExpressionId; export declare function _BinaryenRefFuncId(): BinaryenExpressionId; export declare function _BinaryenRefEqId(): BinaryenExpressionId; export declare function _BinaryenTryId(): BinaryenExpressionId; export declare function _BinaryenThrowId(): BinaryenExpressionId; export declare function _BinaryenRethrowId(): BinaryenExpressionId; -export declare function _BinaryenBrOnExnId(): BinaryenExpressionId; +export declare function _BinaryenBrOnId(): BinaryenExpressionId; export declare function _BinaryenTupleMakeId(): BinaryenExpressionId; export declare function _BinaryenTupleExtractId(): BinaryenExpressionId; export declare function _BinaryenPopId(): BinaryenExpressionId; @@ -462,6 +465,16 @@ export declare function _BinaryenWidenLowUVecI16x8ToVecI32x4(): BinaryenOp; export declare function _BinaryenWidenHighUVecI16x8ToVecI32x4(): BinaryenOp; export declare function _BinaryenSwizzleVec8x16(): BinaryenOp; +export declare function _BinaryenRefIsNull(): BinaryenOp; +export declare function _BinaryenRefIsFunc(): BinaryenOp; +export declare function _BinaryenRefIsData(): BinaryenOp; +export declare function _BinaryenRefIsI31(): BinaryenOp; + +export declare function _BinaryenRefAsNonNull(): BinaryenOp; +export declare function _BinaryenRefAsFunc(): BinaryenOp; +export declare function _BinaryenRefAsData(): BinaryenOp; +export declare function _BinaryenRefAsAsI31(): BinaryenOp; + type BinaryenExpressionRef = usize; export declare function _BinaryenExpressionGetId(expr: BinaryenExpressionRef): BinaryenExpressionId; @@ -531,7 +544,9 @@ export declare function _BinaryenCallSetReturn(expr: BinaryenExpressionRef, isRe // ^ with return = true export declare function _BinaryenReturnCall(module: BinaryenModuleRef, targetName: BinaryenString, operandExprs: BinaryenArray, numOperands: BinaryenIndex, returnType: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenCallIndirect(module: BinaryenModuleRef, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenCallIndirect(module: BinaryenModuleRef, table: BinaryenString, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenCallIndirectGetTable(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenCallIndirectSetTable(expr: BinaryenExpressionRef, table: BinaryenString): void; export declare function _BinaryenCallIndirectGetTarget(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenCallIndirectSetTarget(expr: BinaryenExpressionRef, targetExpr: BinaryenExpressionRef): void; export declare function _BinaryenCallIndirectGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; @@ -543,7 +558,7 @@ export declare function _BinaryenCallIndirectRemoveOperandAt(expr: BinaryenExpre export declare function _BinaryenCallIndirectIsReturn(expr: BinaryenExpressionRef): bool; export declare function _BinaryenCallIndirectSetReturn(expr: BinaryenExpressionRef, isReturn: bool): void; // ^ with return = true -export declare function _BinaryenReturnCallIndirect(module: BinaryenModuleRef, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenReturnCallIndirect(module: BinaryenModuleRef, table: BinaryenString, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenLocalGet(module: BinaryenModuleRef, index: BinaryenIndex, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenLocalGetGetIndex(expr: BinaryenExpressionRef): BinaryenIndex; @@ -786,9 +801,17 @@ export declare function _BinaryenMemoryFillSetSize(expr: BinaryenExpressionRef, export declare function _BinaryenRefNull(module: BinaryenModuleRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenRefIsNull(module: BinaryenModuleRef, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRefIsNullGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRefIsNullSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenRefIs(module: BinaryenModuleRef, op: BinaryenOp, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefIsGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenRefIsSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; +export declare function _BinaryenRefIsGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefIsSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; + +export declare function _BinaryenRefAs(module: BinaryenModuleRef, op: BinaryenOp, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefAsGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenRefAsSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; +export declare function _BinaryenRefAsGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefAsSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; export declare function _BinaryenRefFunc(module: BinaryenModuleRef, funcName: BinaryenString, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenRefFuncGetFunc(expr: BinaryenExpressionRef): BinaryenString; @@ -800,11 +823,27 @@ export declare function _BinaryenRefEqSetLeft(expr: BinaryenExpressionRef, leftE export declare function _BinaryenRefEqGetRight(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenRefEqSetRight(expr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef): void; -export declare function _BinaryenTry(module: BinaryenModuleRef, bodyExpr: BinaryenExpressionRef, catchBodyExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenTry(module: BinaryenModuleRef, name: BinaryenString, bodyExpr: BinaryenExpressionRef, catchEvents: BinaryenArray, numCatchEvents: BinaryenIndex, catchBodies: BinaryenArray, numCatchBodies: BinaryenIndex, delegateTarget: BinaryenString): BinaryenExpressionRef; +export declare function _BinaryenTryGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenTrySetName(expr: BinaryenExpressionRef, name: BinaryenString): void; export declare function _BinaryenTryGetBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenTrySetBody(expr: BinaryenExpressionRef, bodyExpr: BinaryenExpressionRef): void; -export declare function _BinaryenTryGetCatchBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenTrySetCatchBody(expr: BinaryenExpressionRef, catchBodyExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTryGetNumCatchEvents(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTryGetNumCatchBodies(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTryGetCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenString; +export declare function _BinaryenTrySetCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchEvent: BinaryenString): void; +export declare function _BinaryenTryAppendCatchEvent(expr: BinaryenExpressionRef, catchEvent: BinaryenString): BinaryenIndex; +export declare function _BinaryenTryInsertCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchEvent: BinaryenString): void; +export declare function _BinaryenTryRemoveCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenString; +export declare function _BinaryenTryGetCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenTrySetCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTryAppendCatchBody(expr: BinaryenExpressionRef, catchExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTryInsertCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTryRemoveCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenTryHasCatchAll(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenTryGetDelegateTarget(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenTrySetDelegateTarget(expr: BinaryenExpressionRef, delegateTarget: BinaryenString): void; +export declare function _BinaryenTryIsDelegate(expr: BinaryenExpressionRef): bool; export declare function _BinaryenThrow(module: BinaryenModuleRef, eventName: BinaryenString, operands: BinaryenArray, numOperands: BinaryenIndex): BinaryenExpressionRef; export declare function _BinaryenThrowGetEvent(expr: BinaryenExpressionRef): BinaryenString; @@ -816,17 +855,9 @@ export declare function _BinaryenThrowAppendOperand(expr: BinaryenExpressionRef, export declare function _BinaryenThrowInsertOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; export declare function _BinaryenThrowRemoveOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; -export declare function _BinaryenRethrow(module: BinaryenModuleRef, exnrefExpr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRethrowGetExnref(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRethrowSetExnref(expr: BinaryenExpressionRef, exnrefExpr: BinaryenExpressionRef): void; - -export declare function _BinaryenBrOnExn(module: BinaryenModuleRef, name: BinaryenString, eventName: BinaryenString, exnrefExpr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenBrOnExnGetEvent(expr: BinaryenExpressionRef): BinaryenString; -export declare function _BinaryenBrOnExnSetEvent(expr: BinaryenExpressionRef, eventName: BinaryenString): void; -export declare function _BinaryenBrOnExnGetName(expr: BinaryenExpressionRef): BinaryenString; -export declare function _BinaryenBrOnExnSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; -export declare function _BinaryenBrOnExnGetExnref(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenBrOnExnSetExnref(expr: BinaryenExpressionRef, exnrefExpr: BinaryenExpressionRef): void; +export declare function _BinaryenRethrow(module: BinaryenModuleRef, target: BinaryenString): BinaryenExpressionRef; +export declare function _BinaryenRethrowGetTarget(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenRethrowSetDepth(expr: BinaryenExpressionRef, target: BinaryenString): void; export declare function _BinaryenTupleMake(module: BinaryenModuleRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex): BinaryenExpressionRef; export declare function _BinaryenTupleMakeGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; @@ -844,6 +875,16 @@ export declare function _BinaryenTupleExtractSetIndex(expr: BinaryenExpressionRe export declare function _BinaryenPop(module: BinaryenModuleRef, type: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenI31New(module: BinaryenModuleRef, value: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenI31NewGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenI31NewSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; + +export declare function _BinaryenI31Get(module: BinaryenModuleRef, i31Expr: BinaryenExpressionRef, signed: bool): BinaryenExpressionRef; +export declare function _BinaryenI31GetGetI31(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenI31GetSetI31(expr: BinaryenExpressionRef, i31Expr: BinaryenExpressionRef): void; +export declare function _BinaryenI31GetIsSigned(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenI31GetSetSigned(expr: BinaryenExpressionRef, signed: bool): void; + type BinaryenFunctionRef = usize; export declare function _BinaryenAddFunction(module: BinaryenModuleRef, name: BinaryenString, params: BinaryenType, results: BinaryenType, varTypes: BinaryenArray, numVarTypes: BinaryenIndex, body: BinaryenExpressionRef): BinaryenFunctionRef; @@ -915,7 +956,22 @@ export declare function _BinaryenEventGetAttribute(event: BinaryenEventRef): u32 export declare function _BinaryenEventGetParams(event: BinaryenEventRef): BinaryenType; export declare function _BinaryenEventGetResults(event: BinaryenEventRef): BinaryenType; +type BinaryenTableRef = usize; + export declare function _BinaryenSetFunctionTable(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, funcs: BinaryenArray, numFuncs: BinaryenIndex, offset: BinaryenExpressionRef): void; +export declare function _BinaryenAddTable(module: BinaryenModuleRef, name: BinaryenString, initial: BinaryenIndex, maximum: BinaryenIndex, funcNames: BinaryenArray, numFunctNames: BinaryenIndex, offset: BinaryenExpressionRef): BinaryenTableRef; +export declare function _BinaryenRemoveTable(module: BinaryenModuleRef, table: BinaryenString): void; +export declare function _BinaryenGetNumTables(module: BinaryenModuleRef): BinaryenIndex; +export declare function _BinaryenGetTable(module: BinaryenModuleRef, name: BinaryenString): BinaryenTableRef; +export declare function _BinaryenGetTableByIndex(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenTableRef; + +export declare function _BinaryenTableGetName(table: BinaryenTableRef): BinaryenString; +export declare function _BinaryenTableSetName(table: BinaryenTableRef, name: BinaryenString): void; +export declare function _BinaryenTableGetInitial(table: BinaryenTableRef): BinaryenIndex; +export declare function _BinaryenTableSetInitial(table: BinaryenTableRef, initial: BinaryenIndex): void; +export declare function _BinaryenTableHasMax(table: BinaryenTableRef): bool; +export declare function _BinaryenTableGetMax(table: BinaryenTableRef): BinaryenIndex; +export declare function _BinaryenTableSetMax(table: BinaryenTableRef, max: BinaryenIndex): void; export declare function _BinaryenSetMemory(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, exportName: BinaryenString, segments: BinaryenArray>, segmentPassive: BinaryenArray, segmentOffsets: BinaryenArray, segmentSizes: BinaryenArray, numSegments: BinaryenIndex, shared: bool): void; export declare function _BinaryenGetNumMemorySegments(module: BinaryenModuleRef): BinaryenIndex; diff --git a/src/module.ts b/src/module.ts index 203afc707d..f76331ed00 100644 --- a/src/module.ts +++ b/src/module.ts @@ -41,8 +41,10 @@ export namespace NativeType { export const V128: NativeType = 6 /* _BinaryenTypeVec128 */; export const Funcref: NativeType = 7 /* _BinaryenTypeFuncref */; export const Externref: NativeType = 8 /* _BinaryenTypeExternref */; - export const Exnref: NativeType = 9 /* _BinaryenTypeExnref */; - export const Anyref: NativeType = 10 /* _BinaryenTypeAnyref */; + export const Anyref: NativeType = 9 /* _BinaryenTypeAnyref */; + export const Eqref: NativeType = 10 /* _BinaryenTypeEqref */; + export const I31ref: NativeType = 11 /* _BinaryenTypeI31ref */; + export const Dataref: NativeType = 12 /* _BinaryenTypeDataref */; export const Auto: NativeType = -1 /* _BinaryenTypeAuto */; } @@ -59,8 +61,9 @@ export enum FeatureFlags { ReferenceTypes = 256 /* _BinaryenFeatureReferenceTypes */, MultiValue = 512 /* _BinaryenFeatureMultivalue */, GC = 1024 /* _BinaryenFeatureGC */, - Memory64 = 2048, // TODO: missing in Binaryen API - All = 4095 /* _BinaryenFeatureAll */ + Memory64 = 2048 /* _BinaryenFeatureMemory64 */, + TypedFunctionReferences = 4096, /* _BinaryenTypedFunctionReferences */ + All = 8191 /* _BinaryenFeatureAll */ } export enum ExpressionId { @@ -87,49 +90,51 @@ export enum ExpressionId { MemorySize = 20 /* _BinaryenMemorySizeId */, MemoryGrow = 21 /* _BinaryenMemoryGrowId */, Nop = 22 /* _BinaryenNopId */, - Unreachable = 23 /* _BinaryenUnreachableId */, - AtomicRMW = 24 /* _BinaryenAtomicRMWId */, - AtomicCmpxchg = 25 /* _BinaryenAtomicCmpxchgId */, - 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, - 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 */, - Try = 45 /* _BinaryenTryId */, - Throw = 46 /* _BinaryenThrowId */, - Rethrow = 47 /* _BinaryenRethrowId */, - BrOnExn = 48 /* _BinaryenBrOnExnId */, - TupleMake = 49 /* _BinaryenTupleMakeId */, - TupleExtract = 50, /* _BinaryenTupleExtractId */ - I31New = 51, /* _BinaryenI32NewId */ - I31Get = 52, /* _BinaryenI31GetId */ - CallRef = 53, /* _BinaryenCallRefId */ - RefTest = 54, /* _BinaryenRefTestId */ - RefCast = 55, /* _BinaryenRefCastId */ - BrOnCast = 56, /* _BinaryenBrOnCastId */ - RttCanon = 57, /* _BinaryenRttCanonId */ - RttSub = 58, /* _BinaryenRttSubId */ - StructNew = 59, /* _BinaryenStructNewId */ - StructGet = 60, /* _BinaryenStructGetId */ - StructSet = 61, /* _BinaryenStructSetId */ - ArrayNew = 62, /* _BinaryenArrayNewId */ - ArrayGet = 63, /* _BinaryenArrayGetId */ - ArraySet = 64, /* _BinaryenArraySetId */ - ArrayLen = 64 /* _BinaryenArrayLenId */ + // Prefetch (obsolete) + Unreachable = 24 /* _BinaryenUnreachableId */, + AtomicRMW = 25 /* _BinaryenAtomicRMWId */, + AtomicCmpxchg = 26 /* _BinaryenAtomicCmpxchgId */, + AtomicWait = 27 /* _BinaryenAtomicWaitId */, + AtomicNotify = 28 /* _BinaryenAtomicNotifyId */, + AtomicFence = 29 /* _BinaryenAtomicFenceId */, + SIMDExtract = 30 /* _BinaryenSIMDExtractId */, + SIMDReplace = 31 /* _BinaryenSIMDReplaceId */, + SIMDShuffle = 32 /* _BinaryenSIMDShuffleId */, + SIMDTernary = 33 /* _BinaryenSIMDTernaryId */, + SIMDShift = 34 /* _BinaryenSIMDShiftId */, + SIMDLoad = 35 /* _BinaryenSIMDLoadId */, + SIMDLoadStoreLane = 36 /* _BinaryenSIMDLoadStoreLaneId */, + SIMDWiden = 37 /* _BinaryenSIMDWidenId */, + MemoryInit = 38 /* _BinaryenMemoryInitId */, + DataDrop = 39 /* _BinaryenDataDropId */, + MemoryCopy = 40 /* _BinaryenMemoryCopyId */, + MemoryFill = 41 /* _BinaryenMemoryFillId */, + Pop = 42 /* _BinaryenPopId */, + RefNull = 43 /* _BinaryenRefNullId */, + RefIs = 44 /* _BinaryenRefIsId */, + RefFunc = 45 /* _BinaryenRefFuncId */, + RefEq = 46 /* _BinaryenRefEqId */, + Try = 47 /* _BinaryenTryId */, + Throw = 48 /* _BinaryenThrowId */, + Rethrow = 49 /* _BinaryenRethrowId */, + TupleMake = 50 /* _BinaryenTupleMakeId */, + TupleExtract = 51 /* _BinaryenTupleExtractId */, + I31New = 52 /* _BinaryenI31NewId */, + I31Get = 53 /* _BinaryenI31GetId */, + CallRef = 54 /* _BinaryenCallRefId */, + RefTest = 55 /* _BinaryenRefTestId */, + RefCast = 56 /* _BinaryenRefCastId */, + BrOn = 57 /* _BinaryenBrOnId */, + RttCanon = 58 /* _BinaryenRttCanonId */, + RttSub = 59 /* _BinaryenRttSubId */, + StructNew = 60 /* _BinaryenStructNewId */, + StructGet = 61 /* _BinaryenStructGetId */, + StructSet = 62 /* _BinaryenStructSetId */, + ArrayNew = 63 /* _BinaryenArrayNewId */, + ArrayGet = 64 /* _BinaryenArrayGetId */, + ArraySet = 65 /* _BinaryenArraySetId */, + ArrayLen = 66 /* _BinaryenArrayLenId */, + RefAs = 67 /* _BinaryenRefAsId */ } export enum ExternalKind { @@ -214,13 +219,13 @@ export enum UnaryOp { SplatF32x4 = 64 /* _BinaryenSplatVecF32x4 */, SplatF64x2 = 65 /* _BinaryenSplatVecF64x2 */, NotV128 = 66 /* _BinaryenNotVec128 */, - AbsI8x16 = 67 /* __BinaryenAbsVecI8x16 */, + AbsI8x16 = 67 /* _BinaryenAbsVecI8x16 */, NegI8x16 = 68 /* _BinaryenNegVecI8x16 */, AnyTrueI8x16 = 69 /* _BinaryenAnyTrueVecI8x16 */, AllTrueI8x16 = 70 /* _BinaryenAllTrueVecI8x16 */, - BitmaskI8x16 = 71 /* __BinaryenBitmaskVecI8x16 */, - AbsI16x8 = 72 /* __BinaryenAbsVecI16x8 */, - // PopcntVecI8x16 + BitmaskI8x16 = 71 /* _BinaryenBitmaskVecI8x16 */, + PopcntI8x16 = 72 /* TODO_BinaryenPopcntVecI8x16 */, + AbsI16x8 = 73 /* _BinaryenAbsVecI16x8 */, NegI16x8 = 74 /* _BinaryenNegVecI16x8 */, AnyTrueI16x8 = 75 /* _BinaryenAnyTrueVecI16x8 */, AllTrueI16x8 = 76 /* _BinaryenAllTrueVecI16x8 */, @@ -231,38 +236,52 @@ export enum UnaryOp { AllTrueI32x4 = 81 /* _BinaryenAllTrueVecI32x4 */, BitmaskI32x4 = 82 /* _BinaryenBitmaskVecI32x4 */, NegI64x2 = 83 /* _BinaryenNegVecI64x2 */, - AnyTrueI64x2 = 84 /* _BinaryenAnyTrueVecI64x2 */, - AllTrueI64x2 = 85 /* _BinaryenAllTrueVecI64x2 */, - AbsF32x4 = 86 /* _BinaryenAbsVecF32x4 */, - NegF32x4 = 87 /* _BinaryenNegVecF32x4 */, - SqrtF32x4 = 88 /* _BinaryenSqrtVecF32x4 */, - CeilF32x4 = 89 /* _BinaryenCeilVecF32x4 */, - FloorF32x4 = 90 /* _BinaryenFloorVecF32x4 */, + AllTrueI64x2 = 81 /* TODO_BinaryenAllTrueVecI64x2 */, // FIXME: missing opcode in binaryen + BitmaskI64x2 = 84 /* TODO_BinaryenBitmaskVecI64x2 */, + AbsF32x4 = 85 /* _BinaryenAbsVecF32x4 */, + NegF32x4 = 86 /* _BinaryenNegVecF32x4 */, + SqrtF32x4 = 87 /* _BinaryenSqrtVecF32x4 */, + CeilF32x4 = 88 /* _BinaryenCeilVecF32x4 */, + FloorF32x4 = 89 /* _BinaryenFloorVecF32x4 */, TruncF32x4 = 90 /* BinaryenTruncVecF32x4 */, NearestF32x4 = 91 /* BinaryenNearestVecF32x4 */, - AbsF64x2 = 93 /* _BinaryenAbsVecF64x2 */, - NegF64x2 = 94 /* _BinaryenNegVecF64x2 */, - SqrtF64x2 = 95 /* _BinaryenSqrtVecF64x2 */, - CeilF64x2 = 96 /* _BinaryenCeilVecF64x2 */, - FloorF64x2 = 97 /* _BinaryenFloorVecF64x2 */, - TruncF64x2 = 97 /* BinaryenTruncVecF64x2 */, - NearestF64x2 = 98 /* BinaryenNearestVecF64x2 */, - TruncSatF32x4ToI32x4 = 100 /* _BinaryenTruncSatSVecF32x4ToVecI32x4 */, - TruncSatF32x4ToU32x4 = 101 /* _BinaryenTruncSatUVecF32x4ToVecI32x4 */, - TruncSatF64x2ToI64x2 = 102 /* _BinaryenTruncSatSVecF64x2ToVecI64x2 */, - TruncSatF64x2ToU64x2 = 103 /* _BinaryenTruncSatUVecF64x2ToVecI64x2 */, - ConvertI32x4ToF32x4 = 104 /* _BinaryenConvertSVecI32x4ToVecF32x4 */, - ConvertU32x4ToF32x4 = 105 /* _BinaryenConvertUVecI32x4ToVecF32x4 */, - ConvertI64x2ToF64x2 = 106 /* _BinaryenConvertSVecI64x2ToVecF64x2 */, - ConvertU64x2ToF64x2 = 107 /* _BinaryenConvertUVecI64x2ToVecF64x2 */, - WidenLowI8x16ToI16x8 = 108 /* _BinaryenWidenLowSVecI8x16ToVecI16x8 */, - WidenHighI8x16ToI16x8 = 109 /* _BinaryenWidenHighSVecI8x16ToVecI16x8 */, - WidenLowU8x16ToU16x8 = 110 /* _BinaryenWidenLowUVecI8x16ToVecI16x8 */, - WidenHighU8x16ToU16x8 = 111 /* _BinaryenWidenHighUVecI8x16ToVecI16x8 */, - WidenLowI16x8ToI32x4 = 112 /* _BinaryenWidenLowSVecI16x8ToVecI32x4 */, - WidenHighI16x8ToI32x4 = 113 /* _BinaryenWidenHighSVecI16x8ToVecI32x4 */, - WidenLowU16x8ToU32x4 = 114 /* _BinaryenWidenLowUVecI16x8ToVecI32x4 */, - WidenHighU16x8ToU32x4 = 115 /* _BinaryenWidenHighUVecI16x8ToVecI32x4 */ + AbsF64x2 = 92 /* _BinaryenAbsVecF64x2 */, + NegF64x2 = 93 /* _BinaryenNegVecF64x2 */, + SqrtF64x2 = 94 /* _BinaryenSqrtVecF64x2 */, + CeilF64x2 = 95 /* _BinaryenCeilVecF64x2 */, + FloorF64x2 = 96 /* _BinaryenFloorVecF64x2 */, + TruncF64x2 = 97 /* _BinaryenTruncVecF64x2 */, + NearestF64x2 = 98 /* _BinaryenNearestVecF64x2 */, + ExtAddPairwiseI8x16ToI16x8 = 99 /* TODO_BinaryenExtAddPairwiseSVecI8x16ToI16x8 */, + ExtAddPairwiseU8x16ToU16x8 = 100 /* TODO_BinaryenExtAddPairwiseUVecI8x16ToI16x8 */, + ExtAddPairwiseI16x8ToI32x4 = 101 /* TODO_BinaryenExtAddPairwiseSVecI16x8ToI32x4 */, + ExtAddPairwiseU16x8ToU32x4 = 102 /* TODO_BinaryenExtAddPairwiseUVecI16x8ToI32x4 */, + TruncSatF32x4ToI32x4 = 103 /* _BinaryenTruncSatSVecF32x4ToVecI32x4 */, + TruncSatF32x4ToU32x4 = 104 /* _BinaryenTruncSatUVecF32x4ToVecI32x4 */, + TruncSatF64x2ToI64x2 = 105 /* _BinaryenTruncSatSVecF64x2ToVecI64x2 */, + TruncSatF64x2ToU64x2 = 106 /* _BinaryenTruncSatUVecF64x2ToVecI64x2 */, + ConvertI32x4ToF32x4 = 107 /* _BinaryenConvertSVecI32x4ToVecF32x4 */, + ConvertU32x4ToF32x4 = 108 /* _BinaryenConvertUVecI32x4ToVecF32x4 */, + ConvertI64x2ToF64x2 = 109 /* _BinaryenConvertSVecI64x2ToVecF64x2 */, + ConvertU64x2ToF64x2 = 110 /* _BinaryenConvertUVecI64x2ToVecF64x2 */, + ExtendLowI8x16ToI16x8 = 111 /* _BinaryenWidenLowSVecI8x16ToVecI16x8 */, + ExtendHighI8x16ToI16x8 = 112 /* _BinaryenWidenHighSVecI8x16ToVecI16x8 */, + ExtendLowU8x16ToU16x8 = 113 /* _BinaryenWidenLowUVecI8x16ToVecI16x8 */, + ExtendHighU8x16ToU16x8 = 114 /* _BinaryenWidenHighUVecI8x16ToVecI16x8 */, + ExtendLowI16x8ToI32x4 = 115 /* _BinaryenWidenLowSVecI16x8ToVecI32x4 */, + ExtendHighI16x8ToI32x4 = 116 /* _BinaryenWidenHighSVecI16x8ToVecI32x4 */, + ExtendLowU16x8ToU32x4 = 117 /* _BinaryenWidenLowUVecI16x8ToVecI32x4 */, + ExtendHighU16x8ToU32x4 = 118 /* _BinaryenWidenHighUVecI16x8ToVecI32x4 */, + ExtendLowI32x4ToI64x2 = 119 /* TODO_BinaryenWidenLowSVecI32x4ToVecI64x2 */, + ExtendHighI32x4ToI64x2 = 120 /* TODO_BinaryenWidenHighSVecI32x4ToVecI64x2 */, + ExtendLowU32x4ToU64x2 = 121 /* TODO_BinaryenWidenLowUVecI32x4ToVecI64x2 */, + ExtendHighU32x4ToU64x2 = 122 /* TODO_BinaryenWidenHighUVecI32x4ToVecI64x2 */, + ConvertLowI32x4ToF64x2 = 123 /* TODO_BinaryenConvertLowSVecI32x4ToVecF64x2 */, + ConvertLowU32x4ToF64x2 = 124 /* TODO_BinaryenConvertLowUVecI32x4ToVecF64x2 */, + TruncSatZeroF64x2ToI32x4 = 125 /* TODO_BinaryenTruncSatZeroSVecF64x2ToVecI32x4 */, + TruncSatZeroF64x2ToU32x4 = 126 /* TODO_BinaryenTruncSatZeroUVecF64x2ToVecI32x4 */, + DemoteZeroF64x2ToF32x4 = 127 /* TODO_BinaryenDemoteZeroVecF64x2ToVecF32x4 */, + PromoteLowF32x4ToF64x2 = 128 /* TODO_BinaryenPromoteLowVecF32x4ToVecF64x2 */ } export enum BinaryOp { @@ -374,86 +393,98 @@ export enum BinaryOp { LeU32x4 = 103 /* _BinaryenLeUVecI32x4 */, GeI32x4 = 104 /* _BinaryenGeSVecI32x4 */, GeU32x4 = 105 /* _BinaryenGeUVecI32x4 */, - EqF32x4 = 106 /* _BinaryenEqVecF32x4 */, - NeF32x4 = 107 /* _BinaryenNeVecF32x4 */, - LtF32x4 = 108 /* _BinaryenLtVecF32x4 */, - GtF32x4 = 109 /* _BinaryenGtVecF32x4 */, - LeF32x4 = 110 /* _BinaryenLeVecF32x4 */, - GeF32x4 = 111 /* _BinaryenGeVecF32x4 */, - EqF64x2 = 112 /* _BinaryenEqVecF64x2 */, - NeF64x2 = 113 /* _BinaryenNeVecF64x2 */, - LtF64x2 = 114 /* _BinaryenLtVecF64x2 */, - GtF64x2 = 115 /* _BinaryenGtVecF64x2 */, - LeF64x2 = 116 /* _BinaryenLeVecF64x2 */, - GeF64x2 = 117 /* _BinaryenGeVecF64x2 */, - AndV128 = 118 /* _BinaryenAndVec128 */, - OrV128 = 119 /* _BinaryenOrVec128 */, - XorV128 = 120 /* _BinaryenXorVec128 */, - AndNotV128 = 121 /* _BinaryenAndNotVec128 */, - AddI8x16 = 122 /* _BinaryenAddVecI8x16 */, - AddSatI8x16 = 123 /* _BinaryenAddSatSVecI8x16 */, - AddSatU8x16 = 124 /* _BinaryenAddSatUVecI8x16 */, - SubI8x16 = 125 /* _BinaryenSubVecI8x16 */, - SubSatI8x16 = 126 /* _BinaryenSubSatSVecI8x16 */, - SubSatU8x16 = 127 /* _BinaryenSubSatUVecI8x16 */, - MulI8x16 = 128 /* _BinaryenMulVecI8x16 */, - MinI8x16 = 129 /* _BinaryenMinSVecI8x16 */, - MinU8x16 = 130 /* _BinaryenMinUVecI8x16 */, - MaxI8x16 = 131 /* _BinaryenMaxSVecI8x16 */, - MaxU8x16 = 132 /* _BinaryenMaxUVecI8x16 */, - AvgrU8x16 = 133 /* _BinaryenAvgrUVecI8x16 */, - AddI16x8 = 134 /* _BinaryenAddVecI16x8 */, - AddSatI16x8 = 135 /* _BinaryenAddSatSVecI16x8 */, - AddSatU16x8 = 136 /* _BinaryenAddSatUVecI16x8 */, - SubI16x8 = 137 /* _BinaryenSubVecI16x8 */, - SubSatI16x8 = 138 /* _BinaryenSubSatSVecI16x8 */, - SubSatU16x8 = 139 /* _BinaryenSubSatUVecI16x8 */, - MulI16x8 = 140 /* _BinaryenMulVecI16x8 */, - MinI16x8 = 141 /* _BinaryenMinSVecI16x8 */, - MinU16x8 = 142 /* _BinaryenMinUVecI16x8 */, - MaxI16x8 = 143 /* _BinaryenMaxSVecI16x8 */, - MaxU16x8 = 144 /* _BinaryenMaxUVecI16x8 */, - AvgrU16x8 = 145 /* _BinaryenAvgrUVecI16x8 */, - // Q15MulrSatSVecI16x8, - // ExtMulLowSVecI16x8, - // ExtMulHighSVecI16x8, - // ExtMulLowUVecI16x8, - // ExtMulHighUVecI16x8, - AddI32x4 = 151 /* _BinaryenAddVecI32x4 */, - SubI32x4 = 152 /* _BinaryenSubVecI32x4 */, - MulI32x4 = 153 /* _BinaryenMulVecI32x4 */, - MinI32x4 = 154 /* _BinaryenMinSVecI32x4 */, - MinU32x4 = 155 /* _BinaryenMinUVecI32x4 */, - MaxI32x4 = 156 /* _BinaryenMaxSVecI32x4 */, - MaxU32x4 = 157 /* _BinaryenMaxUVecI32x4 */, - DotI16x8 = 158 /* _BinaryenDotSVecI16x8ToVecI32x4 */, - AddI64x2 = 163 /* _BinaryenAddVecI64x2 */, - SubI64x2 = 164 /* _BinaryenSubVecI64x2 */, - // ExtMulLowSVecI64x2 - // ExtMulHighSVecI64x2 - // ExtMulLowUVecI64x2 - // ExtMulHighUVecI64x2 - AddF32x4 = 170 /* _BinaryenAddVecF32x4 */, - SubF32x4 = 171 /* _BinaryenSubVecF32x4 */, - MulF32x4 = 172 /* _BinaryenMulVecF32x4 */, - DivF32x4 = 173 /* _BinaryenDivVecF32x4 */, - MinF32x4 = 174 /* _BinaryenMinVecF32x4 */, - MaxF32x4 = 175 /* _BinaryenMaxVecF32x4 */, - PminF32x4 = 176 /* _BinaryenPMinVecF32x4 */, - PmaxF32x4 = 177 /* _BinaryenPMaxVecF32x4 */, - AddF64x2 = 178 /* _BinaryenAddVecF64x2 */, - SubF64x2 = 179 /* _BinaryenSubVecF64x2 */, - MulF64x2 = 180 /* _BinaryenMulVecF64x2 */, - DivF64x2 = 181 /* _BinaryenDivVecF64x2 */, - MinF64x2 = 182 /* _BinaryenMinVecF64x2 */, - MaxF64x2 = 183 /* _BinaryenMaxVecF64x2 */, - PminF64x2 = 184 /* _BinaryenPMinVecF64x2 */, - PmaxF64x2 = 185 /* _BinaryenPMaxVecF64x2 */, - NarrowI16x8ToI8x16 = 186 /* _BinaryenNarrowSVecI16x8ToVecI8x16 */, - NarrowU16x8ToU8x16 = 187 /* _BinaryenNarrowUVecI16x8ToVecI8x16 */, - NarrowI32x4ToI16x8 = 188 /* _BinaryenNarrowSVecI32x4ToVecI16x8 */, - NarrowU32x4ToU16x8 = 189 /* _BinaryenNarrowUVecI32x4ToVecI16x8 */, - SwizzleV8x16 = 190 /* _BinaryenSwizzleVec8x16 */ + EqI64x2 = 96 /* TODO_BinaryenEqVecI64x2 */, // FIXME: missing opcode in binaryen + NeI64x2 = 97 /* TODO_BinaryenNeVecI64x2 */, // FIXME: missing opcode in binaryen + LtI64x2 = 98 /* TODO_BinaryenLtSVecI64x2 */, // FIXME: missing opcode in binaryen + LtU64x2 = 99 /* TODO_BinaryenLtUVecI64x2 */, // FIXME: missing opcode in binaryen + GtI64x2 = 100 /* TODO_BinaryenGtSVecI64x2 */, // FIXME: missing opcode in binaryen + GtU64x2 = 101 /* TODO_BinaryenGtUVecI64x2 */, // FIXME: missing opcode in binaryen + LeI64x2 = 102 /* TODO_BinaryenLeSVecI64x2 */, // FIXME: missing opcode in binaryen + LeU64x2 = 103 /* TODO_BinaryenLeUVecI64x2 */, // FIXME: missing opcode in binaryen + GeI64x2 = 104 /* TODO_BinaryenGeSVecI64x2 */, // FIXME: missing opcode in binaryen + GeU64x2 = 105 /* TODO_BinaryenGeUVecI64x2 */, // FIXME: missing opcode in binaryen + // 106? + EqF32x4 = 107 /* _BinaryenEqVecF32x4 */, + NeF32x4 = 108 /* _BinaryenNeVecF32x4 */, + LtF32x4 = 109 /* _BinaryenLtVecF32x4 */, + GtF32x4 = 110 /* _BinaryenGtVecF32x4 */, + LeF32x4 = 111 /* _BinaryenLeVecF32x4 */, + GeF32x4 = 112 /* _BinaryenGeVecF32x4 */, + EqF64x2 = 113 /* _BinaryenEqVecF64x2 */, + NeF64x2 = 114 /* _BinaryenNeVecF64x2 */, + LtF64x2 = 115 /* _BinaryenLtVecF64x2 */, + GtF64x2 = 116 /* _BinaryenGtVecF64x2 */, + LeF64x2 = 117 /* _BinaryenLeVecF64x2 */, + GeF64x2 = 118 /* _BinaryenGeVecF64x2 */, + AndV128 = 119 /* _BinaryenAndVec128 */, + OrV128 = 120 /* _BinaryenOrVec128 */, + XorV128 = 121 /* _BinaryenXorVec128 */, + AndNotV128 = 122 /* _BinaryenAndNotVec128 */, + AddI8x16 = 123 /* _BinaryenAddVecI8x16 */, + AddSatI8x16 = 124 /* _BinaryenAddSatSVecI8x16 */, + AddSatU8x16 = 125 /* _BinaryenAddSatUVecI8x16 */, + SubI8x16 = 126 /* _BinaryenSubVecI8x16 */, + SubSatI8x16 = 127 /* _BinaryenSubSatSVecI8x16 */, + SubSatU8x16 = 128 /* _BinaryenSubSatUVecI8x16 */, + MulI8x16 = 129 /* _BinaryenMulVecI8x16 */, + MinI8x16 = 130 /* _BinaryenMinSVecI8x16 */, + MinU8x16 = 131 /* _BinaryenMinUVecI8x16 */, + MaxI8x16 = 132 /* _BinaryenMaxSVecI8x16 */, + MaxU8x16 = 133 /* _BinaryenMaxUVecI8x16 */, + AvgrU8x16 = 134 /* _BinaryenAvgrUVecI8x16 */, + AddI16x8 = 135 /* _BinaryenAddVecI16x8 */, + AddSatI16x8 = 136 /* _BinaryenAddSatSVecI16x8 */, + AddSatU16x8 = 137 /* _BinaryenAddSatUVecI16x8 */, + SubI16x8 = 138 /* _BinaryenSubVecI16x8 */, + SubSatI16x8 = 139 /* _BinaryenSubSatSVecI16x8 */, + SubSatU16x8 = 140 /* _BinaryenSubSatUVecI16x8 */, + MulI16x8 = 141 /* _BinaryenMulVecI16x8 */, + MinI16x8 = 142 /* _BinaryenMinSVecI16x8 */, + MinU16x8 = 143 /* _BinaryenMinUVecI16x8 */, + MaxI16x8 = 144 /* _BinaryenMaxSVecI16x8 */, + MaxU16x8 = 145 /* _BinaryenMaxUVecI16x8 */, + AvgrU16x8 = 146 /* _BinaryenAvgrUVecI16x8 */, + Q15MulrSatI16x8 = 147 /* TODO_BinaryenQ15MulrSatSVecI16x8 */, + ExtMulLowI16x8 = 148 /* TODO_BinaryenExtMulLowSVecI16x8 */, + ExtMulHighI16x8 = 149 /* TODO_BinaryenExtMulHighSVecI16x8 */, + ExtMulLowU16x8 = 150 /* TODO_BinaryenExtMulLowUVecI16x8 */, + ExtMulHighU16x8 = 151 /* TODO_BinaryenExtMulHighUVecI16x8 */, + AddI32x4 = 152 /* _BinaryenAddVecI32x4 */, + SubI32x4 = 153 /* _BinaryenSubVecI32x4 */, + MulI32x4 = 154 /* _BinaryenMulVecI32x4 */, + MinI32x4 = 155 /* _BinaryenMinSVecI32x4 */, + MinU32x4 = 156 /* _BinaryenMinUVecI32x4 */, + MaxI32x4 = 157 /* _BinaryenMaxSVecI32x4 */, + MaxU32x4 = 158 /* _BinaryenMaxUVecI32x4 */, + DotI16x8 = 159 /* _BinaryenDotSVecI16x8ToVecI32x4 */, + AddI64x2 = 164 /* _BinaryenAddVecI64x2 */, + SubI64x2 = 165 /* _BinaryenSubVecI64x2 */, + MulI64x2 = 166 /* _BinaryenMulVecI64x2 */, + ExtMulLowI64x2 = 167 /* TODO_BinaryenExtMulLowSVecI64x2 */, + ExtMulHighI64x2 = 168 /* TODO_BinaryenExtMulHighSVecI64x2 */, + ExtMulLowU64x2 = 169 /* TODO_BinaryenExtMulLowUVecI64x2 */, + ExtMulHighU64x2 = 170 /* TODO_BinaryenExtMulHighUVecI64x2 */, + AddF32x4 = 171 /* _BinaryenAddVecF32x4 */, + SubF32x4 = 172 /* _BinaryenSubVecF32x4 */, + MulF32x4 = 173 /* _BinaryenMulVecF32x4 */, + DivF32x4 = 174 /* _BinaryenDivVecF32x4 */, + MinF32x4 = 175 /* _BinaryenMinVecF32x4 */, + MaxF32x4 = 176 /* _BinaryenMaxVecF32x4 */, + PminF32x4 = 177 /* _BinaryenPMinVecF32x4 */, + PmaxF32x4 = 178 /* _BinaryenPMaxVecF32x4 */, + AddF64x2 = 179 /* _BinaryenAddVecF64x2 */, + SubF64x2 = 180 /* _BinaryenSubVecF64x2 */, + MulF64x2 = 181 /* _BinaryenMulVecF64x2 */, + DivF64x2 = 182 /* _BinaryenDivVecF64x2 */, + MinF64x2 = 183 /* _BinaryenMinVecF64x2 */, + MaxF64x2 = 184 /* _BinaryenMaxVecF64x2 */, + PminF64x2 = 185 /* _BinaryenPMinVecF64x2 */, + PmaxF64x2 = 186 /* _BinaryenPMaxVecF64x2 */, + NarrowI16x8ToI8x16 = 187 /* _BinaryenNarrowSVecI16x8ToVecI8x16 */, + NarrowU16x8ToU8x16 = 188 /* _BinaryenNarrowUVecI16x8ToVecI8x16 */, + NarrowI32x4ToI16x8 = 189 /* _BinaryenNarrowSVecI32x4ToVecI16x8 */, + NarrowU32x4ToU16x8 = 190 /* _BinaryenNarrowUVecI32x4ToVecI16x8 */, + SwizzleV8x16 = 191 /* _BinaryenSwizzleVec8x16 */ } export enum AtomicRMWOp { @@ -505,7 +536,11 @@ export enum SIMDTernaryOp { QFMAF32x4 = 1 /* _BinaryenQFMAVecF32x4 */, QFMSF32x4 = 2 /* _BinaryenQFMSVecF32x4 */, QFMAF64x2 = 3 /* _BinaryenQFMAVecF64x2 */, - QFMSF64x2 = 4 /* _BinaryenQFMSVecF64x2 */ + QFMSF64x2 = 4 /* _BinaryenQFMSVecF64x2 */, + SignSelectV8x16 = 5 /* TODO_BinaryenSignSelectVec8x16 */, + SignSelectV16x8 = 6 /* TODO_BinaryenSignSelectVec16x8 */, + SignSelectV32x4 = 7 /* TODO_BinaryenSignSelectVec32x4 */, + SignSelectV64x2 = 8 /* TODO_BinaryenSignSelectVec64x2 */ } export enum SIMDLoadOp { @@ -518,7 +553,48 @@ export enum SIMDLoadOp { LoadI16ToI32x4 = 6 /* _BinaryenLoadExtSVec16x4ToVecI32x4 */, LoadU16ToU32x4 = 7 /* _BinaryenLoadExtUVec16x4ToVecI32x4 */, LoadI32ToI64x2 = 8 /* _BinaryenLoadExtSVec32x2ToVecI64x2 */, - LoadU32ToU64x2 = 9 /* _BinaryenLoadExtUVec32x2ToVecI64x2 */ + LoadU32ToU64x2 = 9 /* _BinaryenLoadExtUVec32x2ToVecI64x2 */, + Load32Zero = 10 /* TODO_BinaryenLoad32Zero */, + Load64Zero = 11 /* TODO_BinaryenLoad64Zero */ +} + +export enum SIMDLoadStoreLaneOp { + LoadLaneV8x16 = 0 /* TODO_BinaryenLoadLaneVec8x16 */, + LoadLaneV16x8 = 1 /* TODO_BinaryenLoadLaneVec16x8 */, + LoadLaneV32x4 = 2 /* TODO_BinaryenLoadLaneVec32x4 */, + LoadLaneV64x2 = 3 /* TODO_BinaryenLoadLaneVec64x2 */, + StoreLaneV8x16 = 4 /* TODO_BinaryenStoreLaneVec8x16 */, + StoreLaneV16x8 = 5 /* TODO_BinaryenStoreLaneVec16x8 */, + StoreLaneV32x4 = 6 /* TODO_BinaryenStoreLaneVec32x4 */, + StoreLaneV64x2 = 7 /* TODO_BinaryenStoreLaneVec64x2 */ +} + +// TODO: Widen with lane immediate, did these make it? +export enum SIMDWidenOp { + WidenSVecI8x16ToVecI32x4 = 0 /* TODO_BinaryenWidenSVecI8x16ToVecI32x4 */, + WidenUVecI8x16ToVecI32x4 = 1 /* TODO_BinaryenWidenUVecI8x16ToVecI32x4 */ +} + +export enum RefIsOp { + RefIsNull = 0 /* _BinaryenRefIsNull */, + RefIsFunc = 1 /* _BinaryenRefIsFunc */, + RefIsData = 2 /* _BinaryenRefIsData */, + RefIsI31 = 3 /* _BinaryenRefIsI31 */ +} + +export enum RefAsOp { + RefAsNonNull = 0 /* _BinaryenRefAsNonNull */, + RefAsFunc = 1 /* _BinaryenRefAsFunc */, + RefAsData = 2 /* _BinaryenRefAsData */, + RefAsI31 = 3 /* _BinaryenRefAsI31 */ +} + +export enum BrOnOp { + BrOnNull = 0 /* TODO_BinaryenBrOnNull */, + BrOnCast = 1 /* TODO_BinaryenBrOnCast */, + BrOnFunc = 2 /* TODO_BinaryenBrOnFunc */, + BrOnData = 3 /* TODO_BinaryenBrOnData */, + BrOnI31 = 4 /* TODO_BinaryenBrOnI31 */ } export enum ExpressionRunnerFlags { @@ -599,6 +675,10 @@ export class Module { return binaryen._BinaryenRefNull(this.ref, type); } + ref_eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef { + return binaryen._BinaryenRefEq(this.ref, left, right); + } + // expressions unary( @@ -921,13 +1001,14 @@ export class Module { results: NativeType, isReturn: bool = false ): ExpressionRef { + var cStr = this.allocStringCached("0"); // TODO: multiple tables var cArr = allocPtrArray(operands); var ret = isReturn ? binaryen._BinaryenReturnCallIndirect( - this.ref, index, cArr, operands ? operands.length : 0, params, results + this.ref, cStr, index, cArr, operands ? operands.length : 0, params, results ) : binaryen._BinaryenCallIndirect( - this.ref, index, cArr, operands ? operands.length : 0, params, results + this.ref, cStr, index, cArr, operands ? operands.length : 0, params, results ); binaryen._free(cArr); return ret; @@ -966,12 +1047,23 @@ export class Module { // exception handling - try( - body: ExpressionRef, - catchBody: ExpressionRef - ): ExpressionRef { - return binaryen._BinaryenTry(this.ref, body, catchBody); - } + // try( + // body: ExpressionRef, + // catchEvents: string[], + // catchBodies: ExpressionRef[] + // ): ExpressionRef { + // var numCatchEvents = catchEvents.length; + // var strs = new Array(numCatchEvents); + // for (let i = 0; i < numCatchEvents; ++i) { + // strs[i] = this.allocStringCached(catchEvents[i]); + // } + // var cArr1 = allocPtrArray(strs); + // var cArr2 = allocPtrArray(catchBodies); + // var ret = binaryen._BinaryenTry(this.ref, body, cArr1, numCatchEvents, cArr2, catchBodies.length); + // binaryen._free(cArr2); + // binaryen._free(cArr1); + // return ret; + // } throw( eventName: string, @@ -985,19 +1077,10 @@ export class Module { } rethrow( - exnref: ExpressionRef - ): ExpressionRef { - return binaryen._BinaryenRethrow(this.ref, exnref); - } - - br_on_exn( - name: string, - eventName: string, - exnref: ExpressionRef + target: string ): ExpressionRef { - var cStr1 = this.allocStringCached(name); - var cStr2 = this.allocStringCached(eventName); - return binaryen._BinaryenBrOnExn(this.ref, cStr1, cStr2, exnref); + var cStr = this.allocStringCached(target); + return binaryen._BinaryenRethrow(this.ref, cStr); } // multi value (pseudo instructions) @@ -1076,12 +1159,20 @@ export class Module { return binaryen._BinaryenSIMDLoad(this.ref, op, offset, align, ptr); } - // reference types + // reference types / gc + + ref_is( + op: RefIsOp, + expr: ExpressionRef + ): ExpressionRef { + return binaryen._BinaryenRefIs(this.ref, op, expr); + } - ref_is_null( + ref_as( + op: RefAsOp, expr: ExpressionRef ): ExpressionRef { - return binaryen._BinaryenRefIsNull(this.ref, expr); + return binaryen._BinaryenRefAs(this.ref, op, expr); } ref_func( @@ -1092,6 +1183,19 @@ export class Module { return binaryen._BinaryenRefFunc(this.ref, cStr, type); } + i31_new( + value: ExpressionRef + ): ExpressionRef { + return binaryen._BinaryenI31New(this.ref, value); + } + + i31_get( + expr: ExpressionRef, + signed: bool + ): ExpressionRef { + return binaryen._BinaryenI31Get(this.ref, expr, signed); + } + // globals addGlobal( diff --git a/src/passes/pass.ts b/src/passes/pass.ts index 3dfe15ee32..733c3906a0 100644 --- a/src/passes/pass.ts +++ b/src/passes/pass.ts @@ -80,13 +80,12 @@ import { _BinaryenMemoryFillGetDest, _BinaryenMemoryFillGetValue, _BinaryenMemoryFillGetSize, - _BinaryenRefIsNullGetValue, + _BinaryenRefIsGetValue, _BinaryenTryGetBody, - _BinaryenTryGetCatchBody, + _BinaryenTryGetNumCatchBodies, + _BinaryenTryGetCatchBodyAt, _BinaryenThrowGetNumOperands, _BinaryenThrowGetOperandAt, - _BinaryenRethrowGetExnref, - _BinaryenBrOnExnGetExnref, _BinaryenTupleMakeGetOperandAt, _BinaryenTupleMakeGetNumOperands, _BinaryenIfSetCondition, @@ -144,12 +143,10 @@ import { _BinaryenMemoryFillSetDest, _BinaryenMemoryFillSetValue, _BinaryenMemoryFillSetSize, - _BinaryenRefIsNullSetValue, + _BinaryenRefIsSetValue, _BinaryenTrySetBody, - _BinaryenTrySetCatchBody, + _BinaryenTrySetCatchBodyAt, _BinaryenThrowSetOperandAt, - _BinaryenRethrowSetExnref, - _BinaryenBrOnExnSetExnref, _BinaryenTupleMakeSetOperandAt, _BinaryenBlockGetName, _BinaryenLoopGetName, @@ -166,15 +163,17 @@ import { _BinaryenAtomicNotifySetNotifyCount, _BinaryenRefFuncGetFunc, _BinaryenThrowGetEvent, - _BinaryenBrOnExnGetEvent, - _BinaryenBrOnExnGetName, _BinaryenTupleExtractGetTuple, _BinaryenTupleExtractSetTuple, _BinaryenRefEqGetLeft, _BinaryenRefEqGetRight, _BinaryenRefEqSetLeft, _BinaryenRefEqSetRight, - _BinaryenFunctionSetBody + _BinaryenFunctionSetBody, + _BinaryenI31NewGetValue, + _BinaryenI31GetGetI31, + _BinaryenI31NewSetValue, + _BinaryenI31GetSetI31 } from "../glue/binaryen"; /** Base class of custom Binaryen visitors. */ @@ -367,7 +366,7 @@ export abstract class Visitor { // unimp } - visitRefIsNull(expr: ExpressionRef): void { + visitRefIs(expr: ExpressionRef): void { // unimp } @@ -391,10 +390,6 @@ export abstract class Visitor { // unimp } - visitBrOnExn(expr: ExpressionRef): void { - // unimp - } - visitTupleMake(expr: ExpressionRef): void { // unimp } @@ -423,7 +418,7 @@ export abstract class Visitor { // unimp } - visitBrOnCast(expr: ExpressionRef): void { + visitBrOn(expr: ExpressionRef): void { // unimp } @@ -463,6 +458,10 @@ export abstract class Visitor { // unimp } + visitRefAs(expr: ExpressionRef): void { + // unimp + } + // Immediates visitName(name: CString): void { @@ -801,11 +800,11 @@ export abstract class Visitor { this.visitRefNull(expr); break; } - case ExpressionId.RefIsNull: { + case ExpressionId.RefIs: { this.stack.push(expr); - this.visit(_BinaryenRefIsNullGetValue(expr)); + this.visit(_BinaryenRefIsGetValue(expr)); assert(this.stack.pop() == expr); - this.visitRefIsNull(expr); + this.visitRefIs(expr); break; } case ExpressionId.RefFunc: { @@ -826,7 +825,10 @@ export abstract class Visitor { case ExpressionId.Try: { this.stack.push(expr); this.visit(_BinaryenTryGetBody(expr)); - this.visit(_BinaryenTryGetCatchBody(expr)); + let numCatchBodies = _BinaryenTryGetNumCatchBodies(expr); + for (let i: Index = 0; i < numCatchBodies; ++i) { + this.visit(_BinaryenTryGetCatchBodyAt(expr, i)); + } assert(this.stack.pop() == expr); this.visitTry(expr); break; @@ -843,21 +845,9 @@ export abstract class Visitor { break; } case ExpressionId.Rethrow: { - this.stack.push(expr); - this.visit(_BinaryenRethrowGetExnref(expr)); - assert(this.stack.pop() == expr); this.visitRethrow(expr); break; } - case ExpressionId.BrOnExn: { - this.stack.push(expr); - this.visitEvent(_BinaryenBrOnExnGetEvent(expr)); - this.visitLabel(_BinaryenBrOnExnGetName(expr)); - this.visit(_BinaryenBrOnExnGetExnref(expr)); - assert(this.stack.pop() == expr); - this.visitBrOnExn(expr); - break; - } case ExpressionId.TupleMake: { let numOperands = _BinaryenTupleMakeGetNumOperands(expr); if (numOperands) { @@ -879,14 +869,14 @@ export abstract class Visitor { } case ExpressionId.I31New: { this.stack.push(expr); - assert(false); // TODO + this.visit(_BinaryenI31NewGetValue(expr)); assert(this.stack.pop() == expr); this.visitI31New(expr); break; } case ExpressionId.I31Get: { this.stack.push(expr); - assert(false); // TODO + this.visit(_BinaryenI31GetGetI31(expr)); assert(this.stack.pop() == expr); this.visitI31Get(expr); break; @@ -912,11 +902,11 @@ export abstract class Visitor { this.visitRefCast(expr); break; } - case ExpressionId.BrOnCast: { + case ExpressionId.BrOn: { this.stack.push(expr); assert(false); // TODO assert(this.stack.pop() == expr); - this.visitBrOnCast(expr); + this.visitBrOn(expr); break; } case ExpressionId.RttCanon: { @@ -982,6 +972,13 @@ export abstract class Visitor { this.visitArrayLen(expr); break; } + case ExpressionId.RefAs: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitRefAs(expr); + break; + } default: throw new Error("unexpected expression kind"); } this._currentExpression = previousExpression; @@ -1492,10 +1489,10 @@ export function replaceChild( case ExpressionId.RefNull: { break; } - case ExpressionId.RefIsNull: { - let value = _BinaryenRefIsNullGetValue(parent); + case ExpressionId.RefIs: { + let value = _BinaryenRefIsGetValue(parent); if (value == search) { - _BinaryenRefIsNullSetValue(parent, replacement); + _BinaryenRefIsSetValue(parent, replacement); return value; } break; @@ -1522,10 +1519,13 @@ export function replaceChild( _BinaryenTrySetBody(parent, replacement); return body; } - let catchBody = _BinaryenTryGetCatchBody(parent); - if (catchBody == search) { - _BinaryenTrySetCatchBody(parent, replacement); - return catchBody; + let numCatchBodies = _BinaryenTryGetNumCatchBodies(parent); + for (let i: Index = 0; i < numCatchBodies; ++i) { + let catchBody = _BinaryenTryGetCatchBodyAt(parent, i); + if (catchBody == search) { + _BinaryenTrySetCatchBodyAt(parent, i, replacement); + return catchBody; + } } break; } @@ -1541,19 +1541,6 @@ export function replaceChild( break; } case ExpressionId.Rethrow: { - let exnref = _BinaryenRethrowGetExnref(parent); - if (exnref == search) { - _BinaryenRethrowSetExnref(parent, replacement); - return exnref; - } - break; - } - case ExpressionId.BrOnExn: { - let exnref = _BinaryenBrOnExnGetExnref(parent); - if (exnref == search) { - _BinaryenBrOnExnSetExnref(parent, replacement); - return exnref; - } break; } case ExpressionId.TupleMake: { @@ -1576,11 +1563,19 @@ export function replaceChild( break; } case ExpressionId.I31New: { - assert(false); // TODO + let value = _BinaryenI31NewGetValue(parent); + if (value == search) { + _BinaryenI31NewSetValue(parent, replacement); + return value; + } break; } case ExpressionId.I31Get: { - assert(false); // TODO + let i31Expr = _BinaryenI31GetGetI31(parent); + if (i31Expr == search) { + _BinaryenI31GetSetI31(parent, replacement); + return i31Expr; + } break; } case ExpressionId.CallRef: { @@ -1595,7 +1590,7 @@ export function replaceChild( assert(false); // TODO break; } - case ExpressionId.BrOnCast: { + case ExpressionId.BrOn: { assert(false); // TODO break; } @@ -1635,6 +1630,10 @@ export function replaceChild( assert(false); // TODO break; } + case ExpressionId.RefAs: { + assert(false); // TODO + break; + } default: throw new Error("unexpected expression id"); } return 0; diff --git a/src/program.ts b/src/program.ts index 335d79c812..c8b7c73484 100644 --- a/src/program.ts +++ b/src/program.ts @@ -981,8 +981,10 @@ export class Program extends DiagnosticEmitter { this.registerNativeType(CommonNames.v128, Type.v128); this.registerNativeType(CommonNames.funcref, Type.funcref); this.registerNativeType(CommonNames.externref, Type.externref); - this.registerNativeType(CommonNames.exnref, Type.exnref); this.registerNativeType(CommonNames.anyref, Type.anyref); + this.registerNativeType(CommonNames.eqref, Type.eqref); + this.registerNativeType(CommonNames.i31ref, Type.i31ref); + this.registerNativeType(CommonNames.dataref, Type.dataref); // register compiler hints this.registerConstantInteger(CommonNames.ASC_TARGET, Type.i32, @@ -1241,11 +1243,11 @@ export class Program extends DiagnosticEmitter { if (options.hasFeature(Feature.REFERENCE_TYPES)) { this.registerWrapperClass(Type.funcref, CommonNames.Funcref); this.registerWrapperClass(Type.externref, CommonNames.Externref); - if (options.hasFeature(Feature.EXCEPTION_HANDLING)) { - this.registerWrapperClass(Type.exnref, CommonNames.Exnref); - } if (options.hasFeature(Feature.GC)) { this.registerWrapperClass(Type.anyref, CommonNames.Anyref); + this.registerWrapperClass(Type.eqref, CommonNames.Eqref); + this.registerWrapperClass(Type.i31ref, CommonNames.I31ref); + this.registerWrapperClass(Type.dataref, CommonNames.Dataref); } } @@ -3681,8 +3683,10 @@ export class Function extends TypedElement { tempV128s: Local[] | null = null; tempFuncrefs: Local[] | null = null; tempExternrefs: Local[] | null = null; - tempExnrefs: Local[] | null = null; tempAnyrefs: Local[] | null = null; + tempEqrefs: Local[] | null = null; + tempI31refs: Local[] | null = null; + tempDatarefs: Local[] | null = null; // used by flows to keep track of break labels nextBreakId: i32 = 0; diff --git a/src/types.ts b/src/types.ts index 50b942c330..935d2733e5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -63,10 +63,14 @@ export const enum TypeKind { FUNCREF, /** External reference. */ EXTERNREF, - /** Exception reference. */ - EXNREF, /** Any reference. */ ANYREF, + /** Equatable reference. */ + EQREF, + /** 31-bit integer reference. */ + I31REF, + /** Data reference. */ + DATAREF, // other @@ -396,7 +400,7 @@ export class Type { if (targetFunction = target.getSignature()) { return currentFunction.isAssignableTo(targetFunction); } - } else if (this.isExternalReference && (this.kind == target.kind || target.kind == TypeKind.ANYREF)) { + } else if (this.isExternalReference && (this.kind == target.kind || (target.kind == TypeKind.ANYREF && this.kind != TypeKind.EXTERNREF))) { return true; } } @@ -497,8 +501,10 @@ export class Type { case TypeKind.V128: return "v128"; case TypeKind.FUNCREF: return "funcref"; case TypeKind.EXTERNREF: return "externref"; - case TypeKind.EXNREF: return "exnref"; case TypeKind.ANYREF: return "anyref"; + case TypeKind.EQREF: return "eqref"; + case TypeKind.I31REF: return "i31ref"; + case TypeKind.DATAREF: return "dataref"; default: assert(false); case TypeKind.VOID: return "void"; } @@ -524,10 +530,13 @@ export class Type { case TypeKind.F32: return NativeType.F32; case TypeKind.F64: return NativeType.F64; case TypeKind.V128: return NativeType.V128; + // TODO: nullable/non-nullable refs have different native types case TypeKind.FUNCREF: return NativeType.Funcref; case TypeKind.EXTERNREF: return NativeType.Externref; - case TypeKind.EXNREF: return NativeType.Exnref; case TypeKind.ANYREF: return NativeType.Anyref; + case TypeKind.EQREF: return NativeType.Eqref; + case TypeKind.I31REF: return NativeType.I31ref; + case TypeKind.DATAREF: return NativeType.Dataref; case TypeKind.VOID: return NativeType.None; } } @@ -673,15 +682,28 @@ export class Type { TypeFlags.REFERENCE, 0 ); - /** Exception reference. */ - static readonly exnref: Type = new Type(TypeKind.EXNREF, + /** Any reference. */ + static readonly anyref: Type = new Type(TypeKind.ANYREF, TypeFlags.EXTERNAL | TypeFlags.NULLABLE | TypeFlags.REFERENCE, 0 ); - /** Any reference. */ - static readonly anyref: Type = new Type(TypeKind.ANYREF, + /** Equatable reference. */ + static readonly eqref: Type = new Type(TypeKind.EQREF, + TypeFlags.EXTERNAL | + TypeFlags.NULLABLE | + TypeFlags.REFERENCE, 0 + ); + + /** 31-bit integer reference. */ + static readonly i31ref: Type = new Type(TypeKind.I31REF, + TypeFlags.EXTERNAL | + TypeFlags.REFERENCE, 0 + ); + + /** Data reference. */ + static readonly dataref: Type = new Type(TypeKind.DATAREF, TypeFlags.EXTERNAL | TypeFlags.NULLABLE | TypeFlags.REFERENCE, 0 diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index da8c88c33f..6e43f70178 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1119,13 +1119,53 @@ export namespace v128 { @unsafe @builtin export declare function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + // @ts-ignore: decorator + @unsafe @builtin + export declare function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + + // @ts-ignore: decorator + @builtin + export declare function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + // @ts-ignore: decorator @unsafe @builtin export declare function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; // @ts-ignore: decorator @unsafe @builtin - export declare function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + export declare function load8_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load16_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load32_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load64_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; // @ts-ignore: decorator @unsafe @builtin @@ -1141,7 +1181,7 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function mul(a: v128, b: v128): v128; // except i64 + export declare function mul(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin @@ -1153,11 +1193,11 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function add_saturate(a: v128, b: v128): v128; + export declare function add_sat(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate(a: v128, b: v128): v128; + export declare function sub_sat(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin @@ -1193,7 +1233,7 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function any_true(a: v128): bool; + export declare function any_true(a: v128): bool; // @ts-ignore: decorator @builtin @@ -1289,19 +1329,11 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function widen_low(a: v128): v128; + export declare function extend_low(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfma(v1: v128, v2: v128, c: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfms(v1: v128, v2: v128, c: v128): v128; + export declare function extend_high(a: v128): v128; } // @ts-ignore: decorator @@ -1337,10 +1369,6 @@ export namespace i8x16 { @builtin export declare function sub(a: v128, b: v128): v128; - // @ts-ignore: decorator - @builtin - export declare function mul(a: v128, b: v128): v128; - // @ts-ignore: decorator @builtin export declare function min_s(a: v128, b: v128): v128; @@ -1371,19 +1399,19 @@ export namespace i8x16 { // @ts-ignore: decorator @builtin - export declare function add_saturate_s(a: v128, b: v128): v128; + export declare function add_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function add_saturate_u(a: v128, b: v128): v128; + export declare function add_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_s(a: v128, b: v128): v128; + export declare function sub_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_u(a: v128, b: v128): v128; + export declare function sub_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin @@ -1397,10 +1425,6 @@ export namespace i8x16 { @builtin export declare function shr_u(a: v128, b: i32): v128; - // @ts-ignore: decorator - @builtin - export declare function any_true(a: v128): bool; - // @ts-ignore: decorator @builtin export declare function all_true(a: v128): bool; @@ -1456,6 +1480,18 @@ export namespace i8x16 { // @ts-ignore: decorator @builtin export declare function narrow_i16x8_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function shuffle( + a: v128, b: v128, + l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, + l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8 + ): v128; + + // @ts-ignore: decorator + @builtin + export declare function swizzle(a: v128, s: v128): v128; } // @ts-ignore: decorator @@ -1522,19 +1558,19 @@ export namespace i16x8 { // @ts-ignore: decorator @builtin - export declare function add_saturate_s(a: v128, b: v128): v128; + export declare function add_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function add_saturate_u(a: v128, b: v128): v128; + export declare function add_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_s(a: v128, b: v128): v128; + export declare function sub_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_u(a: v128, b: v128): v128; + export declare function sub_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin @@ -1548,10 +1584,6 @@ export namespace i16x8 { @builtin export declare function shr_u(a: v128, b: i32): v128; - // @ts-ignore: decorator - @builtin - export declare function any_true(a: v128): bool; - // @ts-ignore: decorator @builtin export declare function all_true(a: v128): bool; @@ -1610,27 +1642,19 @@ export namespace i16x8 { // @ts-ignore: decorator @builtin - export declare function widen_low_i8x16_s(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function widen_low_i8x16_u(a: v128): v128; + export declare function extend_low_i8x16_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i8x16_s(a: v128): v128; + export declare function extend_low_i8x16_u(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i8x16_u(a: v128): v128; + export declare function extend_high_i8x16_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - - // @ts-ignore: decorator - @builtin - export declare function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + export declare function extend_high_i8x16_u(a: v128): v128; } // @ts-ignore: decorator @@ -1703,10 +1727,6 @@ export namespace i32x4 { @builtin export declare function shr_u(a: v128, b: i32): v128; - // @ts-ignore: decorator - @builtin - export declare function any_true(a: v128): bool; - // @ts-ignore: decorator @builtin export declare function all_true(a: v128): bool; @@ -1765,27 +1785,19 @@ export namespace i32x4 { // @ts-ignore: decorator @builtin - export declare function widen_low_i16x8_s(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function widen_low_i16x8_u(a: v128): v128; + export declare function extend_low_i16x8_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i16x8_s(a: v128): v128; + export declare function extend_low_i16x8_u(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i16x8_u(a: v128): v128; + export declare function extend_high_i16x8_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - - // @ts-ignore: decorator - @builtin - export declare function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + export declare function extend_high_i16x8_u(a: v128): v128; } // @ts-ignore: decorator @@ -1836,27 +1848,63 @@ export namespace i64x2 { // @ts-ignore: decorator @builtin - export declare function any_true(a: v128): bool; + export declare function all_true(a: v128): bool; // @ts-ignore: decorator @builtin - export declare function all_true(a: v128): bool; + export declare function eq(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function trunc_sat_f64x2_s(a: v128): v128; + export declare function ne(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function trunc_sat_f64x2_u(a: v128): v128; + export declare function lt_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + export declare function lt_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + export declare function le_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function le_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function gt_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function gt_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function ge_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function ge_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extend_low_i32x4_s(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extend_low_i32x4_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extend_high_i32x4_s(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extend_high_i32x4_u(a: v128): v128; } // @ts-ignore: decorator @@ -1968,14 +2016,6 @@ export namespace f32x4 { // @ts-ignore: decorator @builtin export declare function convert_i32x4_u(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfma(a: v128, b: v128, c: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfms(a: v128, b: v128, c: v128): v128; } // @ts-ignore: decorator @@ -2079,62 +2119,18 @@ export namespace f64x2 { // @ts-ignore: decorator @builtin export declare function ge(a: v128, b: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function convert_i64x2_s(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function convert_i64x2_u(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfma(a: v128, b: v128, c: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfms(a: v128, b: v128, c: v128): v128; } -export namespace v8x16 { +@final +export abstract class i31 { // FIXME: usage of 'new' requires a class :( // @ts-ignore: decorator @builtin - export declare function shuffle( - a: v128, b: v128, - l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, - l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8 - ): v128; + static new(value: i32): i31ref { return unreachable(); } // @ts-ignore: decorator @builtin - export declare function swizzle(a: v128, s: v128): v128; - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; -} - -export namespace v16x8 { - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; -} - -export namespace v32x4 { - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; -} - -export namespace v64x2 { - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + static get(i31expr: i31ref): i32 { return unreachable(); } } /* eslint-disable @typescript-eslint/no-unused-vars */ diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 618fbc59c0..89ca2f76be 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -39,10 +39,14 @@ declare type v128 = object; declare type funcref = object | null; /** External reference. */ declare type externref = object | null; -/** Exception reference. */ -declare type exnref = object | null; /** Any reference. */ declare type anyref = object | null; +/** Equatable reference. */ +declare type eqref = object | null; +/** 31-bit integer reference. */ +declare type i31ref = object | null; +/** Data reference. */ +declare type dataref = object | null; // Compiler hints @@ -689,10 +693,30 @@ declare namespace v128 { export function swizzle(a: v128, s: v128): v128; /** Loads a vector from memory. */ export function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; - /** Creates a vector with identical lanes by loading the splatted value. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128 /** Creates a vector by loading the lanes of the specified type and extending each to the next larger type. */ - export function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128 + export function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */ + export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */ + export function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with four 32-bit integer lanes by loading and sign extending four 16-bit integers. */ + export function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with four 32-bit integer lanes by loading and zero extending four 16-bit integers. */ + export function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with two 64-bit integer lanes by loading and sign extending two 32-bit integers. */ + export function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with two 64-bit integer lanes by loading and zero extending two 32-bit integers. */ + export function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with identical lanes by loading the splatted value. */ + export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads an 8-bit integer and splats it sixteen times forming a new vector. */ + export function load8_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a 16-bit integer and splats it eight times forming a new vector. */ + export function load16_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a 32-bit integer and splats it four times forming a new vector. */ + export function load32_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a 64-bit integer and splats it two times forming a new vector. */ + export function load64_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Stores a vector to memory. */ export function store(ptr: usize, value: v128, immOffset?: usize, immAlign?: usize): void; /** Adds each lane. */ @@ -706,9 +730,9 @@ declare namespace v128 { /** Negates each lane of a vector. */ export function neg(a: v128): v128; /** Adds each lane using saturation. */ - export function add_saturate(a: v128, b: v128): v128; + export function add_sat(a: v128, b: v128): v128; /** Subtracts each lane using saturation. */ - export function sub_saturate(a: v128, b: v128): v128; + export function sub_sat(a: v128, b: v128): v128; /** Performs a bitwise left shift on each lane of a vector by a scalar. */ export function shl(a: v128, b: i32): v128; /** Performs a bitwise right shift on each lane of a vector by a scalar. */ @@ -726,7 +750,7 @@ declare namespace v128 { /** Selects bits of either vector according to the specified mask. */ export function bitselect(v1: v128, v2: v128, mask: v128): v128; /** Reduces a vector to a scalar indicating whether any lane is considered `true`. */ - export function any_true(a: v128): bool; + export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each lane and produces a scalar mask with all bits concatenated. */ @@ -768,19 +792,15 @@ declare namespace v128 { /** Computes which lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; /** Converts each lane of a vector from integer to floating point. */ - export function convert(a: v128): v128; + export function convert(a: v128): v128; /** Truncates each lane of a vector from floating point to integer with saturation. Takes the target type. */ - export function trunc_sat(a: v128): v128; + export function trunc_sat(a: v128): v128; /** Narrows each lane to their respective narrower lanes. */ export function narrow(a: v128, b: v128): v128; - /** Widens the low lanes of a vector to their respective wider lanes. */ - export function widen_low(a: v128): v128; - /** Widens the high lanes of a vector to their respective wider lanes. */ - export function widen_high(a: v128): v128; - /** Computes `(a * b) + c` for each lane. */ - export function qfma(a: v128, b: v128, c: v128): v128; - /** Computes `(a * b) - c` for each lane. */ - export function qfms(a: v128, b: v128, c: v128): v128; + /** Extends the low lanes of a vector to their respective wider lanes. */ + export function extend_low(a: v128): v128; + /** Extends the high lanes of a vector to their respective wider lanes. */ + export function extend_high(a: v128): v128; } /** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */ declare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128; @@ -797,8 +817,6 @@ declare namespace i8x16 { export function add(a: v128, b: v128): v128; /** Subtracts each 8-bit integer lane. */ export function sub(a: v128, b: v128): v128; - /** Multiplies each 8-bit integer lane. */ - export function mul(a: v128, b: v128): v128; /** Computes the signed minimum of each 8-bit integer lane. */ export function min_s(a: v128, b: v128): v128; /** Computes the unsigned minimum of each 8-bit integer lane. */ @@ -814,21 +832,19 @@ declare namespace i8x16 { /** Negates each 8-bit integer lane. */ export function neg(a: v128): v128; /** Adds each 8-bit integer lane using signed saturation. */ - export function add_saturate_s(a: v128, b: v128): v128; + export function add_sat_s(a: v128, b: v128): v128; /** Adds each 8-bit integer lane using unsigned saturation. */ - export function add_saturate_u(a: v128, b: v128): v128; + export function add_sat_u(a: v128, b: v128): v128; /** Subtracts each 8-bit integer lane using signed saturation. */ - export function sub_saturate_s(a: v128, b: v128): v128; + export function sub_sat_s(a: v128, b: v128): v128; /** Subtracts each 8-bit integer lane using unsigned saturation. */ - export function sub_saturate_u(a: v128, b: v128): v128; + export function sub_sat_u(a: v128, b: v128): v128; /** Performs a bitwise left shift on each 8-bit integer lane by a scalar. */ export function shl(a: v128, b: i32): v128; /** Performs a bitwise arithmetic right shift on each 8-bit integer lane by a scalar. */ export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 8-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each 8-bit integer lane and produces a scalar mask with all bits concatenated. */ @@ -857,6 +873,10 @@ declare namespace i8x16 { export function narrow_i16x8_s(a: v128, b: v128): v128; /** Narrows each 16-bit signed integer lane to 8-bit unsigned integer lanes. */ export function narrow_i16x8_u(a: v128, b: v128): v128; + /** Selects 8-bit lanes from either vector according to the specified [0-15] respectively [16-31] lane indexes. */ + export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128; + /** Selects 8-bit lanes from the first vector according to the indexes [0-15] specified by the 8-bit lanes of the second vector. */ + export function swizzle(a: v128, s: v128): v128; } /** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */ declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128; @@ -890,21 +910,19 @@ declare namespace i16x8 { /** Negates each 16-bit integer lane. */ export function neg(a: v128): v128; /** Adds each 16-bit integer lane using signed saturation. */ - export function add_saturate_s(a: v128, b: v128): v128; + export function add_sat_s(a: v128, b: v128): v128; /** Adds each 16-bit integer lane using unsigned saturation. */ - export function add_saturate_u(a: v128, b: v128): v128; + export function add_sat_u(a: v128, b: v128): v128; /** Subtracts each 16-bit integer lane using signed saturation. */ - export function sub_saturate_s(a: v128, b: v128): v128; + export function sub_sat_s(a: v128, b: v128): v128; /** Subtracts each 16-bit integer lane using unsigned saturation. */ - export function sub_saturate_u(a: v128, b: v128): v128; + export function sub_sat_u(a: v128, b: v128): v128; /** Performs a bitwise left shift on each 16-bit integer lane by a scalar. */ export function shl(a: v128, b: i32): v128; /** Performs a bitwise arithmetic right shift each 16-bit integer lane by a scalar. */ export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 16-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each 16-bit integer lane and produces a scalar mask with all bits concatenated. */ @@ -933,18 +951,14 @@ declare namespace i16x8 { export function narrow_i32x4_s(a: v128, b: v128): v128; /** Narrows each 32-bit signed integer lane to 16-bit unsigned integer lanes. */ export function narrow_i32x4_u(a: v128, b: v128): v128; - /** Widens the low 8-bit signed integer lanes to 16-bit signed integer lanes. */ - export function widen_low_i8x16_s(a: v128): v128; - /** Widens the low 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ - export function widen_low_i8x16_u(a: v128): v128; - /** Widens the high 8-bit signed integer lanes to 16-bit signed integer lanes. */ - export function widen_high_i8x16_s(a: v128): v128; - /** Widens the high 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ - export function widen_high_i8x16_u(a: v128): v128; - /** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */ - export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - /** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */ - export function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Extends the low 8-bit signed integer lanes to 16-bit signed integer lanes. */ + export function extend_low_i8x16_s(a: v128): v128; + /** Extends the low 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ + export function extend_low_i8x16_u(a: v128): v128; + /** Extends the high 8-bit signed integer lanes to 16-bit signed integer lanes. */ + export function extend_high_i8x16_s(a: v128): v128; + /** Extends the high 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ + export function extend_high_i8x16_u(a: v128): v128; } /** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */ declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128; @@ -981,8 +995,6 @@ declare namespace i32x4 { export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 32-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each 32-bit integer lane and produces a scalar mask with all bits concatenated. */ @@ -1011,18 +1023,14 @@ declare namespace i32x4 { export function trunc_sat_f32x4_s(a: v128): v128; /** Truncates each 32-bit float lane to an unsigned integer with saturation. */ export function trunc_sat_f32x4_u(a: v128): v128; - /** Widens the low 16-bit signed integer lanes to 32-bit signed integer lanes. */ - export function widen_low_i16x8_s(a: v128): v128; - /** Widens the low 16-bit unsigned integer lane to 32-bit unsigned integer lanes. */ - export function widen_low_i16x8_u(a: v128): v128; - /** Widens the high 16-bit signed integer lanes to 32-bit signed integer lanes. */ - export function widen_high_i16x8_s(a: v128): v128; - /** Widens the high 16-bit unsigned integer lanes to 32-bit unsigned integer lanes. */ - export function widen_high_i16x8_u(a: v128): v128; - /** Creates a vector with four 32-bit integer lanes by loading and sign extending four 16-bit integers. */ - export function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - /** Creates a vector with four 32-bit integer lanes by loading and zero extending four 16-bit integers. */ - export function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Extends the low 16-bit signed integer lanes to 32-bit signed integer lanes. */ + export function extend_low_i16x8_s(a: v128): v128; + /** Extends the low 16-bit unsigned integer lane to 32-bit unsigned integer lanes. */ + export function extend_low_i16x8_u(a: v128): v128; + /** Extends the high 16-bit signed integer lanes to 32-bit signed integer lanes. */ + export function extend_high_i16x8_s(a: v128): v128; + /** Extends the high 16-bit unsigned integer lanes to 32-bit unsigned integer lanes. */ + export function extend_high_i16x8_u(a: v128): v128; } /** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */ declare function i64x2(a: i64, b: i64): v128; @@ -1047,18 +1055,36 @@ declare namespace i64x2 { export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 64-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; - /** Truncates each 64-bit float lane to a signed integer with saturation. */ - export function trunc_sat_f64x2_s(a: v128): v128; - /** Truncates each 64-bit float lane to an unsigned integer with saturation. */ - export function trunc_sat_f64x2_u(a: v128): v128; - /** Creates a vector with two 64-bit integer lanes by loading and sign extending two 32-bit integers. */ - export function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - /** Creates a vector with two 64-bit integer lanes by loading and zero extending two 32-bit integers. */ - export function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Computes which 64-bit integer lanes are equal. */ + export function eq(a: v128, b: v128): v128; + /** Computes which 64-bit integer lanes are not equal. */ + export function ne(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are less than those of the second. */ + export function lt_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are less than those of the second. */ + export function lt_u(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are less than or equal those of the second. */ + export function le_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are less than or equal those of the second. */ + export function le_u(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are greater than those of the second. */ + export function gt_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are greater than those of the second. */ + export function gt_u(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are greater than or equal those of the second. */ + export function ge_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are greater than or equal those of the second. */ + export function ge_u(a: v128, b: v128): v128; + /** Extends the low 32-bit signed integer lanes to 64-bit signed integer lanes. */ + export function extend_low_i32x4_s(a: v128): v128; + /** Extends the low 32-bit unsigned integer lane to 64-bit unsigned integer lanes. */ + export function extend_low_i32x4_u(a: v128): v128; + /** Extends the high 32-bit signed integer lanes to 64-bit signed integer lanes. */ + export function extend_high_i32x4_s(a: v128): v128; + /** Extends the high 32-bit unsigned integer lanes to 64-bit unsigned integer lanes. */ + export function extend_high_i32x4_u(a: v128): v128; } /** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */ declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128; @@ -1115,10 +1141,6 @@ declare namespace f32x4 { export function convert_i32x4_s(a: v128): v128; /** Converts each 32-bit unsigned integer lane of a vector to floating point. */ export function convert_i32x4_u(a: v128): v128; - /** Computes `(a * b) + c` for each 32-bit float lane. */ - export function qfma(a: v128, b: v128, c: v128): v128; - /** Computes `(a * b) - c` for each 32-bit float lane. */ - export function qfms(a: v128, b: v128, c: v128): v128; } /** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */ declare function f64x2(a: f64, b: f64): v128; @@ -1171,35 +1193,15 @@ declare namespace f64x2 { export function gt(a: v128, b: v128): v128; /** Computes which 64-bit float lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; - /** Converts each 64-bit signed integer lane of a vector to floating point. */ - export function convert_i64x2_s(a: v128): v128; - /** Converts each 64-bit unsigned integer lane of a vector to floating point. */ - export function convert_i64x2_u(a: v128): v128; - /** Computes `(a * b) + c` for each 64-bit float lane. */ - export function qfma(a: v128, b: v128, c: v128): v128; - /** Computes `(a * b) - c` for each 64-bit float lane. */ - export function qfms(a: v128, b: v128, c: v128): v128; -} -declare namespace v8x16 { - /** Selects 8-bit lanes from either vector according to the specified [0-15] respectively [16-31] lane indexes. */ - export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128; - /** Selects 8-bit lanes from the first vector according to the indexes [0-15] specified by the 8-bit lanes of the second vector. */ - export function swizzle(a: v128, s: v128): v128; - /** Loads an 8-bit integer and splats it sixteen times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; } -declare namespace v16x8 { - /** Loads a 16-bit integer and splats it eight times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; -} -declare namespace v32x4 { - /** Loads a 32-bit integer and splats it four times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; -} -declare namespace v64x2 { - /** Loads a 64-bit integer and splats it two times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + +declare abstract class i31 { + /** Creates a new i31ref from the specified integer value. */ + static new(value: i32): i31ref; + /** Gets the integer value of an i31ref. */ + static get(i31expr: i31ref): i32; } + /** Macro type evaluating to the underlying native WebAssembly type. */ declare type native = T; /** Special type evaluating the indexed access index type. */ diff --git a/std/assembly/reference.ts b/std/assembly/reference.ts index 314ed5da09..234c52650e 100644 --- a/std/assembly/reference.ts +++ b/std/assembly/reference.ts @@ -11,9 +11,17 @@ export abstract class Externref extends Ref { } @final @unmanaged -export abstract class Exnref extends Ref { +export abstract class Anyref extends Ref { } @final @unmanaged -export abstract class Anyref extends Ref { +export abstract class Eqref extends Ref { +} + +@final @unmanaged +export abstract class I31ref extends Ref { +} + +@final @unmanaged +export abstract class Dataref extends Ref { } diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 26d5ec0a02..130dcf08ea 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -432,7 +432,7 @@ i32.store local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -471,7 +471,7 @@ i32.store local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -501,7 +501,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store local.get $0 @@ -536,7 +536,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -563,7 +563,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store local.get $0 diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 63d2c59d6c..b5db17329c 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -65,7 +65,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) ) (func $assert-nonnull/testObjFn (param $0 i32) (result i32) i32.const 0 @@ -73,7 +73,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) ) (func $~stack_check global.get $~lib/memory/__stack_pointer @@ -459,7 +459,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -483,7 +483,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store local.get $1 @@ -521,7 +521,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store local.get $1 diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 040a28b9f0..d4de8d6298 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -560,7 +560,7 @@ i32.const 2 i32.const 1168 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -578,7 +578,7 @@ i32.const 3 i32.const 1168 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 i32.ne if diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index f1745736f0..3fd66b192b 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -1779,7 +1779,7 @@ global.set $~argumentsLength global.get $builtins/fn i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -1801,7 +1801,7 @@ i32.store local.get $9 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.eq i32.eqz if diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index d3b4c09d21..977485b460 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -75,7 +75,7 @@ i32.const 0 i32.const 1120 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 0 i32.const 1056 @@ -91,7 +91,7 @@ i32.const 0 i32.const 1120 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 5 i32.ne if @@ -109,7 +109,7 @@ i32.const 5 i32.const 1120 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 12 i32.ne if diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 963228927d..c3df82c92f 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -102,7 +102,7 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 0 i32.eq i32.eqz @@ -121,7 +121,7 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 5 i32.eq i32.eqz @@ -140,7 +140,7 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 12 i32.eq i32.eqz diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index 9f1aa2907c..7558c6d1d1 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -40,7 +40,7 @@ i32.store i32.const 1056 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) i32.const 42 i32.ne if diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat index 9fc86ddec2..ea89a85195 100644 --- a/tests/compiler/class-static-function.untouched.wat +++ b/tests/compiler/class-static-function.untouched.wat @@ -23,7 +23,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) ) (func $~start call $start:class-static-function diff --git a/tests/compiler/features/gc.json b/tests/compiler/features/gc.json new file mode 100644 index 0000000000..ed1300131d --- /dev/null +++ b/tests/compiler/features/gc.json @@ -0,0 +1,10 @@ +{ + "features": [ + "gc" + ], + "asc_flags": [ + "--explicitStart", + "--noValidate" + ], + "skipInstantiate": true +} diff --git a/tests/compiler/features/gc.optimized.wat b/tests/compiler/features/gc.optimized.wat new file mode 100644 index 0000000000..8255d25a29 --- /dev/null +++ b/tests/compiler/features/gc.optimized.wat @@ -0,0 +1,17 @@ +(module + (type $none_=>_none (func)) + (memory $0 1) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s") + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + ) +) diff --git a/tests/compiler/features/gc.ts b/tests/compiler/features/gc.ts new file mode 100644 index 0000000000..6b9c564b78 --- /dev/null +++ b/tests/compiler/features/gc.ts @@ -0,0 +1,8 @@ +function test_i31(): void { + var ref = i31.new(123); + assert(ref); + var val = i31.get(ref); + var uval = i31.get(ref); +} + +test_i31(); diff --git a/tests/compiler/features/gc.untouched.wat b/tests/compiler/features/gc.untouched.wat new file mode 100644 index 0000000000..16ba095b03 --- /dev/null +++ b/tests/compiler/features/gc.untouched.wat @@ -0,0 +1,50 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s\00") + (table $0 1 funcref) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $features/gc/test_i31 + (local $0 i31ref) + (local $1 i32) + (local $2 i32) + i32.const 123 + i31.new + local.set $0 + local.get $0 + ref.is_null + if + i32.const 0 + i32.const 32 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i31.get_s + local.set $1 + local.get $0 + i31.get_u + local.set $2 + ) + (func $start:features/gc + call $features/gc/test_i31 + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:features/gc + ) +) diff --git a/tests/compiler/features/reference-types.ts b/tests/compiler/features/reference-types.ts index 9077879553..d0b3e8d208 100644 --- a/tests/compiler/features/reference-types.ts +++ b/tests/compiler/features/reference-types.ts @@ -42,13 +42,6 @@ assert(!externGlobal); var externGlobalInit: externref = null; assert(!externGlobalInit); -var exnGlobal: exnref; -assert(!exnGlobal); -exnGlobal = null; -assert(!exnGlobal); -var exnGlobalInit: exnref = null; -assert(!exnGlobalInit); - var anyGlobal: anyref; assert(!anyGlobal); anyGlobal = null; @@ -66,7 +59,6 @@ function testLocal(): void { } testLocal(); testLocal(); -testLocal(); testLocal(); // funcref can represent function references @@ -84,8 +76,3 @@ assert(otherFuncGlobal); // can assign any reference type to anyref anyGlobal = funcGlobal; -anyGlobal = externGlobal; -anyGlobal = exnGlobal; - -// TODO: Not implemented: ref.cast -// exnGlobal = anyGlobal; diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index b2fe65ab3b..b4212781f2 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -19,8 +19,6 @@ (global $features/reference-types/funcGlobalInit (mut funcref) (ref.null func)) (global $features/reference-types/externGlobal (mut externref) (ref.null extern)) (global $features/reference-types/externGlobalInit (mut externref) (ref.null extern)) - (global $features/reference-types/exnGlobal (mut exnref) (ref.null exn)) - (global $features/reference-types/exnGlobalInit (mut exnref) (ref.null exn)) (global $features/reference-types/anyGlobal (mut anyref) (ref.null any)) (global $features/reference-types/anyGlobalInit (mut anyref) (ref.null any)) (global $features/reference-types/otherFuncGlobal (mut funcref) (ref.null func)) @@ -41,7 +39,7 @@ if i32.const 0 i32.const 32 - i32.const 61 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable @@ -55,7 +53,7 @@ if i32.const 0 i32.const 32 - i32.const 63 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable @@ -69,7 +67,7 @@ if i32.const 0 i32.const 32 - i32.const 65 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -85,7 +83,7 @@ if i32.const 0 i32.const 32 - i32.const 61 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable @@ -99,7 +97,7 @@ if i32.const 0 i32.const 32 - i32.const 63 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable @@ -113,51 +111,7 @@ if i32.const 0 i32.const 32 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $features/reference-types/testLocal - (local $0 exnref) - (local $1 exnref) - local.get $0 - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ref.null exn - local.set $0 - local.get $0 - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ref.null exn - local.set $1 - local.get $1 - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 65 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -173,7 +127,7 @@ if i32.const 0 i32.const 32 - i32.const 61 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable @@ -187,7 +141,7 @@ if i32.const 0 i32.const 32 - i32.const 63 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable @@ -201,7 +155,7 @@ if i32.const 0 i32.const 32 - i32.const 65 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -314,46 +268,6 @@ call $~lib/builtins/abort unreachable end - global.get $features/reference-types/exnGlobal - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ref.null exn - global.set $features/reference-types/exnGlobal - global.get $features/reference-types/exnGlobal - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ref.null exn - global.set $features/reference-types/exnGlobalInit - global.get $features/reference-types/exnGlobalInit - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end global.get $features/reference-types/anyGlobal ref.is_null i32.eqz @@ -361,7 +275,7 @@ if i32.const 0 i32.const 32 - i32.const 53 + i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable @@ -375,7 +289,7 @@ if i32.const 0 i32.const 32 - i32.const 55 + i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable @@ -389,14 +303,13 @@ if i32.const 0 i32.const 32 - i32.const 57 + i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end call $features/reference-types/testLocal call $features/reference-types/testLocal - call $features/reference-types/testLocal call $features/reference-types/testLocal ref.func $features/reference-types/someFunc global.set $features/reference-types/funcGlobal @@ -405,7 +318,7 @@ if i32.const 0 i32.const 32 - i32.const 76 + i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable @@ -417,7 +330,7 @@ if i32.const 0 i32.const 32 - i32.const 78 + i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable @@ -429,17 +342,13 @@ if i32.const 0 i32.const 32 - i32.const 81 + i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable end global.get $features/reference-types/funcGlobal global.set $features/reference-types/anyGlobal - global.get $features/reference-types/externGlobal - global.set $features/reference-types/anyGlobal - global.get $features/reference-types/exnGlobal - global.set $features/reference-types/anyGlobal ) (func $features/reference-types/internal (param $0 externref) (result externref) (local $1 externref) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index daf784b7f3..055f07438e 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,15 +1,17 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1112) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") (data (i32.const 1164) "<") (data (i32.const 1176) "\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -29,7 +31,7 @@ if i32.const 0 i32.const 1056 - i32.const 272 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -49,7 +51,7 @@ if i32.const 0 i32.const 1056 - i32.const 274 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,7 +94,7 @@ if i32.const 0 i32.const 1056 - i32.const 287 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -184,7 +186,7 @@ if i32.const 0 i32.const 1056 - i32.const 200 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,7 +200,7 @@ if i32.const 0 i32.const 1056 - i32.const 202 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -271,7 +273,7 @@ if i32.const 0 i32.const 1056 - i32.const 223 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -326,7 +328,7 @@ if i32.const 0 i32.const 1056 - i32.const 238 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -341,7 +343,7 @@ if i32.const 0 i32.const 1056 - i32.const 239 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,7 +391,7 @@ if i32.const 0 i32.const 1056 - i32.const 255 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -459,7 +461,7 @@ if i32.const 0 i32.const 1056 - i32.const 380 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -487,7 +489,7 @@ if i32.const 0 i32.const 1056 - i32.const 387 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -515,7 +517,7 @@ if i32.const 0 i32.const 1056 - i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -582,10 +584,10 @@ if unreachable end - i32.const 1232 + i32.const 17616 i32.const 0 i32.store - i32.const 2800 + i32.const 19184 i32.const 0 i32.store loop $for-loop|0 @@ -596,7 +598,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1232 + i32.const 17616 i32.add i32.const 0 i32.store offset=4 @@ -614,7 +616,7 @@ i32.add i32.const 2 i32.shl - i32.const 1232 + i32.const 17616 i32.add i32.const 0 i32.store offset=96 @@ -632,27 +634,95 @@ br $for-loop|0 end end - i32.const 1232 - i32.const 2804 + i32.const 17616 + i32.const 19188 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1232 + i32.const 17616 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (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 + i32.const 31 + 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.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.set $2 + local.get $1 + local.get $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 0 + local.get $2 + i32.const 23 + i32.lt_u + select + 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 -16 + i32.const -1 + local.get $1 + i32.shl i32.and - local.tee $2 + local.tee $1 if (result i32) local.get $0 - local.get $2 + local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -660,7 +730,11 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) @@ -677,7 +751,7 @@ if i32.const 0 i32.const 1056 - i32.const 346 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -698,18 +772,42 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) + (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.ge_u + if + i32.const 1120 + i32.const 1056 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -718,24 +816,40 @@ i32.load offset=1568 i32.ne i32.shl - i32.const 65614 + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -744,7 +858,7 @@ end end local.get $0 - local.get $2 + local.get $1 i32.const 16 i32.shl memory.size @@ -752,28 +866,29 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 0 i32.const 1056 - i32.const 499 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable end end + local.get $2 local.get $1 i32.load i32.const -4 i32.and - i32.const 76 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1056 - i32.const 501 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -783,27 +898,43 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + 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 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const -4 i32.and - i32.const 76 + local.get $2 i32.sub - 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.const 76 i32.or i32.store + local.get $2 local.get $1 - i32.const 80 + i32.const 4 + i32.add i32.add local.tee $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.const 1 @@ -814,7 +945,7 @@ call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -840,70 +971,274 @@ end local.get $1 ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (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 $0 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 17612 + 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.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 565 + 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 $features/simd/test_v128 + (local $0 i32) + i32.const 64 + call $~lib/rt/tlsf/__alloc local.tee $0 local.get $0 v128.load offset=16 v128.store offset=32 local.get $0 - i32.const 1228 - i32.ge_u + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 42 + i32.store8 + local.get $0 + v8x16.load_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + 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 $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 564 - 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 + i32.const 1184 + i32.const 59 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 42 + i32.store16 + local.get $0 + v16x8.load_splat + v128.const i32x4 0x002a002a 0x002a002a 0x002a002a 0x002a002a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 69 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 42 + i32.store + local.get $0 + v32x4.load_splat + v128.const i32x4 0x0000002a 0x0000002a 0x0000002a 0x0000002a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 79 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i64.const 42 + i64.store + local.get $0 + v64x2.load_splat + v128.const i32x4 0x0000002a 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 89 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $~start + (local $0 i32) + call $features/simd/test_v128 + i32.const 16 + call $~lib/rt/tlsf/__alloc + 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 + i16x8.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 353 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i16x8.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 358 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + 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 + i32x4.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 472 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32x4.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 477 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 0 + i32.const 1184 + i32.const 516 + i32.const 3 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 2290765256..83ed92d136 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -53,6 +53,46 @@ function test_v128(): void { v128.store(ptr, v128.load(ptr, 16), 32); __free(ptr); } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load8_splat(ptr) + == + v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load16_splat(ptr) + == + v128(42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load32_splat(ptr) + == + v128(42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load64_splat(ptr) + == + v128(42, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) + ); + __free(ptr); + } // generic operations are tested by the aliases below already } @@ -64,7 +104,6 @@ function test_i8x16(): void { var c = i8x16.add(a, b); assert(c == i8x16(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -128)); assert(i8x16.sub(c, b) == a); - assert(i8x16.mul(c, b) == c); assert( i8x16.min_s( i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), @@ -124,25 +163,25 @@ function test_i8x16(): void { i8x16(1, 2, 3, 4, 5, 6, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1) ); assert( - i8x16.add_saturate_s( + i8x16.add_sat_s( i8x16(126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127), i8x16.splat(2) ) == i8x16.splat(127) ); assert( - i8x16.add_saturate_u( + i8x16.add_sat_u( i8x16(-2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), i8x16.splat(2) ) == i8x16.splat(-1) ); assert( - i8x16.sub_saturate_s( + i8x16.sub_sat_s( i8x16(-127, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128), i8x16.splat(2) ) == i8x16.splat(-128) ); assert( - i8x16.sub_saturate_u( + i8x16.sub_sat_u( i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), i8x16.splat(2) ) == i8x16.splat(0) @@ -150,7 +189,7 @@ function test_i8x16(): void { assert(i8x16.shl(i8x16.splat(1), 1) == i8x16.splat(2)); assert(i8x16.shr_s(i8x16.splat(-2), 1) == i8x16.splat(-1)); assert(i8x16.shr_u(i8x16.splat(-1), 1) == i8x16.splat(127)); - assert(i8x16.any_true(i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == true); + assert(v128.any_true(i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == true); assert(i8x16.all_true(i8x16.splat(1)) == true); var one = i8x16.replace_lane(i8x16.splat(0), 0, 1); var negOne = i8x16.replace_lane(i8x16.splat(0), 0, -1); @@ -168,6 +207,21 @@ function test_i8x16(): void { assert(i8x16.ge_u(one, negOne) == excl1st); assert(i8x16.narrow_i16x8_s(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(i8.MAX_VALUE)); assert(i8x16.narrow_i16x8_u(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(u8.MAX_VALUE)); + { + let a = v128( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); + let b = v128(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31); + assert( + i8x16.shuffle(a, b, 0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) + == + v128(0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) + ); + let c = v128(16, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); + assert( + i8x16.swizzle(a, c) + == + v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + ); + } } function test_i16x8(): void { @@ -238,25 +292,25 @@ function test_i16x8(): void { i16x8(1, 2, 3, 4, 1, 1, 1, 1) ); assert( - i16x8.add_saturate_s( + i16x8.add_sat_s( i16x8(32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767), i16x8.splat(2) ) == i16x8.splat(32767) ); assert( - i16x8.add_saturate_u( + i16x8.add_sat_u( i16x8(-2, -1, -1, -1, -1, -1, -1, -1), i16x8.splat(2) ) == i16x8.splat(-1) ); assert( - i16x8.sub_saturate_s( + i16x8.sub_sat_s( i16x8(-32767, -32768, -32768, -32768, -32768, -32768, -32768, -32768), i16x8.splat(2) ) == i16x8.splat(-32768) ); assert( - i16x8.sub_saturate_u( + i16x8.sub_sat_u( i16x8(1, 0, 0, 0, 0, 0, 0, 0), i16x8.splat(2) ) == i16x8.splat(0) @@ -264,7 +318,7 @@ function test_i16x8(): void { assert(i16x8.shl(i16x8.splat(1), 1) == i16x8.splat(2)); assert(i16x8.shr_s(i16x8.splat(-2), 1) == i16x8.splat(-1)); assert(i16x8.shr_u(i16x8.splat(-1), 1) == i16x8.splat(32767)); - assert(i16x8.any_true(i16x8(1, 0, 0, 0, 0, 0, 0, 0)) == true); + assert(v128.any_true(i16x8(1, 0, 0, 0, 0, 0, 0, 0)) == true); assert(i16x8.all_true(i16x8.splat(1)) == true); var one = i16x8.replace_lane(i16x8.splat(0), 0, 1); var negOne = i16x8.replace_lane(i16x8.splat(0), 0, -1); @@ -282,33 +336,32 @@ function test_i16x8(): void { assert(i16x8.ge_u(one, negOne) == excl1st); assert(i16x8.narrow_i32x4_s(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(i16.MAX_VALUE)); assert(i16x8.narrow_i32x4_u(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(u16.MAX_VALUE)); - assert(i16x8.widen_low_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(-1)); - assert(i16x8.widen_low_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(255)); - assert(i16x8.widen_high_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(-1)); - assert(i16x8.widen_high_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(255)); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, 2, 1); - // store(ptr, 3, 2); - // store(ptr, 4, 3); - // store(ptr, 5, 4); - // store(ptr, 6, 5); - // store(ptr, 7, 6); - // store(ptr, -1, 7); - // assert( - // i16x8.load8x8_s(ptr) - // == - // v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, -1) - // ); - // assert( - // i16x8.load8x8_u(ptr) - // == - // v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 0) - // ); - // __free(ptr); - // } + assert(i16x8.extend_low_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(-1)); + assert(i16x8.extend_low_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(255)); + assert(i16x8.extend_high_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(-1)); + assert(i16x8.extend_high_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(255)); + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, 2, 1); + store(ptr, 3, 2); + store(ptr, 4, 3); + store(ptr, 5, 4); + store(ptr, 6, 5); + store(ptr, 7, 6); + store(ptr, -1, 7); + assert( + v128.load8x8_s(ptr) + == + v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, -1) + ); + assert( + v128.load8x8_u(ptr) + == + v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 0) + ); + __free(ptr); + } } function test_i32x4(): void { @@ -380,7 +433,7 @@ function test_i32x4(): void { assert(i32x4.shl(i32x4.splat(1), 1) == i32x4.splat(2)); assert(i32x4.shr_s(i32x4.splat(-2), 1) == i32x4.splat(-1)); assert(i32x4.shr_u(i32x4.splat(-1), 1) == i32x4.splat(2147483647)); - assert(i32x4.any_true(i32x4(1, 0, 0, 0)) == true); + assert(v128.any_true(i32x4(1, 0, 0, 0)) == true); assert(i32x4.all_true(i32x4.splat(1)) == true); var one = i32x4.replace_lane(i32x4.splat(0), 0, 1); var negOne = i32x4.replace_lane(i32x4.splat(0), 0, -1); @@ -406,29 +459,28 @@ function test_i32x4(): void { == i32x4.splat(0) ); - assert(i32x4.widen_low_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(-1)); - assert(i32x4.widen_low_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(65535)); - assert(i32x4.widen_high_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(-1)); - assert(i32x4.widen_high_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(65535)); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, 2, 2); - // store(ptr, 3, 4); - // store(ptr, -1, 6); - // assert( - // i32x4.load16x4_s(ptr) - // == - // v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, -1) - // ); - // assert( - // i32x4.load16x4_u(ptr) - // == - // v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, 0, 0) - // ); - // __free(ptr); - // } + assert(i32x4.extend_low_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(-1)); + assert(i32x4.extend_low_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(65535)); + assert(i32x4.extend_high_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(-1)); + assert(i32x4.extend_high_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(65535)); + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, 2, 2); + store(ptr, 3, 4); + store(ptr, -1, 6); + assert( + v128.load16x4_s(ptr) + == + v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, -1) + ); + assert( + v128.load16x4_u(ptr) + == + v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, 0, 0) + ); + __free(ptr); + } } function test_i64x2(): void { @@ -439,6 +491,7 @@ function test_i64x2(): void { var c = i64x2.add(a, b); assert(c == i64x2(2, -9223372036854775808)); assert(i64x2.sub(c, b) == a); + assert(i64x2.mul(c, b) == c); assert( i64x2.neg(a) == @@ -459,35 +512,24 @@ function test_i64x2(): void { assert(i64x2.shl(i64x2.splat(1), 1) == i64x2.splat(2)); assert(i64x2.shr_s(i64x2.splat(-2), 1) == i64x2.splat(-1)); assert(i64x2.shr_u(i64x2.splat(-1), 1) == i64x2.splat(9223372036854775807)); - assert(i64x2.any_true(i64x2(1, 0)) == true); + assert(v128.any_true(i64x2(1, 0)) == true); assert(i64x2.all_true(i64x2.splat(1)) == true); - assert( - i64x2.trunc_sat_f64x2_s(f64x2.splat(-1.5)) - == - i64x2.splat(-1) - ); - assert( - i64x2.trunc_sat_f64x2_u(f64x2.splat(-1.5)) - == - i64x2.splat(0) - ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, -1, 4); - // assert( - // i64x2.load32x2_s(ptr) - // == - // v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1) - // ); - // assert( - // i64x2.load32x2_u(ptr) - // == - // v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0) - // ); - // __free(ptr); - // } + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, -1, 4); + assert( + v128.load32x2_s(ptr) + == + v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1) + ); + assert( + v128.load32x2_u(ptr) + == + v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0) + ); + __free(ptr); + } } function test_f32x4(): void { @@ -539,17 +581,6 @@ function test_f32x4(): void { == f32x4.splat(4294967296.0) ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // assert( - // f32x4.qfma(f32x4.splat(2), f32x4.splat(3), f32x4.splat(4)) - // == - // f32x4.splat(10) - // ); - // assert( - // f32x4.qfms(f32x4.splat(2), f32x4.splat(3), f32x4.splat(4)) - // == - // f32x4.splat(2) - // ); } function test_f64x2(): void { @@ -591,96 +622,6 @@ function test_f64x2(): void { assert(f64x2.max(negOne, one) == one); assert(f64x2.abs(negOne) == one); assert(f64x2.sqrt(f64x2(4.0, 9.0)) == f64x2(2.0, 3.0)); - assert( - f64x2.convert_i64x2_s(i64x2.splat(-1)) - == - f64x2.splat(-1.0) - ); - assert( - f64x2.convert_i64x2_u(i64x2.splat(-1)) - == - f64x2.splat(18446744073709551615.0) - ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // assert( - // f64x2.qfma(f64x2.splat(2), f64x2.splat(3), f64x2.splat(4)) - // == - // f64x2.splat(10) - // ); - // assert( - // f64x2.qfms(f64x2.splat(2), f64x2.splat(3), f64x2.splat(4)) - // == - // f64x2.splat(2) - // ); -} - -function test_v8x16(): void { - var a = v128( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); - var b = v128(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31); - assert( - v8x16.shuffle(a, b, 0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) - == - v128(0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) - ); - var c = v128(16, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); - assert( - v8x16.swizzle(a, c) - == - v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) - ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v8x16.load_splat(ptr) - // == - // v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) - // ); - // __free(ptr); - // } -} - -function test_v16x8(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v16x8.load_splat(ptr) - // == - // v128(42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0) - // ); - // __free(ptr); - // } -} - -function test_v32x4(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v32x4.load_splat(ptr) - // == - // v128(42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0) - // ); - // __free(ptr); - // } -} - -function test_v64x2(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v64x2.load_splat(ptr) - // == - // v128(42, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) - // ); - // __free(ptr); - // } } function test_const(): v128 { @@ -696,9 +637,5 @@ if (ASC_FEATURE_SIMD) { test_i64x2(); test_f32x4(); test_f64x2(); - test_v8x16(); - test_v16x8(); - test_v32x4(); - test_v64x2(); test_const(); } diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 20a6df39c2..d7e783a1f3 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -11,7 +11,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") (data (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 1)) @@ -22,7 +22,9 @@ (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/memory/__heap_base i32 (i32.const 204)) + (global $~lib/memory/__data_end i32 (i32.const 204)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16588)) + (global $~lib/memory/__heap_base i32 (i32.const 16588)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) @@ -68,7 +70,7 @@ if i32.const 0 i32.const 32 - i32.const 272 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -95,7 +97,7 @@ if i32.const 0 i32.const 32 - i32.const 274 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -149,7 +151,7 @@ if i32.const 0 i32.const 32 - i32.const 287 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -281,7 +283,7 @@ if i32.const 0 i32.const 32 - i32.const 200 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -298,7 +300,7 @@ if i32.const 0 i32.const 32 - i32.const 202 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -393,7 +395,7 @@ if i32.const 0 i32.const 32 - i32.const 223 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -458,7 +460,7 @@ if i32.const 0 i32.const 32 - i32.const 238 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -476,7 +478,7 @@ if i32.const 0 i32.const 32 - i32.const 239 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -535,7 +537,7 @@ if i32.const 0 i32.const 32 - i32.const 255 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -640,7 +642,7 @@ if i32.const 0 i32.const 32 - i32.const 380 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -683,7 +685,7 @@ if i32.const 0 i32.const 32 - i32.const 387 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -716,7 +718,7 @@ if i32.const 0 i32.const 32 - i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -956,7 +958,7 @@ if i32.const 96 i32.const 32 - i32.const 461 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1040,7 +1042,7 @@ if i32.const 0 i32.const 32 - i32.const 333 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1105,7 +1107,7 @@ if i32.const 0 i32.const 32 - i32.const 346 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1256,7 +1258,7 @@ if i32.const 0 i32.const 32 - i32.const 360 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1365,7 +1367,7 @@ if i32.const 0 i32.const 32 - i32.const 499 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1385,7 +1387,7 @@ if i32.const 0 i32.const 32 - i32.const 501 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1443,7 +1445,7 @@ if i32.const 0 i32.const 32 - i32.const 564 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -1550,6 +1552,102 @@ v128.store offset=32 local.get $0 call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i32.const 42 + i32.store8 + local.get $0 + v8x16.load_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 59 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i32.const 42 + i32.store16 + local.get $0 + v16x8.load_splat + v128.const i32x4 0x002a002a 0x002a002a 0x002a002a 0x002a002a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 69 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i32.const 42 + i32.store + local.get $0 + v32x4.load_splat + v128.const i32x4 0x0000002a 0x0000002a 0x0000002a 0x0000002a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 79 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i64.const 42 + i64.store + local.get $0 + v64x2.load_splat + v128.const i32x4 0x0000002a 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 89 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i8x16 (local $0 v128) @@ -1559,6 +1657,9 @@ (local $4 v128) (local $5 v128) (local $6 v128) + (local $7 v128) + (local $8 v128) + (local $9 v128) v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d local.set $0 local.get $0 @@ -1571,7 +1672,7 @@ if i32.const 0 i32.const 160 - i32.const 61 + i32.const 101 i32.const 3 call $~lib/builtins/abort unreachable @@ -1589,7 +1690,7 @@ if i32.const 0 i32.const 160 - i32.const 63 + i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable @@ -1608,7 +1709,7 @@ if i32.const 0 i32.const 160 - i32.const 65 + i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable @@ -1625,24 +1726,7 @@ if i32.const 0 i32.const 160 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i8x16.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 67 + i32.const 106 i32.const 3 call $~lib/builtins/abort unreachable @@ -1703,7 +1787,7 @@ if i32.const 0 i32.const 160 - i32.const 108 + i32.const 147 i32.const 3 call $~lib/builtins/abort unreachable @@ -1720,7 +1804,7 @@ if i32.const 0 i32.const 160 - i32.const 113 + i32.const 152 i32.const 3 call $~lib/builtins/abort unreachable @@ -1737,7 +1821,7 @@ if i32.const 0 i32.const 160 - i32.const 114 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable @@ -1752,7 +1836,7 @@ if i32.const 0 i32.const 160 - i32.const 115 + i32.const 154 i32.const 3 call $~lib/builtins/abort unreachable @@ -1769,7 +1853,7 @@ if i32.const 0 i32.const 160 - i32.const 116 + i32.const 155 i32.const 3 call $~lib/builtins/abort unreachable @@ -1786,7 +1870,7 @@ if i32.const 0 i32.const 160 - i32.const 121 + i32.const 160 i32.const 3 call $~lib/builtins/abort unreachable @@ -1910,7 +1994,7 @@ if i32.const 0 i32.const 160 - i32.const 159 + i32.const 198 i32.const 3 call $~lib/builtins/abort unreachable @@ -1927,7 +2011,7 @@ if i32.const 0 i32.const 160 - i32.const 160 + i32.const 199 i32.const 3 call $~lib/builtins/abort unreachable @@ -1944,7 +2028,7 @@ if i32.const 0 i32.const 160 - i32.const 161 + i32.const 200 i32.const 3 call $~lib/builtins/abort unreachable @@ -1961,7 +2045,7 @@ if i32.const 0 i32.const 160 - i32.const 162 + i32.const 201 i32.const 3 call $~lib/builtins/abort unreachable @@ -1978,7 +2062,7 @@ if i32.const 0 i32.const 160 - i32.const 163 + i32.const 202 i32.const 3 call $~lib/builtins/abort unreachable @@ -1995,7 +2079,7 @@ if i32.const 0 i32.const 160 - i32.const 164 + i32.const 203 i32.const 3 call $~lib/builtins/abort unreachable @@ -2012,7 +2096,7 @@ if i32.const 0 i32.const 160 - i32.const 165 + i32.const 204 i32.const 3 call $~lib/builtins/abort unreachable @@ -2029,7 +2113,7 @@ if i32.const 0 i32.const 160 - i32.const 166 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable @@ -2046,7 +2130,7 @@ if i32.const 0 i32.const 160 - i32.const 167 + i32.const 206 i32.const 3 call $~lib/builtins/abort unreachable @@ -2063,7 +2147,7 @@ if i32.const 0 i32.const 160 - i32.const 168 + i32.const 207 i32.const 3 call $~lib/builtins/abort unreachable @@ -2092,6 +2176,46 @@ i32.const 0 i32.ne drop + v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c + local.set $7 + v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c + local.set $8 + local.get $7 + local.get $8 + v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 + v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 213 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x0c0d0e10 0x08090a0b 0x04050607 0x00010203 + local.set $9 + local.get $7 + local.get $9 + v8x16.swizzle + v128.const i32x4 0x0c0d0e00 0x08090a0b 0x04050607 0x00010203 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 219 + i32.const 5 + call $~lib/builtins/abort + unreachable + end ) (func $features/simd/test_i16x8 (local $0 v128) @@ -2101,6 +2225,7 @@ (local $4 v128) (local $5 v128) (local $6 v128) + (local $7 i32) v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 local.set $0 local.get $0 @@ -2113,7 +2238,7 @@ if i32.const 0 i32.const 160 - i32.const 175 + i32.const 229 i32.const 3 call $~lib/builtins/abort unreachable @@ -2131,7 +2256,7 @@ if i32.const 0 i32.const 160 - i32.const 177 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable @@ -2150,7 +2275,7 @@ if i32.const 0 i32.const 160 - i32.const 179 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable @@ -2167,7 +2292,7 @@ if i32.const 0 i32.const 160 - i32.const 180 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable @@ -2184,7 +2309,7 @@ if i32.const 0 i32.const 160 - i32.const 181 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable @@ -2245,7 +2370,7 @@ if i32.const 0 i32.const 160 - i32.const 222 + i32.const 276 i32.const 3 call $~lib/builtins/abort unreachable @@ -2262,7 +2387,7 @@ if i32.const 0 i32.const 160 - i32.const 227 + i32.const 281 i32.const 3 call $~lib/builtins/abort unreachable @@ -2279,7 +2404,7 @@ if i32.const 0 i32.const 160 - i32.const 228 + i32.const 282 i32.const 3 call $~lib/builtins/abort unreachable @@ -2294,7 +2419,7 @@ if i32.const 0 i32.const 160 - i32.const 229 + i32.const 283 i32.const 3 call $~lib/builtins/abort unreachable @@ -2311,7 +2436,7 @@ if i32.const 0 i32.const 160 - i32.const 230 + i32.const 284 i32.const 3 call $~lib/builtins/abort unreachable @@ -2328,7 +2453,7 @@ if i32.const 0 i32.const 160 - i32.const 235 + i32.const 289 i32.const 3 call $~lib/builtins/abort unreachable @@ -2411,7 +2536,7 @@ i32.ne drop v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i16x8.any_true + i8x16.any_true i32.const 0 i32.ne i32.const 1 @@ -2452,7 +2577,7 @@ if i32.const 0 i32.const 160 - i32.const 273 + i32.const 327 i32.const 3 call $~lib/builtins/abort unreachable @@ -2469,7 +2594,7 @@ if i32.const 0 i32.const 160 - i32.const 274 + i32.const 328 i32.const 3 call $~lib/builtins/abort unreachable @@ -2486,7 +2611,7 @@ if i32.const 0 i32.const 160 - i32.const 275 + i32.const 329 i32.const 3 call $~lib/builtins/abort unreachable @@ -2503,7 +2628,7 @@ if i32.const 0 i32.const 160 - i32.const 276 + i32.const 330 i32.const 3 call $~lib/builtins/abort unreachable @@ -2520,7 +2645,7 @@ if i32.const 0 i32.const 160 - i32.const 277 + i32.const 331 i32.const 3 call $~lib/builtins/abort unreachable @@ -2537,7 +2662,7 @@ if i32.const 0 i32.const 160 - i32.const 278 + i32.const 332 i32.const 3 call $~lib/builtins/abort unreachable @@ -2554,7 +2679,7 @@ if i32.const 0 i32.const 160 - i32.const 279 + i32.const 333 i32.const 3 call $~lib/builtins/abort unreachable @@ -2571,7 +2696,7 @@ if i32.const 0 i32.const 160 - i32.const 280 + i32.const 334 i32.const 3 call $~lib/builtins/abort unreachable @@ -2588,7 +2713,7 @@ if i32.const 0 i32.const 160 - i32.const 281 + i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable @@ -2605,7 +2730,7 @@ if i32.const 0 i32.const 160 - i32.const 282 + i32.const 336 i32.const 3 call $~lib/builtins/abort unreachable @@ -2682,6 +2807,67 @@ i32.const 0 i32.ne drop + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + i32.const 1 + i32.store8 + local.get $7 + i32.const 2 + i32.store8 offset=1 + local.get $7 + i32.const 3 + i32.store8 offset=2 + local.get $7 + i32.const 4 + i32.store8 offset=3 + local.get $7 + i32.const 5 + i32.store8 offset=4 + local.get $7 + i32.const 6 + i32.store8 offset=5 + local.get $7 + i32.const 7 + i32.store8 offset=6 + local.get $7 + i32.const -1 + i32.store8 offset=7 + local.get $7 + i16x8.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 353 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i16x8.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 358 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i32x4 (local $0 v128) @@ -2691,6 +2877,7 @@ (local $4 v128) (local $5 v128) (local $6 v128) + (local $7 i32) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff local.set $0 local.get $0 @@ -2703,7 +2890,7 @@ if i32.const 0 i32.const 160 - i32.const 316 + i32.const 369 i32.const 3 call $~lib/builtins/abort unreachable @@ -2721,7 +2908,7 @@ if i32.const 0 i32.const 160 - i32.const 318 + i32.const 371 i32.const 3 call $~lib/builtins/abort unreachable @@ -2740,7 +2927,7 @@ if i32.const 0 i32.const 160 - i32.const 320 + i32.const 373 i32.const 3 call $~lib/builtins/abort unreachable @@ -2757,7 +2944,7 @@ if i32.const 0 i32.const 160 - i32.const 321 + i32.const 374 i32.const 3 call $~lib/builtins/abort unreachable @@ -2774,7 +2961,7 @@ if i32.const 0 i32.const 160 - i32.const 322 + i32.const 375 i32.const 3 call $~lib/builtins/abort unreachable @@ -2835,7 +3022,7 @@ if i32.const 0 i32.const 160 - i32.const 363 + i32.const 416 i32.const 3 call $~lib/builtins/abort unreachable @@ -2848,7 +3035,7 @@ if i32.const 0 i32.const 160 - i32.const 368 + i32.const 421 i32.const 3 call $~lib/builtins/abort unreachable @@ -2861,7 +3048,7 @@ if i32.const 0 i32.const 160 - i32.const 369 + i32.const 422 i32.const 3 call $~lib/builtins/abort unreachable @@ -2878,7 +3065,7 @@ if i32.const 0 i32.const 160 - i32.const 370 + i32.const 423 i32.const 3 call $~lib/builtins/abort unreachable @@ -2895,7 +3082,7 @@ if i32.const 0 i32.const 160 - i32.const 375 + i32.const 428 i32.const 3 call $~lib/builtins/abort unreachable @@ -2934,7 +3121,7 @@ i32.ne drop v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32x4.any_true + i8x16.any_true i32.const 0 i32.ne i32.const 1 @@ -2975,7 +3162,7 @@ if i32.const 0 i32.const 160 - i32.const 389 + i32.const 442 i32.const 3 call $~lib/builtins/abort unreachable @@ -2992,7 +3179,7 @@ if i32.const 0 i32.const 160 - i32.const 390 + i32.const 443 i32.const 3 call $~lib/builtins/abort unreachable @@ -3009,7 +3196,7 @@ if i32.const 0 i32.const 160 - i32.const 391 + i32.const 444 i32.const 3 call $~lib/builtins/abort unreachable @@ -3026,7 +3213,7 @@ if i32.const 0 i32.const 160 - i32.const 392 + i32.const 445 i32.const 3 call $~lib/builtins/abort unreachable @@ -3043,7 +3230,7 @@ if i32.const 0 i32.const 160 - i32.const 393 + i32.const 446 i32.const 3 call $~lib/builtins/abort unreachable @@ -3060,7 +3247,7 @@ if i32.const 0 i32.const 160 - i32.const 394 + i32.const 447 i32.const 3 call $~lib/builtins/abort unreachable @@ -3077,7 +3264,7 @@ if i32.const 0 i32.const 160 - i32.const 395 + i32.const 448 i32.const 3 call $~lib/builtins/abort unreachable @@ -3094,7 +3281,7 @@ if i32.const 0 i32.const 160 - i32.const 396 + i32.const 449 i32.const 3 call $~lib/builtins/abort unreachable @@ -3111,7 +3298,7 @@ if i32.const 0 i32.const 160 - i32.const 397 + i32.const 450 i32.const 3 call $~lib/builtins/abort unreachable @@ -3128,7 +3315,7 @@ if i32.const 0 i32.const 160 - i32.const 398 + i32.const 451 i32.const 3 call $~lib/builtins/abort unreachable @@ -3201,11 +3388,61 @@ i32.const 0 i32.ne drop + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + i32.const 1 + i32.store16 + local.get $7 + i32.const 2 + i32.store16 offset=2 + local.get $7 + i32.const 3 + i32.store16 offset=4 + local.get $7 + i32.const -1 + i32.store16 offset=6 + local.get $7 + i32x4.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 472 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32x4.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 477 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i64x2 (local $0 v128) (local $1 v128) (local $2 v128) + (local $3 i32) v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff local.set $0 local.get $0 @@ -3218,7 +3455,7 @@ if i32.const 0 i32.const 160 - i32.const 436 + i32.const 488 i32.const 3 call $~lib/builtins/abort unreachable @@ -3236,7 +3473,7 @@ if i32.const 0 i32.const 160 - i32.const 438 + i32.const 490 i32.const 3 call $~lib/builtins/abort unreachable @@ -3255,7 +3492,7 @@ if i32.const 0 i32.const 160 - i32.const 440 + i32.const 492 i32.const 3 call $~lib/builtins/abort unreachable @@ -3272,7 +3509,24 @@ if i32.const 0 i32.const 160 - i32.const 441 + i32.const 493 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i64x2.mul + local.get $2 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 494 i32.const 3 call $~lib/builtins/abort unreachable @@ -3288,7 +3542,7 @@ if i32.const 0 i32.const 160 - i32.const 442 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable @@ -3301,7 +3555,7 @@ if i32.const 0 i32.const 160 - i32.const 447 + i32.const 500 i32.const 3 call $~lib/builtins/abort unreachable @@ -3314,7 +3568,7 @@ if i32.const 0 i32.const 160 - i32.const 448 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable @@ -3331,7 +3585,7 @@ if i32.const 0 i32.const 160 - i32.const 449 + i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable @@ -3348,7 +3602,7 @@ if i32.const 0 i32.const 160 - i32.const 454 + i32.const 507 i32.const 3 call $~lib/builtins/abort unreachable @@ -3387,7 +3641,7 @@ i32.ne drop v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i64x2.any_true + i8x16.any_true i32.const 0 i32.ne i32.const 1 @@ -3395,32 +3649,63 @@ drop i64.const 1 i64x2.splat - i64x2.all_true + i32x4.all_true i32.const 0 i32.ne i32.const 1 i32.eq - drop - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_s - i64.const -1 - i64x2.splat + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 516 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 1 + i32.store + local.get $3 + i32.const -1 + i32.store offset=4 + local.get $3 + i64x2.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff i8x16.eq i8x16.all_true i32.const 0 i32.ne - drop - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_u - i64.const 0 - i64x2.splat + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 521 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i64x2.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 i8x16.eq i8x16.all_true i32.const 0 i32.ne - drop + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 526 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_f32x4 (local $0 v128) @@ -3443,7 +3728,7 @@ if i32.const 0 i32.const 160 - i32.const 495 + i32.const 537 i32.const 3 call $~lib/builtins/abort unreachable @@ -3461,7 +3746,7 @@ if i32.const 0 i32.const 160 - i32.const 497 + i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable @@ -3480,7 +3765,7 @@ if i32.const 0 i32.const 160 - i32.const 499 + i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable @@ -3497,7 +3782,7 @@ if i32.const 0 i32.const 160 - i32.const 500 + i32.const 542 i32.const 3 call $~lib/builtins/abort unreachable @@ -3514,7 +3799,7 @@ if i32.const 0 i32.const 160 - i32.const 501 + i32.const 543 i32.const 3 call $~lib/builtins/abort unreachable @@ -3535,7 +3820,7 @@ if i32.const 0 i32.const 160 - i32.const 503 + i32.const 545 i32.const 3 call $~lib/builtins/abort unreachable @@ -3552,7 +3837,7 @@ if i32.const 0 i32.const 160 - i32.const 504 + i32.const 546 i32.const 3 call $~lib/builtins/abort unreachable @@ -3568,7 +3853,7 @@ if i32.const 0 i32.const 160 - i32.const 505 + i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable @@ -3581,7 +3866,7 @@ if i32.const 0 i32.const 160 - i32.const 506 + i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable @@ -3594,7 +3879,7 @@ if i32.const 0 i32.const 160 - i32.const 507 + i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable @@ -3611,7 +3896,7 @@ if i32.const 0 i32.const 160 - i32.const 508 + i32.const 550 i32.const 3 call $~lib/builtins/abort unreachable @@ -3628,7 +3913,7 @@ if i32.const 0 i32.const 160 - i32.const 513 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable @@ -3659,7 +3944,7 @@ if i32.const 0 i32.const 160 - i32.const 522 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -3676,7 +3961,7 @@ if i32.const 0 i32.const 160 - i32.const 523 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -3693,7 +3978,7 @@ if i32.const 0 i32.const 160 - i32.const 524 + i32.const 566 i32.const 3 call $~lib/builtins/abort unreachable @@ -3710,7 +3995,7 @@ if i32.const 0 i32.const 160 - i32.const 525 + i32.const 567 i32.const 3 call $~lib/builtins/abort unreachable @@ -3727,7 +4012,7 @@ if i32.const 0 i32.const 160 - i32.const 526 + i32.const 568 i32.const 3 call $~lib/builtins/abort unreachable @@ -3744,7 +4029,7 @@ if i32.const 0 i32.const 160 - i32.const 527 + i32.const 569 i32.const 3 call $~lib/builtins/abort unreachable @@ -3761,7 +4046,7 @@ if i32.const 0 i32.const 160 - i32.const 528 + i32.const 570 i32.const 3 call $~lib/builtins/abort unreachable @@ -3778,7 +4063,7 @@ if i32.const 0 i32.const 160 - i32.const 529 + i32.const 571 i32.const 3 call $~lib/builtins/abort unreachable @@ -3794,7 +4079,7 @@ if i32.const 0 i32.const 160 - i32.const 530 + i32.const 572 i32.const 3 call $~lib/builtins/abort unreachable @@ -3849,7 +4134,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable @@ -3867,7 +4152,7 @@ if i32.const 0 i32.const 160 - i32.const 559 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable @@ -3886,7 +4171,7 @@ if i32.const 0 i32.const 160 - i32.const 561 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable @@ -3903,7 +4188,7 @@ if i32.const 0 i32.const 160 - i32.const 562 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable @@ -3920,7 +4205,7 @@ if i32.const 0 i32.const 160 - i32.const 563 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable @@ -3941,7 +4226,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable @@ -3958,7 +4243,7 @@ if i32.const 0 i32.const 160 - i32.const 566 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable @@ -3974,7 +4259,7 @@ if i32.const 0 i32.const 160 - i32.const 567 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable @@ -3987,7 +4272,7 @@ if i32.const 0 i32.const 160 - i32.const 568 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable @@ -4000,7 +4285,7 @@ if i32.const 0 i32.const 160 - i32.const 569 + i32.const 600 i32.const 3 call $~lib/builtins/abort unreachable @@ -4017,7 +4302,7 @@ if i32.const 0 i32.const 160 - i32.const 570 + i32.const 601 i32.const 3 call $~lib/builtins/abort unreachable @@ -4034,7 +4319,7 @@ if i32.const 0 i32.const 160 - i32.const 575 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable @@ -4065,7 +4350,7 @@ if i32.const 0 i32.const 160 - i32.const 584 + i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable @@ -4082,7 +4367,7 @@ if i32.const 0 i32.const 160 - i32.const 585 + i32.const 616 i32.const 3 call $~lib/builtins/abort unreachable @@ -4099,7 +4384,7 @@ if i32.const 0 i32.const 160 - i32.const 586 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable @@ -4116,7 +4401,7 @@ if i32.const 0 i32.const 160 - i32.const 587 + i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable @@ -4133,7 +4418,7 @@ if i32.const 0 i32.const 160 - i32.const 588 + i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable @@ -4150,7 +4435,7 @@ if i32.const 0 i32.const 160 - i32.const 589 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -4167,7 +4452,7 @@ if i32.const 0 i32.const 160 - i32.const 590 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -4184,7 +4469,7 @@ if i32.const 0 i32.const 160 - i32.const 591 + i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable @@ -4200,7 +4485,7 @@ if i32.const 0 i32.const 160 - i32.const 592 + i32.const 623 i32.const 3 call $~lib/builtins/abort unreachable @@ -4213,80 +4498,6 @@ i32.const 0 i32.ne drop - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_s - f64.const -1 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_u - f64.const 18446744073709551615 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - ) - (func $features/simd/test_v8x16 - (local $0 v128) - (local $1 v128) - (local $2 v128) - v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c - local.set $0 - v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c - local.set $1 - local.get $0 - local.get $1 - v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 - v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x0c0d0e10 0x08090a0b 0x04050607 0x00010203 - local.set $2 - local.get $0 - local.get $2 - v8x16.swizzle - v128.const i32x4 0x0c0d0e00 0x08090a0b 0x04050607 0x00010203 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $features/simd/test_v16x8 - nop - ) - (func $features/simd/test_v32x4 - nop - ) - (func $features/simd/test_v64x2 - nop ) (func $features/simd/test_const (result v128) (local $0 v128) @@ -4304,10 +4515,6 @@ call $features/simd/test_i64x2 call $features/simd/test_f32x4 call $features/simd/test_f64x2 - call $features/simd/test_v8x16 - call $features/simd/test_v16x8 - call $features/simd/test_v32x4 - call $features/simd/test_v64x2 call $features/simd/test_const drop ) diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index 7b23d6c921..9da69712cd 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -1447,15 +1447,15 @@ i32.store i32.const 1056 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1088 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1 i32.const 2 i32.const 1120 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -1470,7 +1470,7 @@ i32.const 3 i32.const 1216 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 i32.ne if @@ -1484,7 +1484,7 @@ i32.const 1 i32.const 1248 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.ne if @@ -1609,11 +1609,11 @@ local.get $0 i32.const 1680 i32.load - call_indirect (type $i32_=>_none) + call_indirect $0 (type $i32_=>_none) i32.const 1 i32.const 1712 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.ne if @@ -1633,7 +1633,7 @@ i32.const 2 i32.const 1744 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 3 i32.ne if diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index ef3c975395..547f6c35a4 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -2565,19 +2565,19 @@ global.set $~argumentsLength global.get $function-call/fnVoid i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 0 global.set $~argumentsLength global.get $function-call/faVoid i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1 i32.const 2 i32.const 2 global.set $~argumentsLength global.get $function-call/fnRet i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -2595,7 +2595,7 @@ global.set $~argumentsLength global.get $function-call/faRet i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 i32.eq i32.eqz @@ -2612,7 +2612,7 @@ global.set $~argumentsLength global.get $function-call/fnThis i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -2654,13 +2654,13 @@ global.set $~argumentsLength i32.const 656 i32.load - call_indirect (type $i32_=>_none) + call_indirect $0 (type $i32_=>_none) i32.const 1 i32.const 0 global.set $~argumentsLength i32.const 688 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -2684,7 +2684,7 @@ global.set $~argumentsLength i32.const 720 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 0aa9400422..364af50f36 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1583,7 +1583,7 @@ i32.const 1 i32.const 1056 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.ne if @@ -1597,7 +1597,7 @@ i32.const 2 i32.const 1152 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.ne if @@ -1610,10 +1610,10 @@ end i32.const 1184 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1216 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) i32.const 1 i32.ne if @@ -1631,7 +1631,7 @@ i32.const 2 i32.const 1248 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -1649,7 +1649,7 @@ i32.const 2 i32.const 1280 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 1 i32.ne if @@ -1667,7 +1667,7 @@ i32.const 2 i32.const 1312 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 42 i32.ne if @@ -1682,7 +1682,7 @@ i32.const 2 i32.const 1344 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -1697,7 +1697,7 @@ i32.const 2 i32.const 1376 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 1 i32.ne if @@ -1712,7 +1712,7 @@ i32.const 2 i32.const 1408 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 42 i32.ne if @@ -1734,13 +1734,13 @@ global.get $~lib/memory/__stack_pointer i32.const 1504 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store i32.const 1 local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.ne if @@ -1769,13 +1769,13 @@ global.get $~lib/memory/__stack_pointer i32.const 1568 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store offset=4 i32.const 1 local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.ne if @@ -1894,13 +1894,13 @@ local.get $0 i32.load i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store offset=8 i32.const 1 local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.ne if diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index 2e78cc447a..347bb22919 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -91,7 +91,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -156,14 +156,14 @@ global.set $~argumentsLength global.get $function-expression/globalFunc i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store i32.const 1 global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.eq i32.eqz @@ -206,14 +206,14 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store offset=4 i32.const 1 global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.eq i32.eqz @@ -2874,14 +2874,14 @@ local.get $0 i32.load i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store offset=8 i32.const 1 global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.eq i32.eqz @@ -2913,7 +2913,7 @@ global.set $~argumentsLength global.get $function-expression/f1 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -2930,7 +2930,7 @@ global.set $~argumentsLength global.get $function-expression/f2 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.eq i32.eqz @@ -2946,12 +2946,12 @@ global.set $~argumentsLength global.get $function-expression/f3 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 0 global.set $~argumentsLength global.get $function-expression/f4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) i32.const 1 i32.eq i32.eqz @@ -3023,7 +3023,7 @@ global.set $~argumentsLength call $function-expression/testOmittedReturn1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -3041,7 +3041,7 @@ global.set $~argumentsLength call $function-expression/testOmittedReturn2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -3059,7 +3059,7 @@ global.set $~argumentsLength call $function-expression/testOmittedReturn3 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 42 i32.eq i32.eqz diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 0f5d8a8c8b..72cb6c6da9 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -46,7 +46,7 @@ local.get $1 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $~start call $start:function-types @@ -82,7 +82,7 @@ i32.const 2 i32.const 1056 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -99,7 +99,7 @@ i64.const 20 i32.const 1152 i32.load - call_indirect (type $i64_i64_=>_i64) + call_indirect $0 (type $i64_i64_=>_i64) i64.const 30 i64.ne if @@ -116,7 +116,7 @@ f64.const 2.5 i32.const 1184 i32.load - call_indirect (type $f64_f64_=>_f64) + call_indirect $0 (type $f64_f64_=>_f64) f64.const 4 f64.ne if @@ -151,7 +151,7 @@ i32.const 4 i32.const 1056 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 7 i32.ne if diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index f26ce47c8b..d24950a348 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -54,7 +54,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $function-types/doAdd (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -63,7 +63,7 @@ global.set $~argumentsLength call $function-types/makeAdder i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $function-types/addI32 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -77,7 +77,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $~start call $start:function-types @@ -113,7 +113,7 @@ global.set $~argumentsLength global.get $function-types/i32Adder i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -133,7 +133,7 @@ global.set $~argumentsLength global.get $function-types/i64Adder i32.load - call_indirect (type $i64_i64_=>_i64) + call_indirect $0 (type $i64_i64_=>_i64) i64.const 30 i64.eq i32.eqz @@ -151,7 +151,7 @@ global.set $~argumentsLength call $function-types/makeAdder i32.load - call_indirect (type $f64_f64_=>_f64) + call_indirect $0 (type $f64_f64_=>_f64) f64.const 4 f64.eq i32.eqz diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 3d79a8151b..84fd405f36 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1516,7 +1516,7 @@ i32.store i32.const 1456 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index a02d3aeddd..043c10875d 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -2504,7 +2504,7 @@ local.get $0 call $getter-call/C#get:x i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index e84415fad3..66ce9513b7 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -80,7 +80,7 @@ i32.const 1152 i32.const 1200 i32.load - call_indirect (type $i32_f32_i32_i32_=>_i32) + call_indirect $0 (type $i32_f32_i32_i32_=>_i32) local.set $1 local.get $0 i32.const 1 diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 3629c037c4..6c1ed71c5d 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -82,7 +82,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_f32_i32_i32_=>_i32) + call_indirect $0 (type $i32_f32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 57932b0813..82a052f5e1 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1894,7 +1894,7 @@ i32.const 2 i32.const 1104 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.ne if diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 70eeba686f..9cc05286f1 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -194,7 +194,7 @@ global.set $~argumentsLength i32.const 80 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.eq i32.eqz diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 4351ef364f..362612b299 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1821,7 +1821,7 @@ i32.const 2 i32.const 1056 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.ne if @@ -1835,7 +1835,7 @@ i32.const 1 i32.const 1168 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.ne if @@ -1866,7 +1866,7 @@ i32.const 0 i32.const 1200 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index da3605074d..efdbd5097e 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -3058,7 +3058,7 @@ global.set $~argumentsLength i32.const 32 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.eq i32.eqz @@ -3075,7 +3075,7 @@ global.set $~argumentsLength i32.const 144 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.eq i32.eqz @@ -3109,7 +3109,7 @@ global.set $~argumentsLength i32.const 176 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 10 call $~lib/number/I32#toString local.set $0 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 643d13154e..041027649e 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -3034,7 +3034,7 @@ i32.const 1 i32.const 3040 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.ne if @@ -3048,7 +3048,7 @@ i32.const 1 i32.const 3104 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 4 i32.ne if @@ -3062,7 +3062,7 @@ i32.const 1 i32.const 3072 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 3 i32.ne if diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 236ec1958e..1e63d91110 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -5674,7 +5674,7 @@ global.get $resolve-ternary/f2 end i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.eq i32.eqz @@ -5696,7 +5696,7 @@ i32.const 3568 end i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 4 i32.eq i32.eqz @@ -5718,7 +5718,7 @@ i32.const 3568 end i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 3 i32.eq i32.eqz diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index e58a208889..a38056cf4e 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -3538,7 +3538,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -3616,7 +3616,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -3695,7 +3695,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -3774,7 +3774,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -4029,7 +4029,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $3 i32.const 1 @@ -4102,7 +4102,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $3 i32.const 1 @@ -4291,7 +4291,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -4405,7 +4405,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -4496,7 +4496,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -4550,7 +4550,7 @@ local.get $5 local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -4705,7 +4705,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -4819,7 +4819,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -4910,7 +4910,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -4964,7 +4964,7 @@ local.get $5 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -5140,7 +5140,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5254,7 +5254,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5347,7 +5347,7 @@ local.get $3 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5404,7 +5404,7 @@ local.get $8 local.get $4 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -5536,7 +5536,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5650,7 +5650,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5743,7 +5743,7 @@ local.get $3 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5800,7 +5800,7 @@ local.get $8 local.get $4 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -5997,7 +5997,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -6275,7 +6275,7 @@ local.get $4 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -8071,7 +8071,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8177,7 +8177,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8268,7 +8268,7 @@ local.get $3 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8321,7 +8321,7 @@ local.get $8 local.get $4 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -8796,7 +8796,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s br_if $__inlined_func$std/array/isSorted @@ -8905,7 +8905,7 @@ local.get $4 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -15562,7 +15562,7 @@ local.get $1 i32.const 6560 i32.load - call_indirect (type $i32_i32_i32_=>_f32) + call_indirect $0 (type $i32_i32_i32_=>_f32) f32.store local.get $0 i32.const 1 @@ -19333,7 +19333,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $2 i32.const 1 @@ -19398,7 +19398,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -19575,7 +19575,7 @@ local.get $4 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -22375,7 +22375,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/array/Array#every drop @@ -22441,7 +22441,7 @@ local.get $0 local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex local.get $1 i32.const 1 @@ -22904,7 +22904,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -22979,7 +22979,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -23105,7 +23105,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop local.get $2 @@ -23448,7 +23448,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/array/Array#every drop @@ -23512,7 +23512,7 @@ local.get $0 local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex local.get $1 i32.const 1 @@ -23964,7 +23964,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -24037,7 +24037,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -24157,7 +24157,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop local.get $2 @@ -24639,7 +24639,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if global.get $~lib/memory/__stack_pointer @@ -24727,7 +24727,7 @@ local.get $0 local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25272,7 +25272,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -25353,7 +25353,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -25504,7 +25504,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index b24ba6456c..a6fa4cd7a6 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -5715,7 +5715,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -5804,7 +5804,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -5889,7 +5889,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -5974,7 +5974,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -6264,7 +6264,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6332,7 +6332,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6412,7 +6412,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6470,7 +6470,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6678,7 +6678,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -6814,7 +6814,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -6946,7 +6946,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -7047,7 +7047,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -7245,7 +7245,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7381,7 +7381,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7513,7 +7513,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7614,7 +7614,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7842,7 +7842,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -7978,7 +7978,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8110,7 +8110,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8209,7 +8209,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8301,7 +8301,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8437,7 +8437,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8569,7 +8569,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8668,7 +8668,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8800,7 +8800,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -8980,7 +8980,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -9177,7 +9177,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -9288,7 +9288,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -9752,7 +9752,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -12976,7 +12976,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -13029,7 +13029,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -13508,7 +13508,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -13606,7 +13606,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -13815,7 +13815,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -13868,7 +13868,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -14351,7 +14351,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -14449,7 +14449,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -14601,7 +14601,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -14737,7 +14737,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -14869,7 +14869,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -14968,7 +14968,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -17221,7 +17221,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -17388,7 +17388,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -17497,7 +17497,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -17867,7 +17867,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -27321,7 +27321,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -27400,7 +27400,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.set $6 @@ -27675,7 +27675,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -27740,7 +27740,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 local.set $6 @@ -28822,7 +28822,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_f32) + call_indirect $0 (type $i32_i32_i32_=>_f32) local.set $8 local.get $4 local.get $5 @@ -28908,7 +28908,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) local.set $7 local.get $4 local.get $5 @@ -28992,7 +28992,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 @@ -29495,7 +29495,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -29757,7 +29757,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -29907,7 +29907,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -30249,7 +30249,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -33601,7 +33601,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 @@ -34117,7 +34117,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 @@ -34738,7 +34738,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index f99e20ca91..e7fe914fe7 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3064,7 +3064,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3178,7 +3178,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3270,7 +3270,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3324,7 +3324,7 @@ local.get $5 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -4109,7 +4109,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $2 i32.const 1 @@ -4662,7 +4662,7 @@ local.get $2 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $0 i32.const 1 @@ -4987,7 +4987,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop local.get $2 @@ -5036,7 +5036,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop local.get $2 @@ -5090,7 +5090,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop local.get $2 @@ -5143,7 +5143,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop local.get $2 @@ -5195,7 +5195,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop local.get $2 @@ -5246,7 +5246,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop local.get $2 @@ -5298,7 +5298,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 drop local.get $2 @@ -5349,7 +5349,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 drop local.get $2 @@ -5401,7 +5401,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 drop local.get $2 @@ -5458,7 +5458,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 drop local.get $2 @@ -5503,7 +5503,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.const 1 @@ -5551,7 +5551,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.const 1 @@ -5596,7 +5596,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $2 i32.const 1 @@ -5648,7 +5648,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $2 i32.const 1 @@ -5693,7 +5693,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $2 i32.const 1 @@ -5743,7 +5743,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 local.get $2 i32.const 1 @@ -5788,7 +5788,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 i32.const 1 @@ -5838,7 +5838,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 i32.const 1 @@ -5883,7 +5883,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 i32.const 1 @@ -5933,7 +5933,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $2 i32.const 1 @@ -5992,7 +5992,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop @@ -6042,7 +6042,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop @@ -6100,7 +6100,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop @@ -6148,7 +6148,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop @@ -6196,7 +6196,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop @@ -6244,7 +6244,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop @@ -6298,7 +6298,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 drop @@ -6346,7 +6346,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 drop @@ -6545,7 +6545,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 drop @@ -6747,7 +6747,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 drop @@ -6787,7 +6787,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -16259,7 +16259,7 @@ local.get $1 i32.const 3600 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $2 i32.const 1 @@ -16417,7 +16417,7 @@ local.get $1 i32.const 3632 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $2 i32.const 1 @@ -16575,7 +16575,7 @@ local.get $1 i32.const 3664 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $2 i32.const 1 @@ -16743,7 +16743,7 @@ local.get $1 i32.const 3696 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $3 i32.const 1 @@ -16911,7 +16911,7 @@ local.get $1 i32.const 3728 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $3 i32.const 1 @@ -17079,7 +17079,7 @@ local.get $1 i32.const 3760 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $3 i32.const 1 @@ -17247,7 +17247,7 @@ local.get $1 i32.const 3792 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $3 i32.const 1 @@ -17415,7 +17415,7 @@ local.get $1 i32.const 3824 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $3 i32.const 1 @@ -17583,7 +17583,7 @@ local.get $1 i32.const 3856 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $3 i32.const 1 @@ -17751,7 +17751,7 @@ local.get $1 i32.const 3888 i32.load - call_indirect (type $f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store local.get $3 i32.const 1 @@ -17919,7 +17919,7 @@ local.get $1 i32.const 3920 i32.load - call_indirect (type $f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store local.get $3 i32.const 1 @@ -19420,7 +19420,7 @@ local.get $0 i32.const 6496 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19597,7 +19597,7 @@ local.get $0 i32.const 6592 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19708,7 +19708,7 @@ local.get $0 i32.const 6624 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19869,7 +19869,7 @@ local.get $0 i32.const 6656 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19974,7 +19974,7 @@ local.get $0 i32.const 6688 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20139,7 +20139,7 @@ local.get $0 i32.const 6720 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20247,7 +20247,7 @@ local.get $0 i32.const 6752 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20412,7 +20412,7 @@ local.get $0 i32.const 6784 i32.load - call_indirect (type $f32_i32_i32_=>_none) + call_indirect $0 (type $f32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20577,7 +20577,7 @@ local.get $0 i32.const 6816 i32.load - call_indirect (type $f64_i32_i32_=>_none) + call_indirect $0 (type $f64_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -31696,7 +31696,7 @@ local.get $0 i32.const 2896 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -31868,7 +31868,7 @@ local.get $0 i32.const 2992 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -31947,7 +31947,7 @@ local.get $0 i32.const 3024 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -32026,7 +32026,7 @@ local.get $0 i32.const 3056 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -32103,7 +32103,7 @@ local.get $0 i32.const 3088 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -32178,7 +32178,7 @@ local.get $0 i32.const 3120 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -32255,7 +32255,7 @@ local.get $0 i32.const 3152 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -32330,7 +32330,7 @@ local.get $0 i32.const 3184 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $7 local.get $1 i32.const 1 @@ -32405,7 +32405,7 @@ local.get $0 i32.const 3216 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $8 local.get $1 i32.const 1 @@ -32995,7 +32995,7 @@ local.get $0 i32.const 3248 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33154,7 +33154,7 @@ local.get $0 i32.const 3344 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33233,7 +33233,7 @@ local.get $0 i32.const 3376 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33312,7 +33312,7 @@ local.get $0 i32.const 3408 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33389,7 +33389,7 @@ local.get $0 i32.const 3440 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33466,7 +33466,7 @@ local.get $0 i32.const 3472 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -33543,7 +33543,7 @@ local.get $0 i32.const 3504 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -33620,7 +33620,7 @@ local.get $0 i32.const 3536 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $7 local.get $1 i32.const 1 @@ -33697,7 +33697,7 @@ local.get $0 i32.const 3568 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $8 local.get $1 i32.const 1 @@ -36940,7 +36940,7 @@ local.get $0 i32.const 3952 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $1 local.get $5 @@ -37031,7 +37031,7 @@ local.get $0 i32.const 3984 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $1 local.get $5 @@ -37122,7 +37122,7 @@ local.get $0 i32.const 4016 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $1 local.get $5 @@ -37219,7 +37219,7 @@ local.get $0 i32.const 4048 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37321,7 +37321,7 @@ local.get $0 i32.const 4080 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37423,7 +37423,7 @@ local.get $0 i32.const 4112 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37525,7 +37525,7 @@ local.get $0 i32.const 4144 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37627,7 +37627,7 @@ local.get $0 i32.const 4176 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37729,7 +37729,7 @@ local.get $0 i32.const 4208 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37831,7 +37831,7 @@ local.get $0 i32.const 4240 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37933,7 +37933,7 @@ local.get $0 i32.const 4272 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $5 local.get $1 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 23e9a4bb19..1b0015411f 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3505,7 +3505,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3641,7 +3641,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3773,7 +3773,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3881,7 +3881,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -5862,7 +5862,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -5940,7 +5940,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -5998,7 +5998,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6080,7 +6080,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6162,7 +6162,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6220,7 +6220,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6302,7 +6302,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6384,7 +6384,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -6466,7 +6466,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -6548,7 +6548,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $3 local.get $7 i32.const 1 @@ -6606,7 +6606,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $3 local.get $7 i32.const 1 @@ -7861,7 +7861,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -7918,7 +7918,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -7975,7 +7975,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8032,7 +8032,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8089,7 +8089,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8146,7 +8146,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8203,7 +8203,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8260,7 +8260,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -8317,7 +8317,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -8374,7 +8374,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $3 local.get $7 i32.const 1 @@ -8431,7 +8431,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $3 local.get $7 i32.const 1 @@ -8816,7 +8816,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -8886,7 +8886,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 @@ -8954,7 +8954,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 @@ -9024,7 +9024,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 @@ -9094,7 +9094,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 @@ -9160,7 +9160,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 @@ -9224,7 +9224,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 @@ -9288,7 +9288,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -9352,7 +9352,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 @@ -9416,7 +9416,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -9480,7 +9480,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -9548,7 +9548,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -9618,7 +9618,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 @@ -9686,7 +9686,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 @@ -9756,7 +9756,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 @@ -9826,7 +9826,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 @@ -9892,7 +9892,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 @@ -9956,7 +9956,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 @@ -10020,7 +10020,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -10084,7 +10084,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 @@ -10148,7 +10148,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -10212,7 +10212,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -10283,7 +10283,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10358,7 +10358,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10431,7 +10431,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10506,7 +10506,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10581,7 +10581,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10652,7 +10652,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10721,7 +10721,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10790,7 +10790,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if br $for-continue|0 end @@ -10859,7 +10859,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if br $for-continue|0 end @@ -11179,7 +11179,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if br $for-continue|0 end @@ -11505,7 +11505,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if br $for-continue|0 end @@ -11565,7 +11565,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11612,7 +11612,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11659,7 +11659,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11706,7 +11706,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11753,7 +11753,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11800,7 +11800,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11847,7 +11847,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11894,7 +11894,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11941,7 +11941,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11988,7 +11988,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_none) + call_indirect $0 (type $f32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -12035,7 +12035,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_none) + call_indirect $0 (type $f64_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -53588,7 +53588,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $9 i32.const 1 @@ -53689,7 +53689,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $9 i32.const 1 @@ -53790,7 +53790,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $9 i32.const 1 @@ -53891,7 +53891,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $9 i32.const 1 @@ -53992,7 +53992,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $9 i32.const 1 @@ -54093,7 +54093,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $9 i32.const 1 @@ -54194,7 +54194,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $9 i32.const 1 @@ -54295,7 +54295,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $9 i32.const 1 @@ -54396,7 +54396,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $9 i32.const 1 @@ -54497,7 +54497,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store local.get $9 i32.const 1 @@ -54598,7 +54598,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store local.get $9 i32.const 1 @@ -54698,7 +54698,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -54819,7 +54819,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -54940,7 +54940,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55061,7 +55061,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55182,7 +55182,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55303,7 +55303,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55424,7 +55424,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55545,7 +55545,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55666,7 +55666,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55787,7 +55787,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55908,7 +55908,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $6 local.get $8 diff --git a/tests/features.json b/tests/features.json index b72f470bd9..92adbebdef 100644 --- a/tests/features.json +++ b/tests/features.json @@ -27,14 +27,16 @@ "--enable reference-types" ], "v8_flags": [ + "--experimental-wasm-reftypes" ] }, "gc": { "asc_flags": [ + "--enable reference-types", "--enable gc" ], "v8_flags": [ - "--experimental-wasm-anyref", + "--experimental-wasm-reftypes", "--experimental-wasm-gc" ] },