@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":"bytes-bounds.js","sourceRoot":"","sources":["../../../src/backend/llvm/bytes-bounds.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bytes-bounds.js","sourceRoot":"","sources":["../../../src/backend/llvm/bytes-bounds.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAqB,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAW5D,MAAM,OAAO,GAAqC;IAChD,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;CACX,CAAC;AAEF;;;;;;;2EAO2E;AAC3E,MAAM,UAAU,eAAe,CAAC,EAAc,EAAE,MAAqB;IACnE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IACxC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;QACrF,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAC5E,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI;gBAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAW,EAAE;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,SAAS,MAAM,CAAC,CAAS,EAAE,KAAc;QACvC,IACE,CAAC,CAAC,IAAI,KAAK,gBAAgB;YAC3B,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ;gBACpB,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY;oBACxB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;oBAChC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC5B,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC5B,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE5C,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;YAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnD,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IACE,CAAC,CAAC,IAAI,KAAK,KAAK;YAChB,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YACzB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EACb,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1F,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,MAAM,CAAC,CAAS,EAAE,OAAe;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,CAAC,CAAC;QAC3D,IACE,CAAC,CAAC,IAAI,KAAK,KAAK;YAChB,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YACzB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAEpC,OAAO,IAAI,CAAC;QACd,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IACD;uEACmE;IACnE,SAAS,QAAQ,CAAC,CAAS,EAAE,KAAY;QACvC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACpE,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACnF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IACD,SAAS,WAAW,CAAC,CAAS,EAAE,KAAY;QAC1C,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,CAAC;QACD,IACE,CAAC,CAAC,IAAI,KAAK,KAAK;YAChB,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YACzB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAEpC,OAAO,IAAI,CAAC;QACd,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI;YACT,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAChF,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,SAAS,MAAM,CAAC,IAAc,EAAE,QAAgB,EAAE,OAAe;QAC/D,OAAO,aAAa,CAAC,IAAI,EAAE;YACzB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;gBACV,IACE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;oBAChD,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;oBAEjD,OAAO,KAAK,CAAC;gBACf,OAAO,uBAAuB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;gBACV,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC3F,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;oBACf,KAAK,SAAS,CAAC;oBACf,KAAK,QAAQ,CAAC;oBACd,KAAK,UAAU,CAAC;oBAChB,KAAK,UAAU,CAAC;oBAChB,KAAK,IAAI,CAAC;oBACV,KAAK,OAAO,CAAC;oBACb,KAAK,KAAK,CAAC;oBACX,KAAK,OAAO,CAAC;oBACb,KAAK,SAAS,CAAC;oBACf,KAAK,OAAO,CAAC;oBACb,KAAK,UAAU,CAAC;oBAChB,KAAK,QAAQ;wBACX,OAAO,IAAI,CAAC;oBACd;wBACE,OAAO,KAAK,CAAC;gBACjB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,SAAS,SAAS,CAAC,CAA2B;QAC5C,IACE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS;YAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;YACZ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YACzB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK;YAEtB,OAAO,IAAI,CAAC;QACd,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EACtB,EAAE,GAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACrE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAC;YACtE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACxB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IACE,MAAM,EAAE,IAAI,KAAK,QAAQ;YACzB,MAAM,CAAC,OAAO,KAAK,OAAO;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;YAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;YACrC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EACpC,CAAC;YACD,IAAI;gBACF,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG;oBACrB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;oBAC1B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG;wBACvB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;wBAC3B,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC;aAAM,IACL,MAAM,EAAE,IAAI,KAAK,UAAU;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;YAE/B,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAI,MAAM,GAAiB,IAAI,CAAC;QAChC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACjC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,IAAI,KAAK;gBACjB,MAAM,GAAG;oBACP,GAAG,MAAM;oBACT,OAAO;oBACP,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,OAAO,EAAE,KAAK,CAAC,GAAG;iBACnB,CAAC;QACN,CAAC;aAAM,IACL,IAAI,GAAG,CAAC;YACR,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC;YAC3B,KAAK,CAAC,IAAI,KAAK,QAAQ;YACvB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAC5B,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,KAAK;gBACP,MAAM,GAAG;oBACP,GAAG,KAAK;oBACR,OAAO;oBACP,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;oBACxB,OAAO,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBAC3E,CAAC;QACN,CAAC;QACD,OAAO,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,CAAC;IACD;gEAC4D;IAC5D,SAAS,gBAAgB,CAAC,CAAS,EAAE,KAAY;QAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EACjB,EAAE,GAAW,CAAC,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACjE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC5E,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;YACf,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,CAAC;IACD,8EAA8E;IAC9E,SAAS,SAAS,CAAC,CAAS,EAAE,OAAe;QAC3C,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;YACxB,CAAC,CAAC,OAAO,KAAK,OAAO;YACrB,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;YACtB,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG;YAClB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;YAChC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC/B,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;YACvB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;YACrB,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,SAAS,MAAM,CAAC,CAAS,EAAE,EAAU;QACnC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;YACjF,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,CAAC,CACC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;gBAC9E,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC;gBACvB,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CACzD;SACJ,CAAC,CAAC;IACL,CAAC;IACD;;;;8EAI0E;IAC1E,SAAS,UAAU,CAAC,CAA6B;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7C,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACV,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACtB,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,CAC3D,CAAC;QACF,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACxE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAE,CAAC;QACjF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACrF,IAAI,UAAU,EAAE,EAAE,KAAK,GAAG,IAAI,UAAU,EAAE,EAAE,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,aAAa;QACb,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;YACrC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CACV,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;gBAC/C,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;gBACpD,cAAc,CACZ,CAAC,EACD,GAAG,EAAE,CAAC,IAAI,EACV,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CACnC;YACH,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACd,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;oBACtD,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;oBAC/E,OAAO,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC;gBACjE,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,UAAU;oBACzB,CAAC,KAAK,CAAC,YAAY,KAAK,OAAO,IAAI,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CACpE,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;QACH,OAAO,QAAQ;YACb,CAAC,CAAC;gBACE,QAAQ;gBACR,OAAO;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO;aACR;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,SAAS,MAAM,CAAC,IAAU,EAAE,KAAa,EAAE,KAAa,EAAE,MAAe,EAAE,KAAa;QACtF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ;oBAAE,SAAS;gBAC/C,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;oBAAE,SAAS;gBACrD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5C,IACE,MAAM,KAAK,IAAI;oBACf,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC;oBAC3B,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,EACtC,CAAC;oBACD,IAAI,GAAG,IAAI,CAAC;oBACZ,MAAM;gBACR,CAAC;gBACD,8DAA8D;gBAC9D,qCAAqC;gBACrC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;oBACtE,IAAI,GAAG,IAAI,CAAC;oBACZ,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,SAAS,IAAI,CAAC,CAAS,EAAE,MAAe;QACtC,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB;YACxC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3E,OAAO,cAAc,CACnB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAC/B,CAAC;IACJ,CAAC;IACD;0BACsB;IACtB,SAAS,MAAM,CAAC,IAAY,EAAE,KAAY;QACxC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EACzB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,4DAA4D;QAC5D,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EACrD,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EACtD,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,QAAQ,UAAU,CAAC,EAAE,EAAE,CAAC;YACtB,KAAK,GAAG;gBACN,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACxB,KAAK,IAAI;gBACP,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACzB,KAAK,GAAG;gBACN,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzB,KAAK,IAAI;gBACP,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACxB,KAAK,KAAK,CAAC;YACX,KAAK,IAAI;gBACP,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3B,KAAK,KAAK,CAAC;YACX,KAAK,IAAI;gBACP,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B;gBACE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD;;;;2EAIuE;IACvE,SAAS,IAAI,CAAC,IAAc,EAAE,MAAe,EAAE,KAAY;QACzD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC5E,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;YACnF,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EACrC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzD,KAAK,GAAG;oBACN,GAAG,KAAK;oBACR,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;oBAC3C,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;iBAC/C,CAAC;YACJ,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnD,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAChB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACjB,IACE,CAAC,CAAC,IAAI,KAAK,OAAO;oBAClB,CAAC,CAAC,IAAI,KAAK,UAAU;oBACrB,CAAC,CAAC,IAAI,KAAK,QAAQ;oBACnB,CAAC,CAAC,IAAI,KAAK,OAAO;oBAElB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,SAAS,IAAI,CAAC,CAAS,EAAE,MAAe;QACtC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,IAAI;gBAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,IAAI;gBAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,MAAM;gBAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACjD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,cAAc,CACnB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAC/B,CAAC;IACJ,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -61,8 +61,23 @@ export interface BytesLoopVersion {
|
|
|
61
61
|
global: boolean;
|
|
62
62
|
string: boolean;
|
|
63
63
|
}[];
|
|
64
|
-
/** Receivers the guard requires to have no shared storage
|
|
64
|
+
/** Receivers the guard requires to have no shared storage for the fast
|
|
65
|
+
* copy. */
|
|
65
66
|
ownedReceivers: number[];
|
|
67
|
+
/** Worker programs: when the bounds hold but a receiver in
|
|
68
|
+
* `ownedReceivers` has shared storage, the loop runs a second fast copy
|
|
69
|
+
* instead of the checked one. It skips the bounds checks of `bounds` and
|
|
70
|
+
* keeps shared-safe accesses (emitBytesLoopVersionGuard's `sharedFast`). Set
|
|
71
|
+
* when the version proves bounds as well as ownership. */
|
|
72
|
+
sharedCopy: boolean;
|
|
73
|
+
/** The string reads among `bounds`. */
|
|
74
|
+
stringReads: ReadonlySet<Node>;
|
|
75
|
+
/** The version's one string receiver, when the loop may also run over
|
|
76
|
+
* its UTF-16 units if it is not ASCII (string-unit-versions.ts). */
|
|
77
|
+
unitsReceiver: number | null;
|
|
78
|
+
/** The units receiver's `length` reads in the loop. Both fast copies
|
|
79
|
+
* read the length the guard took (its UTF-16 length) in their place. */
|
|
80
|
+
unitLengths: ReadonlySet<IrExpr>;
|
|
66
81
|
fixed: FixedCheck[];
|
|
67
82
|
affine: AffineCheck[];
|
|
68
83
|
/** While loops: accesses at a counter below a loop-invariant bound. */
|
|
@@ -85,6 +100,15 @@ export interface BytesLoopVersion {
|
|
|
85
100
|
/** Integer ranges of affine index operands that hold in the unchecked
|
|
86
101
|
* loop (where the guard bounds the counter). */
|
|
87
102
|
ranges: ReadonlyMap<IrExpr, IntegerRange>;
|
|
103
|
+
/** Typed-array receivers whose element ranges the guard proves disjoint,
|
|
104
|
+
* and the receiver of each of their element reads and writes. The fast
|
|
105
|
+
* copy gives each receiver its own alias scope, so a store to one view
|
|
106
|
+
* leaves the elements of the others in registers. Null when the loop
|
|
107
|
+
* writes no element, or reads and writes a single view. */
|
|
108
|
+
scopes: {
|
|
109
|
+
receivers: number[];
|
|
110
|
+
nodes: ReadonlyMap<Node, number>;
|
|
111
|
+
} | null;
|
|
88
112
|
}
|
|
89
113
|
export interface BytesLoopFacts {
|
|
90
114
|
/** The function's own locals (not module globals). */
|
|
@@ -106,6 +130,9 @@ export interface BytesLoopFacts {
|
|
|
106
130
|
/** String bindings held as a slice of another string (string-slices.ts):
|
|
107
131
|
* they have no string header for the guard to read. */
|
|
108
132
|
scalarStrings: ReadonlySet<string>;
|
|
133
|
+
/** The functions a loop over a string's UTF-16 units may call; absent
|
|
134
|
+
* or null where emitted code does not read the runtime's scan receiver. */
|
|
135
|
+
unitSafeFunctions?: ReadonlySet<string> | null;
|
|
109
136
|
}
|
|
110
137
|
/** Loop versioning for typed-array bounds. A typed array's length and data
|
|
111
138
|
* pointer are fixed at construction (ScrBytes has no resize, transfer or
|
|
@@ -144,6 +171,21 @@ export declare function matchBytesLoopVersion(loop: IrStmt & {
|
|
|
144
171
|
/** Branches to `fast` when every access the version proves is in bounds for
|
|
145
172
|
* every iteration and every view it proves thread-owned has no shared
|
|
146
173
|
* storage, and to `slow` otherwise (including a counted loop whose
|
|
147
|
-
* integer form is not established, or a module receiver not yet set).
|
|
148
|
-
|
|
174
|
+
* integer form is not established, or a module receiver not yet set).
|
|
175
|
+
*
|
|
176
|
+
* With `sharedFast` (a version with `sharedCopy`), the ownership tests are
|
|
177
|
+
* separate: when everything else holds but a view has shared storage, the
|
|
178
|
+
* guard branches to `sharedFast` instead of `slow`.
|
|
179
|
+
*
|
|
180
|
+
* With `unitsFast`, the version's units receiver may instead be a string
|
|
181
|
+
* that is not ASCII: the guard has the runtime publish it as the scan
|
|
182
|
+
* receiver (one read), tests the same accesses against its UTF-16 length,
|
|
183
|
+
* and branches to `unitsFast`. It returns the units pointer that copy
|
|
184
|
+
* reads, which stays valid while the loop runs (string-unit-versions.ts),
|
|
185
|
+
* and for a version with a units receiver, the receiver's UTF-16 length
|
|
186
|
+
* on both fast paths (an i64). */
|
|
187
|
+
export declare function emitBytesLoopVersionGuard(host: LlvmEmitterContext, version: BytesLoopVersion, fast: string, slow: string, unitsFast?: string, sharedFast?: string): {
|
|
188
|
+
units: string | null;
|
|
189
|
+
length: string | null;
|
|
190
|
+
} | null;
|
|
149
191
|
export {};
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { F64 } from "../../ir/ir.js";
|
|
1
|
+
import { BYTES_ELEMENT_SIZE, F64, } from "../../ir/ir.js";
|
|
2
2
|
import { byteNumberAccess } from "../../ir/byte-numbers.js";
|
|
3
3
|
import { everyExprChild, everyStmtChild } from "../../ir/traverse.js";
|
|
4
4
|
import { exactInteger, widenInteger } from "./integer-values.js";
|
|
5
|
-
import { emitCountedLoopLimit, emitCountedLoopSafety, emitExactIntegerTest, } from "./counted-loops.js";
|
|
6
|
-
import { emitBytesHeaderLength, emitBytesSharedStorage } from "./expr-bytes.js";
|
|
5
|
+
import { emitCountedLoopLimit, emitCountedLoopSafety, emitExactIntegerTest, emitStartIntegerTest, } from "./counted-loops.js";
|
|
6
|
+
import { emitBytesData, emitBytesHeaderLength, emitBytesSharedStorage } from "./expr-bytes.js";
|
|
7
7
|
import { f64Lit } from "./common.js";
|
|
8
|
-
import {
|
|
8
|
+
import { InternalCompilerError } from "../../errors.js";
|
|
9
|
+
import { emitStringAsciiFlag, emitStringByteLength, STRING_SCAN_UNITS_DECL, stringScanType, } from "./string-reads.js";
|
|
10
|
+
import { unitSafeLoop } from "./string-unit-versions.js";
|
|
9
11
|
const MAX_COST = 400;
|
|
10
12
|
const MAX_FIXED_END = 2 ** 31;
|
|
11
13
|
const MAX_CHECKS = 8;
|
|
14
|
+
/** Alias-scoped views per loop: the guard tests every pair's ranges. */
|
|
15
|
+
const MAX_SCOPED_RECEIVERS = 6;
|
|
12
16
|
const MAX_OFFSET = 2 ** 31;
|
|
13
17
|
const SAFE = Number.MAX_SAFE_INTEGER;
|
|
14
18
|
/** The range the guard requires of an invariant index term without a
|
|
@@ -412,13 +416,27 @@ export function matchBytesLoopVersion(loop, counted, facts, paired = null) {
|
|
|
412
416
|
else
|
|
413
417
|
fixed.set(receiver, { check: { receiver, end }, nodes: [node] });
|
|
414
418
|
};
|
|
419
|
+
// Element reads and writes of each typed-array receiver, for alias scopes.
|
|
420
|
+
const scoped = new Map();
|
|
421
|
+
const writtenViews = new Set();
|
|
422
|
+
const scope = (node, array, write) => {
|
|
423
|
+
const ref = root(array);
|
|
424
|
+
if (!ref || ref.type.kind !== "bytes")
|
|
425
|
+
return;
|
|
426
|
+
const receiver = receiverOf(ref);
|
|
427
|
+
scoped.set(node, receiver);
|
|
428
|
+
if (write)
|
|
429
|
+
writtenViews.add(receiver);
|
|
430
|
+
};
|
|
415
431
|
const visitExpr = (e) => {
|
|
416
432
|
if (e.kind === "bytesIntrinsic") {
|
|
417
433
|
const numeric = byteNumberAccess(e);
|
|
418
434
|
if (numeric)
|
|
419
435
|
access(e, e.receiver, e.args[numeric.offsetArg], numeric.width);
|
|
420
|
-
else if (e.method === "get" && e.args[0])
|
|
436
|
+
else if (e.method === "get" && e.args[0]) {
|
|
421
437
|
access(e, e.receiver, e.args[0], 1);
|
|
438
|
+
scope(e, e.receiver, false);
|
|
439
|
+
}
|
|
422
440
|
}
|
|
423
441
|
else if (e.kind === "strIntrinsic" &&
|
|
424
442
|
(e.method === "charCodeAt" || e.method === "charAt") &&
|
|
@@ -427,8 +445,10 @@ export function matchBytesLoopVersion(loop, counted, facts, paired = null) {
|
|
|
427
445
|
return everyExprChild(e, visitExpr, visitStmt);
|
|
428
446
|
};
|
|
429
447
|
const visitStmt = (s) => {
|
|
430
|
-
if (s.kind === "bytesSet")
|
|
448
|
+
if (s.kind === "bytesSet") {
|
|
431
449
|
access(s, s.arr, s.index, 1);
|
|
450
|
+
scope(s, s.arr, true);
|
|
451
|
+
}
|
|
432
452
|
return everyStmtChild(s, visitExpr, visitStmt);
|
|
433
453
|
};
|
|
434
454
|
loop.body.every(visitStmt);
|
|
@@ -551,9 +571,35 @@ export function matchBytesLoopVersion(loop, counted, facts, paired = null) {
|
|
|
551
571
|
: [],
|
|
552
572
|
});
|
|
553
573
|
}
|
|
574
|
+
// Alias scopes: at least two views, one of them written, each read only
|
|
575
|
+
// through plain loads (in a worker program, a view the guard proves
|
|
576
|
+
// thread-owned).
|
|
577
|
+
const scopedReceivers = [...new Set(scoped.values())].sort((a, b) => a - b);
|
|
578
|
+
const ownedSet = new Set(ownedKept.map(([receiver]) => receiver));
|
|
579
|
+
const scoping = scopedReceivers.length >= 2 &&
|
|
580
|
+
scopedReceivers.length <= MAX_SCOPED_RECEIVERS &&
|
|
581
|
+
scopedReceivers.some((receiver) => writtenViews.has(receiver)) &&
|
|
582
|
+
(!facts.workers || scopedReceivers.every((receiver) => ownedSet.has(receiver)));
|
|
583
|
+
if (scoping)
|
|
584
|
+
for (const receiver of scopedReceivers)
|
|
585
|
+
used.add(receiver);
|
|
554
586
|
// Renumber the receivers the kept checks use.
|
|
555
587
|
const order = [...used].sort((a, b) => a - b);
|
|
556
588
|
const renumber = new Map(order.map((old, index) => [old, index]));
|
|
589
|
+
const stringReads = new Set();
|
|
590
|
+
for (const group of [...fixedKept, ...affineKept])
|
|
591
|
+
if (receivers[group.check.receiver].string)
|
|
592
|
+
for (const node of group.nodes)
|
|
593
|
+
stringReads.add(node);
|
|
594
|
+
for (const group of boundedKept)
|
|
595
|
+
if (receivers[group.check.receiver].string)
|
|
596
|
+
for (const { node } of group.nodes)
|
|
597
|
+
stringReads.add(node);
|
|
598
|
+
const strings = order.filter((index) => receivers[index].string);
|
|
599
|
+
const unitLengths = facts.unitSafeFunctions != null && strings.length === 1
|
|
600
|
+
? unitSafeLoop(loop, receivers[strings[0]].ref.localId, facts.unitSafeFunctions)
|
|
601
|
+
: null;
|
|
602
|
+
const unitsReceiver = unitLengths !== null ? renumber.get(strings[0]) : null;
|
|
557
603
|
const needsBound = affineKept.length > 0 &&
|
|
558
604
|
counted !== null &&
|
|
559
605
|
(counted.range.min < -bound || counted.range.max > bound);
|
|
@@ -562,6 +608,10 @@ export function matchBytesLoopVersion(loop, counted, facts, paired = null) {
|
|
|
562
608
|
owned: ownedNodes,
|
|
563
609
|
receivers: order.map((index) => receivers[index]),
|
|
564
610
|
ownedReceivers: ownedKept.map(([receiver]) => renumber.get(receiver)),
|
|
611
|
+
sharedCopy: ownedKept.length > 0 && bounds.size > 0,
|
|
612
|
+
stringReads,
|
|
613
|
+
unitsReceiver,
|
|
614
|
+
unitLengths: unitLengths ?? new Set(),
|
|
565
615
|
fixed: fixedKept.map((g) => ({
|
|
566
616
|
receiver: renumber.get(g.check.receiver),
|
|
567
617
|
end: g.check.end,
|
|
@@ -586,6 +636,12 @@ export function matchBytesLoopVersion(loop, counted, facts, paired = null) {
|
|
|
586
636
|
: null,
|
|
587
637
|
counterBound: needsBound ? bound : null,
|
|
588
638
|
ranges,
|
|
639
|
+
scopes: scoping
|
|
640
|
+
? {
|
|
641
|
+
receivers: scopedReceivers.map((receiver) => renumber.get(receiver)),
|
|
642
|
+
nodes: new Map([...scoped].map(([node, receiver]) => [node, renumber.get(receiver)])),
|
|
643
|
+
}
|
|
644
|
+
: null,
|
|
589
645
|
};
|
|
590
646
|
}
|
|
591
647
|
/** `counter = counter + k`, `counter = (counter + k) | 0` or `counter++`. */
|
|
@@ -846,8 +902,20 @@ function findWhileCounterAccesses(loop, host) {
|
|
|
846
902
|
/** Branches to `fast` when every access the version proves is in bounds for
|
|
847
903
|
* every iteration and every view it proves thread-owned has no shared
|
|
848
904
|
* storage, and to `slow` otherwise (including a counted loop whose
|
|
849
|
-
* integer form is not established, or a module receiver not yet set).
|
|
850
|
-
|
|
905
|
+
* integer form is not established, or a module receiver not yet set).
|
|
906
|
+
*
|
|
907
|
+
* With `sharedFast` (a version with `sharedCopy`), the ownership tests are
|
|
908
|
+
* separate: when everything else holds but a view has shared storage, the
|
|
909
|
+
* guard branches to `sharedFast` instead of `slow`.
|
|
910
|
+
*
|
|
911
|
+
* With `unitsFast`, the version's units receiver may instead be a string
|
|
912
|
+
* that is not ASCII: the guard has the runtime publish it as the scan
|
|
913
|
+
* receiver (one read), tests the same accesses against its UTF-16 length,
|
|
914
|
+
* and branches to `unitsFast`. It returns the units pointer that copy
|
|
915
|
+
* reads, which stays valid while the loop runs (string-unit-versions.ts),
|
|
916
|
+
* and for a version with a units receiver, the receiver's UTF-16 length
|
|
917
|
+
* on both fast paths (an i64). */
|
|
918
|
+
export function emitBytesLoopVersionGuard(host, version, fast, slow, unitsFast, sharedFast) {
|
|
851
919
|
const B = host.B;
|
|
852
920
|
const next = (cond) => {
|
|
853
921
|
if (cond === "true")
|
|
@@ -868,32 +936,71 @@ export function emitBytesLoopVersionGuard(host, version, fast, slow) {
|
|
|
868
936
|
}
|
|
869
937
|
return value;
|
|
870
938
|
});
|
|
871
|
-
const
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
939
|
+
const unitsIndex = unitsFast !== undefined ? version.unitsReceiver : null;
|
|
940
|
+
const units = {
|
|
941
|
+
read: null,
|
|
942
|
+
};
|
|
943
|
+
const widen = (len) => {
|
|
875
944
|
if (host.sizeType === "i64")
|
|
876
945
|
return len;
|
|
877
946
|
const wide = B.tmp();
|
|
878
947
|
B.line(`${wide} = zext ${host.sizeType} ${len} to i64`);
|
|
879
948
|
return wide;
|
|
949
|
+
};
|
|
950
|
+
const lengths = receivers.map((receiver, index) => {
|
|
951
|
+
if (index === unitsIndex) {
|
|
952
|
+
const read = emitUnitsLength(host, receiver, () => emitUnitsSpan(host, version, index));
|
|
953
|
+
units.read = read;
|
|
954
|
+
return read.length;
|
|
955
|
+
}
|
|
956
|
+
return widen(version.receivers[index].string
|
|
957
|
+
? emitStringByteLength(host, receiver)
|
|
958
|
+
: emitBytesHeaderLength(host, receiver));
|
|
880
959
|
});
|
|
881
960
|
const conditions = [];
|
|
961
|
+
// The published count is the receiver's UTF-16 length only while the
|
|
962
|
+
// runtime publishes the receiver itself.
|
|
963
|
+
if (units.read)
|
|
964
|
+
conditions.push(units.read.published);
|
|
882
965
|
// A string's byte length is its UTF-16 length when it is ASCII.
|
|
883
966
|
version.receivers.forEach(({ string }, index) => {
|
|
884
|
-
if (string)
|
|
967
|
+
if (string && index !== unitsIndex)
|
|
885
968
|
conditions.push(emitStringAsciiFlag(host, receivers[index]));
|
|
886
969
|
});
|
|
970
|
+
// Without `sharedFast`, shared storage sends the loop to the checked copy
|
|
971
|
+
// with the other failed tests; with it, only to the shared fast copy.
|
|
972
|
+
const ownership = [];
|
|
887
973
|
for (const index of version.ownedReceivers) {
|
|
888
974
|
const owned = B.tmp();
|
|
889
975
|
B.line(`${owned} = icmp eq ptr ${emitBytesSharedStorage(host, receivers[index])}, null`);
|
|
890
|
-
conditions.push(owned);
|
|
976
|
+
(sharedFast !== undefined ? ownership : conditions).push(owned);
|
|
891
977
|
}
|
|
892
978
|
for (const check of version.fixed) {
|
|
893
979
|
const ok = B.tmp();
|
|
894
980
|
B.line(`${ok} = icmp ugt i64 ${lengths[check.receiver]}, ${check.end}`);
|
|
895
981
|
conditions.push(ok);
|
|
896
982
|
}
|
|
983
|
+
if (version.scopes) {
|
|
984
|
+
// Every pair of scoped views covers disjoint bytes: one ends at or
|
|
985
|
+
// before the other starts. An empty view covers none.
|
|
986
|
+
const spans = version.scopes.receivers.map((index) => {
|
|
987
|
+
const type = version.receivers[index].ref.type;
|
|
988
|
+
const start = B.tmp(), size = B.tmp(), end = B.tmp();
|
|
989
|
+
B.line(`${start} = ptrtoint ptr ${emitBytesData(host, receivers[index])} to i64`);
|
|
990
|
+
B.line(`${size} = mul nuw i64 ${lengths[index]}, ${BYTES_ELEMENT_SIZE[type.elem]}`);
|
|
991
|
+
B.line(`${end} = add nuw i64 ${start}, ${size}`);
|
|
992
|
+
return { start, end };
|
|
993
|
+
});
|
|
994
|
+
spans.forEach((a, i) => {
|
|
995
|
+
for (const b of spans.slice(i + 1)) {
|
|
996
|
+
const before = B.tmp(), after = B.tmp(), apart = B.tmp();
|
|
997
|
+
B.line(`${before} = icmp ule i64 ${a.end}, ${b.start}`);
|
|
998
|
+
B.line(`${after} = icmp ule i64 ${b.end}, ${a.start}`);
|
|
999
|
+
B.line(`${apart} = or i1 ${before}, ${after}`);
|
|
1000
|
+
conditions.push(apart);
|
|
1001
|
+
}
|
|
1002
|
+
});
|
|
1003
|
+
}
|
|
897
1004
|
for (const counter of version.counters) {
|
|
898
1005
|
const value = host.emitExpr(counter.ref);
|
|
899
1006
|
// A counter held as an integer (an int32 slot) is exact already and
|
|
@@ -982,7 +1089,7 @@ export function emitBytesLoopVersionGuard(host, version, fast, slow) {
|
|
|
982
1089
|
// Unreachable: every term has a proven range. Stay checked.
|
|
983
1090
|
B.br(slow);
|
|
984
1091
|
B.startBlock(B.newLabel("bytes.version.dead"));
|
|
985
|
-
return;
|
|
1092
|
+
return null;
|
|
986
1093
|
}
|
|
987
1094
|
const wide = widenInteger(host, integer);
|
|
988
1095
|
const sum = B.tmp();
|
|
@@ -1010,8 +1117,9 @@ export function emitBytesLoopVersionGuard(host, version, fast, slow) {
|
|
|
1010
1117
|
// access at either one is in bounds when `lo >= 0` and `hi < length`.
|
|
1011
1118
|
const { loop } = version.paired;
|
|
1012
1119
|
const [low, high] = [loop.low.start, loop.high.start].map((expr) => {
|
|
1013
|
-
const tested =
|
|
1014
|
-
|
|
1120
|
+
const tested = emitStartIntegerTest(host, expr, -SAFE, SAFE);
|
|
1121
|
+
if (tested.ok !== "true")
|
|
1122
|
+
conditions.push(tested.ok);
|
|
1015
1123
|
return tested.integer;
|
|
1016
1124
|
});
|
|
1017
1125
|
const nonNegative = B.tmp();
|
|
@@ -1034,10 +1142,120 @@ export function emitBytesLoopVersionGuard(host, version, fast, slow) {
|
|
|
1034
1142
|
valid = all;
|
|
1035
1143
|
}
|
|
1036
1144
|
}
|
|
1037
|
-
|
|
1038
|
-
|
|
1145
|
+
const length = version.unitsReceiver !== null ? lengths[version.unitsReceiver] : null;
|
|
1146
|
+
const taken = units.read;
|
|
1147
|
+
const target = taken ? B.newLabel("bytes.version.units") : fast;
|
|
1148
|
+
if (sharedFast !== undefined && taken)
|
|
1149
|
+
throw new InternalCompilerError("llvm emitter bug: a shared fast copy with a units copy");
|
|
1150
|
+
if (sharedFast !== undefined && ownership.length > 0) {
|
|
1151
|
+
// The bounds hold: unshared views take the owned copy.
|
|
1152
|
+
const split = B.newLabel("bytes.version.owned");
|
|
1153
|
+
let owned = ownership[0];
|
|
1154
|
+
for (const cond of ownership.slice(1)) {
|
|
1155
|
+
const all = B.tmp();
|
|
1156
|
+
B.line(`${all} = and i1 ${owned}, ${cond}`);
|
|
1157
|
+
owned = all;
|
|
1158
|
+
}
|
|
1159
|
+
if (valid === "true")
|
|
1160
|
+
B.br(split);
|
|
1161
|
+
else
|
|
1162
|
+
B.condBr(valid, split, slow);
|
|
1163
|
+
B.startBlock(split);
|
|
1164
|
+
B.condBr(owned, target, sharedFast);
|
|
1165
|
+
}
|
|
1166
|
+
else if (valid === "true")
|
|
1167
|
+
B.br(target);
|
|
1039
1168
|
else
|
|
1040
|
-
B.condBr(valid,
|
|
1169
|
+
B.condBr(valid, target, slow);
|
|
1170
|
+
if (!taken)
|
|
1171
|
+
return { units: null, length };
|
|
1172
|
+
B.startBlock(target);
|
|
1173
|
+
B.condBr(taken.taken, unitsFast, fast);
|
|
1174
|
+
return { units: taken.pointer, length };
|
|
1175
|
+
}
|
|
1176
|
+
/** The range of indexes a version's loop reads from its units receiver, as
|
|
1177
|
+
* two doubles: a counted loop's start and limit, or a while loop's one
|
|
1178
|
+
* counter and the receiver's bound. Both NaN when the version gives no such
|
|
1179
|
+
* range. The runtime converts the receiver at once only when the range is
|
|
1180
|
+
* long enough to pay for it (scr_str_scan_units_for). */
|
|
1181
|
+
function emitUnitsSpan(host, version, receiver) {
|
|
1182
|
+
// Locals and literals only: they read no string (a `length` of the
|
|
1183
|
+
// receiver would measure it). Anything else leaves the range unbounded.
|
|
1184
|
+
const number = (expr) => {
|
|
1185
|
+
if (expr.kind !== "varRef" && expr.kind !== "numLit")
|
|
1186
|
+
return null;
|
|
1187
|
+
const value = host.emitExpr(expr);
|
|
1188
|
+
return value.type.kind === "f64" ? value.name : null;
|
|
1189
|
+
};
|
|
1190
|
+
const unbounded = { from: "0x7FF8000000000000", to: "0x7FF8000000000000" };
|
|
1191
|
+
const counted = version.counted;
|
|
1192
|
+
let from, to;
|
|
1193
|
+
if (counted)
|
|
1194
|
+
[from, to] = [counted.start, counted.limit];
|
|
1195
|
+
else {
|
|
1196
|
+
const bounded = version.bounded.filter((check) => check.receiver === receiver);
|
|
1197
|
+
if (version.counters.length !== 1 || bounded.length !== 1 || version.paired !== null)
|
|
1198
|
+
return unbounded;
|
|
1199
|
+
[from, to] = [version.counters[0].ref, bounded[0].bound];
|
|
1200
|
+
}
|
|
1201
|
+
const start = number(from), limit = number(to);
|
|
1202
|
+
return start !== null && limit !== null ? { from: start, to: limit } : unbounded;
|
|
1203
|
+
}
|
|
1204
|
+
/** The length of a version's units receiver `s` in UTF-16 units: its byte
|
|
1205
|
+
* length when it is ASCII; otherwise, once it is the scan receiver, the
|
|
1206
|
+
* published unit count (0 when the runtime does not hold its units). When
|
|
1207
|
+
* `s` is not already the scan receiver, the runtime converts it to units
|
|
1208
|
+
* and publishes it if the loop's `span` makes that pay
|
|
1209
|
+
* (scr_str_scan_units_for). Also the units pointer, whether the loop is to
|
|
1210
|
+
* read it, and whether the published receiver is `s`. */
|
|
1211
|
+
function emitUnitsLength(host, s, span) {
|
|
1212
|
+
const B = host.B;
|
|
1213
|
+
const sz = host.sizeType;
|
|
1214
|
+
const type = stringScanType(sz);
|
|
1215
|
+
const ascii = emitStringAsciiFlag(host, s);
|
|
1216
|
+
const bytes = emitStringByteLength(host, s);
|
|
1217
|
+
const from = B.currentLabel();
|
|
1218
|
+
const publish = B.newLabel("bytes.version.publish"), join = B.newLabel("bytes.version.length");
|
|
1219
|
+
B.condBr(ascii, join, publish);
|
|
1220
|
+
B.startBlock(publish);
|
|
1221
|
+
// When `s` is already the scan receiver (an earlier loop over it published
|
|
1222
|
+
// it), its units stay published until the runtime clears the scan: skip
|
|
1223
|
+
// the call. Loops re-entered over one string take that path; the weights
|
|
1224
|
+
// keep the call and its reach out of the loop's code.
|
|
1225
|
+
const held = B.tmp(), holds = B.tmp();
|
|
1226
|
+
B.line(`${held} = load ptr, ptr @scr_str_scan`);
|
|
1227
|
+
B.line(`${holds} = icmp eq ptr ${held}, ${s}`);
|
|
1228
|
+
const call = B.newLabel("bytes.version.publish.units"), load = B.newLabel("bytes.version.publish.load");
|
|
1229
|
+
B.condBr(holds, load, call, `, !prof !{!"branch_weights", i32 1000, i32 1}`);
|
|
1230
|
+
B.startBlock(call);
|
|
1231
|
+
host.declare(STRING_SCAN_UNITS_DECL);
|
|
1232
|
+
const receiver = B.tmp(), same = B.tmp(), pointerSlot = B.tmp(), pointer = B.tmp(), countSlot = B.tmp(), count = B.tmp(), published = B.tmp();
|
|
1233
|
+
const { from: first, to: bound } = span();
|
|
1234
|
+
B.line(`call void @scr_str_scan_units_for(ptr ${s}, double ${first}, double ${bound})`);
|
|
1235
|
+
B.br(load);
|
|
1236
|
+
B.startBlock(load);
|
|
1237
|
+
B.line(`${receiver} = load ptr, ptr @scr_str_scan`);
|
|
1238
|
+
B.line(`${same} = icmp eq ptr ${receiver}, ${s}`);
|
|
1239
|
+
B.line(`${pointerSlot} = getelementptr inbounds ${type}, ptr @scr_str_scan, i32 0, i32 1`);
|
|
1240
|
+
B.line(`${pointer} = load ptr, ptr ${pointerSlot}`);
|
|
1241
|
+
B.line(`${countSlot} = getelementptr inbounds ${type}, ptr @scr_str_scan, i32 0, i32 2`);
|
|
1242
|
+
B.line(`${count} = load ${sz}, ptr ${countSlot}`);
|
|
1243
|
+
B.line(`${published} = select i1 ${same}, ${sz} ${count}, ${sz} 0`);
|
|
1244
|
+
const end = B.currentLabel();
|
|
1245
|
+
B.br(join);
|
|
1246
|
+
B.startBlock(join);
|
|
1247
|
+
const length = B.tmp(), units = B.tmp(), taken = B.tmp();
|
|
1248
|
+
B.line(`${length} = phi ${sz} [ ${bytes}, %${from} ], [ ${published}, %${end} ]`);
|
|
1249
|
+
B.line(`${units} = phi ptr [ null, %${from} ], [ ${pointer}, %${end} ]`);
|
|
1250
|
+
B.line(`${taken} = phi i1 [ false, %${from} ], [ true, %${end} ]`);
|
|
1251
|
+
const exact = B.tmp();
|
|
1252
|
+
B.line(`${exact} = phi i1 [ true, %${from} ], [ ${same}, %${end} ]`);
|
|
1253
|
+
let wide = length;
|
|
1254
|
+
if (sz !== "i64") {
|
|
1255
|
+
wide = B.tmp();
|
|
1256
|
+
B.line(`${wide} = zext ${sz} ${length} to i64`);
|
|
1257
|
+
}
|
|
1258
|
+
return { length: wide, pointer: units, taken, published: exact };
|
|
1041
1259
|
}
|
|
1042
1260
|
function scaleCounter(host, value, scale) {
|
|
1043
1261
|
if (scale === 1)
|