porffor 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CNAME +1 -0
- package/LICENSE +21 -0
- package/README.md +275 -0
- package/compiler/builtins/base64.js +92 -0
- package/compiler/builtins.js +770 -0
- package/compiler/codeGen.js +2027 -0
- package/compiler/decompile.js +102 -0
- package/compiler/embedding.js +19 -0
- package/compiler/encoding.js +217 -0
- package/compiler/expression.js +70 -0
- package/compiler/index.js +67 -0
- package/compiler/opt.js +436 -0
- package/compiler/parse.js +8 -0
- package/compiler/prototype.js +272 -0
- package/compiler/sections.js +154 -0
- package/compiler/wasmSpec.js +200 -0
- package/compiler/wrap.js +119 -0
- package/index.html +1264 -0
- package/logo.png +0 -0
- package/package.json +23 -0
- package/porf.cmd +2 -0
- package/runner/compare.js +35 -0
- package/runner/index.js +32 -0
- package/runner/info.js +54 -0
- package/runner/profile.js +47 -0
- package/runner/repl.js +99 -0
- package/runner/sizes.js +38 -0
- package/runner/transform.js +36 -0
- package/sw.js +26 -0
- package/test/array_1.js +8 -0
- package/test/array_push.js +8 -0
- package/test/assignop_1.js +15 -0
- package/test/bitwise_1.js +6 -0
- package/test/bool_1.js +3 -0
- package/test/boolean.js +6 -0
- package/test/break_1.js +6 -0
- package/test/break_2.js +12 -0
- package/test/conditional_1.js +3 -0
- package/test/conditional_2.js +4 -0
- package/test/console_1.js +2 -0
- package/test/continue_1.js +6 -0
- package/test/continue_2.js +10 -0
- package/test/empty.js +1 -0
- package/test/ending_exp_1.js +2 -0
- package/test/ending_exp_2.js +6 -0
- package/test/eq_1.js +4 -0
- package/test/eq_2.js +4 -0
- package/test/eq_3.js +5 -0
- package/test/export_1.js +9 -0
- package/test/factorial.js +3 -0
- package/test/fibonacci.js +16 -0
- package/test/float_div0.js +2 -0
- package/test/float_frac.js +2 -0
- package/test/float_isfinite.js +29 -0
- package/test/float_isinteger.js +13 -0
- package/test/float_isnan.js +20 -0
- package/test/float_issafeinteger.js +11 -0
- package/test/float_large.js +2 -0
- package/test/float_math_funcs.js +24 -0
- package/test/float_math_random.js +6 -0
- package/test/float_nan.js +3 -0
- package/test/float_number_values.js +12 -0
- package/test/for_1.js +4 -0
- package/test/for_2.js +4 -0
- package/test/func_1.js +16 -0
- package/test/func_2.js +6 -0
- package/test/func_3.js +10 -0
- package/test/global_1.js +8 -0
- package/test/global_2.js +10 -0
- package/test/if_1.js +6 -0
- package/test/if_2.js +9 -0
- package/test/if_3.js +7 -0
- package/test/iife_1.js +8 -0
- package/test/iife_2.js +8 -0
- package/test/index.js +93 -0
- package/test/int_number_values.js +6 -0
- package/test/logic_1.js +7 -0
- package/test/logic_2.js +7 -0
- package/test/math_1.js +6 -0
- package/test/math_2.js +12 -0
- package/test/math_3.js +6 -0
- package/test/number_func.js +4 -0
- package/test/return_1.js +8 -0
- package/test/return_2.js +11 -0
- package/test/tailcall_1.js +10 -0
- package/test/throw_1.js +2 -0
- package/test/throw_2.js +4 -0
- package/test/throw_3.js +2 -0
- package/test/throw_4.js +3 -0
- package/test/try_1.js +7 -0
- package/test/unary_1.js +4 -0
- package/test/unary_2.js +5 -0
- package/test/unary_3.js +6 -0
- package/test/unary_4.js +12 -0
- package/test/unary_5.js +8 -0
- package/test/undefined_1.js +8 -0
- package/test/undefined_2.js +10 -0
- package/test/updateexp_1.js +9 -0
- package/test/vars_1.js +5 -0
- package/test/vars_2.js +9 -0
- package/test/while_1.js +6 -0
- package/test262/compare.js +30 -0
- package/test262/index.js +314 -0
- package/test262/node_modules/.bin/esparse +12 -0
- package/test262/node_modules/.bin/esparse.cmd +17 -0
- package/test262/node_modules/.bin/esparse.ps1 +28 -0
- package/test262/node_modules/.bin/esvalidate +12 -0
- package/test262/node_modules/.bin/esvalidate.cmd +17 -0
- package/test262/node_modules/.bin/esvalidate.ps1 +28 -0
- package/test262/node_modules/.bin/js-yaml +12 -0
- package/test262/node_modules/.bin/js-yaml.cmd +17 -0
- package/test262/node_modules/.bin/js-yaml.ps1 +28 -0
- package/test262/node_modules/.package-lock.json +0 -0
- package/test262/node_modules/@nodelib/fs.scandir/LICENSE +21 -0
- package/test262/node_modules/@nodelib/fs.scandir/README.md +171 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +19 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/constants.d.ts +4 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/constants.js +17 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/index.d.ts +12 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/index.js +26 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.js +104 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +1 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.js +13 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +5 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.js +54 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/settings.d.ts +20 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/settings.js +24 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/types/index.js +2 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.js +19 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2 -0
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.js +5 -0
- package/test262/node_modules/@nodelib/fs.scandir/package.json +44 -0
- package/test262/node_modules/@nodelib/fs.stat/LICENSE +21 -0
- package/test262/node_modules/@nodelib/fs.stat/README.md +126 -0
- package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
- package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.js +17 -0
- package/test262/node_modules/@nodelib/fs.stat/out/index.d.ts +12 -0
- package/test262/node_modules/@nodelib/fs.stat/out/index.js +26 -0
- package/test262/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
- package/test262/node_modules/@nodelib/fs.stat/out/providers/async.js +36 -0
- package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +3 -0
- package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.js +23 -0
- package/test262/node_modules/@nodelib/fs.stat/out/settings.d.ts +16 -0
- package/test262/node_modules/@nodelib/fs.stat/out/settings.js +16 -0
- package/test262/node_modules/@nodelib/fs.stat/out/types/index.d.ts +4 -0
- package/test262/node_modules/@nodelib/fs.stat/out/types/index.js +2 -0
- package/test262/node_modules/@nodelib/fs.stat/package.json +37 -0
- package/test262/node_modules/@nodelib/fs.walk/LICENSE +21 -0
- package/test262/node_modules/@nodelib/fs.walk/README.md +215 -0
- package/test262/node_modules/@nodelib/fs.walk/out/index.d.ts +14 -0
- package/test262/node_modules/@nodelib/fs.walk/out/index.js +34 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/async.js +30 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +4 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/index.js +9 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +12 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.js +34 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +10 -0
- package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.js +14 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/async.js +97 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +7 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/common.js +31 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.js +11 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +15 -0
- package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.js +59 -0
- package/test262/node_modules/@nodelib/fs.walk/out/settings.d.ts +30 -0
- package/test262/node_modules/@nodelib/fs.walk/out/settings.js +26 -0
- package/test262/node_modules/@nodelib/fs.walk/out/types/index.d.ts +8 -0
- package/test262/node_modules/@nodelib/fs.walk/out/types/index.js +2 -0
- package/test262/node_modules/@nodelib/fs.walk/package.json +44 -0
- package/test262/node_modules/argparse/CHANGELOG.md +185 -0
- package/test262/node_modules/argparse/LICENSE +21 -0
- package/test262/node_modules/argparse/README.md +257 -0
- package/test262/node_modules/argparse/index.js +3 -0
- package/test262/node_modules/argparse/lib/action/append/constant.js +47 -0
- package/test262/node_modules/argparse/lib/action/append.js +53 -0
- package/test262/node_modules/argparse/lib/action/count.js +40 -0
- package/test262/node_modules/argparse/lib/action/help.js +47 -0
- package/test262/node_modules/argparse/lib/action/store/constant.js +43 -0
- package/test262/node_modules/argparse/lib/action/store/false.js +27 -0
- package/test262/node_modules/argparse/lib/action/store/true.js +26 -0
- package/test262/node_modules/argparse/lib/action/store.js +50 -0
- package/test262/node_modules/argparse/lib/action/subparsers.js +149 -0
- package/test262/node_modules/argparse/lib/action/version.js +47 -0
- package/test262/node_modules/argparse/lib/action.js +146 -0
- package/test262/node_modules/argparse/lib/action_container.js +482 -0
- package/test262/node_modules/argparse/lib/argparse.js +14 -0
- package/test262/node_modules/argparse/lib/argument/error.js +50 -0
- package/test262/node_modules/argparse/lib/argument/exclusive.js +54 -0
- package/test262/node_modules/argparse/lib/argument/group.js +75 -0
- package/test262/node_modules/argparse/lib/argument_parser.js +1161 -0
- package/test262/node_modules/argparse/lib/const.js +21 -0
- package/test262/node_modules/argparse/lib/help/added_formatters.js +87 -0
- package/test262/node_modules/argparse/lib/help/formatter.js +795 -0
- package/test262/node_modules/argparse/lib/namespace.js +76 -0
- package/test262/node_modules/argparse/lib/utils.js +57 -0
- package/test262/node_modules/argparse/package.json +34 -0
- package/test262/node_modules/braces/CHANGELOG.md +184 -0
- package/test262/node_modules/braces/LICENSE +21 -0
- package/test262/node_modules/braces/README.md +593 -0
- package/test262/node_modules/braces/index.js +170 -0
- package/test262/node_modules/braces/lib/compile.js +57 -0
- package/test262/node_modules/braces/lib/constants.js +57 -0
- package/test262/node_modules/braces/lib/expand.js +113 -0
- package/test262/node_modules/braces/lib/parse.js +333 -0
- package/test262/node_modules/braces/lib/stringify.js +32 -0
- package/test262/node_modules/braces/lib/utils.js +112 -0
- package/test262/node_modules/braces/package.json +77 -0
- package/test262/node_modules/esprima/ChangeLog +235 -0
- package/test262/node_modules/esprima/LICENSE.BSD +21 -0
- package/test262/node_modules/esprima/README.md +46 -0
- package/test262/node_modules/esprima/bin/esparse.js +139 -0
- package/test262/node_modules/esprima/bin/esvalidate.js +236 -0
- package/test262/node_modules/esprima/dist/esprima.js +6709 -0
- package/test262/node_modules/esprima/package.json +112 -0
- package/test262/node_modules/fast-glob/LICENSE +21 -0
- package/test262/node_modules/fast-glob/README.md +859 -0
- package/test262/node_modules/fast-glob/out/index.d.ts +40 -0
- package/test262/node_modules/fast-glob/out/index.js +102 -0
- package/test262/node_modules/fast-glob/out/managers/tasks.d.ts +22 -0
- package/test262/node_modules/fast-glob/out/managers/tasks.js +110 -0
- package/test262/node_modules/fast-glob/out/providers/async.d.ts +9 -0
- package/test262/node_modules/fast-glob/out/providers/async.js +23 -0
- package/test262/node_modules/fast-glob/out/providers/filters/deep.d.ts +16 -0
- package/test262/node_modules/fast-glob/out/providers/filters/deep.js +62 -0
- package/test262/node_modules/fast-glob/out/providers/filters/entry.d.ts +16 -0
- package/test262/node_modules/fast-glob/out/providers/filters/entry.js +63 -0
- package/test262/node_modules/fast-glob/out/providers/filters/error.d.ts +8 -0
- package/test262/node_modules/fast-glob/out/providers/filters/error.js +15 -0
- package/test262/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +33 -0
- package/test262/node_modules/fast-glob/out/providers/matchers/matcher.js +45 -0
- package/test262/node_modules/fast-glob/out/providers/matchers/partial.d.ts +4 -0
- package/test262/node_modules/fast-glob/out/providers/matchers/partial.js +38 -0
- package/test262/node_modules/fast-glob/out/providers/provider.d.ts +19 -0
- package/test262/node_modules/fast-glob/out/providers/provider.js +48 -0
- package/test262/node_modules/fast-glob/out/providers/stream.d.ts +11 -0
- package/test262/node_modules/fast-glob/out/providers/stream.js +31 -0
- package/test262/node_modules/fast-glob/out/providers/sync.d.ts +9 -0
- package/test262/node_modules/fast-glob/out/providers/sync.js +23 -0
- package/test262/node_modules/fast-glob/out/providers/transformers/entry.d.ts +8 -0
- package/test262/node_modules/fast-glob/out/providers/transformers/entry.js +26 -0
- package/test262/node_modules/fast-glob/out/readers/async.d.ts +10 -0
- package/test262/node_modules/fast-glob/out/readers/async.js +35 -0
- package/test262/node_modules/fast-glob/out/readers/reader.d.ts +15 -0
- package/test262/node_modules/fast-glob/out/readers/reader.js +33 -0
- package/test262/node_modules/fast-glob/out/readers/stream.d.ts +14 -0
- package/test262/node_modules/fast-glob/out/readers/stream.js +55 -0
- package/test262/node_modules/fast-glob/out/readers/sync.d.ts +12 -0
- package/test262/node_modules/fast-glob/out/readers/sync.js +43 -0
- package/test262/node_modules/fast-glob/out/settings.d.ts +164 -0
- package/test262/node_modules/fast-glob/out/settings.js +57 -0
- package/test262/node_modules/fast-glob/out/types/index.d.ts +31 -0
- package/test262/node_modules/fast-glob/out/types/index.js +2 -0
- package/test262/node_modules/fast-glob/out/utils/array.d.ts +2 -0
- package/test262/node_modules/fast-glob/out/utils/array.js +22 -0
- package/test262/node_modules/fast-glob/out/utils/errno.d.ts +2 -0
- package/test262/node_modules/fast-glob/out/utils/errno.js +7 -0
- package/test262/node_modules/fast-glob/out/utils/fs.d.ts +4 -0
- package/test262/node_modules/fast-glob/out/utils/fs.js +19 -0
- package/test262/node_modules/fast-glob/out/utils/index.d.ts +8 -0
- package/test262/node_modules/fast-glob/out/utils/index.js +17 -0
- package/test262/node_modules/fast-glob/out/utils/path.d.ts +13 -0
- package/test262/node_modules/fast-glob/out/utils/path.js +68 -0
- package/test262/node_modules/fast-glob/out/utils/pattern.d.ts +47 -0
- package/test262/node_modules/fast-glob/out/utils/pattern.js +188 -0
- package/test262/node_modules/fast-glob/out/utils/stream.d.ts +4 -0
- package/test262/node_modules/fast-glob/out/utils/stream.js +17 -0
- package/test262/node_modules/fast-glob/out/utils/string.d.ts +2 -0
- package/test262/node_modules/fast-glob/out/utils/string.js +11 -0
- package/test262/node_modules/fast-glob/package.json +81 -0
- package/test262/node_modules/fastq/.github/dependabot.yml +11 -0
- package/test262/node_modules/fastq/.github/workflows/ci.yml +50 -0
- package/test262/node_modules/fastq/LICENSE +13 -0
- package/test262/node_modules/fastq/README.md +309 -0
- package/test262/node_modules/fastq/bench.js +66 -0
- package/test262/node_modules/fastq/example.js +14 -0
- package/test262/node_modules/fastq/example.mjs +11 -0
- package/test262/node_modules/fastq/index.d.ts +37 -0
- package/test262/node_modules/fastq/package.json +52 -0
- package/test262/node_modules/fastq/queue.js +289 -0
- package/test262/node_modules/fastq/test/example.ts +81 -0
- package/test262/node_modules/fastq/test/promise.js +248 -0
- package/test262/node_modules/fastq/test/test.js +566 -0
- package/test262/node_modules/fastq/test/tsconfig.json +11 -0
- package/test262/node_modules/fill-range/LICENSE +21 -0
- package/test262/node_modules/fill-range/README.md +237 -0
- package/test262/node_modules/fill-range/index.js +249 -0
- package/test262/node_modules/fill-range/package.json +69 -0
- package/test262/node_modules/glob-parent/CHANGELOG.md +110 -0
- package/test262/node_modules/glob-parent/LICENSE +15 -0
- package/test262/node_modules/glob-parent/README.md +137 -0
- package/test262/node_modules/glob-parent/index.js +42 -0
- package/test262/node_modules/glob-parent/package.json +48 -0
- package/test262/node_modules/graceful-fs/LICENSE +15 -0
- package/test262/node_modules/graceful-fs/README.md +143 -0
- package/test262/node_modules/graceful-fs/clone.js +23 -0
- package/test262/node_modules/graceful-fs/graceful-fs.js +448 -0
- package/test262/node_modules/graceful-fs/legacy-streams.js +118 -0
- package/test262/node_modules/graceful-fs/package.json +53 -0
- package/test262/node_modules/graceful-fs/polyfills.js +355 -0
- package/test262/node_modules/is-extglob/LICENSE +21 -0
- package/test262/node_modules/is-extglob/README.md +107 -0
- package/test262/node_modules/is-extglob/index.js +20 -0
- package/test262/node_modules/is-extglob/package.json +69 -0
- package/test262/node_modules/is-glob/LICENSE +21 -0
- package/test262/node_modules/is-glob/README.md +206 -0
- package/test262/node_modules/is-glob/index.js +150 -0
- package/test262/node_modules/is-glob/package.json +81 -0
- package/test262/node_modules/is-number/LICENSE +21 -0
- package/test262/node_modules/is-number/README.md +187 -0
- package/test262/node_modules/is-number/index.js +18 -0
- package/test262/node_modules/is-number/package.json +82 -0
- package/test262/node_modules/js-yaml/CHANGELOG.md +557 -0
- package/test262/node_modules/js-yaml/LICENSE +21 -0
- package/test262/node_modules/js-yaml/README.md +299 -0
- package/test262/node_modules/js-yaml/bin/js-yaml.js +132 -0
- package/test262/node_modules/js-yaml/dist/js-yaml.js +3989 -0
- package/test262/node_modules/js-yaml/dist/js-yaml.min.js +1 -0
- package/test262/node_modules/js-yaml/index.js +7 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/common.js +59 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/dumper.js +850 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/exception.js +43 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/loader.js +1644 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/mark.js +76 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/schema.js +108 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/binary.js +138 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/bool.js +35 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/float.js +116 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/int.js +173 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/js/function.js +93 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +60 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +28 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/null.js +34 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/omap.js +44 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/pairs.js +53 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/set.js +29 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +88 -0
- package/test262/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
- package/test262/node_modules/js-yaml/lib/js-yaml.js +39 -0
- package/test262/node_modules/js-yaml/package.json +49 -0
- package/test262/node_modules/klaw/CHANGELOG.md +62 -0
- package/test262/node_modules/klaw/LICENSE +15 -0
- package/test262/node_modules/klaw/README.md +252 -0
- package/test262/node_modules/klaw/package.json +40 -0
- package/test262/node_modules/klaw/src/index.js +56 -0
- package/test262/node_modules/merge2/LICENSE +21 -0
- package/test262/node_modules/merge2/README.md +144 -0
- package/test262/node_modules/merge2/index.js +144 -0
- package/test262/node_modules/merge2/package.json +43 -0
- package/test262/node_modules/micromatch/LICENSE +21 -0
- package/test262/node_modules/micromatch/README.md +1011 -0
- package/test262/node_modules/micromatch/index.js +467 -0
- package/test262/node_modules/micromatch/package.json +119 -0
- package/test262/node_modules/picomatch/CHANGELOG.md +136 -0
- package/test262/node_modules/picomatch/LICENSE +21 -0
- package/test262/node_modules/picomatch/README.md +708 -0
- package/test262/node_modules/picomatch/index.js +3 -0
- package/test262/node_modules/picomatch/lib/constants.js +179 -0
- package/test262/node_modules/picomatch/lib/parse.js +1091 -0
- package/test262/node_modules/picomatch/lib/picomatch.js +342 -0
- package/test262/node_modules/picomatch/lib/scan.js +391 -0
- package/test262/node_modules/picomatch/lib/utils.js +64 -0
- package/test262/node_modules/picomatch/package.json +81 -0
- package/test262/node_modules/queue-microtask/LICENSE +20 -0
- package/test262/node_modules/queue-microtask/README.md +90 -0
- package/test262/node_modules/queue-microtask/index.d.ts +2 -0
- package/test262/node_modules/queue-microtask/index.js +9 -0
- package/test262/node_modules/queue-microtask/package.json +55 -0
- package/test262/node_modules/reusify/.coveralls.yml +1 -0
- package/test262/node_modules/reusify/.travis.yml +28 -0
- package/test262/node_modules/reusify/LICENSE +22 -0
- package/test262/node_modules/reusify/README.md +145 -0
- package/test262/node_modules/reusify/benchmarks/createNoCodeFunction.js +30 -0
- package/test262/node_modules/reusify/benchmarks/fib.js +13 -0
- package/test262/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +38 -0
- package/test262/node_modules/reusify/package.json +45 -0
- package/test262/node_modules/reusify/reusify.js +33 -0
- package/test262/node_modules/reusify/test.js +66 -0
- package/test262/node_modules/run-parallel/LICENSE +20 -0
- package/test262/node_modules/run-parallel/README.md +85 -0
- package/test262/node_modules/run-parallel/index.js +51 -0
- package/test262/node_modules/run-parallel/package.json +58 -0
- package/test262/node_modules/sprintf-js/LICENSE +24 -0
- package/test262/node_modules/sprintf-js/README.md +88 -0
- package/test262/node_modules/sprintf-js/bower.json +14 -0
- package/test262/node_modules/sprintf-js/demo/angular.html +20 -0
- package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js +4 -0
- package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +1 -0
- package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.map +1 -0
- package/test262/node_modules/sprintf-js/dist/sprintf.min.js +4 -0
- package/test262/node_modules/sprintf-js/dist/sprintf.min.js.map +1 -0
- package/test262/node_modules/sprintf-js/dist/sprintf.min.map +1 -0
- package/test262/node_modules/sprintf-js/gruntfile.js +36 -0
- package/test262/node_modules/sprintf-js/package.json +22 -0
- package/test262/node_modules/sprintf-js/src/angular-sprintf.js +18 -0
- package/test262/node_modules/sprintf-js/src/sprintf.js +208 -0
- package/test262/node_modules/sprintf-js/test/test.js +82 -0
- package/test262/node_modules/test262-stream/.jshintignore +2 -0
- package/test262/node_modules/test262-stream/.jshintrc +6 -0
- package/test262/node_modules/test262-stream/.travis.yml +5 -0
- package/test262/node_modules/test262-stream/CONTRIBUTING.md +37 -0
- package/test262/node_modules/test262-stream/LICENSE-MICROSOFT.txt +27 -0
- package/test262/node_modules/test262-stream/LICENSE.txt +27 -0
- package/test262/node_modules/test262-stream/README.md +71 -0
- package/test262/node_modules/test262-stream/lib/builder.js +46 -0
- package/test262/node_modules/test262-stream/lib/compile.js +24 -0
- package/test262/node_modules/test262-stream/lib/create-scenarios.js +29 -0
- package/test262/node_modules/test262-stream/lib/index.js +187 -0
- package/test262/node_modules/test262-stream/lib/test-file.js +150 -0
- package/test262/node_modules/test262-stream/package.json +26 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-missing-harness/fake-test262/test/a-test-file.js +16 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/package.json +3 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/test/strict.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/package.json +3 -0
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/test/strict.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_default.js +49 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_strict_mode.js +50 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_default.js +48 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_strict_mode.js +49 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_default.js +46 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_strict_mode.js +47 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_default.js +39 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_strict_mode.js +40 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_default.js +37 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_strict_mode.js +38 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_default.js +37 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_strict_mode.js +38 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/noStrict_default.js +36 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawNoStrict_default.js +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawStrict_default.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/strict_strict_mode.js +41 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_default.json +22 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_strict_mode.json +22 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_default.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_strict_mode.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_default.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_strict_mode.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_default.json +19 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_strict_mode.json +19 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_default.json +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_strict_mode.json +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_default.json +19 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_strict_mode.json +19 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/noStrict_default.json +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawNoStrict_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawStrict_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/strict_strict_mode.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/async.js +10 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/asyncNegative.js +11 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/bothStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/error.js +8 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/negative-empty.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/noStrict.js +5 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawNoStrict.js +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/strict.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_default.js +46 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_strict_mode.js +47 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_default.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_strict_mode.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/bothStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-0_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-1_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-2_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-3_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-4_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-5_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-6_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-7_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-8_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-9_FIXTURE.txt +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/raw_default.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_default.js +38 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_strict_mode.js +39 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/raw_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_default.json +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_strict_mode.json +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/raw.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/runtime.js +7 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_default.js +11 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_strict_mode.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_default.js +10 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_strict_mode.js +11 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_default.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_strict_mode.js +16 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_default.js +8 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_strict_mode.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_default.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_strict_mode.js +7 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_default.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_strict_mode.js +7 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/noStrict_default.js +5 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawNoStrict_default.js +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawStrict_default.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/strict_strict_mode.js +10 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_default.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_strict_mode.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_strict_mode.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_strict_mode.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_default.json +16 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_strict_mode.json +16 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_strict_mode.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_default.json +16 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_strict_mode.json +16 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/noStrict_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawNoStrict_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawStrict_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/strict_strict_mode.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/async.js +10 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/asyncNegative.js +11 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/bothStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/error.js +8 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module_FIXTURE.js +2 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/negative-empty.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/noStrict.js +5 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawNoStrict.js +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/strict.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-content/test/strict_strict_mode.js +41 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-metadata/test/strict_strict_mode.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/package.json +3 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/test/strict.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-content/test/strict_strict_mode.js +41 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-metadata/test/strict_strict_mode.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/package.json +3 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/test/strict.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_default.js +44 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_strict_mode.js +45 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-and-license-on-same-line_default.js +20 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-multiline-block_default.js +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls_default.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-and-license-on-same-line_default.js +20 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-multiline-block_default.js +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps_default.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/rawWithLicense_default.js +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw_default.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_default.json +22 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_strict_mode.json +22 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-and-license-on-same-line_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-multiline-block_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-and-license-on-same-line_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-multiline-block_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/rawWithLicense_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw_default.json +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/missing-raw-flag.js +13 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-and-license-on-same-line.js +20 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-multiline-block.js +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-and-license-on-same-line.js +20 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-multiline-block.js +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/rawWithLicense.js +21 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/doneprintHandle.js +9 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/sta.js +13 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_default.js +52 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_strict_mode.js +53 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_default.js +47 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_strict_mode.js +48 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_default.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_strict_mode.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_default.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_strict_mode.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/async.js +10 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/bothStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_default.js +49 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_strict_mode.js +50 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_default.js +48 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_strict_mode.js +49 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_default.js +46 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_strict_mode.js +47 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/noStrict_default.js +36 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/rawNoStrict_default.js +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_default.json +22 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_strict_mode.json +22 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_default.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_strict_mode.json +18 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_default.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_strict_mode.json +24 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/noStrict_default.json +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/rawNoStrict_default.json +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/assert.js +17 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/doneprintHandle.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/sta.js +12 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/async.js +10 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/asyncNegative.js +11 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/bothStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/error.js +8 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/negative-empty.js +6 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/noStrict.js +5 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/rawNoStrict.js +14 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/rawStrict.js +15 -0
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/strict.js +9 -0
- package/test262/node_modules/test262-stream/test/test.js +319 -0
- package/test262/node_modules/to-regex-range/LICENSE +21 -0
- package/test262/node_modules/to-regex-range/README.md +305 -0
- package/test262/node_modules/to-regex-range/index.js +288 -0
- package/test262/node_modules/to-regex-range/package.json +88 -0
- package/test262/package-lock.json +279 -0
- package/test262/package.json +6 -0
- package/test262/prelude.js +75 -0
- package/test262/results.json +1 -0
- package/util/enum.js +20 -0
@@ -0,0 +1,272 @@
|
|
1
|
+
import { Opcodes, Blocktype, Valtype, ValtypeSize, PageSize } from "./wasmSpec.js";
|
2
|
+
import { number } from "./embedding.js";
|
3
|
+
import { unsignedLEB128 } from "./encoding.js";
|
4
|
+
import { UNDEFINED } from "./builtins.js";
|
5
|
+
|
6
|
+
// todo: do not duplicate this
|
7
|
+
const TYPES = {
|
8
|
+
number: 0xffffffffffff0,
|
9
|
+
boolean: 0xffffffffffff1,
|
10
|
+
string: 0xffffffffffff2,
|
11
|
+
undefined: 0xffffffffffff3,
|
12
|
+
object: 0xffffffffffff4,
|
13
|
+
function: 0xffffffffffff5,
|
14
|
+
symbol: 0xffffffffffff6,
|
15
|
+
bigint: 0xffffffffffff7,
|
16
|
+
|
17
|
+
// these are not "typeof" types but tracked internally
|
18
|
+
_array: 0xffffffffffff8
|
19
|
+
};
|
20
|
+
|
21
|
+
// todo: turn these into built-ins once arrays and these become less hacky
|
22
|
+
|
23
|
+
export const PrototypeFuncs = function() {
|
24
|
+
const noUnlikelyChecks = process.argv.includes('-funsafe-no-unlikely-proto-checks');
|
25
|
+
|
26
|
+
this[TYPES._array] = {
|
27
|
+
// lX = local accessor of X ({ get, set }), iX = local index of X, wX = wasm ops of X
|
28
|
+
// todo: out of bounds (>) properly
|
29
|
+
at: (pointer, length, wIndex, iTmp) => [
|
30
|
+
...wIndex,
|
31
|
+
Opcodes.i32_to,
|
32
|
+
[ Opcodes.local_tee, iTmp ],
|
33
|
+
|
34
|
+
// if index < 0: access index + array length
|
35
|
+
...number(0, Valtype.i32),
|
36
|
+
[ Opcodes.i32_lt_s ],
|
37
|
+
[ Opcodes.if, Blocktype.void ],
|
38
|
+
[ Opcodes.local_get, iTmp ],
|
39
|
+
...length.cachedI32,
|
40
|
+
[ Opcodes.i32_add ],
|
41
|
+
[ Opcodes.local_set, iTmp ],
|
42
|
+
[ Opcodes.end ],
|
43
|
+
|
44
|
+
// if still < 0 or >= length: return undefined
|
45
|
+
[ Opcodes.local_get, iTmp ],
|
46
|
+
...number(0, Valtype.i32),
|
47
|
+
[ Opcodes.i32_lt_s ],
|
48
|
+
|
49
|
+
[ Opcodes.local_get, iTmp ],
|
50
|
+
...length.cachedI32,
|
51
|
+
[ Opcodes.i32_ge_s ],
|
52
|
+
[ Opcodes.i32_or ],
|
53
|
+
|
54
|
+
[ Opcodes.if, Blocktype.void ],
|
55
|
+
...number(UNDEFINED),
|
56
|
+
[ Opcodes.br, 1 ],
|
57
|
+
[ Opcodes.end ],
|
58
|
+
|
59
|
+
[ Opcodes.local_get, iTmp ],
|
60
|
+
...number(ValtypeSize[valtype], Valtype.i32),
|
61
|
+
[ Opcodes.i32_mul ],
|
62
|
+
|
63
|
+
// read from memory
|
64
|
+
[ Opcodes.load, Math.log2(ValtypeSize[valtype]) - 1, ...unsignedLEB128(pointer + ValtypeSize.i32) ]
|
65
|
+
],
|
66
|
+
|
67
|
+
// todo: only for 1 argument
|
68
|
+
push: (pointer, length, wNewMember) => [
|
69
|
+
// get memory offset of array at last index (length)
|
70
|
+
...length.cachedI32,
|
71
|
+
...number(ValtypeSize[valtype], Valtype.i32),
|
72
|
+
[ Opcodes.i32_mul ],
|
73
|
+
|
74
|
+
// generated wasm for new member
|
75
|
+
...wNewMember,
|
76
|
+
|
77
|
+
// store in memory
|
78
|
+
[ Opcodes.store, Math.log2(ValtypeSize[valtype]) - 1, ...unsignedLEB128(pointer + ValtypeSize.i32) ],
|
79
|
+
|
80
|
+
// bump array length by 1 and return it
|
81
|
+
...length.setI32([
|
82
|
+
...length.cachedI32,
|
83
|
+
...number(1, Valtype.i32),
|
84
|
+
[ Opcodes.i32_add ]
|
85
|
+
]),
|
86
|
+
|
87
|
+
...length.get
|
88
|
+
],
|
89
|
+
|
90
|
+
pop: (pointer, length) => [
|
91
|
+
// if length == 0, noop
|
92
|
+
...length.cachedI32,
|
93
|
+
[ Opcodes.i32_eqz ],
|
94
|
+
[ Opcodes.if, Blocktype.void ],
|
95
|
+
...number(UNDEFINED),
|
96
|
+
[ Opcodes.br, 1 ],
|
97
|
+
[ Opcodes.end ],
|
98
|
+
|
99
|
+
// todo: should we store 0/undefined in "removed" element?
|
100
|
+
|
101
|
+
// decrement length by 1
|
102
|
+
...length.setI32([
|
103
|
+
...length.cachedI32,
|
104
|
+
...number(1, Valtype.i32),
|
105
|
+
[ Opcodes.i32_sub ]
|
106
|
+
]),
|
107
|
+
|
108
|
+
// load last element
|
109
|
+
...length.cachedI32,
|
110
|
+
...number(ValtypeSize[valtype], Valtype.i32),
|
111
|
+
[ Opcodes.i32_mul ],
|
112
|
+
|
113
|
+
[ Opcodes.load, Math.log2(ValtypeSize[valtype]) - 1, ...unsignedLEB128(pointer + ValtypeSize.i32 - ValtypeSize[valtype]) ]
|
114
|
+
],
|
115
|
+
|
116
|
+
shift: (pointer, length) => [
|
117
|
+
// if length == 0, noop
|
118
|
+
...length.cachedI32,
|
119
|
+
Opcodes.i32_eqz,
|
120
|
+
[ Opcodes.if, Blocktype.void ],
|
121
|
+
...number(UNDEFINED),
|
122
|
+
[ Opcodes.br, 1 ],
|
123
|
+
[ Opcodes.end ],
|
124
|
+
|
125
|
+
// todo: should we store 0/undefined in "removed" element?
|
126
|
+
|
127
|
+
// decrement length by 1
|
128
|
+
...length.setI32([
|
129
|
+
...length.cachedI32,
|
130
|
+
...number(1, Valtype.i32),
|
131
|
+
[ Opcodes.i32_sub ]
|
132
|
+
]),
|
133
|
+
|
134
|
+
// load first element
|
135
|
+
...number(0, Valtype.i32),
|
136
|
+
[ Opcodes.load, Math.log2(ValtypeSize[valtype]) - 1, ...unsignedLEB128(pointer + ValtypeSize.i32) ],
|
137
|
+
|
138
|
+
// offset all elements by -1 ind
|
139
|
+
...number(pointer + ValtypeSize.i32, Valtype.i32), // dst = base array index + length size
|
140
|
+
...number(pointer + ValtypeSize.i32 + ValtypeSize[valtype], Valtype.i32), // src = base array index + length size + an index
|
141
|
+
...number(pageSize - ValtypeSize.i32 - ValtypeSize[valtype], Valtype.i32), // size = PageSize - length size - an index
|
142
|
+
[ ...Opcodes.memory_copy, 0x00, 0x00 ]
|
143
|
+
]
|
144
|
+
};
|
145
|
+
|
146
|
+
this[TYPES._array].at.local = Valtype.i32;
|
147
|
+
this[TYPES._array].push.noArgRetLength = true;
|
148
|
+
|
149
|
+
this[TYPES.string] = {
|
150
|
+
// todo: out of bounds properly
|
151
|
+
at: (pointer, length, wIndex, iTmp, arrayShell) => {
|
152
|
+
const [ newOut, newPointer ] = arrayShell(1, 'i16');
|
153
|
+
|
154
|
+
return [
|
155
|
+
// setup new/out array
|
156
|
+
...newOut,
|
157
|
+
[ Opcodes.drop ],
|
158
|
+
|
159
|
+
...number(0, Valtype.i32), // base 0 for store later
|
160
|
+
Opcodes.i32_to_u,
|
161
|
+
|
162
|
+
...wIndex,
|
163
|
+
[ Opcodes.local_tee, iTmp ],
|
164
|
+
|
165
|
+
// if index < 0: access index + array length
|
166
|
+
...number(0, Valtype.i32),
|
167
|
+
[ Opcodes.i32_lt_s ],
|
168
|
+
[ Opcodes.if, Blocktype.void ],
|
169
|
+
[ Opcodes.local_get, iTmp ],
|
170
|
+
...length.cachedI32,
|
171
|
+
[ Opcodes.i32_add ],
|
172
|
+
[ Opcodes.local_set, iTmp ],
|
173
|
+
[ Opcodes.end ],
|
174
|
+
|
175
|
+
// if still < 0 or >= length: return undefined
|
176
|
+
[ Opcodes.local_get, iTmp ],
|
177
|
+
...number(0, Valtype.i32),
|
178
|
+
[ Opcodes.i32_lt_s ],
|
179
|
+
|
180
|
+
[ Opcodes.local_get, iTmp ],
|
181
|
+
...length.cachedI32,
|
182
|
+
[ Opcodes.i32_ge_s ],
|
183
|
+
[ Opcodes.i32_or ],
|
184
|
+
|
185
|
+
[ Opcodes.if, Blocktype.void ],
|
186
|
+
...number(UNDEFINED),
|
187
|
+
[ Opcodes.br, 1 ],
|
188
|
+
[ Opcodes.end ],
|
189
|
+
|
190
|
+
[ Opcodes.local_get, iTmp ],
|
191
|
+
...number(ValtypeSize.i16, Valtype.i32),
|
192
|
+
[ Opcodes.i32_mul ],
|
193
|
+
|
194
|
+
// load current string ind {arg}
|
195
|
+
[ Opcodes.i32_load16_u, Math.log2(ValtypeSize.i16) - 1, ...unsignedLEB128(pointer + ValtypeSize.i32) ],
|
196
|
+
|
197
|
+
// store to new string ind 0
|
198
|
+
[ Opcodes.i32_store16, Math.log2(ValtypeSize.i16) - 1, ...unsignedLEB128(newPointer + ValtypeSize.i32) ],
|
199
|
+
|
200
|
+
// return new string (pointer)
|
201
|
+
...number(newPointer)
|
202
|
+
];
|
203
|
+
},
|
204
|
+
|
205
|
+
// todo: out of bounds properly
|
206
|
+
charAt: (pointer, length, wIndex, _, arrayShell) => {
|
207
|
+
const [ newOut, newPointer ] = arrayShell(1, 'i16');
|
208
|
+
|
209
|
+
return [
|
210
|
+
// setup new/out array
|
211
|
+
...newOut,
|
212
|
+
[ Opcodes.drop ],
|
213
|
+
|
214
|
+
...number(0, Valtype.i32), // base 0 for store later
|
215
|
+
|
216
|
+
...wIndex,
|
217
|
+
|
218
|
+
Opcodes.i32_to,
|
219
|
+
...number(ValtypeSize.i16, Valtype.i32),
|
220
|
+
[ Opcodes.i32_mul ],
|
221
|
+
|
222
|
+
// load current string ind {arg}
|
223
|
+
[ Opcodes.i32_load16_u, Math.log2(ValtypeSize.i16) - 1, ...unsignedLEB128(pointer + ValtypeSize.i32) ],
|
224
|
+
|
225
|
+
// store to new string ind 0
|
226
|
+
[ Opcodes.i32_store16, Math.log2(ValtypeSize.i16) - 1, ...unsignedLEB128(newPointer + ValtypeSize.i32) ],
|
227
|
+
|
228
|
+
// return new string (page)
|
229
|
+
...number(newPointer)
|
230
|
+
];
|
231
|
+
},
|
232
|
+
|
233
|
+
charCodeAt: (pointer, length, wIndex, iTmp) => {
|
234
|
+
return [
|
235
|
+
...wIndex,
|
236
|
+
Opcodes.i32_to,
|
237
|
+
[ Opcodes.local_set, iTmp ],
|
238
|
+
|
239
|
+
// index < 0
|
240
|
+
...(noUnlikelyChecks ? [] : [
|
241
|
+
[ Opcodes.local_get, iTmp ],
|
242
|
+
...number(0, Valtype.i32),
|
243
|
+
[ Opcodes.i32_lt_s ],
|
244
|
+
]),
|
245
|
+
|
246
|
+
// index >= length
|
247
|
+
[ Opcodes.local_get, iTmp ],
|
248
|
+
...length.cachedI32,
|
249
|
+
[ Opcodes.i32_ge_s ],
|
250
|
+
|
251
|
+
...(noUnlikelyChecks ? [] : [ [ Opcodes.i32_or ] ]),
|
252
|
+
[ Opcodes.if, Blocktype.void ],
|
253
|
+
...number(NaN),
|
254
|
+
[ Opcodes.br, 1 ],
|
255
|
+
[ Opcodes.end ],
|
256
|
+
|
257
|
+
[ Opcodes.local_get, iTmp ],
|
258
|
+
...number(ValtypeSize.i16, Valtype.i32),
|
259
|
+
[ Opcodes.i32_mul ],
|
260
|
+
|
261
|
+
// load current string ind {arg}
|
262
|
+
[ Opcodes.i32_load16_u, Math.log2(ValtypeSize.i16) - 1, ...unsignedLEB128(pointer + ValtypeSize.i32) ],
|
263
|
+
Opcodes.i32_from_u
|
264
|
+
];
|
265
|
+
},
|
266
|
+
};
|
267
|
+
|
268
|
+
this[TYPES.string].at.local = valtypeBinary;
|
269
|
+
this[TYPES.string].at.returnType = TYPES.string;
|
270
|
+
this[TYPES.string].charAt.returnType = TYPES.string;
|
271
|
+
this[TYPES.string].charCodeAt.local = Valtype.i32;
|
272
|
+
};
|
@@ -0,0 +1,154 @@
|
|
1
|
+
import { Valtype, FuncType, Empty, ExportDesc, Section, Magic, ModuleVersion, Opcodes, PageSize } from './wasmSpec.js';
|
2
|
+
import { encodeVector, encodeString, encodeLocal } from './encoding.js';
|
3
|
+
import { number } from './embedding.js';
|
4
|
+
import { importedFuncs } from './builtins.js';
|
5
|
+
|
6
|
+
const createSection = (type, data) => [
|
7
|
+
type,
|
8
|
+
...encodeVector(data)
|
9
|
+
];
|
10
|
+
|
11
|
+
export default (funcs, globals, tags, pages, flags) => {
|
12
|
+
const types = [], typeCache = {};
|
13
|
+
|
14
|
+
const optLevel = parseInt(process.argv.find(x => x.startsWith('-O'))?.[2] ?? 1);
|
15
|
+
|
16
|
+
const getType = (params, returns) => {
|
17
|
+
const hash = `${params.join(',')}_${returns.join(',')}`;
|
18
|
+
if (optLog) log('sections', `getType(${JSON.stringify(params)}, ${JSON.stringify(returns)}) -> ${hash} | cache: ${typeCache[hash]}`);
|
19
|
+
if (optLevel >= 1 && typeCache[hash] !== undefined) return typeCache[hash];
|
20
|
+
|
21
|
+
const type = [ FuncType, ...encodeVector(params), ...encodeVector(returns) ];
|
22
|
+
const idx = types.length;
|
23
|
+
|
24
|
+
types.push(type);
|
25
|
+
|
26
|
+
return typeCache[hash] = idx;
|
27
|
+
};
|
28
|
+
|
29
|
+
let importFuncs = [];
|
30
|
+
|
31
|
+
if (optLevel < 1) {
|
32
|
+
importFuncs = importedFuncs;
|
33
|
+
} else {
|
34
|
+
let imports = new Map();
|
35
|
+
|
36
|
+
// tree shake imports
|
37
|
+
for (const f of funcs) {
|
38
|
+
for (const inst of f.wasm) {
|
39
|
+
if (inst[0] === Opcodes.call && inst[1] < importedFuncs.length) {
|
40
|
+
const idx = inst[1];
|
41
|
+
const func = importedFuncs[idx];
|
42
|
+
|
43
|
+
if (!imports.has(func.name)) imports.set(func.name, { ...func, idx: imports.size });
|
44
|
+
inst[1] = imports.get(func.name).idx;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
importFuncs = [...imports.values()];
|
50
|
+
|
51
|
+
// fix call indexes for non-imports
|
52
|
+
const delta = importedFuncs.length - importFuncs.length;
|
53
|
+
for (const f of funcs) {
|
54
|
+
f.index -= delta;
|
55
|
+
|
56
|
+
for (const inst of f.wasm) {
|
57
|
+
if (inst[0] === Opcodes.call && inst[1] >= importedFuncs.length) {
|
58
|
+
inst[1] -= delta;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
if (optLog) log('sections', `treeshake: using ${importFuncs.length}/${importedFuncs.length} imports`);
|
65
|
+
|
66
|
+
const importSection = importFuncs.length === 0 ? [] : createSection(
|
67
|
+
Section.import,
|
68
|
+
encodeVector(importFuncs.map(x => [ 0, ...encodeString(x.import), ExportDesc.func, getType(new Array(x.params).fill(valtypeBinary), new Array(x.returns).fill(valtypeBinary)) ]))
|
69
|
+
);
|
70
|
+
|
71
|
+
const funcSection = createSection(
|
72
|
+
Section.func,
|
73
|
+
encodeVector(funcs.map(x => getType(x.params, x.returns))) // type indexes
|
74
|
+
);
|
75
|
+
|
76
|
+
const globalSection = Object.keys(globals).length === 0 ? [] : createSection(
|
77
|
+
Section.global,
|
78
|
+
encodeVector(Object.keys(globals).map(x => [ globals[x].type, 0x01, ...number(globals[x].init ?? 0, globals[x].type).flat(), Opcodes.end ]))
|
79
|
+
);
|
80
|
+
|
81
|
+
const exports = funcs.filter(x => x.export).map((x, i) => [ ...encodeString(x.name === 'main' ? 'm' : x.name), ExportDesc.func, x.index ]);
|
82
|
+
|
83
|
+
const usesMemory = pages.size > 0;
|
84
|
+
const memorySection = !usesMemory ? [] : createSection(
|
85
|
+
Section.memory,
|
86
|
+
encodeVector([ [ 0x00, Math.ceil((pages.size * pageSize) / PageSize) ] ])
|
87
|
+
);
|
88
|
+
|
89
|
+
// export memory if used
|
90
|
+
if (usesMemory) exports.unshift([ ...encodeString('$'), ExportDesc.mem, 0x00 ]);
|
91
|
+
|
92
|
+
const tagSection = tags.length === 0 ? [] : createSection(
|
93
|
+
Section.tag,
|
94
|
+
encodeVector(tags.map(x => [ 0x00, getType(x.params, x.results) ]))
|
95
|
+
);
|
96
|
+
|
97
|
+
// export first tag if used
|
98
|
+
if (tags.length !== 0) exports.unshift([ ...encodeString('0'), ExportDesc.tag, 0x00 ]);
|
99
|
+
|
100
|
+
const exportSection = createSection(
|
101
|
+
Section.export,
|
102
|
+
encodeVector(exports)
|
103
|
+
);
|
104
|
+
|
105
|
+
const codeSection = createSection(
|
106
|
+
Section.code,
|
107
|
+
encodeVector(funcs.map(x => {
|
108
|
+
const locals = Object.values(x.locals).sort((a, b) => a.idx - b.idx).slice(x.params.length).sort((a, b) => a.idx - b.idx);
|
109
|
+
|
110
|
+
let localDecl = [], typeCount = 0, lastType;
|
111
|
+
for (let i = 0; i < locals.length; i++) {
|
112
|
+
const local = locals[i];
|
113
|
+
if (i !== 0 && local.type !== lastType) {
|
114
|
+
localDecl.push(encodeLocal(typeCount, lastType));
|
115
|
+
typeCount = 0;
|
116
|
+
}
|
117
|
+
|
118
|
+
typeCount++;
|
119
|
+
lastType = local.type;
|
120
|
+
}
|
121
|
+
|
122
|
+
if (typeCount !== 0) localDecl.push(encodeLocal(typeCount, lastType));
|
123
|
+
|
124
|
+
return encodeVector([ ...encodeVector(localDecl), ...x.wasm.flat().filter(x => x !== null), Opcodes.end ]);
|
125
|
+
}))
|
126
|
+
);
|
127
|
+
|
128
|
+
const typeSection = createSection(
|
129
|
+
Section.type,
|
130
|
+
encodeVector(types)
|
131
|
+
);
|
132
|
+
|
133
|
+
if (process.argv.includes('-sections')) console.log({
|
134
|
+
typeSection: typeSection.map(x => x.toString(16)),
|
135
|
+
importSection: importSection.map(x => x.toString(16)),
|
136
|
+
funcSection: funcSection.map(x => x.toString(16)),
|
137
|
+
globalSection: globalSection.map(x => x.toString(16)),
|
138
|
+
exportSection: exportSection.map(x => x.toString(16)),
|
139
|
+
codeSection: codeSection.map(x => x.toString(16))
|
140
|
+
});
|
141
|
+
|
142
|
+
return Uint8Array.from([
|
143
|
+
...Magic,
|
144
|
+
...ModuleVersion,
|
145
|
+
...typeSection,
|
146
|
+
...importSection,
|
147
|
+
...funcSection,
|
148
|
+
...memorySection,
|
149
|
+
...tagSection,
|
150
|
+
...globalSection,
|
151
|
+
...exportSection,
|
152
|
+
...codeSection
|
153
|
+
]);
|
154
|
+
};
|
@@ -0,0 +1,200 @@
|
|
1
|
+
import { enumify } from "../util/enum.js";
|
2
|
+
|
3
|
+
export const Section = enumify('custom', 'type', 'import', 'func', 'table', 'memory', 'global', 'export', 'start', 'element', 'code', 'data', 'data_count', 'tag');
|
4
|
+
export const ExportDesc = enumify('func', 'table', 'mem', 'global', 'tag');
|
5
|
+
|
6
|
+
export const Mut = enumify('const', 'var');
|
7
|
+
|
8
|
+
export const Valtype = {
|
9
|
+
i32: 0x7f,
|
10
|
+
i64: 0x7e,
|
11
|
+
f64: 0x7c,
|
12
|
+
v128: 0x7b
|
13
|
+
};
|
14
|
+
|
15
|
+
export const Blocktype = {
|
16
|
+
void: 0x40,
|
17
|
+
};
|
18
|
+
|
19
|
+
export const Opcodes = {
|
20
|
+
unreachable: 0x00,
|
21
|
+
nop: 0x01,
|
22
|
+
|
23
|
+
block: 0x02,
|
24
|
+
loop: 0x03,
|
25
|
+
if: 0x04,
|
26
|
+
else: 0x05,
|
27
|
+
|
28
|
+
try: 0x06,
|
29
|
+
catch: 0x07,
|
30
|
+
catch_all: 0x19,
|
31
|
+
delegate: 0x18,
|
32
|
+
throw: 0x08,
|
33
|
+
rethrow: 0x09,
|
34
|
+
|
35
|
+
return: 0x0F,
|
36
|
+
|
37
|
+
call: 0x10,
|
38
|
+
call_indirect: 0x11,
|
39
|
+
return_call: 0x12,
|
40
|
+
return_call_indirect: 0x13,
|
41
|
+
|
42
|
+
end: 0x0b,
|
43
|
+
br: 0x0c,
|
44
|
+
br_if: 0x0d,
|
45
|
+
call: 0x10,
|
46
|
+
drop: 0x1a,
|
47
|
+
|
48
|
+
local_get: 0x20,
|
49
|
+
local_set: 0x21,
|
50
|
+
local_tee: 0x22, // set and return value (set and get combined)
|
51
|
+
|
52
|
+
global_get: 0x23,
|
53
|
+
global_set: 0x24,
|
54
|
+
|
55
|
+
i32_load: 0x28,
|
56
|
+
i64_load: 0x29,
|
57
|
+
f64_load: 0x2b,
|
58
|
+
|
59
|
+
i32_load16_s: 0x2e,
|
60
|
+
i32_load16_u: 0x2f,
|
61
|
+
|
62
|
+
i32_store16: 0x3b,
|
63
|
+
|
64
|
+
i32_store: 0x36,
|
65
|
+
i64_store: 0x37,
|
66
|
+
f64_store: 0x39,
|
67
|
+
|
68
|
+
memory_grow: 0x40,
|
69
|
+
|
70
|
+
i32_const: 0x41,
|
71
|
+
i64_const: 0x42,
|
72
|
+
f64_const: 0x44,
|
73
|
+
|
74
|
+
i32_eqz: 0x45,
|
75
|
+
i32_eq: 0x46,
|
76
|
+
i32_ne: 0x47,
|
77
|
+
|
78
|
+
i32_lt_s: 0x48,
|
79
|
+
i32_le_s: 0x4c,
|
80
|
+
i32_gt_s: 0x4a,
|
81
|
+
i32_ge_s: 0x4e,
|
82
|
+
|
83
|
+
i32_clz: 0x67,
|
84
|
+
i32_ctz: 0x68,
|
85
|
+
i32_popcnt: 0x69,
|
86
|
+
|
87
|
+
i32_add: 0x6a,
|
88
|
+
i32_sub: 0x6b,
|
89
|
+
i32_mul: 0x6c,
|
90
|
+
i32_div_s: 0x6d,
|
91
|
+
i32_rem_s: 0x6f,
|
92
|
+
|
93
|
+
i32_and: 0x71,
|
94
|
+
i32_or: 0x72,
|
95
|
+
i32_xor: 0x73,
|
96
|
+
i32_shl: 0x74,
|
97
|
+
i32_shr_s: 0x75,
|
98
|
+
i32_shr_u: 0x76,
|
99
|
+
|
100
|
+
i64_eqz: 0x50,
|
101
|
+
i64_eq: 0x51,
|
102
|
+
i64_ne: 0x52,
|
103
|
+
|
104
|
+
i64_lt_s: 0x53,
|
105
|
+
i64_le_s: 0x57,
|
106
|
+
i64_gt_s: 0x55,
|
107
|
+
i64_ge_s: 0x59,
|
108
|
+
|
109
|
+
i64_add: 0x7c,
|
110
|
+
i64_sub: 0x7d,
|
111
|
+
i64_mul: 0x7e,
|
112
|
+
i64_div_s: 0x7f,
|
113
|
+
i64_rem_s: 0x81,
|
114
|
+
|
115
|
+
i64_and: 0x83,
|
116
|
+
i64_or: 0x84,
|
117
|
+
i64_xor: 0x85,
|
118
|
+
i64_shl: 0x86,
|
119
|
+
i64_shr_s: 0x87,
|
120
|
+
i64_shr_u: 0x88,
|
121
|
+
|
122
|
+
f64_eq: 0x61,
|
123
|
+
f64_ne: 0x62,
|
124
|
+
|
125
|
+
f64_lt: 0x63,
|
126
|
+
f64_le: 0x65,
|
127
|
+
f64_gt: 0x64,
|
128
|
+
f64_ge: 0x66,
|
129
|
+
|
130
|
+
f64_abs: 0x99,
|
131
|
+
f64_neg: 0x9a,
|
132
|
+
|
133
|
+
f64_ceil: 0x9b,
|
134
|
+
f64_floor: 0x9c,
|
135
|
+
f64_trunc: 0x9d,
|
136
|
+
f64_nearest: 0x9e,
|
137
|
+
|
138
|
+
f64_sqrt: 0x9f,
|
139
|
+
f64_add: 0xa0,
|
140
|
+
f64_sub: 0xa1,
|
141
|
+
f64_mul: 0xa2,
|
142
|
+
f64_div: 0xa3,
|
143
|
+
f64_min: 0xa4,
|
144
|
+
f64_max: 0xa5,
|
145
|
+
f64_copysign: 0xa6,
|
146
|
+
|
147
|
+
i32_wrap_i64: 0xa7,
|
148
|
+
i64_extend_i32_s: 0xac,
|
149
|
+
i64_extend_i32_u: 0xad,
|
150
|
+
|
151
|
+
f32_demote_f64: 0xb6,
|
152
|
+
f64_promote_f32: 0xbb,
|
153
|
+
|
154
|
+
f64_convert_i32_s: 0xb7,
|
155
|
+
f64_convert_i32_u: 0xb8,
|
156
|
+
f64_convert_i64_s: 0xb9,
|
157
|
+
f64_convert_i64_u: 0xba,
|
158
|
+
|
159
|
+
i32_trunc_sat_f64_s: [ 0xfc, 0x02 ],
|
160
|
+
i32_trunc_sat_f64_u: [ 0xfc, 0x03 ],
|
161
|
+
|
162
|
+
memory_copy: [ 0xfc, 0x0a ],
|
163
|
+
|
164
|
+
// simd insts are 0xFD simdop: varuint32
|
165
|
+
v128_load: [ 0xfd, 0x00 ],
|
166
|
+
v128_const: [ 0xfd, 0x0c ],
|
167
|
+
|
168
|
+
i8x16_shuffle: [ 0xfd, 0x0d ],
|
169
|
+
|
170
|
+
i32x4_splat: [ 0xfd, 0x11 ],
|
171
|
+
i32x4_extract_lane: [ 0xfd, 0x1b ],
|
172
|
+
i32x4_replace_lane: [ 0xfd, 0x1c ],
|
173
|
+
|
174
|
+
i16x8_extract_lane: [ 0xfd, 0x18 ], // _s
|
175
|
+
i16x8_replace_lane: [ 0xfd, 0x1a ],
|
176
|
+
|
177
|
+
i32x4_add: [ 0xfd, 0xae, 0x01 ],
|
178
|
+
i32x4_sub: [ 0xfd, 0xb1, 0x01 ],
|
179
|
+
i32x4_mul: [ 0xfd, 0xb5, 0x01 ],
|
180
|
+
|
181
|
+
i32x4_dot_i16x8_s: [ 0xfd, 0xba, 0x01 ],
|
182
|
+
};
|
183
|
+
|
184
|
+
export const FuncType = 0x60;
|
185
|
+
export const Empty = 0x00;
|
186
|
+
|
187
|
+
export const Magic = [0x00, 0x61, 0x73, 0x6d];
|
188
|
+
export const ModuleVersion = [0x01, 0x00, 0x00, 0x00];
|
189
|
+
|
190
|
+
export const PageSize = 65536; // 64KiB (1024 * 8)
|
191
|
+
|
192
|
+
export const ValtypeSize = {
|
193
|
+
i32: 4,
|
194
|
+
i64: 8,
|
195
|
+
f64: 8,
|
196
|
+
|
197
|
+
// special
|
198
|
+
i8: 1,
|
199
|
+
i16: 2
|
200
|
+
};
|