@scriptc/compiler 0.4.4 → 0.4.5
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/ambient/scriptc-node-fallback.d.ts +198 -44
- package/ambient/scriptc-overrides.d.ts +21 -0
- package/dist/backend/executable-features.js +3 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +2 -1
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.js +11 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +9 -0
- package/dist/backend/lld.js +48 -0
- package/dist/backend/lld.js.map +1 -0
- package/dist/backend/lld.test.d.ts +1 -0
- package/dist/backend/lld.test.js +53 -0
- package/dist/backend/lld.test.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.d.ts +11 -1
- package/dist/backend/llvm/appended-array-literals.js +29 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/blocks.js +10 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +13 -4
- package/dist/backend/llvm/bytes-alias.js +16 -5
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-bounds.d.ts +5 -1
- package/dist/backend/llvm/bytes-bounds.js +199 -2
- package/dist/backend/llvm/bytes-bounds.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +45 -3
- package/dist/backend/llvm/bytes-loop-versions.js +238 -20
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +11 -4
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +8 -2
- package/dist/backend/llvm/call-lifetimes.js +87 -18
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +132 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +3 -2
- package/dist/backend/llvm/classes.js +4 -4
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +14 -2
- package/dist/backend/llvm/counted-loops.js +54 -5
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +42 -1
- package/dist/backend/llvm/debug-info.js +70 -1
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.js +2 -2
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +65 -8
- package/dist/backend/llvm/dyn.js +375 -40
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +28 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +8 -4
- package/dist/backend/llvm/emit-journal.js +75 -5
- package/dist/backend/llvm/emit-journal.js.map +1 -1
- package/dist/backend/llvm/emit-module.d.ts +4 -0
- package/dist/backend/llvm/emit-module.js +58 -23
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +297 -28
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +134 -13
- package/dist/backend/llvm/emitter.js +514 -87
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +6 -4
- package/dist/backend/llvm/expr-bytes.js +31 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +13 -11
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +11 -0
- package/dist/backend/llvm/expr-containers.js +87 -9
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +3 -0
- package/dist/backend/llvm/expr-control.js +83 -0
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
- package/dist/backend/llvm/expr-dynamic.js +22 -4
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +107 -9
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +95 -22
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/forked-analysis.d.ts +8 -0
- package/dist/backend/llvm/forked-analysis.js +43 -0
- package/dist/backend/llvm/forked-analysis.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +7 -0
- package/dist/backend/llvm/integer-values.js +42 -2
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/integer-views.d.ts +2 -1
- package/dist/backend/llvm/integer-views.js +12 -1
- package/dist/backend/llvm/integer-views.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +4 -0
- package/dist/backend/llvm/js-ic.js +133 -15
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +1 -0
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +6 -1
- package/dist/backend/llvm/lazy-captures.js +10 -5
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.d.ts +5 -0
- package/dist/backend/llvm/lib-abi.js +19 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +128 -42
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.d.ts +10 -0
- package/dist/backend/llvm/lib-filesystem.js +32 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +2 -2
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +2 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +11 -0
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +43 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +28 -3
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +4 -1
- package/dist/backend/llvm/loop-array-borrows.js +11 -5
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +5 -3
- package/dist/backend/llvm/map-entry-fusion.js +20 -11
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.test.js +14 -6
- package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +16 -6
- package/dist/backend/llvm/map-number-lookup.js +41 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +70 -2
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +25 -2
- package/dist/backend/llvm/map-read-lifetimes.js +136 -6
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +8 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +5 -0
- package/dist/backend/llvm/nullable-unions.js +29 -2
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +25 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/record-union-keys.test.d.ts +1 -0
- package/dist/backend/llvm/record-union-keys.test.js +161 -0
- package/dist/backend/llvm/record-union-keys.test.js.map +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +4 -5
- package/dist/backend/llvm/shapes.js +104 -51
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +14 -2
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +50 -3
- package/dist/backend/llvm/speculative-integers.js +411 -24
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +103 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split.d.ts +10 -1
- package/dist/backend/llvm/split.js +243 -59
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +92 -13
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -2
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +13 -0
- package/dist/backend/llvm/string-reads.js +22 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +36 -2
- package/dist/backend/llvm/string-slices.js +308 -12
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +182 -3
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/string-unit-versions.d.ts +11 -0
- package/dist/backend/llvm/string-unit-versions.js +191 -0
- package/dist/backend/llvm/string-unit-versions.js.map +1 -0
- package/dist/backend/llvm/string-unit-versions.test.d.ts +1 -0
- package/dist/backend/llvm/string-unit-versions.test.js +117 -0
- package/dist/backend/llvm/string-unit-versions.test.js.map +1 -0
- package/dist/backend/llvm/test-boxed-unions.d.ts +5 -2
- package/dist/backend/llvm/test-boxed-unions.js +24 -8
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +52 -0
- package/dist/backend/llvm/unwind-abi.js +498 -0
- package/dist/backend/llvm/unwind-abi.js.map +1 -0
- package/dist/backend/llvm/unwind-abi.test.d.ts +1 -0
- package/dist/backend/llvm/unwind-abi.test.js +255 -0
- package/dist/backend/llvm/unwind-abi.test.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +14 -10
- package/dist/backend/llvm/wrapping-sums.js +31 -14
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/loop-polls.d.ts +6 -0
- package/dist/backend/loop-polls.js +24 -0
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/may-throw.js +8 -8
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +12 -2
- package/dist/backend/native/executable.js +48 -6
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +4 -3
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/program-shards.d.ts +2 -2
- package/dist/backend/native/program-shards.js +2 -2
- package/dist/backend/native/program-shards.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +3 -1
- package/dist/backend/native-codegen.js +4 -3
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +8 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +14 -0
- package/dist/backend/native-profile.js +28 -0
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +8 -1
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +11 -11
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +3 -1
- package/dist/backend/runtime-pack-core.js +2 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +17 -5
- package/dist/backend/runtime-pack-native.js +186 -14
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +160 -3
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/vendor-archives.d.ts +4 -1
- package/dist/backend/vendor-archives.js +78 -4
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +3 -1
- package/dist/backend/vendor-inputs.js +3 -1
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +78 -11
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +22 -1
- package/dist/cli/usage.js +33 -3
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +15 -6
- package/dist/compat/fetch-profile.js +519 -498
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/int32-elements.js +2 -1
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +14 -3
- package/dist/coverage/report.js +216 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +25 -25
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +10 -1
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +19 -0
- package/dist/diagnostics/diagnostic.js +52 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +54 -0
- package/dist/diagnostics/envelope.js +7 -1
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +15 -4
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +5 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +26 -2
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/fork-target.js +67 -1
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +43 -0
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +4 -1
- package/dist/frontend/input-tracker.js +42 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +45 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/abstract-equality.js +38 -1
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/argument-counts.d.ts +36 -0
- package/dist/frontend/lowering/argument-counts.js +201 -0
- package/dist/frontend/lowering/argument-counts.js.map +1 -0
- package/dist/frontend/lowering/array-values.d.ts +27 -0
- package/dist/frontend/lowering/array-values.js +112 -0
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +3 -0
- package/dist/frontend/lowering/binding-analysis.js +9 -3
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +13 -0
- package/dist/frontend/lowering/builtin-namespaces.js +238 -0
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +4 -3
- package/dist/frontend/lowering/builtins/compression.js +86 -5
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.js +17 -1
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +19 -5
- package/dist/frontend/lowering/builtins/dates.js +159 -8
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +26 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.d.ts +4 -0
- package/dist/frontend/lowering/builtins/fs-streams.js +24 -1
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.d.ts +4 -1
- package/dist/frontend/lowering/builtins/json.js +9 -3
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +6 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +23 -1
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +5 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +95 -4
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +144 -1
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
- package/dist/frontend/lowering/builtins/readline.js +22 -11
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.d.ts +4 -1
- package/dist/frontend/lowering/builtins/reflection.js +41 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +31 -2
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +4 -1
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/x509.d.ts +33 -0
- package/dist/frontend/lowering/builtins/x509.js +431 -0
- package/dist/frontend/lowering/builtins/x509.js.map +1 -0
- package/dist/frontend/lowering/call-arguments.js +44 -0
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +1 -1
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-attributes.d.ts +7 -0
- package/dist/frontend/lowering/class-attributes.js +52 -10
- package/dist/frontend/lowering/class-attributes.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +13 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +174 -9
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +43 -8
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +71 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +8 -0
- package/dist/frontend/lowering/class-prototypes.js +83 -2
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +5 -0
- package/dist/frontend/lowering/class-to-primitive.js +79 -7
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +1 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +89 -10
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +4 -2
- package/dist/frontend/lowering/coercions/unions.js +13 -6
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +51 -15
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +4 -1
- package/dist/frontend/lowering/containers/array-construction.js +102 -9
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +85 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +346 -77
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +11 -1
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +12 -0
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +73 -25
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +4 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +8 -2
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/replacer-params.d.ts +37 -0
- package/dist/frontend/lowering/containers/replacer-params.js +294 -0
- package/dist/frontend/lowering/containers/replacer-params.js.map +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.d.ts +1 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js +61 -0
- package/dist/frontend/lowering/containers/replacer-params.test.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +2 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +7 -3
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +4 -2
- package/dist/frontend/lowering/cycle-initialization.js +4 -1
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/date-values.d.ts +9 -6
- package/dist/frontend/lowering/date-values.js +63 -16
- package/dist/frontend/lowering/date-values.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +16 -8
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +22 -6
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.js +1 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +0 -8
- package/dist/frontend/lowering/expressions/array-literals.js +119 -26
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +38 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +50 -6
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +35 -3
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +2 -1
- package/dist/frontend/lowering/expressions/narrowing.js +8 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +8 -2
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +65 -34
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +76 -11
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +6 -1
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +20 -11
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/f64-handles.d.ts +8 -0
- package/dist/frontend/lowering/f64-handles.js +16 -0
- package/dist/frontend/lowering/f64-handles.js.map +1 -0
- package/dist/frontend/lowering/frozen-records.d.ts +5 -0
- package/dist/frontend/lowering/frozen-records.js +12 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +3 -0
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +15 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +17 -6
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/instantiation-path.d.ts +3 -2
- package/dist/frontend/lowering/instantiation-path.js.map +1 -1
- package/dist/frontend/lowering/instantiation-path.test.js +6 -4
- package/dist/frontend/lowering/instantiation-path.test.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.d.ts +4 -2
- package/dist/frontend/lowering/iterator-adapters.js +26 -33
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-collection-types.d.ts +11 -0
- package/dist/frontend/lowering/js-collection-types.js +490 -0
- package/dist/frontend/lowering/js-collection-types.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.js +2 -2
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +14 -0
- package/dist/frontend/lowering/lower-assert.js +283 -26
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +3 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +97 -7
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +59 -7
- package/dist/frontend/lowering/lower-classes.js +647 -176
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +2 -1
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +5 -0
- package/dist/frontend/lowering/lower-exprs.js +52 -5
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +7 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +4 -3
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +264 -46
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +28 -17
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +3 -0
- package/dist/frontend/lowering/lower-namespaces.js +44 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.js +1 -1
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +126 -32
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -1
- package/dist/frontend/lowering/lower-stdlib.js +51 -37
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +294 -46
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +515 -121
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +52 -10
- package/dist/frontend/lowering/lowerer.js +249 -37
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +1 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +13 -0
- package/dist/frontend/lowering/module-namespace-elements.js +118 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +5 -0
- package/dist/frontend/lowering/private-brands.js +39 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +6 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +14 -3
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.js +2 -0
- package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +7 -2
- package/dist/frontend/lowering/site-dependencies.js +0 -15
- package/dist/frontend/lowering/site-dependencies.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.test.js +7 -5
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.d.ts +7 -4
- package/dist/frontend/lowering/string-index-bounds.js +21 -7
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +1576 -1539
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +45 -2
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.d.ts +5 -2
- package/dist/frontend/lowering/union-narrow.js +6 -3
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.test.js +10 -0
- package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
- package/dist/frontend/npm-static-namespace-defaults.d.ts +6 -0
- package/dist/frontend/npm-static-namespace-defaults.js +163 -0
- package/dist/frontend/npm-static-namespace-defaults.js.map +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.d.ts +1 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js +72 -0
- package/dist/frontend/npm-static-namespace-defaults.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +152 -111
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static.js +35 -32
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +7 -4
- package/dist/frontend/package-shims.js +39 -40
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline-native.d.ts +2 -2
- package/dist/frontend/pipeline-native.js +2 -2
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +19 -2
- package/dist/frontend/pipeline.js +102 -11
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +2 -0
- package/dist/frontend/program-analysis.js +3 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +15 -0
- package/dist/frontend/program.js +227 -64
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +2 -0
- package/dist/frontend/resolve.js +5 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +3 -0
- package/dist/frontend/services.js +31 -4
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +93 -0
- package/dist/frontend/shape-inference/analyze.js +3138 -0
- package/dist/frontend/shape-inference/analyze.js.map +1 -0
- package/dist/frontend/shape-inference/constant-graphs.d.ts +54 -0
- package/dist/frontend/shape-inference/constant-graphs.js +357 -0
- package/dist/frontend/shape-inference/constant-graphs.js.map +1 -0
- package/dist/frontend/shape-inference/domain.d.ts +32 -0
- package/dist/frontend/shape-inference/domain.js +104 -0
- package/dist/frontend/shape-inference/domain.js.map +1 -0
- package/dist/frontend/shape-inference/index.d.ts +7 -0
- package/dist/frontend/shape-inference/index.js +19 -0
- package/dist/frontend/shape-inference/index.js.map +1 -0
- package/dist/frontend/shape-inference/report.d.ts +21 -0
- package/dist/frontend/shape-inference/report.js +348 -0
- package/dist/frontend/shape-inference/report.js.map +1 -0
- package/dist/frontend/token-equivalence.d.ts +6 -0
- package/dist/frontend/token-equivalence.js +66 -9
- package/dist/frontend/token-equivalence.js.map +1 -1
- package/dist/frontend/token-equivalence.test.js +33 -1
- package/dist/frontend/token-equivalence.test.js.map +1 -1
- package/dist/frontend/ts7/checker-features.d.ts +15 -0
- package/dist/frontend/ts7/checker-features.js +45 -0
- package/dist/frontend/ts7/checker-features.js.map +1 -0
- package/dist/frontend/ts7/checker-features.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-features.test.js +40 -0
- package/dist/frontend/ts7/checker-features.test.js.map +1 -0
- package/dist/frontend/ts7/checker-server.d.ts +19 -0
- package/dist/frontend/ts7/checker-server.js +46 -0
- package/dist/frontend/ts7/checker-server.js.map +1 -0
- package/dist/frontend/ts7/checker-server.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-server.test.js +38 -0
- package/dist/frontend/ts7/checker-server.test.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.js +39 -13
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.test.js +40 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -1
- package/dist/frontend/ts7/native-api.d.ts +1 -0
- package/dist/frontend/ts7/native-api.js +25 -2
- package/dist/frontend/ts7/native-api.js.map +1 -1
- package/dist/frontend/ts7/native-process.d.ts +9 -2
- package/dist/frontend/ts7/native-process.js +22 -4
- package/dist/frontend/ts7/native-process.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +11 -0
- package/dist/frontend/ts7/program-host.js +36 -22
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +9 -0
- package/dist/frontend/ts7/semantic-json.js +25 -5
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.js +3 -1
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/source-parser.js +3 -1
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/tsc-codes.js +10 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +18 -6
- package/dist/frontend/type-mapper.js +160 -28
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +44 -3
- package/dist/index.js +27 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +29 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -2
- package/dist/ir/builtin-signatures.js +5104 -4950
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +4 -2
- package/dist/ir/callback-specialization.js +24 -9
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.js +4 -2
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +12 -2
- package/dist/ir/char-unit-locals.js +400 -58
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/char-unit-locals.test.js +111 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -1
- package/dist/ir/constant-globals.js +18 -4
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +15 -0
- package/dist/ir/expression-inlining.js +166 -0
- package/dist/ir/expression-inlining.js.map +1 -0
- package/dist/ir/expression-inlining.test.d.ts +1 -0
- package/dist/ir/expression-inlining.test.js +123 -0
- package/dist/ir/expression-inlining.test.js.map +1 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +6 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +27 -6
- package/dist/ir/int32-arrays.js +106 -18
- package/dist/ir/int32-arrays.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +26 -1
- package/dist/ir/int32-slots.js +284 -5
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +5 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +5 -0
- package/dist/ir/integer-loop-facts.js +90 -1
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +14 -1
- package/dist/ir/integer-loops.js +93 -7
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +70 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.js +18 -2
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +64 -4
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +50 -8
- package/dist/ir/ir.js +38 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +25 -5
- package/dist/ir/js-ic.js +93 -13
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +153 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +7 -0
- package/dist/ir/node-index.js +32 -0
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/receiver-readers.d.ts +6 -1
- package/dist/ir/receiver-readers.js +53 -28
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +15 -0
- package/dist/ir/row-pairs.js +373 -0
- package/dist/ir/row-pairs.js.map +1 -0
- package/dist/ir/row-pairs.test.d.ts +1 -0
- package/dist/ir/row-pairs.test.js +129 -0
- package/dist/ir/row-pairs.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +17 -4
- package/dist/ir/runtime-features.js +69 -12
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +15 -0
- package/dist/ir/scalar-records.js +301 -1
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/scalar-records.test.js +181 -1
- package/dist/ir/scalar-records.test.js.map +1 -1
- package/dist/ir/self-captures.js +8 -0
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/validate.js +37 -28
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +4 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +4 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +13 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/native/cache.d.ts +5 -1
- package/dist/native/cache.js +15 -3
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +6 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +3 -0
- package/dist/native/compiler.js +72 -26
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +87 -2
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/executable-cache-open.test.d.ts +1 -0
- package/dist/native/executable-cache-open.test.js +80 -0
- package/dist/native/executable-cache-open.test.js.map +1 -0
- package/dist/native/executable-cache.d.ts +43 -3
- package/dist/native/executable-cache.js +177 -36
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/executable-cache.test.js +103 -0
- package/dist/native/executable-cache.test.js.map +1 -1
- package/dist/native/prepare.js +38 -16
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +51 -1
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.d.ts +1 -1
- package/dist/native/sanitizer.js +17 -3
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +4 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/classify.d.ts +14 -0
- package/dist/node-islands/classify.js +114 -0
- package/dist/node-islands/classify.js.map +1 -0
- package/dist/node-islands/detect.d.ts +13 -0
- package/dist/node-islands/detect.js +805 -0
- package/dist/node-islands/detect.js.map +1 -0
- package/dist/node-islands/detect.test.d.ts +1 -0
- package/dist/node-islands/detect.test.js +136 -0
- package/dist/node-islands/detect.test.js.map +1 -0
- package/dist/node-islands/origin.d.ts +21 -0
- package/dist/node-islands/origin.js +60 -0
- package/dist/node-islands/origin.js.map +1 -0
- package/dist/node-islands/policy.d.ts +49 -0
- package/dist/node-islands/policy.js +130 -0
- package/dist/node-islands/policy.js.map +1 -0
- package/dist/node-islands/report.d.ts +22 -0
- package/dist/node-islands/report.js +326 -0
- package/dist/node-islands/report.js.map +1 -0
- package/dist/node-islands/report.test.d.ts +1 -0
- package/dist/node-islands/report.test.js +228 -0
- package/dist/node-islands/report.test.js.map +1 -0
- package/dist/node-islands/rules.d.ts +20 -0
- package/dist/node-islands/rules.js +91 -0
- package/dist/node-islands/rules.js.map +1 -0
- package/dist/node-islands/scan.d.ts +53 -0
- package/dist/node-islands/scan.js +104 -0
- package/dist/node-islands/scan.js.map +1 -0
- package/dist/node-islands/summary.d.ts +78 -0
- package/dist/node-islands/summary.js +26 -0
- package/dist/node-islands/summary.js.map +1 -0
- package/dist/project-config.d.ts +50 -0
- package/dist/project-config.js +372 -0
- package/dist/project-config.js.map +1 -0
- package/dist/project-config.test.d.ts +1 -0
- package/dist/project-config.test.js +154 -0
- package/dist/project-config.test.js.map +1 -0
- package/dist/wasm/discover.js +6 -31
- package/dist/wasm/discover.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +20 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-boxed-unions.js","sourceRoot":"","sources":["../../../src/backend/llvm/test-boxed-unions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-boxed-unions.js","sourceRoot":"","sources":["../../../src/backend/llvm/test-boxed-unions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA+C,MAAM,gBAAgB,CAAC;AAElF;;;;;wBAKwB;AACxB,MAAM,UAAU,eAAe,CAAC,GAAa;IAC3C,MAAM,UAAU,GAAiB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YACrD,IAAI,GAAG,SAAS,KAAK,CAAC,EAAE,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO;YACL,EAAE,EAAE,WAAW,KAAK,CAAC,EAAE,EAAE;YACzB,IAAI,EAAE,QAAQ,KAAK,CAAC,EAAE,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAY;YACvE,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO;QACL,GAAG,GAAG;QACN,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC;QAC9C,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { IrModule } from "../../ir/ir.js";
|
|
2
|
+
/** The may-throw functions whose exceptions reach their callers by
|
|
3
|
+
* unwinding the native stack (scr_unwind_raise) instead of returning with
|
|
4
|
+
* the pending flag set. Their callers call them with `invoke`, so the call
|
|
5
|
+
* needs no flag test; the landing pad runs the frame's unwind.
|
|
6
|
+
*
|
|
7
|
+
* A function qualifies only when every way it can be reached is a direct
|
|
8
|
+
* `call` from emitted code that can lower it as an `invoke`: it is not
|
|
9
|
+
* async or a generator, not a constructor, not a method a virtual call can
|
|
10
|
+
* reach or one a vtable holds (an overridden method), not a closure
|
|
11
|
+
* target, not the entry or a library export, not named by any node other
|
|
12
|
+
* than a `call`'s callee, and not called from an async or generator body
|
|
13
|
+
* (coroutine bodies keep plain calls).
|
|
14
|
+
*
|
|
15
|
+
* A native unwind costs about 2 µs a raise and 0.1 µs a frame, against a
|
|
16
|
+
* few nanoseconds for a flag test, so the functions an exception is likely to
|
|
17
|
+
* cross many of keep the flag: those with a `throw` or rethrow of their own
|
|
18
|
+
* and those up to THROW_LEVELS calls above one (a handler near the throw
|
|
19
|
+
* takes it without a native unwind), and the recursive ones (deep stacks
|
|
20
|
+
* are recursions). */
|
|
21
|
+
export declare function unwindAbiFunctions(mod: IrModule, mayThrow: ReadonlySet<string>, excluded?: ReadonlySet<string>): Set<string>;
|
|
22
|
+
/** What an unwinding-ABI function's unwind ends with when no handler of
|
|
23
|
+
* its own takes the exception. */
|
|
24
|
+
export declare const UNWIND_RAISE = "call void @scr_unwind_raise()\n unreachable";
|
|
25
|
+
/** What the unwind of a landing pad ends with when no handler of the
|
|
26
|
+
* function takes the exception: the unwind goes on (`resume`) with the
|
|
27
|
+
* exception the landing pad stored in UNWIND_SLOT. The block builder
|
|
28
|
+
* expands it (BlockBuilder.terminate). */
|
|
29
|
+
export declare const UNWIND_RESUME = "resume { ptr, i32 } <unwind slot>";
|
|
30
|
+
/** The function's slot for the exception its landing pads take. */
|
|
31
|
+
export declare const UNWIND_SLOT = "%unw.exc";
|
|
32
|
+
/** scr_unwind_raise's declaration. It is not `noreturn`: sanitized builds
|
|
33
|
+
* would call the sanitizer's no-return hook before it, which fails on fiber
|
|
34
|
+
* stacks; scr_unwind_raise clears the unwound frames' shadow itself. */
|
|
35
|
+
export declare const UNWIND_RAISE_DECLARATION = "declare void @scr_unwind_raise() cold";
|
|
36
|
+
/** The personality of functions with landing pads: the landing pads are
|
|
37
|
+
* cleanups that scr_unwind_raise's forced unwind runs. */
|
|
38
|
+
export declare const UNWIND_PERSONALITY = "personality ptr @__gcc_personality_v0";
|
|
39
|
+
/** Functions emission found breaking the unwinding ABI's rules
|
|
40
|
+
* (bridgePlainUnwindCalls), by symbol: the caller emits the module again
|
|
41
|
+
* with them on the pending-flag ABI. */
|
|
42
|
+
export declare class UnwindAbiViolation extends Error {
|
|
43
|
+
readonly symbols: ReadonlySet<string>;
|
|
44
|
+
constructor(symbols: ReadonlySet<string>);
|
|
45
|
+
}
|
|
46
|
+
/** Rewrites every remaining plain call of an unwinding-ABI function (one
|
|
47
|
+
* that raises, scr_unwind_raise, or resumes an unwind) in `parts`, the module's text, into an
|
|
48
|
+
* invoke whose landing pad continues after the call with the exception
|
|
49
|
+
* pending and the call's dummy result: the pending-flag contract those
|
|
50
|
+
* call sites were emitted for, whichever lowering emitted them. Calls of
|
|
51
|
+
* these functions that emitDirectCall lowered are invokes already. */
|
|
52
|
+
export declare function bridgePlainUnwindCalls(parts: string[]): string[];
|
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
import { everyStmtList } from "../../ir/traverse.js";
|
|
2
|
+
/** How many calls above a `throw` functions keep the pending flag. */
|
|
3
|
+
const THROW_LEVELS = 3;
|
|
4
|
+
/** The call graph's node for calls through values. */
|
|
5
|
+
const ANY_FUNCTION = " any function";
|
|
6
|
+
/** The nodes of `edges` on a cycle (a recursion), by Tarjan's algorithm
|
|
7
|
+
* without recursion of its own: a large module's call chains are deeper
|
|
8
|
+
* than the host stack. */
|
|
9
|
+
function recursiveFunctions(edges) {
|
|
10
|
+
const index = new Map();
|
|
11
|
+
const low = new Map();
|
|
12
|
+
const stack = [];
|
|
13
|
+
const onStack = new Set();
|
|
14
|
+
const result = new Set();
|
|
15
|
+
let counter = 0;
|
|
16
|
+
const enter = (name) => {
|
|
17
|
+
index.set(name, counter);
|
|
18
|
+
low.set(name, counter++);
|
|
19
|
+
stack.push(name);
|
|
20
|
+
onStack.add(name);
|
|
21
|
+
return { name, next: 0 };
|
|
22
|
+
};
|
|
23
|
+
for (const root of edges.keys()) {
|
|
24
|
+
if (index.has(root))
|
|
25
|
+
continue;
|
|
26
|
+
const work = [enter(root)];
|
|
27
|
+
while (work.length > 0) {
|
|
28
|
+
const top = work[work.length - 1];
|
|
29
|
+
const out = edges.get(top.name) ?? [];
|
|
30
|
+
if (top.next < out.length) {
|
|
31
|
+
const callee = out[top.next++];
|
|
32
|
+
if (!index.has(callee))
|
|
33
|
+
work.push(enter(callee));
|
|
34
|
+
else if (onStack.has(callee))
|
|
35
|
+
low.set(top.name, Math.min(low.get(top.name), index.get(callee)));
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
work.pop();
|
|
39
|
+
const parent = work[work.length - 1];
|
|
40
|
+
if (parent !== undefined)
|
|
41
|
+
low.set(parent.name, Math.min(low.get(parent.name), low.get(top.name)));
|
|
42
|
+
if (low.get(top.name) !== index.get(top.name))
|
|
43
|
+
continue;
|
|
44
|
+
const members = [];
|
|
45
|
+
let member;
|
|
46
|
+
do {
|
|
47
|
+
member = stack.pop();
|
|
48
|
+
onStack.delete(member);
|
|
49
|
+
members.push(member);
|
|
50
|
+
} while (member !== top.name);
|
|
51
|
+
if (members.length > 1 || out.includes(top.name))
|
|
52
|
+
for (const m of members)
|
|
53
|
+
result.add(m);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
/** The may-throw functions whose exceptions reach their callers by
|
|
59
|
+
* unwinding the native stack (scr_unwind_raise) instead of returning with
|
|
60
|
+
* the pending flag set. Their callers call them with `invoke`, so the call
|
|
61
|
+
* needs no flag test; the landing pad runs the frame's unwind.
|
|
62
|
+
*
|
|
63
|
+
* A function qualifies only when every way it can be reached is a direct
|
|
64
|
+
* `call` from emitted code that can lower it as an `invoke`: it is not
|
|
65
|
+
* async or a generator, not a constructor, not a method a virtual call can
|
|
66
|
+
* reach or one a vtable holds (an overridden method), not a closure
|
|
67
|
+
* target, not the entry or a library export, not named by any node other
|
|
68
|
+
* than a `call`'s callee, and not called from an async or generator body
|
|
69
|
+
* (coroutine bodies keep plain calls).
|
|
70
|
+
*
|
|
71
|
+
* A native unwind costs about 2 µs a raise and 0.1 µs a frame, against a
|
|
72
|
+
* few nanoseconds for a flag test, so the functions an exception is likely to
|
|
73
|
+
* cross many of keep the flag: those with a `throw` or rethrow of their own
|
|
74
|
+
* and those up to THROW_LEVELS calls above one (a handler near the throw
|
|
75
|
+
* takes it without a native unwind), and the recursive ones (deep stacks
|
|
76
|
+
* are recursions). */
|
|
77
|
+
export function unwindAbiFunctions(mod, mayThrow, excluded = new Set()) {
|
|
78
|
+
const names = new Set(mod.functions.map((fn) => fn.name));
|
|
79
|
+
const blocked = new Set(excluded);
|
|
80
|
+
blocked.add(mod.entry);
|
|
81
|
+
// The runtime calls the error property readers through the pointers the
|
|
82
|
+
// module installs (emit-module.ts).
|
|
83
|
+
blocked.add("%error.name.read");
|
|
84
|
+
blocked.add("%error.message.read");
|
|
85
|
+
for (const entry of mod.lib?.exports ?? [])
|
|
86
|
+
blocked.add(entry.fnName);
|
|
87
|
+
// Methods a virtual call can reach, and the overridden methods of class
|
|
88
|
+
// hierarchies (whose vtables list them), are called through pointers; the
|
|
89
|
+
// others are called directly, like functions. A virtual call reaches its listed
|
|
90
|
+
// targets, or else the method in its receiver class's hierarchy; a
|
|
91
|
+
// receiver that is no class of the module (an interface) may reach any
|
|
92
|
+
// class's method of that name.
|
|
93
|
+
const classes = new Map((mod.classes ?? []).map((cls) => [cls.name, cls]));
|
|
94
|
+
const anyClass = new Set();
|
|
95
|
+
for (const fn of mod.functions)
|
|
96
|
+
everyStmtList(fn.body, {
|
|
97
|
+
expr: (e) => {
|
|
98
|
+
if (e.kind !== "virtualCall")
|
|
99
|
+
return true;
|
|
100
|
+
if (e.targets !== undefined)
|
|
101
|
+
for (const target of e.targets)
|
|
102
|
+
blocked.add(target);
|
|
103
|
+
else if (classes.has(e.className))
|
|
104
|
+
blocked.add(`%${e.className}.${e.method}`);
|
|
105
|
+
else
|
|
106
|
+
anyClass.add(e.method);
|
|
107
|
+
return true;
|
|
108
|
+
},
|
|
109
|
+
stmt: () => true,
|
|
110
|
+
});
|
|
111
|
+
// A hierarchy's vtables hold the methods declared by more than one of its
|
|
112
|
+
// classes (an override and what it overrides).
|
|
113
|
+
const rootOf = (name) => {
|
|
114
|
+
let cls = classes.get(name);
|
|
115
|
+
while (cls?.base !== undefined && classes.has(cls.base))
|
|
116
|
+
cls = classes.get(cls.base);
|
|
117
|
+
return cls?.name ?? name;
|
|
118
|
+
};
|
|
119
|
+
const declarers = new Map();
|
|
120
|
+
for (const cls of mod.classes ?? [])
|
|
121
|
+
for (const m of cls.methods ?? []) {
|
|
122
|
+
const key = `${rootOf(cls.name)}\0${m}`;
|
|
123
|
+
declarers.set(key, (declarers.get(key) ?? 0) + 1);
|
|
124
|
+
}
|
|
125
|
+
for (const cls of mod.classes ?? []) {
|
|
126
|
+
blocked.add(`%${cls.name}.constructor`);
|
|
127
|
+
blocked.add(`%${cls.name}.construct`);
|
|
128
|
+
const root = rootOf(cls.name);
|
|
129
|
+
for (const m of cls.methods ?? [])
|
|
130
|
+
if (anyClass.has(m) || declarers.get(`${root}\0${m}`) > 1)
|
|
131
|
+
blocked.add(`%${cls.name}.${m}`);
|
|
132
|
+
}
|
|
133
|
+
// Any function a node names other than as a call's callee may be reached
|
|
134
|
+
// through a pointer.
|
|
135
|
+
const referenced = new Set();
|
|
136
|
+
const noteNames = (node, skip) => {
|
|
137
|
+
for (const key in node) {
|
|
138
|
+
if (key === skip)
|
|
139
|
+
continue;
|
|
140
|
+
const value = node[key];
|
|
141
|
+
if (typeof value === "string" && names.has(value))
|
|
142
|
+
referenced.add(value);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
// The call graph, for the functions near a throw and the recursive ones.
|
|
146
|
+
// Calls through values (closures, class values, dynamic calls, callbacks
|
|
147
|
+
// passed to the runtime) reach ANY_FUNCTION, which reaches every function
|
|
148
|
+
// a value can hold.
|
|
149
|
+
const throws = new Set();
|
|
150
|
+
const callers = new Map();
|
|
151
|
+
const callees = new Map();
|
|
152
|
+
const edge = (from, to) => {
|
|
153
|
+
let list = callers.get(to);
|
|
154
|
+
if (list === undefined)
|
|
155
|
+
callers.set(to, (list = []));
|
|
156
|
+
list.push(from);
|
|
157
|
+
let out = callees.get(from);
|
|
158
|
+
if (out === undefined)
|
|
159
|
+
callees.set(from, (out = []));
|
|
160
|
+
out.push(to);
|
|
161
|
+
};
|
|
162
|
+
const methodsNamed = new Map();
|
|
163
|
+
for (const cls of mod.classes ?? [])
|
|
164
|
+
for (const m of cls.methods ?? []) {
|
|
165
|
+
let list = methodsNamed.get(m);
|
|
166
|
+
if (list === undefined)
|
|
167
|
+
methodsNamed.set(m, (list = []));
|
|
168
|
+
list.push(`%${cls.name}.${m}`);
|
|
169
|
+
}
|
|
170
|
+
for (const fn of mod.functions) {
|
|
171
|
+
const coroutine = fn.async === true || fn.generator !== undefined;
|
|
172
|
+
everyStmtList(fn.body, {
|
|
173
|
+
expr: (e) => {
|
|
174
|
+
const kind = e.kind;
|
|
175
|
+
if (kind === "throw" || kind === "rethrow")
|
|
176
|
+
throws.add(fn.name);
|
|
177
|
+
if (e.kind === "call") {
|
|
178
|
+
edge(fn.name, e.callee);
|
|
179
|
+
// The entry's callees (the module initializers) run once: on the
|
|
180
|
+
// flag they keep landing pads out of the top-level code inlined
|
|
181
|
+
// into the entry.
|
|
182
|
+
if (coroutine || fn.name === mod.entry)
|
|
183
|
+
blocked.add(e.callee);
|
|
184
|
+
noteNames(e, "callee");
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
noteNames(e, undefined);
|
|
188
|
+
if (e.kind === "virtualCall")
|
|
189
|
+
for (const target of e.targets ?? methodsNamed.get(e.method) ?? [])
|
|
190
|
+
edge(fn.name, target);
|
|
191
|
+
else if (e.kind === "new") {
|
|
192
|
+
edge(fn.name, `%${e.className}.constructor`);
|
|
193
|
+
edge(fn.name, `%${e.className}.construct`);
|
|
194
|
+
}
|
|
195
|
+
else if (kind === "callValue" || kind === "dynCall" || kind === "newValue")
|
|
196
|
+
edge(fn.name, ANY_FUNCTION);
|
|
197
|
+
else if ("args" in e) {
|
|
198
|
+
const args = e.args;
|
|
199
|
+
if (Array.isArray(args))
|
|
200
|
+
for (const arg of args)
|
|
201
|
+
if (arg.type.kind === "func")
|
|
202
|
+
edge(fn.name, ANY_FUNCTION);
|
|
203
|
+
}
|
|
204
|
+
return true;
|
|
205
|
+
},
|
|
206
|
+
stmt: (s) => {
|
|
207
|
+
const kind = s.kind;
|
|
208
|
+
if (kind === "throw" || kind === "rethrow")
|
|
209
|
+
throws.add(fn.name);
|
|
210
|
+
noteNames(s, undefined);
|
|
211
|
+
return true;
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
for (const name of referenced) {
|
|
216
|
+
blocked.add(name);
|
|
217
|
+
edge(ANY_FUNCTION, name);
|
|
218
|
+
}
|
|
219
|
+
// A throw starts on the pending flag, and so do the functions up to
|
|
220
|
+
// THROW_LEVELS calls above it. The union narrowing helpers' throws (a
|
|
221
|
+
// failed narrowing) don't count for their callers.
|
|
222
|
+
for (const name of throws)
|
|
223
|
+
blocked.add(name);
|
|
224
|
+
let level = [...throws].filter((name) => !name.startsWith("%union."));
|
|
225
|
+
const near = new Set(level);
|
|
226
|
+
for (let i = 0; i < THROW_LEVELS; i++) {
|
|
227
|
+
const next = [];
|
|
228
|
+
for (const name of level)
|
|
229
|
+
for (const caller of callers.get(name) ?? [])
|
|
230
|
+
if (!near.has(caller)) {
|
|
231
|
+
near.add(caller);
|
|
232
|
+
next.push(caller);
|
|
233
|
+
}
|
|
234
|
+
level = next;
|
|
235
|
+
}
|
|
236
|
+
for (const name of near)
|
|
237
|
+
blocked.add(name);
|
|
238
|
+
for (const name of recursiveFunctions(callees))
|
|
239
|
+
blocked.add(name);
|
|
240
|
+
const result = new Set();
|
|
241
|
+
for (const fn of mod.functions) {
|
|
242
|
+
if (!mayThrow.has(fn.name) || blocked.has(fn.name))
|
|
243
|
+
continue;
|
|
244
|
+
if (fn.async === true || fn.generator !== undefined)
|
|
245
|
+
continue;
|
|
246
|
+
result.add(fn.name);
|
|
247
|
+
}
|
|
248
|
+
return result;
|
|
249
|
+
}
|
|
250
|
+
/** What an unwinding-ABI function's unwind ends with when no handler of
|
|
251
|
+
* its own takes the exception. */
|
|
252
|
+
export const UNWIND_RAISE = "call void @scr_unwind_raise()\n unreachable";
|
|
253
|
+
/** What the unwind of a landing pad ends with when no handler of the
|
|
254
|
+
* function takes the exception: the unwind goes on (`resume`) with the
|
|
255
|
+
* exception the landing pad stored in UNWIND_SLOT. The block builder
|
|
256
|
+
* expands it (BlockBuilder.terminate). */
|
|
257
|
+
export const UNWIND_RESUME = "resume { ptr, i32 } <unwind slot>";
|
|
258
|
+
/** The function's slot for the exception its landing pads take. */
|
|
259
|
+
export const UNWIND_SLOT = "%unw.exc";
|
|
260
|
+
/** scr_unwind_raise's declaration. It is not `noreturn`: sanitized builds
|
|
261
|
+
* would call the sanitizer's no-return hook before it, which fails on fiber
|
|
262
|
+
* stacks; scr_unwind_raise clears the unwound frames' shadow itself. */
|
|
263
|
+
export const UNWIND_RAISE_DECLARATION = "declare void @scr_unwind_raise() cold";
|
|
264
|
+
/** The personality of functions with landing pads: the landing pads are
|
|
265
|
+
* cleanups that scr_unwind_raise's forced unwind runs. */
|
|
266
|
+
export const UNWIND_PERSONALITY = "personality ptr @__gcc_personality_v0";
|
|
267
|
+
/** An unwind leaving the function: a raise, or a landing pad's `resume`. */
|
|
268
|
+
const UNWINDS = /call void @scr_unwind_raise\(\)|\n\s+resume /;
|
|
269
|
+
/** A pending-flag test: the thread's exception word, the active cell, or the runtime query. */
|
|
270
|
+
const PENDING_TEST = /@scr_exc_flag\b|%exc\.cell\b|@scr_exc_active\b|@scr_exc_pending\(/;
|
|
271
|
+
/** Functions emission found breaking the unwinding ABI's rules
|
|
272
|
+
* (bridgePlainUnwindCalls), by symbol: the caller emits the module again
|
|
273
|
+
* with them on the pending-flag ABI. */
|
|
274
|
+
export class UnwindAbiViolation extends Error {
|
|
275
|
+
symbols;
|
|
276
|
+
constructor(symbols) {
|
|
277
|
+
super(`unwinding ABI: ${[...symbols].slice(0, 3).join(", ")} must keep the pending flag`);
|
|
278
|
+
this.symbols = symbols;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
const DEFINE_NAME = /^define [^@\n]*@([\w.$%-]+)\(/;
|
|
282
|
+
const PLAIN_CALL = /^(\s*)(%[\w.$-]+) = call (.*?)@([\w.$%-]+)\(|^(\s*)call (.*?)@([\w.$%-]+)\(/;
|
|
283
|
+
const RETURN_ATTRIBUTES = /\b(?:zeroext|signext|noalias|nonnull|noundef|inreg|dereferenceable(?:_or_null)?\(\d+\)|align \d+)\s+/g;
|
|
284
|
+
/** A call instruction's line. */
|
|
285
|
+
const CALL_LINE = /^\s*(?:%[\w.$-]+ = )?(?:(?:tail|musttail|notail) )?call /;
|
|
286
|
+
/** A call's callee (a function or a register) and the parenthesis that
|
|
287
|
+
* opens its arguments. */
|
|
288
|
+
const CALLEE = /[@%][\w.$%-]+\(/;
|
|
289
|
+
/** The index of the parenthesis that closes the argument list opened at `open`. */
|
|
290
|
+
function argumentsEnd(line, open) {
|
|
291
|
+
let depth = 0;
|
|
292
|
+
let close = open;
|
|
293
|
+
for (; close < line.length; close++) {
|
|
294
|
+
const c = line.charAt(close);
|
|
295
|
+
if (c === "(")
|
|
296
|
+
depth++;
|
|
297
|
+
else if (c === ")" && --depth === 0)
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
return close;
|
|
301
|
+
}
|
|
302
|
+
/** A call that cannot unwind, marked so: only scr_unwind_raise and the
|
|
303
|
+
* raising functions propagate an unwind (runtime code and every function
|
|
304
|
+
* reached through a pointer return normally), so every other call is
|
|
305
|
+
* `nounwind`, and the inliner keeps it a call where it inlines a raising
|
|
306
|
+
* function at an invoke. */
|
|
307
|
+
function markNounwind(line) {
|
|
308
|
+
const call = line.indexOf("call ");
|
|
309
|
+
const callee = CALLEE.exec(line.slice(call));
|
|
310
|
+
if (callee === null || callee[0] === "@scr_unwind_raise(")
|
|
311
|
+
return line;
|
|
312
|
+
const close = argumentsEnd(line, call + callee.index + callee[0].length - 1);
|
|
313
|
+
return close >= line.length
|
|
314
|
+
? line
|
|
315
|
+
: `${line.slice(0, close + 1)} nounwind${line.slice(close + 1)}`;
|
|
316
|
+
}
|
|
317
|
+
/** The value a bridged call yields on its landing pad: the dummy a
|
|
318
|
+
* pending-flag callee returns with an exception pending. */
|
|
319
|
+
function dummyValue(type) {
|
|
320
|
+
if (type === "ptr")
|
|
321
|
+
return "null";
|
|
322
|
+
if (type === "double" || type === "float")
|
|
323
|
+
return "0.0";
|
|
324
|
+
if (/^i\d+$/.test(type))
|
|
325
|
+
return "0";
|
|
326
|
+
return "zeroinitializer";
|
|
327
|
+
}
|
|
328
|
+
/** Rewrites every remaining plain call of an unwinding-ABI function (one
|
|
329
|
+
* that raises, scr_unwind_raise, or resumes an unwind) in `parts`, the module's text, into an
|
|
330
|
+
* invoke whose landing pad continues after the call with the exception
|
|
331
|
+
* pending and the call's dummy result: the pending-flag contract those
|
|
332
|
+
* call sites were emitted for, whichever lowering emitted them. Calls of
|
|
333
|
+
* these functions that emitDirectCall lowered are invokes already. */
|
|
334
|
+
export function bridgePlainUnwindCalls(parts) {
|
|
335
|
+
const raisers = new Set();
|
|
336
|
+
const split = parts.map((part) => part.split(/\n(?=define )/));
|
|
337
|
+
for (const chunks of split)
|
|
338
|
+
for (const chunk of chunks) {
|
|
339
|
+
const m = DEFINE_NAME.exec(chunk);
|
|
340
|
+
if (m !== null && UNWINDS.test(chunk))
|
|
341
|
+
raisers.add(m[1]);
|
|
342
|
+
}
|
|
343
|
+
if (raisers.size === 0)
|
|
344
|
+
return parts;
|
|
345
|
+
// An invoke's callee must raise or never test the pending flag: one that
|
|
346
|
+
// returned with the flag pending would pass the exception by its invoking
|
|
347
|
+
// caller unseen. A wrapper an invoke reaches (an int32 or borrowed-ABI
|
|
348
|
+
// entry forwarding to the body) propagates its callee's unwind instead
|
|
349
|
+
// (`resume`), so it raises too. A raising function must be reached only by
|
|
350
|
+
// calls: a pointer to it (a vtable or table entry, a runtime callback)
|
|
351
|
+
// could be called without a landing pad. Functions that break either rule
|
|
352
|
+
// go back to the pending-flag ABI (UnwindAbiViolation).
|
|
353
|
+
const violations = new Set();
|
|
354
|
+
const invoked = new Set();
|
|
355
|
+
const testsFlag = new Set();
|
|
356
|
+
for (const chunks of split)
|
|
357
|
+
for (const chunk of chunks) {
|
|
358
|
+
const m = DEFINE_NAME.exec(chunk);
|
|
359
|
+
if (m !== null && PENDING_TEST.test(chunk))
|
|
360
|
+
testsFlag.add(m[1]);
|
|
361
|
+
for (const c of chunk.matchAll(/ invoke [^@\n]*@([\w.$%-]+)\(/g))
|
|
362
|
+
invoked.add(c[1]);
|
|
363
|
+
}
|
|
364
|
+
const resumers = new Set();
|
|
365
|
+
for (let grew = true; grew;) {
|
|
366
|
+
grew = false;
|
|
367
|
+
for (const chunks of split)
|
|
368
|
+
for (const chunk of chunks) {
|
|
369
|
+
const m = DEFINE_NAME.exec(chunk);
|
|
370
|
+
const name = m?.[1];
|
|
371
|
+
if (name === undefined || raisers.has(name) || !invoked.has(name))
|
|
372
|
+
continue;
|
|
373
|
+
if (![...chunk.matchAll(/ call [^@\n]*@([\w.$%-]+)\(/g)].some((c) => raisers.has(c[1])))
|
|
374
|
+
continue;
|
|
375
|
+
if (testsFlag.has(name))
|
|
376
|
+
continue;
|
|
377
|
+
raisers.add(name);
|
|
378
|
+
resumers.add(name);
|
|
379
|
+
grew = true;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
for (const name of invoked)
|
|
383
|
+
if (!raisers.has(name) && testsFlag.has(name))
|
|
384
|
+
violations.add(name);
|
|
385
|
+
for (const chunks of split)
|
|
386
|
+
for (const chunk of chunks)
|
|
387
|
+
for (const line of chunk.split("\n")) {
|
|
388
|
+
if (line.startsWith("define "))
|
|
389
|
+
continue;
|
|
390
|
+
for (const m of line.matchAll(/@([\w.$%-]+)/g)) {
|
|
391
|
+
if (!raisers.has(m[1]))
|
|
392
|
+
continue;
|
|
393
|
+
const at = m.index;
|
|
394
|
+
if (/(?:call|invoke) [^@]*$/.test(line.slice(0, at)) &&
|
|
395
|
+
line.charAt(at + m[0].length) === "(")
|
|
396
|
+
continue;
|
|
397
|
+
violations.add(m[1]);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
if (violations.size > 0)
|
|
401
|
+
throw new UnwindAbiViolation(violations);
|
|
402
|
+
let personality = false;
|
|
403
|
+
let counter = 0;
|
|
404
|
+
const out = split.map((chunks) => chunks
|
|
405
|
+
.map((chunk) => {
|
|
406
|
+
if (!DEFINE_NAME.test(chunk) || !chunk.includes("call "))
|
|
407
|
+
return chunk;
|
|
408
|
+
const lines = chunk.split("\n");
|
|
409
|
+
const resume = resumers.has(DEFINE_NAME.exec(chunk)[1]);
|
|
410
|
+
const result = [];
|
|
411
|
+
// The label a block's terminator now follows, for phi operands.
|
|
412
|
+
const moved = new Map();
|
|
413
|
+
let block = "";
|
|
414
|
+
let changed = false;
|
|
415
|
+
for (let i = 0; i < lines.length; i++) {
|
|
416
|
+
const line = lines[i];
|
|
417
|
+
const label = /^([\w.$-]+):/.exec(line);
|
|
418
|
+
if (label !== null)
|
|
419
|
+
block = label[1];
|
|
420
|
+
const m = PLAIN_CALL.exec(line);
|
|
421
|
+
const callee = m === null ? undefined : (m[4] ?? m[7]);
|
|
422
|
+
if (m === null || callee === undefined || !raisers.has(callee)) {
|
|
423
|
+
const marked = CALL_LINE.test(line) ? markNounwind(line) : line;
|
|
424
|
+
changed ||= marked !== line;
|
|
425
|
+
result.push(marked);
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
// The call's text from its callee to the end of the argument list.
|
|
429
|
+
const close = argumentsEnd(line, line.indexOf(`@${callee}(`) + callee.length + 1);
|
|
430
|
+
const head = line.slice(line.indexOf("call ") + 5, close + 1);
|
|
431
|
+
const tail = line.slice(close + 1);
|
|
432
|
+
const meta = /,\s*!/.exec(tail);
|
|
433
|
+
const attrs = (meta === null ? tail.replace(/;.*$/, "") : tail.slice(0, meta.index)).trimEnd();
|
|
434
|
+
const dbg = meta === null ? "" : tail.slice(meta.index).replace(/\s;.*$/, "");
|
|
435
|
+
const n = counter++;
|
|
436
|
+
if (block === "") {
|
|
437
|
+
result.splice(1, 0, "entry.ub:");
|
|
438
|
+
block = "entry.ub";
|
|
439
|
+
}
|
|
440
|
+
const indent = m[1] ?? m[5] ?? " ";
|
|
441
|
+
const ok = `ub.ok.${n}`;
|
|
442
|
+
const pad = `ub.lp.${n}`;
|
|
443
|
+
if (resume) {
|
|
444
|
+
// The wrapper holds nothing to release: the unwind goes on to
|
|
445
|
+
// its caller's landing pad.
|
|
446
|
+
const assign = m[2] !== undefined ? `${m[2]} = ` : "";
|
|
447
|
+
result.push(`${indent}${assign}invoke ${head}${attrs} to label %${ok} unwind label %${pad}${dbg}`);
|
|
448
|
+
result.push(`${pad}:`, `${indent}%ub.v.${n} = landingpad { ptr, i32 } cleanup`, `${indent}resume { ptr, i32 } %ub.v.${n}`);
|
|
449
|
+
result.push(`${ok}:`);
|
|
450
|
+
}
|
|
451
|
+
else if (m[2] !== undefined) {
|
|
452
|
+
const type = (m[3] ?? "").replace(RETURN_ATTRIBUTES, "").trim();
|
|
453
|
+
const normal = `ub.n.${n}`;
|
|
454
|
+
result.push(`${indent}${m[2]}.ub = invoke ${head}${attrs} to label %${normal} unwind label %${pad}${dbg}`);
|
|
455
|
+
result.push(`${normal}:`, `${indent}br label %${ok}`);
|
|
456
|
+
result.push(`${pad}:`, `${indent}%ub.v.${n} = landingpad { ptr, i32 } cleanup`, `${indent}br label %${ok}`);
|
|
457
|
+
result.push(`${ok}:`, `${indent}${m[2]} = phi ${type} [ ${m[2]}.ub, %${normal} ], [ ${dummyValue(type)}, %${pad} ]`);
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
result.push(`${indent}invoke ${head}${attrs} to label %${ok} unwind label %${pad}${dbg}`);
|
|
461
|
+
result.push(`${pad}:`, `${indent}%ub.v.${n} = landingpad { ptr, i32 } cleanup`, `${indent}br label %${ok}`);
|
|
462
|
+
result.push(`${ok}:`);
|
|
463
|
+
}
|
|
464
|
+
moved.set(block, ok);
|
|
465
|
+
changed = true;
|
|
466
|
+
}
|
|
467
|
+
if (!changed)
|
|
468
|
+
return chunk;
|
|
469
|
+
if (moved.size === 0)
|
|
470
|
+
return result.join("\n");
|
|
471
|
+
personality = true;
|
|
472
|
+
const header = result[0];
|
|
473
|
+
const brace = header.lastIndexOf(" {");
|
|
474
|
+
if (!header.includes("personality") && brace >= 0) {
|
|
475
|
+
// Before the function's metadata attachments (`!dbg`), if any.
|
|
476
|
+
const dbg = header.slice(0, brace).search(/\s!dbg !\d+$/);
|
|
477
|
+
const at = dbg >= 0 ? dbg : brace;
|
|
478
|
+
result[0] = `${header.slice(0, at)} ${UNWIND_PERSONALITY}${header.slice(at)}`;
|
|
479
|
+
}
|
|
480
|
+
// A split block's successors now come from its last part.
|
|
481
|
+
if (moved.size > 0)
|
|
482
|
+
for (let i = 0; i < result.length; i++) {
|
|
483
|
+
const line = result[i];
|
|
484
|
+
if (!line.includes(" phi "))
|
|
485
|
+
continue;
|
|
486
|
+
result[i] = line.replace(/, %([\w.$-]+) \]/g, (all, name) => {
|
|
487
|
+
const to = moved.get(name);
|
|
488
|
+
return to === undefined ? all : `, %${to} ]`;
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
return result.join("\n");
|
|
492
|
+
})
|
|
493
|
+
.join("\n"));
|
|
494
|
+
if (personality && !out.some((part) => part.includes("@__gcc_personality_v0(...)")))
|
|
495
|
+
out[0] = `declare i32 @__gcc_personality_v0(...)\n${out[0]}`;
|
|
496
|
+
return out;
|
|
497
|
+
}
|
|
498
|
+
//# sourceMappingURL=unwind-abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwind-abi.js","sourceRoot":"","sources":["../../../src/backend/llvm/unwind-abi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|