@scriptc/compiler 0.4.1 → 0.4.3
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 +977 -113
- package/dist/backend/cycle-analysis.d.ts +5 -1
- package/dist/backend/cycle-analysis.js +6 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +55 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +9 -1
- package/dist/backend/cycle-mutability.js +21 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +6 -1
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +7 -3
- package/dist/backend/immutability.js +33 -29
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +5 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +23 -4
- package/dist/backend/llvm/alloc.js +61 -8
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
- package/dist/backend/llvm/appended-array-literals.js +44 -36
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +4 -3
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +4 -3
- package/dist/backend/llvm/array-search.js +23 -10
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +1 -1
- package/dist/backend/llvm/blocks.js +2 -2
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/byte-windows.js +2 -0
- package/dist/backend/llvm/byte-windows.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +6 -1
- package/dist/backend/llvm/bytes-alias.js +8 -2
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +70 -7
- package/dist/backend/llvm/bytes-loop-versions.js +567 -30
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +389 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +74 -1
- package/dist/backend/llvm/classes.js +364 -54
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +384 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +10 -6
- package/dist/backend/llvm/common.js +10 -6
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
- package/dist/backend/llvm/constant-callbacks.js +91 -56
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +11 -1
- package/dist/backend/llvm/counted-loops.js +80 -23
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +39 -8
- package/dist/backend/llvm/dense-array-access.js +222 -52
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +36 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +35 -16
- package/dist/backend/llvm/dense-array-loops.js +237 -12
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +140 -15
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +51 -1
- package/dist/backend/llvm/dyn.js +683 -69
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +33 -26
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +93 -0
- package/dist/backend/llvm/emit-journal.js +170 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -0
- package/dist/backend/llvm/emit-module.js +208 -34
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -27
- package/dist/backend/llvm/emit-statements.js +577 -93
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter-state.d.ts +7 -0
- package/dist/backend/llvm/emitter-state.js +14 -0
- package/dist/backend/llvm/emitter-state.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +314 -49
- package/dist/backend/llvm/emitter.js +1241 -129
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +54 -5
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +144 -52
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +47 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +62 -36
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +14 -2
- package/dist/backend/llvm/expr-containers.js +148 -40
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +14 -0
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +71 -16
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +126 -36
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -6
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +12 -0
- package/dist/backend/llvm/expr-records.js +106 -0
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-bridges.js +225 -64
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +200 -50
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
- package/dist/backend/llvm/int32-kind-loops.js +106 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +20 -1
- package/dist/backend/llvm/integer-values.js +71 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +1 -1
- package/dist/backend/llvm/js-ic.js +1 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/key-orders.d.ts +7 -0
- package/dist/backend/llvm/key-orders.js +33 -0
- package/dist/backend/llvm/key-orders.js.map +1 -0
- package/dist/backend/llvm/lib-connect.js +4 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +11 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +90 -2
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +65 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +24 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +16 -6
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +65 -14
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +126 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -30
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +181 -64
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +28 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +33 -0
- package/dist/backend/llvm/loop-state.js +42 -0
- package/dist/backend/llvm/loop-state.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
- package/dist/backend/llvm/map-number-lookup.js +91 -31
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +55 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +4 -2
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +2 -1
- package/dist/backend/llvm/nullable-unions.js +15 -3
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +18 -1
- package/dist/backend/llvm/publish.js +76 -25
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +7 -2
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +1 -9
- package/dist/backend/llvm/record-results.js +2 -11
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +7 -2
- package/dist/backend/llvm/reference-writes.js +91 -72
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/running-extrema.d.ts +11 -0
- package/dist/backend/llvm/running-extrema.js +115 -0
- package/dist/backend/llvm/running-extrema.js.map +1 -0
- package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
- package/dist/backend/llvm/running-extrema.test.js +89 -0
- package/dist/backend/llvm/running-extrema.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +79 -21
- package/dist/backend/llvm/shapes.js +233 -42
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +53 -7
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +6 -0
- package/dist/backend/llvm/speculative-integers.js +2 -2
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +3 -2
- package/dist/backend/llvm/stack-objects.js +5 -2
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +15 -0
- package/dist/backend/llvm/string-reads.js +128 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -0
- package/dist/backend/llvm/walk-borrows.js +46 -41
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +3 -0
- package/dist/backend/llvm/walkers.js +88 -65
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
- package/dist/backend/llvm/wrapping-sums.js +126 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +3 -0
- package/dist/backend/mangle.js +5 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +8 -10
- package/dist/backend/may-throw.js +14 -10
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +27 -4
- package/dist/backend/native/executable.js +31 -8
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +11 -6
- package/dist/backend/native-codegen.js +36 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +0 -23
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +18 -4
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/optimization.d.ts +2 -2
- package/dist/backend/publication.d.ts +12 -1
- package/dist/backend/publication.js +37 -14
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/publication.test.js +30 -0
- package/dist/backend/publication.test.js.map +1 -1
- package/dist/backend/result-slots.d.ts +16 -0
- package/dist/backend/result-slots.js +23 -0
- package/dist/backend/result-slots.js.map +1 -0
- 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 +2 -1
- package/dist/backend/runtime-pack-core.js +2 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +5 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +10 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +2 -1
- package/dist/backend/stack-observations.js +67 -42
- package/dist/backend/stack-observations.js.map +1 -1
- package/dist/backend/target-diagnostics.js +33 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +4 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +26 -6
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +5 -1
- package/dist/cli/usage.js +10 -5
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +1 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +5 -4
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.js +10 -2
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +30 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +5 -1
- package/dist/diagnostics/envelope.js +6 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +25 -1
- package/dist/executable/executable-cache.js +60 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +46 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +41 -0
- package/dist/frontend/decl-projection.js +854 -0
- package/dist/frontend/decl-projection.js.map +1 -0
- package/dist/frontend/decl-projection.test.d.ts +1 -0
- package/dist/frontend/decl-projection.test.js +30 -0
- package/dist/frontend/decl-projection.test.js.map +1 -0
- package/dist/frontend/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +15 -0
- package/dist/frontend/dts-paths.js +25 -0
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +6 -0
- package/dist/frontend/input-tracker.js +51 -28
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +19 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +103 -4
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +13 -2
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +4 -2
- package/dist/frontend/lowering/builtins/crypto.js +136 -5
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +12 -1
- package/dist/frontend/lowering/builtins/ecdh.js +7 -7
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +2 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +18 -6
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +3 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
- package/dist/frontend/lowering/builtins/promises.js +91 -4
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js +2 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +7 -2
- package/dist/frontend/lowering/builtins/readline.js +58 -9
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +1 -1
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +28 -4
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +6 -3
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +13 -6
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
- package/dist/frontend/lowering/class-callbacks.js +82 -12
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +6 -2
- package/dist/frontend/lowering/class-construction.js +25 -16
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +73 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1334 -259
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +124 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +2 -1
- package/dist/frontend/lowering/class-iterables.js +9 -1
- package/dist/frontend/lowering/class-iterables.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +35 -9
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +7 -0
- package/dist/frontend/lowering/class-protocols.js +64 -4
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +67 -5
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
- package/dist/frontend/lowering/class-runtime-statics.js +29 -4
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.js +25 -5
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +6 -5
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +99 -8
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +352 -31
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +12 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +25 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +21 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +21 -9
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
- package/dist/frontend/lowering/containers/bytes.js +131 -29
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +15 -9
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
- package/dist/frontend/lowering/containers/indexed-objects.js +54 -14
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +87 -14
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +45 -20
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.js +25 -4
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +218 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/divergences.js +9 -1
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +51 -2
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +62 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +81 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +107 -14
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +79 -11
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +130 -6
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -3
- package/dist/frontend/lowering/expressions/object-literals.js +164 -56
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +17 -5
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +0 -4
- package/dist/frontend/lowering/expressions/property-access.js +211 -17
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +267 -30
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js +4 -0
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +85 -12
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +28 -0
- package/dist/frontend/lowering/frozen-records.js +322 -0
- package/dist/frontend/lowering/frozen-records.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +49 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +42 -1
- package/dist/frontend/lowering/generic-functions.js +455 -20
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-values.d.ts +49 -0
- package/dist/frontend/lowering/iterable-values.js +297 -0
- package/dist/frontend/lowering/iterable-values.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +195 -9
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
- package/dist/frontend/lowering/js-class-fields.js +45 -10
- package/dist/frontend/lowering/js-class-fields.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +24 -4
- package/dist/frontend/lowering/key-order-witness.js +790 -25
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +466 -10
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +7 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +11 -0
- package/dist/frontend/lowering/lower-calls.js +776 -126
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +29 -2
- package/dist/frontend/lowering/lower-classes.js +581 -46
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +6 -3
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +126 -13
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +11 -0
- package/dist/frontend/lowering/lower-functions.js +387 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +41 -31
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +6 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +28 -12
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +47 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +9 -4
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +239 -61
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
- package/dist/frontend/lowering/lower-stdlib.js +42 -10
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
- package/dist/frontend/lowering/lower-stmts.js +622 -68
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +20 -2
- package/dist/frontend/lowering/lower-stream.js +2055 -318
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +4 -3
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +197 -29
- package/dist/frontend/lowering/lowerer.js +862 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
- package/dist/frontend/lowering/module-namespace-elements.js +82 -5
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/new-target.d.ts +12 -0
- package/dist/frontend/lowering/new-target.js +280 -0
- package/dist/frontend/lowering/new-target.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +2 -2
- package/dist/frontend/lowering/static-typeof.js +42 -3
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +60 -32
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/undefined-index.d.ts +27 -0
- package/dist/frontend/lowering/undefined-index.js +82 -0
- package/dist/frontend/lowering/undefined-index.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +66 -16
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +18 -0
- package/dist/frontend/npm-static-bundled-chunks.js +9 -11
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +8 -0
- package/dist/frontend/npm-static.js +51 -22
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +3 -0
- package/dist/frontend/package-shims.js +71 -8
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.js +18 -10
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +25 -0
- package/dist/frontend/process-fork.js +2 -0
- package/dist/frontend/process-fork.js.map +1 -0
- package/dist/frontend/program.d.ts +21 -1
- package/dist/frontend/program.js +586 -74
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +44 -4
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/services.d.ts +6 -0
- package/dist/frontend/services.js +18 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/token-equivalence.d.ts +3 -0
- package/dist/frontend/token-equivalence.js +409 -0
- package/dist/frontend/token-equivalence.js.map +1 -0
- package/dist/frontend/token-equivalence.test.d.ts +1 -0
- package/dist/frontend/token-equivalence.test.js +67 -0
- package/dist/frontend/token-equivalence.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +43 -7
- package/dist/frontend/ts7/ast-node.js +1176 -129
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +84 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +29 -3
- package/dist/frontend/ts7/ast-wire.js +144 -31
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.test.js +23 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +3 -4
- package/dist/frontend/ts7/checker-backend.js +2 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +5 -9
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +17 -1
- package/dist/frontend/ts7/checker.js +82 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
- package/dist/frontend/ts7/lib-diagnostics.js +307 -0
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +7 -0
- package/dist/frontend/ts7/program-host.js +30 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +15 -0
- package/dist/frontend/ts7/semantic-model.js +67 -19
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +14 -1
- package/dist/frontend/ts7/session.js +23 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +51 -7
- package/dist/frontend/type-mapper.js +456 -43
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +435 -89
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +5 -3
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +4 -0
- package/dist/ir/array-length-stability.js +26 -6
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +49 -0
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.d.ts +7 -0
- package/dist/ir/builtin-effects.js +80 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -1
- package/dist/ir/builtin-signatures.js +303 -21
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +2 -1
- package/dist/ir/callback-specialization.js +23 -18
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +19 -0
- package/dist/ir/char-unit-locals.js +185 -0
- package/dist/ir/char-unit-locals.js.map +1 -0
- package/dist/ir/char-unit-locals.test.d.ts +1 -0
- package/dist/ir/char-unit-locals.test.js +94 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +3 -1
- package/dist/ir/final-fields.js +15 -17
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +2 -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 +5 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/initializer-bindings.d.ts +2 -1
- package/dist/ir/initializer-bindings.js +27 -20
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +108 -0
- package/dist/ir/int32-arrays.js +831 -0
- package/dist/ir/int32-arrays.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +36 -6
- package/dist/ir/int32-slots.js +370 -171
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +9 -4
- package/dist/ir/integer-loop-facts.js +93 -18
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +202 -40
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +211 -1
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +5 -0
- package/dist/ir/integer-ranges.js +125 -12
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +94 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +87 -9
- package/dist/ir/ir.js +61 -2
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +21 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +19 -2
- package/dist/ir/js-ic.js +95 -11
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +188 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +57 -0
- package/dist/ir/node-index.js +215 -0
- package/dist/ir/node-index.js.map +1 -0
- package/dist/ir/paired-while-loops.d.ts +25 -0
- package/dist/ir/paired-while-loops.js +335 -0
- package/dist/ir/paired-while-loops.js.map +1 -0
- package/dist/ir/paired-while-loops.test.d.ts +1 -0
- package/dist/ir/paired-while-loops.test.js +163 -0
- package/dist/ir/paired-while-loops.test.js.map +1 -0
- package/dist/ir/parameter-versions.d.ts +25 -0
- package/dist/ir/parameter-versions.js +300 -0
- package/dist/ir/parameter-versions.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +60 -15
- package/dist/ir/runtime-features.js +276 -35
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.d.ts +12 -2
- package/dist/ir/serialize.js +16 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +17 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.d.ts +2 -0
- package/dist/ir/traverse.js +29 -5
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +171 -45
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +12 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +6 -1
- package/dist/native/cache.js +28 -5
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +16 -2
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +26 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.d.ts +1 -1
- package/dist/native/executable-cache.js +2 -2
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -1
- package/dist/native/prepare.js +123 -31
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +78 -18
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.test.js +6 -1
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/text-file.d.ts +13 -3
- package/dist/native/text-file.js +63 -9
- package/dist/native/text-file.js.map +1 -1
- package/dist/native/text-file.test.d.ts +1 -0
- package/dist/native/text-file.test.js +49 -0
- package/dist/native/text-file.test.js.map +1 -0
- package/dist/native/toolchain.js +4 -4
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +3 -3
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +21 -21
- package/shims/chalk/v5.ts +688 -0
- package/shims/hono-node-server/v2.ts +645 -0
- package/shims/hot-shots/client.ts +1126 -0
- package/shims/hot-shots/v8-unix-dgram.ts +8 -0
- package/shims/hot-shots/v8.ts +8 -0
- package/shims/undici/core/client.ts +4 -4
- package/surface-manifest.json +44 -52
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { JsIcSites } from "../../ir/js-ic.js";
|
|
2
2
|
import { type ArraySearchKind } from "./array-search.js";
|
|
3
3
|
import type { IrBytesElem, IrExpr, IrFfiCallbackParam, IrFfiImport, IrFunction, IrGlobal, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
|
|
4
|
-
import { type
|
|
5
|
-
import { findInitializedByteLoopBindings } from "./byte-windows.js";
|
|
4
|
+
import { type RuntimeFeatures } from "../../ir/runtime-features.js";
|
|
6
5
|
import { matchBytesLoopVersion } from "./bytes-loop-versions.js";
|
|
7
|
-
import type { IntegerCountedForLoop } from "../../ir/integer-loops.js";
|
|
6
|
+
import type { IntegerCountedForLoop, IntegerPairedForLoop } from "../../ir/integer-loops.js";
|
|
8
7
|
import { type SplitSpan, type StoredSplitSnapshot } from "./split-loops.js";
|
|
8
|
+
import { type ChunkResult, EmitJournal } from "./emit-journal.js";
|
|
9
9
|
import { type IntegerRange, type IntegerRanges } from "../../ir/integer-ranges.js";
|
|
10
10
|
import { type Int32Slots } from "../../ir/int32-slots.js";
|
|
11
11
|
import { type FinalFields } from "../../ir/final-fields.js";
|
|
@@ -23,9 +23,11 @@ import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
|
|
|
23
23
|
import { InlineUnionFields } from "./inline-unions.js";
|
|
24
24
|
import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
|
|
25
25
|
import { CheckedNarrows } from "./checked-narrows.js";
|
|
26
|
+
import { type ArrayAccess } from "./dense-array-access.js";
|
|
26
27
|
import { type MapReadLifetimes } from "./map-read-lifetimes.js";
|
|
27
28
|
import { type MapEntryFusion } from "./map-entry-fusion.js";
|
|
28
29
|
import { type WalkBorrowHost } from "./walk-borrows.js";
|
|
30
|
+
import { IrNodeIndex } from "../../ir/node-index.js";
|
|
29
31
|
import { ReferenceEffects } from "./reference-effects.js";
|
|
30
32
|
import { ReferenceWrites, type Writes } from "./reference-writes.js";
|
|
31
33
|
import { LlvmDebugInfo } from "./debug-info.js";
|
|
@@ -64,9 +66,31 @@ export interface LlScopeEntry {
|
|
|
64
66
|
* environment, which skip the release call. */
|
|
65
67
|
lazy?: boolean;
|
|
66
68
|
}
|
|
69
|
+
/** Process primitives for forked emission workers. */
|
|
70
|
+
export interface ForkPrimitives {
|
|
71
|
+
/** 0 in the worker, the worker's pid in the parent, -1 on failure. */
|
|
72
|
+
fork(): number;
|
|
73
|
+
/** Ends the worker without running exit handlers. */
|
|
74
|
+
exit(code: number): void;
|
|
75
|
+
/** The worker's exit status, 128 plus a signal number, or -1. */
|
|
76
|
+
wait(pid: number): number;
|
|
77
|
+
}
|
|
67
78
|
export interface LlvmTargetOptions {
|
|
68
79
|
/** C ABI target; omitted direct emission uses the host ABI. */
|
|
69
80
|
targetTriple?: string;
|
|
81
|
+
/** Emit the function bodies in this many contiguous ranges, each by its
|
|
82
|
+
* own emitter, and merge them in function order (emit-journal.ts). The
|
|
83
|
+
* output is the same as one emitter's. Debug builds (`debugSources`)
|
|
84
|
+
* emit in one emitter. */
|
|
85
|
+
functionChunks?: number;
|
|
86
|
+
/** Emit the function bodies of a large module on this many forked worker
|
|
87
|
+
* processes at a time (emit-module.ts), forked with `forkPrimitives`. The
|
|
88
|
+
* output is the same as one emitter's. Debug builds (`debugSources`)
|
|
89
|
+
* emit in one emitter. */
|
|
90
|
+
functionWorkers?: number;
|
|
91
|
+
/** The host's process primitives, where it can fork (the native
|
|
92
|
+
* compiler's). */
|
|
93
|
+
forkPrimitives?: ForkPrimitives | undefined;
|
|
70
94
|
/** Exact frontend sources for dev-build locations and variable metadata. */
|
|
71
95
|
debugSources?: ReadonlyMap<string, string>;
|
|
72
96
|
/** Pointer width of the target C ABI. Native targets are 64-bit today. */
|
|
@@ -98,8 +122,22 @@ export interface LlvmTargetOptions {
|
|
|
98
122
|
/** Translated WebAssembly memories check bounds explicitly instead of
|
|
99
123
|
* relying on guard pages (wasm-modules.ts wasmBoundsChecks). */
|
|
100
124
|
wasmBoundsChecks?: boolean;
|
|
125
|
+
/** The executable can reserve its program-lifetime region below 32 GiB
|
|
126
|
+
* (lowRegionTarget): fields that refer to compact class instances then
|
|
127
|
+
* store the instance's address over 8 in 32 bits (classes.ts
|
|
128
|
+
* compactRefLoadLines). Elsewhere they keep 8-byte pointers. */
|
|
129
|
+
lowRegion?: boolean;
|
|
101
130
|
}
|
|
131
|
+
/** LlvmTargetOptions.lowRegion for an executable: Linux targets without
|
|
132
|
+
* sanitizers, whose address space below 32 GiB is free (ASan keeps its
|
|
133
|
+
* shadow memory there; other systems map their own images and libraries
|
|
134
|
+
* there). `platform` is a target platform (`linux`, `darwin`, `win32`,
|
|
135
|
+
* `wasi`). */
|
|
136
|
+
export declare function lowRegionTarget(platform: string, sanitize: boolean): boolean;
|
|
102
137
|
export declare function emitLlvmModule(input: IrModule, options?: LlvmTargetOptions): string;
|
|
138
|
+
/** emitLlvmModule's text as parts that concatenate to it, without the copy
|
|
139
|
+
* that joining them makes: a large program's text is 150 MB. */
|
|
140
|
+
export declare function emitLlvmModuleParts(input: IrModule, options?: LlvmTargetOptions): string[];
|
|
103
141
|
/** Keep large translation units below the host's single-string limit. */
|
|
104
142
|
export declare function emitLlvmModuleSource(input: IrModule, options?: LlvmTargetOptions): string | readonly string[];
|
|
105
143
|
export declare function llStrBytes(text: string): string;
|
|
@@ -129,6 +167,8 @@ export declare function boxSlotCount(fn: IrFunction): number;
|
|
|
129
167
|
export declare const MAX_BYTES_LOOP_VERSION_DEPTH = 3;
|
|
130
168
|
export declare class LlEmitter {
|
|
131
169
|
readonly mod: IrModule;
|
|
170
|
+
/** Per-feature state (emitter-state.ts), indexed by each key's slot. */
|
|
171
|
+
readonly moduleStates: unknown[];
|
|
132
172
|
localArrayReads: Map<string, LocalArrayRead>;
|
|
133
173
|
loopArrayBorrows: ReadonlySet<IrStmt>;
|
|
134
174
|
scalarStringSlices: Map<string, {
|
|
@@ -207,6 +247,15 @@ export declare class LlEmitter {
|
|
|
207
247
|
integerArrayBindings: Set<string>;
|
|
208
248
|
readonly fieldAliasTags: Map<string, number>;
|
|
209
249
|
readonly fieldPointerTags: Map<string, number>;
|
|
250
|
+
/** The field pointers (classFieldPtr) of this function whose fields hold
|
|
251
|
+
* 32-bit references to compact class instances (LlClassMeta.compressed):
|
|
252
|
+
* loadField/loadRef decode them and storeField/storeRef encode them. */
|
|
253
|
+
readonly compressedFieldPtrs: Set<string>;
|
|
254
|
+
/** Compact class instances live in the program-lifetime region below
|
|
255
|
+
* 32 GiB (LlvmTargetOptions.lowRegion, and the program has compact
|
|
256
|
+
* classes): main reserves it before compiled code runs (scr_plr_init), and
|
|
257
|
+
* fields and arrays of compactRefType hold 32-bit references. */
|
|
258
|
+
compactRegion: boolean;
|
|
210
259
|
/** Native class fields with different property names cannot occupy the
|
|
211
260
|
* same slot of one object. Inherited views of the same property share a
|
|
212
261
|
* tag. Array storage has its own disjoint categories; untagged runtime
|
|
@@ -216,9 +265,64 @@ export declare class LlEmitter {
|
|
|
216
265
|
/** The alias tag of a runtime word that emitted code reads and writes
|
|
217
266
|
* outside every field (the lifetime-region count, owner and cursors). */
|
|
218
267
|
memoryAliasAttachment(category: string): string;
|
|
268
|
+
/** The current function's int32 array allocations: the array literals
|
|
269
|
+
* its int32 arrays are written with. They construct SCR_ELEM_I32 arrays. */
|
|
270
|
+
int32Allocations: Set<IrExpr>;
|
|
271
|
+
/** The fill temporaries (`new Array(n).fill(v)`) of those allocations:
|
|
272
|
+
* the same arrays, so int32 too. */
|
|
273
|
+
int32ArrayTemps: Set<string>;
|
|
274
|
+
/** The same for the current function's int32 arrays with checked stores,
|
|
275
|
+
* which are only allocated by fills (ir/int32-arrays.ts
|
|
276
|
+
* checkableInt32Allocations): their temporaries' literals, with the fill's
|
|
277
|
+
* length (a literal constructs SCR_ELEM_I32 storage when that length is at
|
|
278
|
+
* least CHECKED_INT32_MIN_LENGTH, SCR_ELEM_F64 otherwise), and their
|
|
279
|
+
* temporaries. */
|
|
280
|
+
checkedAllocations: Map<IrExpr, IrExpr>;
|
|
281
|
+
checkedArrayTemps: Set<string>;
|
|
282
|
+
/** The fill calls (`.fill(v)`) of those allocations: a value that is not
|
|
283
|
+
* an int32 widens the new array first. */
|
|
284
|
+
checkedFills: Set<IrExpr>;
|
|
285
|
+
/** Collect the int32 allocations of `fn`, about to be emitted. */
|
|
286
|
+
findInt32Allocations(fn: IrFunction): void;
|
|
287
|
+
/** Whether `arr` reads one of the int32 arrays (ir/int32-arrays.ts, kept
|
|
288
|
+
* by the int32 slot analysis): a local or parameter of the current
|
|
289
|
+
* function, or a module global. */
|
|
290
|
+
int32Array(arr: IrExpr): boolean;
|
|
291
|
+
/** Whether `arr` is one of the current function's int32 arrays with
|
|
292
|
+
* checked stores: int32 slots until a store widens it to doubles. Every
|
|
293
|
+
* access tests its kind (emitByElementKind), except in the fast copy of
|
|
294
|
+
* an int32 kind loop, which reads and writes it as an int32 array. */
|
|
295
|
+
checkedInt32Array(arr: IrExpr): boolean;
|
|
296
|
+
/** Whether the local `localId` holds one of the current function's int32
|
|
297
|
+
* arrays with checked stores. */
|
|
298
|
+
checkedInt32Local(localId: string): boolean;
|
|
299
|
+
/** Whether `arr` is an int32 array with checked stores that the fast copy
|
|
300
|
+
* of the int32 kind loop being emitted holds as an int32 array. */
|
|
301
|
+
int32KindArray(arr: IrExpr): boolean;
|
|
302
|
+
/** Before a store of `value` (of `expr`) into `arr`, in the fast copy of
|
|
303
|
+
* an int32 kind loop: continue when it is an int32 that is not -0, and
|
|
304
|
+
* otherwise leave for the statement's resume point, where it re-executes
|
|
305
|
+
* with kind tests. Returns the value as an i32 when it is at hand as an
|
|
306
|
+
* integer, or null when the store converts the double itself. */
|
|
307
|
+
emitInt32KindStoreCheck(arr: IrExpr, value: LlValue, expr: IrExpr): string | null;
|
|
308
|
+
/** Emit an access to the checked int32 array `array` once per element
|
|
309
|
+
* kind: `arm("i32", widened)` while it holds int32 slots and
|
|
310
|
+
* `arm("f64", widened)` after it widened, joined after both. `widened` is
|
|
311
|
+
* the label of the double arm, where an int32 arm's store of a value that
|
|
312
|
+
* is not an int32 continues after widening the array. Returns the phi of
|
|
313
|
+
* the arms' results (of LLVM type `ty`), or null when `ty` is null. */
|
|
314
|
+
emitByElementKind(array: string, ty: string | null, arm: (acc: "i32" | "f64", widened: string) => string | null): string | null;
|
|
315
|
+
/** Before storing the double `value` (of `expr`) into an int32 arm
|
|
316
|
+
* (emitByElementKind) of the checked int32 array `array`: continue in this
|
|
317
|
+
* arm when it is an int32 that is not -0, or widen the array and continue
|
|
318
|
+
* at `widened`. A value proven an int32 needs no test. */
|
|
319
|
+
emitCheckedInt32Store(array: string, value: string, expr: IrExpr, widened: string): void;
|
|
320
|
+
/** The access an element operation on `arr` (of element type `elem`)
|
|
321
|
+
* takes: int32 arrays read and write their 4-byte slots. */
|
|
322
|
+
arrayAccess(arr: IrExpr, elem: IrType): ArrayAccess;
|
|
219
323
|
/** Whether an element access at `index` of `arr` lies in the hole-free
|
|
220
|
-
* prefix:
|
|
221
|
-
*
|
|
324
|
+
* prefix: a counter of a dense array loop's fast copy indexing one of the
|
|
325
|
+
* arrays its entry test covered. */
|
|
222
326
|
provenDenseIndex(arr: IrExpr, index: IrExpr): boolean;
|
|
223
327
|
fieldAliasAttachment(ptr: string): string;
|
|
224
328
|
fieldAliasMetadata(): string[];
|
|
@@ -322,6 +426,10 @@ export declare class LlEmitter {
|
|
|
322
426
|
}>;
|
|
323
427
|
/** Interned ScrMapOps descriptors (scr_map.h): initializer → symbol. */
|
|
324
428
|
readonly mapOpsConsts: Map<string, string>;
|
|
429
|
+
/** Method-id slots of checked-dynamic method calls
|
|
430
|
+
* (scr_dyn_invoke_prepared_id): method name → symbol of an i32 the
|
|
431
|
+
* runtime fills with the name's id on the first call. */
|
|
432
|
+
readonly methodIdSlots: Map<string, string>;
|
|
325
433
|
/** Type-directed walker functions (JSON serializers, the indent
|
|
326
434
|
* rewriter, union ToString/join) — interned per typeKey/unionId, defs
|
|
327
435
|
* flushed with the shape helpers. */
|
|
@@ -370,6 +478,15 @@ export declare class LlEmitter {
|
|
|
370
478
|
readonly callLifetimes: CallLifetimes;
|
|
371
479
|
readonly constantCallbacks: Map<string, Map<string, string>>;
|
|
372
480
|
currentConstantCallbacks: ReadonlyMap<string, string>;
|
|
481
|
+
/** The current function's running maximum and minimum updates, whose
|
|
482
|
+
* branches are weighted as rarely taken (running-extrema.ts). */
|
|
483
|
+
runningExtrema: ReadonlySet<IrStmt>;
|
|
484
|
+
/** Callback bindings whose closures an enclosing callback loop version
|
|
485
|
+
* proved to hold their known function: calls take the direct entry with
|
|
486
|
+
* no fallback (emitCallbackVersionedLoop). */
|
|
487
|
+
knownCallbacks: Set<string>;
|
|
488
|
+
readonly callbackVersioning: Set<IrStmt>;
|
|
489
|
+
callbackVersionsEnabled: boolean;
|
|
373
490
|
readonly stackCallbacks: StackCallbacks;
|
|
374
491
|
readonly receiverReaders: AmbientReceiverReaders;
|
|
375
492
|
readonly stackCaptures: StackCaptures;
|
|
@@ -412,6 +529,9 @@ export declare class LlEmitter {
|
|
|
412
529
|
/** Module constants that keep one value once initialized
|
|
413
530
|
* (immutability.ts stableGlobals). */
|
|
414
531
|
stableGlobals: ReadonlySet<string>;
|
|
532
|
+
/** Every function body's nodes in walk order (ir/node-index.ts), for the
|
|
533
|
+
* constructor's analyses. */
|
|
534
|
+
readonly nodeIndex: IrNodeIndex;
|
|
415
535
|
private readonly tdzGlobals;
|
|
416
536
|
readonly constantNumericTables: ReadonlyMap<string, ConstantNumericTable>;
|
|
417
537
|
/** Constant-key reads on checked-dynamic objects, each with its own
|
|
@@ -451,9 +571,15 @@ export declare class LlEmitter {
|
|
|
451
571
|
/** Fiberless async functions a stackless coroutine body awaits directly;
|
|
452
572
|
* each gets an inline await entry (emitCoroInlineAwait). */
|
|
453
573
|
readonly inlineAwaitCallees: Set<string>;
|
|
574
|
+
/** Stackless async functions some coroutine body awaits directly: each
|
|
575
|
+
* gets a direct spawn entry (emitCoroDirectAwait). */
|
|
576
|
+
readonly directAwaitCallees: Set<string>;
|
|
454
577
|
/** The async functions whose bodies never suspend and that a direct
|
|
455
578
|
* await may enter in place (selectStacklessAsync). */
|
|
456
579
|
private inlineAwaitable;
|
|
580
|
+
/** Locals whose array literal emitStmts left for the `await Promise.all`
|
|
581
|
+
* that reads them (deferredPromiseAllLocal). */
|
|
582
|
+
private readonly deferredPromiseAllEntries;
|
|
457
583
|
/** The promise a `return` emitted past its finally regions already
|
|
458
584
|
* produced for its adopting await (borrowed from the return's parked
|
|
459
585
|
* slot); that await takes it instead of evaluating its operand. */
|
|
@@ -465,7 +591,10 @@ export declare class LlEmitter {
|
|
|
465
591
|
/** The program calls mock.timers members (moduleUsesMockTimers): timer
|
|
466
592
|
* calls emit scr_test.c's mock-aware entry points. */
|
|
467
593
|
readonly mockTimers: boolean;
|
|
468
|
-
private
|
|
594
|
+
private runtimeFeaturesValue;
|
|
595
|
+
/** The module's runtime features (moduleRuntimeFeatures), found with one
|
|
596
|
+
* walk of the module the first time any of them is read. */
|
|
597
|
+
get runtimeFeatures(): RuntimeFeatures;
|
|
469
598
|
/** Whether timer and tick scheduling goes through the *_als entry
|
|
470
599
|
* points (RuntimeFeatures asyncContext). */
|
|
471
600
|
get schedulesInContext(): boolean;
|
|
@@ -483,9 +612,11 @@ export declare class LlEmitter {
|
|
|
483
612
|
/** Identity-preserving static→dyn capsules for program classes and Web
|
|
484
613
|
* APIs whose values remain directly observable. */
|
|
485
614
|
readonly liveDynRefAdapters: Map<string, LlStreamTypedRefAdapter>;
|
|
486
|
-
private dynBuiltinStreamUse;
|
|
487
615
|
/** See moduleUsesDynBuiltinStream. */
|
|
488
616
|
get usesDynBuiltinStream(): boolean;
|
|
617
|
+
/** A checked-dynamic for-await may hold a native stream: the program
|
|
618
|
+
* links the stream unit (and the dyn-async one the loop needs). */
|
|
619
|
+
get dynForAwaitStreams(): boolean;
|
|
489
620
|
/** Runtime-arm dispatchers for live union values. */
|
|
490
621
|
readonly liveDynUnionRefAdapters: Map<string, string>;
|
|
491
622
|
readonly dynPromiseAdapters: Map<string, string>;
|
|
@@ -607,14 +738,6 @@ export declare class LlEmitter {
|
|
|
607
738
|
* immortal from construction (classes.ts programLifetimeClass). */
|
|
608
739
|
readonly programLifetime: ReadonlySet<string>;
|
|
609
740
|
numericLocals: Map<string, IrLocal>;
|
|
610
|
-
/** Local arrays of the current function that no other binding can hold
|
|
611
|
-
* (ir/array-length-stability.ts). */
|
|
612
|
-
unaliasedArrays: ReadonlySet<string>;
|
|
613
|
-
/** Dense array loops (dense-array-loops.ts) run in this function. */
|
|
614
|
-
denseLoopsEnabled: boolean;
|
|
615
|
-
denseLoopEntries: ReturnType<typeof findInitializedByteLoopBindings>;
|
|
616
|
-
/** The fast copy of a dense array loop being emitted. */
|
|
617
|
-
denseLoop: DenseArrayLoop | null;
|
|
618
741
|
captureIds: Set<string>;
|
|
619
742
|
/** Active induction bindings retain their width independently of size_t. */
|
|
620
743
|
integerLoopBindings: Map<string, {
|
|
@@ -626,7 +749,19 @@ export declare class LlEmitter {
|
|
|
626
749
|
max: number;
|
|
627
750
|
};
|
|
628
751
|
}>;
|
|
629
|
-
|
|
752
|
+
/** Constant number locals whose latest emitted declaration stored an
|
|
753
|
+
* exact integer beside the double, such as `const j = i * 4` in a
|
|
754
|
+
* typed-array loop version: an i64 slot and the integer's range. */
|
|
755
|
+
integerTemps: Map<string, {
|
|
756
|
+
slot: string;
|
|
757
|
+
type: "i64";
|
|
758
|
+
signed: true;
|
|
759
|
+
range: IntegerRange;
|
|
760
|
+
}>;
|
|
761
|
+
/** Integer temps are kept only in optimized synchronous functions: an
|
|
762
|
+
* async or generator body resumes with its locals in its frame, which
|
|
763
|
+
* an entry alloca is not part of. */
|
|
764
|
+
integerTempsEnabled: boolean;
|
|
630
765
|
/** Speculative integer loops (speculative-integers.ts) run in this function. */
|
|
631
766
|
speculativeLoopsEnabled: boolean;
|
|
632
767
|
/** The fast copy of a speculative integer loop being emitted: its
|
|
@@ -636,12 +771,35 @@ export declare class LlEmitter {
|
|
|
636
771
|
resume: Map<IrStmt, string>;
|
|
637
772
|
/** Globals whose double is written back only when the copy is left. */
|
|
638
773
|
deferred: Set<string>;
|
|
774
|
+
/** The loop site's count of bailing entries in a row (a global), and
|
|
775
|
+
* whether this entry completed a speculated write (a slot). A proven
|
|
776
|
+
* integer loop has neither. */
|
|
777
|
+
bails?: string;
|
|
778
|
+
ran?: string;
|
|
639
779
|
} | null;
|
|
780
|
+
/** Speculative loop sites numbered so far in the module. */
|
|
781
|
+
speculativeLoopSites: number;
|
|
640
782
|
/** The ordinary copy being emitted: resume labels still to place. */
|
|
641
783
|
speculationResume: Map<IrStmt, {
|
|
642
784
|
label: string;
|
|
643
785
|
placed: boolean;
|
|
644
786
|
}> | null;
|
|
787
|
+
/** Run once at the top of the next loop copy's header
|
|
788
|
+
* (`enterLoopHeader`): records the ordinary copy's header, or sends the
|
|
789
|
+
* third copy's header there. */
|
|
790
|
+
speculationHeader: ((header: string) => void) | null;
|
|
791
|
+
/** A copy of an int32 kind loop (int32-kind-loops.ts) being emitted: the
|
|
792
|
+
* int32 arrays with checked stores it reads and writes as int32 arrays
|
|
793
|
+
* (the fast copy) or as double arrays (an ordinary copy entered only
|
|
794
|
+
* after they widened), as `function\0local` keys, and where each of the
|
|
795
|
+
* fast copy's writes resumes in the third copy. */
|
|
796
|
+
int32Kinds: {
|
|
797
|
+
int32: Set<string>;
|
|
798
|
+
wide: Set<string>;
|
|
799
|
+
resume: Map<IrStmt, string>;
|
|
800
|
+
} | null;
|
|
801
|
+
/** The resume label of the fast-copy write being emitted. */
|
|
802
|
+
int32KindResume: string | null;
|
|
645
803
|
/** The function being emitted, for speculative globals. */
|
|
646
804
|
speculativeFunction: string;
|
|
647
805
|
/** Every function that writes each number global (computed on demand). */
|
|
@@ -659,20 +817,17 @@ export declare class LlEmitter {
|
|
|
659
817
|
int32Elements: ((arr: IrExpr) => boolean) | null;
|
|
660
818
|
/** Sums whose result only feeds 32-bit conversions (wrapping-sums.ts). */
|
|
661
819
|
wrappingSums: Set<IrExpr>;
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
* function: off in debug and suspending functions and inside a copy. */
|
|
666
|
-
bytesLoopVersionsEnabled: boolean;
|
|
667
|
-
/** Loops being versioned around the statement being emitted: a loop is
|
|
668
|
-
* never versioned inside its own copies, and versions nest boundedly. */
|
|
669
|
-
readonly bytesLoopVersioning: Set<IrStmt>;
|
|
670
|
-
bytesLoopEntries: ReturnType<typeof findInitializedByteLoopBindings> | null;
|
|
671
|
-
bytesLoopFunction: IrFunction | null;
|
|
672
|
-
/** Counted loops whose integer-form safety test an enclosing version
|
|
673
|
-
* guard already passed. */
|
|
674
|
-
readonly provenCountedGuards: Set<IrStmt>;
|
|
820
|
+
/** Number locals of the current function that hold exact integers or NaN
|
|
821
|
+
* (findIntegerOrNaNLocals in wrapping-sums.ts). */
|
|
822
|
+
integerOrNaNLocals: ReadonlyMap<string, IntegerRange>;
|
|
675
823
|
bytesBounds: ReadonlySet<IrExpr | IrStmt>;
|
|
824
|
+
/** The charCodeAt reads standing for charAt reads the emitter rewrote
|
|
825
|
+
* (one-unit tests and switches, charAtUnitRead), with the charAt each
|
|
826
|
+
* stands for: a loop version's proof for the charAt covers its read. */
|
|
827
|
+
readonly charAtUnitReads: Map<IrExpr, IrExpr>;
|
|
828
|
+
/** Worker programs: typed-array accesses whose views an enclosing version
|
|
829
|
+
* guard proved thread-owned. */
|
|
830
|
+
bytesOwned: ReadonlySet<IrExpr | IrStmt>;
|
|
676
831
|
integerViews: Map<string, string>;
|
|
677
832
|
/** Module globals the current function owns outright (initializer
|
|
678
833
|
* bindings): their function-local slot, which stands in for the global. */
|
|
@@ -748,9 +903,17 @@ export declare class LlEmitter {
|
|
|
748
903
|
readonly chainSlots: Map<string, LlValue>;
|
|
749
904
|
logArgSlots: number;
|
|
750
905
|
readonly stackTraces: boolean;
|
|
906
|
+
/** The options this emitter was built with (chunk emitters reuse them). */
|
|
907
|
+
readonly targetOptions: LlvmTargetOptions;
|
|
908
|
+
/** Records the module-level effects of emitting a range of functions,
|
|
909
|
+
* which the emitter that merges the range replays (emit-journal.ts). Null
|
|
910
|
+
* when this emitter emits the whole module itself. */
|
|
911
|
+
journal: EmitJournal | null;
|
|
912
|
+
/** The emitter's hosts forward to `journal` (journal set, or workers). */
|
|
913
|
+
private readonly journaled;
|
|
751
914
|
/** Stack-trace mode: functions no capture can include (no frame push). */
|
|
752
915
|
readonly unframedFunctions: ReadonlySet<string>;
|
|
753
|
-
constructor(mod: IrModule, options: LlvmTargetOptions);
|
|
916
|
+
constructor(mod: IrModule, options: LlvmTargetOptions, journal?: EmitJournal | null);
|
|
754
917
|
/** The borrowed parameters of a hierarchy's vtable slot (empty: owned). */
|
|
755
918
|
virtualSlotBorrowed(rootName: string, slotIndex: number): ReadonlySet<number>;
|
|
756
919
|
/** Optimized emission: no debug-info (dev) posture. */
|
|
@@ -808,10 +971,19 @@ export declare class LlEmitter {
|
|
|
808
971
|
* fiberless, and module evaluation bodies and `dyn` results keep fibers
|
|
809
972
|
* as they do there. The runtime traps if a stackless body ever parks. */
|
|
810
973
|
selectStacklessAsync(fnDefs: string[]): void;
|
|
974
|
+
/** Whether a fiberless body running on its caller's stack needs the
|
|
975
|
+
* frame scr_async_inline_enter/exit keep: it isolates the Error.stack
|
|
976
|
+
* frame chain, which only stack-observing programs push, as a fresh fiber
|
|
977
|
+
* would. Other programs run the body with a plain call. The body runs in
|
|
978
|
+
* its caller's AsyncLocalStorage context either way, as Node runs an async
|
|
979
|
+
* body up to its first await. The frame also counts the bodies running on
|
|
980
|
+
* a fiber's stack for the runtime's trap on a fiberless body that
|
|
981
|
+
* suspends. */
|
|
982
|
+
get fiberlessFrames(): boolean;
|
|
811
983
|
/** The spawn wrapper of a fiberless async function: runs the body on the
|
|
812
|
-
* caller's stack between scr_async_inline_enter/leave
|
|
813
|
-
* fresh promise from its outcome — the
|
|
814
|
-
* without the fiber. */
|
|
984
|
+
* caller's stack (between scr_async_inline_enter/leave when
|
|
985
|
+
* fiberlessFrames) and settles a fresh promise from its outcome — the
|
|
986
|
+
* fiber trampoline's epilogue, without the fiber. */
|
|
815
987
|
emitFiberlessAsyncSpawn(fn: IrFunction, spawnParams: string[]): string[];
|
|
816
988
|
/** Whether `await f(...)` may enter f through its await-call entry. The
|
|
817
989
|
* entry's result is the awaited value of f's own body type; direct calls
|
|
@@ -821,10 +993,23 @@ export declare class LlEmitter {
|
|
|
821
993
|
* place (emitCoroInlineAwait): f never suspends, and its direct call is
|
|
822
994
|
* one an await-call entry could take. */
|
|
823
995
|
inlineAwaitEligible(fnName: string): boolean;
|
|
996
|
+
/** Whether a stackless coroutine body's `await f(...)` may await f's
|
|
997
|
+
* fiber record instead of its promise (emitCoroDirectAwait): f is a
|
|
998
|
+
* stackless async function whose direct call an await-call entry could
|
|
999
|
+
* take. The await consumes the promise, so nothing else can observe it.
|
|
1000
|
+
* Worker programs keep the promise for their stop checkpoint. */
|
|
1001
|
+
directAwaitEligible(fnName: string): boolean;
|
|
1002
|
+
/** A stackless coroutine body's `await f(...)` of a stackless f, without
|
|
1003
|
+
* f's promise object: f's prefix runs as the spawn of a fiber record that
|
|
1004
|
+
* keeps the promise inside. A body still running wakes this coroutine
|
|
1005
|
+
* when it finishes, where its promise's settlement would wake its one
|
|
1006
|
+
* waiter; a finished one takes the settled await's turn. The result (or
|
|
1007
|
+
* the rejection, re-thrown) comes out of the record, which goes. */
|
|
1008
|
+
emitCoroDirectAwait(call: ExprOf<"call">, type: IrType): LlValue;
|
|
824
1009
|
/** The inline await entry of a fiberless async function (`sc_ai_*`): its
|
|
825
|
-
* body on the caller's stack between scr_async_inline_enter/exit
|
|
826
|
-
* its spawn wrapper, returning the result and
|
|
827
|
-
* the awaiting coroutine (emitCoroInlineAwait). */
|
|
1010
|
+
* body on the caller's stack (between scr_async_inline_enter/exit when
|
|
1011
|
+
* fiberlessFrames), as in its spawn wrapper, returning the result and
|
|
1012
|
+
* leaving a throw pending for the awaiting coroutine (emitCoroInlineAwait). */
|
|
828
1013
|
emitAsyncInlineAwaitCall(fn: IrFunction): string[];
|
|
829
1014
|
/** A stackless coroutine body's `await f(...)` of a fiberless f, the
|
|
830
1015
|
* await-call entry's turns without its promise: the body runs in place,
|
|
@@ -833,6 +1018,32 @@ export declare class LlEmitter {
|
|
|
833
1018
|
* the spawn wrapper's promise would. An adopting await (`return f(...)`)
|
|
834
1019
|
* first takes the adoption's then-job turn either way. */
|
|
835
1020
|
emitCoroInlineAwait(call: ExprOf<"call">, adopt: boolean): LlValue;
|
|
1021
|
+
/** The entries of `Promise.all(arg)` that a stackless coroutine body's
|
|
1022
|
+
* await may run in place (emitCoroInlinePromiseAll): `arg` is a non-empty
|
|
1023
|
+
* array literal, or the local whose declaration emitStmts deferred to this
|
|
1024
|
+
* await (deferredPromiseAllEntries), whose every entry is a call to a
|
|
1025
|
+
* never-suspending async function, and the result is an array. Null
|
|
1026
|
+
* otherwise. Consumes a deferred local's entries. */
|
|
1027
|
+
inlinePromiseAllEntries(all: ExprOf<"intrinsic">): ExprOf<"arrayLit"> | null;
|
|
1028
|
+
/** Whether every entry of `entries` is a call an await could run in place
|
|
1029
|
+
* (inlineAwaitEligible) that yields its promise's inner type. */
|
|
1030
|
+
private promiseAllInlineable;
|
|
1031
|
+
/** Whether `stmts[i]` declares a local holding an array literal that only
|
|
1032
|
+
* `stmts[i + 1]` reads, as the operand of `await Promise.all(local)` that
|
|
1033
|
+
* runs first in that statement and may run its entries in place. Nothing
|
|
1034
|
+
* runs between the literal and the await, so the await evaluates the
|
|
1035
|
+
* literal itself (inlinePromiseAllEntries). Debug builds keep the local. */
|
|
1036
|
+
deferredPromiseAllLocal(stmts: readonly IrStmt[], i: number): ExprOf<"arrayLit"> | null;
|
|
1037
|
+
/** A stackless coroutine body's `await Promise.all([f(...), ...])` of
|
|
1038
|
+
* never-suspending calls, with Promise.all's turns and without its
|
|
1039
|
+
* promises: the entries run in place in order and their values fill the
|
|
1040
|
+
* result array. Promise.all queues one reaction job per entry, back to
|
|
1041
|
+
* back, and the last of them settles the result, whose await then takes a
|
|
1042
|
+
* turn: here one turn stands for the entries' jobs and a second for the
|
|
1043
|
+
* await. A throwing entry becomes the rejection the await re-throws from
|
|
1044
|
+
* its turn; the remaining entries still run, and later throws are handled
|
|
1045
|
+
* rejections, as Promise.all's subscriptions make them. */
|
|
1046
|
+
emitCoroInlinePromiseAll(entries: ExprOf<"arrayLit">, type: IrType): LlValue;
|
|
836
1047
|
emitAsyncAwaitCall(fn: IrFunction, argPackLines: string[] | null, adopt?: boolean): string[];
|
|
837
1048
|
emitAsyncScaffolding(): string[];
|
|
838
1049
|
/** Whether `fn`'s body is emitted as an LLVM switched coroutine: every
|
|
@@ -858,6 +1069,8 @@ export declare class LlEmitter {
|
|
|
858
1069
|
/** Interned NUL-terminated C-string constant (the scr_jb_puts /
|
|
859
1070
|
* stringify-indent currency) — `@`-ref, first-use order. */
|
|
860
1071
|
cstr(text: string): string;
|
|
1072
|
+
/** The method-id slot for a constant method name (methodIdSlots). */
|
|
1073
|
+
methodIdSlot(name: string): string;
|
|
861
1074
|
needBadTag(): void;
|
|
862
1075
|
/** The ScrMapOps descriptor holding these operands (ShapeHost.mapOps). */
|
|
863
1076
|
mapOps(operands: readonly string[]): string;
|
|
@@ -975,11 +1188,13 @@ export declare class LlEmitter {
|
|
|
975
1188
|
* releases the dummy (NULL for refcounted kinds) harmlessly. A scalar
|
|
976
1189
|
* call result of the function's return type may be passed as the unwind's
|
|
977
1190
|
* dummy value (see emitUnwind). `poll` marks a worker termination poll
|
|
978
|
-
* (function entry or loop budget), whose test must stay ordered.
|
|
1191
|
+
* (function entry or loop budget), whose test must stay ordered. A
|
|
1192
|
+
* `guard` (an i1) limits the test to the paths where it is true: false
|
|
1193
|
+
* where the joined call could not have left anything pending. */
|
|
979
1194
|
emitPendingCheck(passThrough?: {
|
|
980
1195
|
name: string;
|
|
981
1196
|
type: IrType;
|
|
982
|
-
}, poll?: boolean): void;
|
|
1197
|
+
}, poll?: boolean, guard?: string): void;
|
|
983
1198
|
/** After a runtime call that ALWAYS leaves an exception pending (the
|
|
984
1199
|
* compiler-resolved Node throws): the pending test would always answer
|
|
985
1200
|
* true, so unwind unconditionally. Emission continues in a block with no
|
|
@@ -1068,11 +1283,25 @@ export declare class LlEmitter {
|
|
|
1068
1283
|
* 1 on hierarchy members, then the flattened field list. Runtime error
|
|
1069
1284
|
* classes GEP through %ScrError (their structs live in the runtime; the
|
|
1070
1285
|
* def's [name, message, %code, %cause] order matches the layout). */
|
|
1071
|
-
classFieldPtr(objName: string, className: string, field: string): {
|
|
1286
|
+
classFieldPtr(objName: string, className: string, field: string, refs?: "pointer" | "compressed"): {
|
|
1072
1287
|
ptr: string;
|
|
1073
1288
|
type: IrType;
|
|
1074
1289
|
inline: boolean;
|
|
1290
|
+
compressed: boolean;
|
|
1075
1291
|
};
|
|
1292
|
+
/** Whether values of `t` are NULL or a compact class instance: `C`,
|
|
1293
|
+
* `C | undefined` or `C | null` for a compact class `C`. `C | null |
|
|
1294
|
+
* undefined` is not: its null is a sentinel outside the region. */
|
|
1295
|
+
compactRefType(t: IrType, isCompact?: (className: string) => boolean): boolean;
|
|
1296
|
+
/** Whether arrays of `elem` hold 32-bit references (SCR_ELEM_CREF). */
|
|
1297
|
+
compactArrayElem(elem: IrType): boolean;
|
|
1298
|
+
/** Loads the reference a field pointer addresses: a pointer, or the
|
|
1299
|
+
* decoded 32-bit reference of a compressed field (compressedFieldPtrs).
|
|
1300
|
+
* `tagged`: the load carries the field's alias tags. */
|
|
1301
|
+
loadRef(ptr: string, tagged?: boolean): string;
|
|
1302
|
+
/** Stores `value` (a pointer) through a field pointer: as is, or encoded
|
|
1303
|
+
* as the 32-bit reference of a compressed field. */
|
|
1304
|
+
storeRef(ptr: string, value: string): void;
|
|
1076
1305
|
/** The dynamic class's preorder number (borrowed object; the static class
|
|
1077
1306
|
* names the struct spelling and where the number is, classPreLines). */
|
|
1078
1307
|
loadVtPre(objName: string, staticClassName: string): string;
|
|
@@ -1126,8 +1355,8 @@ export declare class LlEmitter {
|
|
|
1126
1355
|
/** A binding's storage: a module global, a plain local slot, or a boxed
|
|
1127
1356
|
* local (the slot holds the capture BOX; access goes through it). */
|
|
1128
1357
|
matchBytesLoopVersion(s: IrStmt & {
|
|
1129
|
-
kind: "for";
|
|
1130
|
-
}, counted: IntegerCountedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
|
|
1358
|
+
kind: "for" | "while";
|
|
1359
|
+
}, counted: IntegerCountedForLoop | null, paired?: IntegerPairedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
|
|
1131
1360
|
/** The alias tag of a whole-slot load of a binding (module globals only). */
|
|
1132
1361
|
slotAlias(id: string): string;
|
|
1133
1362
|
binding(id: string): {
|
|
@@ -1139,6 +1368,13 @@ export declare class LlEmitter {
|
|
|
1139
1368
|
emitDebugLocal(local: IrLocal, slot: string, arg?: number, captured?: boolean): void;
|
|
1140
1369
|
/** Loads a boxed binding's box pointer out of its slot. */
|
|
1141
1370
|
loadBox(slot: string): string;
|
|
1371
|
+
/** The function a call through `callee` is known to reach (a literal
|
|
1372
|
+
* closure, or a binding the constant-callback census resolves) and the
|
|
1373
|
+
* entry it calls directly. Async and generator functions stay indirect. */
|
|
1374
|
+
knownCallbackTarget(callee: IrExpr): {
|
|
1375
|
+
known: IrFunction;
|
|
1376
|
+
direct: string;
|
|
1377
|
+
} | undefined;
|
|
1142
1378
|
/** The payload slot of a capture box (ScrBox.slot, field 5). */
|
|
1143
1379
|
boxSlot(box: string): string;
|
|
1144
1380
|
boxGet(box: string, t: IrType): string;
|
|
@@ -1218,6 +1454,26 @@ export declare class LlEmitter {
|
|
|
1218
1454
|
* parameter, at the top of the body. */
|
|
1219
1455
|
doubleCopies(fn: IrFunction): string[];
|
|
1220
1456
|
emitFunction(fn: IrFunction): string;
|
|
1457
|
+
/** What this range emitter (chunkEmitter) hands the merging emitter, as
|
|
1458
|
+
* plain data a worker process can write: its journal and the sets and
|
|
1459
|
+
* flags its functions set. */
|
|
1460
|
+
chunkResult(): ChunkResult;
|
|
1461
|
+
/** Merges a range emitter's result (chunkResult) into this emitter, in
|
|
1462
|
+
* the range's order, and answers the rename of the range's text to this
|
|
1463
|
+
* emitter's numbered helpers. Ranges merge in function order. */
|
|
1464
|
+
mergeChunk(chunk: ChunkResult): (text: string) => string;
|
|
1465
|
+
/** Adds a content-named constant a chunk interned. Its symbol is this
|
|
1466
|
+
* emitter's own: a digest collision retries in first-use order, which a
|
|
1467
|
+
* chunk alone does not know. */
|
|
1468
|
+
private addContentEntry;
|
|
1469
|
+
/** Applies a chunk's table entry (EmitJournal.entry) at its place in the
|
|
1470
|
+
* chunk's order: a key this emitter lacks is added, numbered after its
|
|
1471
|
+
* own entries where the table numbers them, and the chunk's name for it
|
|
1472
|
+
* is renamed to this emitter's. */
|
|
1473
|
+
applyJournalEntry(table: string, key: string, value: unknown, names: Map<string, string>, tags: Map<number, number>): void;
|
|
1474
|
+
/** An emitter for a range of this module's functions: the same facts,
|
|
1475
|
+
* empty module-level tables, and a journal of what the range adds. */
|
|
1476
|
+
chunkEmitter(): LlEmitter;
|
|
1221
1477
|
/** The double-ABI entry of a function with an i32 entry: every caller
|
|
1222
1478
|
* that is not a direct call (closures, dispatch, adapters, the runtime)
|
|
1223
1479
|
* enters here. A pending exception passes through to its caller. */
|
|
@@ -1454,9 +1710,15 @@ export declare class LlEmitter {
|
|
|
1454
1710
|
private emitPublish;
|
|
1455
1711
|
/** Branches on "`obj` is published" (rc == SIZE_MAX, or a count of
|
|
1456
1712
|
* UINT32_MAX in the low half for `count` i32: classes.ts
|
|
1457
|
-
* LlClassMeta.idInRc
|
|
1458
|
-
* the
|
|
1713
|
+
* LlClassMeta.idInRc, or the top bit of a compact header word for
|
|
1714
|
+
* "compact": classes.ts COMPACT_PUBLISHED); leaves the builder in the cold
|
|
1715
|
+
* block and answers the continuation label. */
|
|
1459
1716
|
private emitPublishedTest;
|
|
1717
|
+
/** Branches on "the array `arr` is frozen" (SCR_ARR_FROZEN in its storage
|
|
1718
|
+
* flags, scr_array.h), or published too when `published`; like
|
|
1719
|
+
* emitPublishedTest, leaves the builder in the cold block and answers the
|
|
1720
|
+
* continuation label. */
|
|
1721
|
+
private emitFrozenArrayTest;
|
|
1460
1722
|
private publishedNamesSym;
|
|
1461
1723
|
/** The class-name table the hierarchy field guards index by preorder. */
|
|
1462
1724
|
publishedClassNamesDefs(): string[];
|
|
@@ -1471,7 +1733,7 @@ export declare class LlEmitter {
|
|
|
1471
1733
|
emitPublishedFieldGuard(obj: string, className: string | null, field: string): void;
|
|
1472
1734
|
/** The frozen-array guard (scr_throw_published_array's ops): `index` and
|
|
1473
1735
|
* `count` are doubles (the written index, the argument count). */
|
|
1474
|
-
emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string): void;
|
|
1736
|
+
emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string, third?: string | null): void;
|
|
1475
1737
|
/** The published Map/Set guard: "Cannot modify a published Map/Set". */
|
|
1476
1738
|
emitPublishedCollectionGuard(m: string, t: IrType): void;
|
|
1477
1739
|
emitSerializationExpr(e: ExprOf<"jsonStringify" | "dynCheck">): LlValue;
|
|
@@ -1547,6 +1809,9 @@ export declare class LlEmitter {
|
|
|
1547
1809
|
jsIcSite(): string;
|
|
1548
1810
|
/** A fresh read-site cache for one constant-key dyn read. */
|
|
1549
1811
|
dynReadIcSite(): string;
|
|
1812
|
+
/** A fresh speculative loop site: the global that counts its bailing
|
|
1813
|
+
* entries in a row. */
|
|
1814
|
+
speculativeLoopSite(): string;
|
|
1550
1815
|
dynKind(d: string): string;
|
|
1551
1816
|
raceAdapterFor(from: IrType, to: IrType): string;
|
|
1552
1817
|
genResultThunkFor(genT: IrType & {
|
|
@@ -1586,7 +1851,7 @@ export declare class LlEmitter {
|
|
|
1586
1851
|
streamDataAdapter(cbT: IrType & {
|
|
1587
1852
|
kind: "func";
|
|
1588
1853
|
}): string;
|
|
1589
|
-
streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l", doneT: IrType & {
|
|
1854
|
+
streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l" | "c", doneT: IrType & {
|
|
1590
1855
|
kind: "func";
|
|
1591
1856
|
}): string;
|
|
1592
1857
|
fsRenameThunkFor(cbT: IrType & {
|
|
@@ -1601,10 +1866,10 @@ export declare class LlEmitter {
|
|
|
1601
1866
|
zlibBytesThunkFor(cbT: IrType & {
|
|
1602
1867
|
kind: "func";
|
|
1603
1868
|
}): string;
|
|
1604
|
-
streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e", cbT: IrType): string;
|
|
1869
|
+
streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e" | "c" | "v", cbT: IrType): string;
|
|
1605
1870
|
resolveThunkFor(inner: IrType): string;
|
|
1606
1871
|
tagInSet(uName: string, unionId: string, tags: number[]): string;
|
|
1607
|
-
arrPush(arr: string, acc:
|
|
1872
|
+
arrPush(arr: string, acc: ArrayAccess, value: string, element: IrType | null): string;
|
|
1608
1873
|
emitArrayCopyLoop(dst: string, src: string, acc: "f64" | "bool" | "ref"): void;
|
|
1609
1874
|
emitStrIntrinsic(e: IrExpr & {
|
|
1610
1875
|
kind: "strIntrinsic";
|
|
@@ -1630,7 +1895,7 @@ export declare class LlEmitter {
|
|
|
1630
1895
|
emitBytesIndex(receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean): string;
|
|
1631
1896
|
emitBytesData(receiver: string): string;
|
|
1632
1897
|
emitBytesLength(elem: IrBytesElem, receiver: string, bytes: boolean): LlValue;
|
|
1633
|
-
emitBytesGet(elem: IrBytesElem, receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean, invalidNaN?: boolean): LlValue;
|
|
1898
|
+
emitBytesGet(elem: IrBytesElem, receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean, invalidNaN?: boolean, owned?: boolean): LlValue;
|
|
1634
1899
|
emitToUint32(value: string, expr?: IrExpr, uint32?: string): string;
|
|
1635
1900
|
/** Stores a number into its int32-stored local, when it is one. The
|
|
1636
1901
|
* value is proven to be in the local's range, so its low 32 bits are the
|
|
@@ -1641,7 +1906,7 @@ export declare class LlEmitter {
|
|
|
1641
1906
|
* as its incoming double, which is the same number. */
|
|
1642
1907
|
int32LocalValue(localId: string, bits: string, type: IrType): LlValue;
|
|
1643
1908
|
storeIntegerView(localId: string, value: LlValue, expr?: IrExpr): void;
|
|
1644
|
-
emitBytesSet(elem: IrBytesElem, receiver: string, index: LlValue, value: LlValue, indexExpr?: IrExpr, expr?: IrExpr, inBounds?: boolean): void;
|
|
1909
|
+
emitBytesSet(elem: IrBytesElem, receiver: string, index: LlValue, value: LlValue, indexExpr?: IrExpr, expr?: IrExpr, inBounds?: boolean, owned?: boolean): void;
|
|
1645
1910
|
emitBytesIntrinsic(e: IrExpr & {
|
|
1646
1911
|
kind: "bytesIntrinsic";
|
|
1647
1912
|
}): LlValue;
|