@scriptc/compiler 0.4.2 → 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 +397 -37
- package/dist/backend/cycle-analysis.d.ts +4 -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 +7 -0
- package/dist/backend/cycle-mutability.js +19 -1
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +2 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +6 -3
- package/dist/backend/immutability.js +33 -29
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +16 -1
- package/dist/backend/llvm/alloc.js +54 -4
- 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 +21 -9
- 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 +47 -5
- package/dist/backend/llvm/bytes-loop-versions.js +473 -32
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +258 -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 +7 -5
- package/dist/backend/llvm/classes.js +44 -20
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +167 -7
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +9 -3
- package/dist/backend/llvm/common.js +9 -3
- 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 +83 -52
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +7 -0
- package/dist/backend/llvm/counted-loops.js +18 -0
- 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 +17 -1
- package/dist/backend/llvm/dense-array-loops.js +194 -5
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +90 -1
- 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 +26 -0
- package/dist/backend/llvm/dyn.js +352 -61
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +11 -20
- 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 +195 -27
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -4
- package/dist/backend/llvm/emit-statements.js +268 -84
- 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 +176 -37
- package/dist/backend/llvm/emitter.js +724 -85
- 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-bytes.js +34 -12
- 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.js +28 -14
- 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 +129 -37
- 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-dynamic.js +18 -11
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +100 -28
- 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 +194 -65
- 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 +74 -20
- 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 +80 -2
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +4 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +4 -0
- 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-shared.js +73 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +35 -5
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +115 -19
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +14 -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 +10 -0
- package/dist/backend/llvm/publish.js +12 -0
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/receivers.js +6 -1
- 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 +89 -72
- package/dist/backend/llvm/reference-writes.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 +71 -15
- package/dist/backend/llvm/shapes.js +222 -33
- 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-reads.d.ts +12 -0
- package/dist/backend/llvm/string-reads.js +44 -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/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/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 +5 -0
- package/dist/backend/native/executable.js +7 -0
- package/dist/backend/native/executable.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-link-info-core.d.ts +4 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- 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 +1 -0
- package/dist/backend/runtime-pack-core.js +1 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/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 +5 -3
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +3 -3
- package/dist/compat/fetch-profile.js +1 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +4 -3
- 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.js +12 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +3 -0
- package/dist/diagnostics/envelope.js +1 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +2 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/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/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/lowering/array-values.js +100 -2
- package/dist/frontend/lowering/array-values.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.js +13 -2
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +84 -9
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- 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/numbers.js +9 -1
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
- package/dist/frontend/lowering/builtins/promises.js +88 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
- package/dist/frontend/lowering/builtins/readline.js +35 -3
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +24 -1
- package/dist/frontend/lowering/builtins/url.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/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 +4 -1
- package/dist/frontend/lowering/class-construction.js +17 -3
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +39 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.js +766 -108
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +47 -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 +32 -9
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +31 -2
- 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/coercions/structural-plans.js +48 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +91 -1
- package/dist/frontend/lowering/coercions/structural.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.js +338 -18
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +10 -0
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +15 -0
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +19 -8
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +2 -1
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +3 -0
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +7 -2
- 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 +46 -7
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +55 -9
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +43 -19
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.js +15 -1
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.js +9 -1
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/error-methods.js +47 -2
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +47 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +36 -2
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +90 -13
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +33 -4
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +95 -1
- 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 -0
- package/dist/frontend/lowering/expressions/object-literals.js +138 -51
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +12 -0
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.js +113 -11
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +212 -33
- 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 +22 -3
- 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/generic-functions.js +7 -2
- package/dist/frontend/lowering/generic-functions.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 +186 -1
- 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/key-order-witness.d.ts +18 -3
- package/dist/frontend/lowering/key-order-witness.js +770 -22
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +428 -8
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +4 -1
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +7 -0
- package/dist/frontend/lowering/lower-calls.js +443 -41
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +11 -2
- package/dist/frontend/lowering/lower-classes.js +302 -22
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +3 -1
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +10 -2
- 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 +83 -0
- 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 +18 -6
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +32 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +5 -1
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +2 -2
- 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 +30 -0
- 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 +454 -48
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +20 -2
- package/dist/frontend/lowering/lower-stream.js +1483 -156
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +77 -6
- package/dist/frontend/lowering/lowerer.js +313 -29
- package/dist/frontend/lowering/lowerer.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/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/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +18 -6
- 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 +29 -13
- 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.js +4 -20
- 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 +8 -1
- package/dist/frontend/program.js +484 -69
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +43 -3
- package/dist/frontend/program.test.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 +22 -0
- package/dist/frontend/ts7/ast-node.js +1048 -103
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +24 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +4 -3
- package/dist/frontend/ts7/ast-wire.js +34 -24
- 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/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 +4 -0
- package/dist/frontend/ts7/checker.js +7 -0
- package/dist/frontend/ts7/checker.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 +25 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +14 -1
- package/dist/frontend/ts7/session.js +22 -0
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +13 -1
- package/dist/frontend/type-mapper.js +191 -11
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.js +34 -4
- 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 +19 -6
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +24 -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 +52 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +6 -4
- package/dist/ir/builtin-signatures.js +166 -13
- 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 +2 -1
- package/dist/ir/final-fields.js +14 -16
- 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 +3 -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 +24 -2
- package/dist/ir/int32-slots.js +259 -57
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +3 -3
- package/dist/ir/integer-loops.js +14 -6
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +10 -0
- 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 +30 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +70 -7
- package/dist/ir/ir.js +58 -1
- 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 +34 -13
- package/dist/ir/runtime-features.js +152 -38
- 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/traverse.js +18 -6
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +122 -36
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +2 -0
- package/dist/library/ir-policy.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 +21 -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 +119 -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 +2 -0
- 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/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/surface-manifest.json +26 -4
|
@@ -2,11 +2,10 @@ 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
4
|
import { type RuntimeFeatures } from "../../ir/runtime-features.js";
|
|
5
|
-
import { type DenseArrayLoop } from "./dense-array-loops.js";
|
|
6
|
-
import { findInitializedByteLoopBindings } from "./byte-windows.js";
|
|
7
5
|
import { matchBytesLoopVersion } from "./bytes-loop-versions.js";
|
|
8
|
-
import type { IntegerCountedForLoop } from "../../ir/integer-loops.js";
|
|
6
|
+
import type { IntegerCountedForLoop, IntegerPairedForLoop } from "../../ir/integer-loops.js";
|
|
9
7
|
import { type SplitSpan, type StoredSplitSnapshot } from "./split-loops.js";
|
|
8
|
+
import { type ChunkResult, EmitJournal } from "./emit-journal.js";
|
|
10
9
|
import { type IntegerRange, type IntegerRanges } from "../../ir/integer-ranges.js";
|
|
11
10
|
import { type Int32Slots } from "../../ir/int32-slots.js";
|
|
12
11
|
import { type FinalFields } from "../../ir/final-fields.js";
|
|
@@ -24,9 +23,11 @@ import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
|
|
|
24
23
|
import { InlineUnionFields } from "./inline-unions.js";
|
|
25
24
|
import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
|
|
26
25
|
import { CheckedNarrows } from "./checked-narrows.js";
|
|
26
|
+
import { type ArrayAccess } from "./dense-array-access.js";
|
|
27
27
|
import { type MapReadLifetimes } from "./map-read-lifetimes.js";
|
|
28
28
|
import { type MapEntryFusion } from "./map-entry-fusion.js";
|
|
29
29
|
import { type WalkBorrowHost } from "./walk-borrows.js";
|
|
30
|
+
import { IrNodeIndex } from "../../ir/node-index.js";
|
|
30
31
|
import { ReferenceEffects } from "./reference-effects.js";
|
|
31
32
|
import { ReferenceWrites, type Writes } from "./reference-writes.js";
|
|
32
33
|
import { LlvmDebugInfo } from "./debug-info.js";
|
|
@@ -65,9 +66,31 @@ export interface LlScopeEntry {
|
|
|
65
66
|
* environment, which skip the release call. */
|
|
66
67
|
lazy?: boolean;
|
|
67
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
|
+
}
|
|
68
78
|
export interface LlvmTargetOptions {
|
|
69
79
|
/** C ABI target; omitted direct emission uses the host ABI. */
|
|
70
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;
|
|
71
94
|
/** Exact frontend sources for dev-build locations and variable metadata. */
|
|
72
95
|
debugSources?: ReadonlyMap<string, string>;
|
|
73
96
|
/** Pointer width of the target C ABI. Native targets are 64-bit today. */
|
|
@@ -112,6 +135,9 @@ export interface LlvmTargetOptions {
|
|
|
112
135
|
* `wasi`). */
|
|
113
136
|
export declare function lowRegionTarget(platform: string, sanitize: boolean): boolean;
|
|
114
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[];
|
|
115
141
|
/** Keep large translation units below the host's single-string limit. */
|
|
116
142
|
export declare function emitLlvmModuleSource(input: IrModule, options?: LlvmTargetOptions): string | readonly string[];
|
|
117
143
|
export declare function llStrBytes(text: string): string;
|
|
@@ -141,6 +167,8 @@ export declare function boxSlotCount(fn: IrFunction): number;
|
|
|
141
167
|
export declare const MAX_BYTES_LOOP_VERSION_DEPTH = 3;
|
|
142
168
|
export declare class LlEmitter {
|
|
143
169
|
readonly mod: IrModule;
|
|
170
|
+
/** Per-feature state (emitter-state.ts), indexed by each key's slot. */
|
|
171
|
+
readonly moduleStates: unknown[];
|
|
144
172
|
localArrayReads: Map<string, LocalArrayRead>;
|
|
145
173
|
loopArrayBorrows: ReadonlySet<IrStmt>;
|
|
146
174
|
scalarStringSlices: Map<string, {
|
|
@@ -223,9 +251,11 @@ export declare class LlEmitter {
|
|
|
223
251
|
* 32-bit references to compact class instances (LlClassMeta.compressed):
|
|
224
252
|
* loadField/loadRef decode them and storeField/storeRef encode them. */
|
|
225
253
|
readonly compressedFieldPtrs: Set<string>;
|
|
226
|
-
/**
|
|
227
|
-
*
|
|
228
|
-
|
|
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;
|
|
229
259
|
/** Native class fields with different property names cannot occupy the
|
|
230
260
|
* same slot of one object. Inherited views of the same property share a
|
|
231
261
|
* tag. Array storage has its own disjoint categories; untagged runtime
|
|
@@ -235,9 +265,64 @@ export declare class LlEmitter {
|
|
|
235
265
|
/** The alias tag of a runtime word that emitted code reads and writes
|
|
236
266
|
* outside every field (the lifetime-region count, owner and cursors). */
|
|
237
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;
|
|
238
323
|
/** Whether an element access at `index` of `arr` lies in the hole-free
|
|
239
|
-
* prefix:
|
|
240
|
-
*
|
|
324
|
+
* prefix: a counter of a dense array loop's fast copy indexing one of the
|
|
325
|
+
* arrays its entry test covered. */
|
|
241
326
|
provenDenseIndex(arr: IrExpr, index: IrExpr): boolean;
|
|
242
327
|
fieldAliasAttachment(ptr: string): string;
|
|
243
328
|
fieldAliasMetadata(): string[];
|
|
@@ -341,6 +426,10 @@ export declare class LlEmitter {
|
|
|
341
426
|
}>;
|
|
342
427
|
/** Interned ScrMapOps descriptors (scr_map.h): initializer → symbol. */
|
|
343
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>;
|
|
344
433
|
/** Type-directed walker functions (JSON serializers, the indent
|
|
345
434
|
* rewriter, union ToString/join) — interned per typeKey/unionId, defs
|
|
346
435
|
* flushed with the shape helpers. */
|
|
@@ -389,6 +478,9 @@ export declare class LlEmitter {
|
|
|
389
478
|
readonly callLifetimes: CallLifetimes;
|
|
390
479
|
readonly constantCallbacks: Map<string, Map<string, string>>;
|
|
391
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>;
|
|
392
484
|
/** Callback bindings whose closures an enclosing callback loop version
|
|
393
485
|
* proved to hold their known function: calls take the direct entry with
|
|
394
486
|
* no fallback (emitCallbackVersionedLoop). */
|
|
@@ -437,6 +529,9 @@ export declare class LlEmitter {
|
|
|
437
529
|
/** Module constants that keep one value once initialized
|
|
438
530
|
* (immutability.ts stableGlobals). */
|
|
439
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;
|
|
440
535
|
private readonly tdzGlobals;
|
|
441
536
|
readonly constantNumericTables: ReadonlyMap<string, ConstantNumericTable>;
|
|
442
537
|
/** Constant-key reads on checked-dynamic objects, each with its own
|
|
@@ -519,6 +614,9 @@ export declare class LlEmitter {
|
|
|
519
614
|
readonly liveDynRefAdapters: Map<string, LlStreamTypedRefAdapter>;
|
|
520
615
|
/** See moduleUsesDynBuiltinStream. */
|
|
521
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;
|
|
522
620
|
/** Runtime-arm dispatchers for live union values. */
|
|
523
621
|
readonly liveDynUnionRefAdapters: Map<string, string>;
|
|
524
622
|
readonly dynPromiseAdapters: Map<string, string>;
|
|
@@ -640,14 +738,6 @@ export declare class LlEmitter {
|
|
|
640
738
|
* immortal from construction (classes.ts programLifetimeClass). */
|
|
641
739
|
readonly programLifetime: ReadonlySet<string>;
|
|
642
740
|
numericLocals: Map<string, IrLocal>;
|
|
643
|
-
/** Local arrays of the current function that no other binding can hold
|
|
644
|
-
* (ir/array-length-stability.ts). */
|
|
645
|
-
unaliasedArrays: ReadonlySet<string>;
|
|
646
|
-
/** Dense array loops (dense-array-loops.ts) run in this function. */
|
|
647
|
-
denseLoopsEnabled: boolean;
|
|
648
|
-
denseLoopEntries: ReturnType<typeof findInitializedByteLoopBindings>;
|
|
649
|
-
/** The fast copy of a dense array loop being emitted. */
|
|
650
|
-
denseLoop: DenseArrayLoop | null;
|
|
651
741
|
captureIds: Set<string>;
|
|
652
742
|
/** Active induction bindings retain their width independently of size_t. */
|
|
653
743
|
integerLoopBindings: Map<string, {
|
|
@@ -672,7 +762,6 @@ export declare class LlEmitter {
|
|
|
672
762
|
* async or generator body resumes with its locals in its frame, which
|
|
673
763
|
* an entry alloca is not part of. */
|
|
674
764
|
integerTempsEnabled: boolean;
|
|
675
|
-
countedLoopsEnabled: boolean;
|
|
676
765
|
/** Speculative integer loops (speculative-integers.ts) run in this function. */
|
|
677
766
|
speculativeLoopsEnabled: boolean;
|
|
678
767
|
/** The fast copy of a speculative integer loop being emitted: its
|
|
@@ -699,6 +788,18 @@ export declare class LlEmitter {
|
|
|
699
788
|
* (`enterLoopHeader`): records the ordinary copy's header, or sends the
|
|
700
789
|
* third copy's header there. */
|
|
701
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;
|
|
702
803
|
/** The function being emitted, for speculative globals. */
|
|
703
804
|
speculativeFunction: string;
|
|
704
805
|
/** Every function that writes each number global (computed on demand). */
|
|
@@ -716,20 +817,14 @@ export declare class LlEmitter {
|
|
|
716
817
|
int32Elements: ((arr: IrExpr) => boolean) | null;
|
|
717
818
|
/** Sums whose result only feeds 32-bit conversions (wrapping-sums.ts). */
|
|
718
819
|
wrappingSums: Set<IrExpr>;
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
* function: off in debug and suspending functions and inside a copy. */
|
|
723
|
-
bytesLoopVersionsEnabled: boolean;
|
|
724
|
-
/** Loops being versioned around the statement being emitted: a loop is
|
|
725
|
-
* never versioned inside its own copies, and versions nest boundedly. */
|
|
726
|
-
readonly bytesLoopVersioning: Set<IrStmt>;
|
|
727
|
-
bytesLoopEntries: ReturnType<typeof findInitializedByteLoopBindings> | null;
|
|
728
|
-
bytesLoopFunction: IrFunction | null;
|
|
729
|
-
/** Counted loops whose integer-form safety test an enclosing version
|
|
730
|
-
* guard already passed. */
|
|
731
|
-
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>;
|
|
732
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>;
|
|
733
828
|
/** Worker programs: typed-array accesses whose views an enclosing version
|
|
734
829
|
* guard proved thread-owned. */
|
|
735
830
|
bytesOwned: ReadonlySet<IrExpr | IrStmt>;
|
|
@@ -808,9 +903,17 @@ export declare class LlEmitter {
|
|
|
808
903
|
readonly chainSlots: Map<string, LlValue>;
|
|
809
904
|
logArgSlots: number;
|
|
810
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;
|
|
811
914
|
/** Stack-trace mode: functions no capture can include (no frame push). */
|
|
812
915
|
readonly unframedFunctions: ReadonlySet<string>;
|
|
813
|
-
constructor(mod: IrModule, options: LlvmTargetOptions);
|
|
916
|
+
constructor(mod: IrModule, options: LlvmTargetOptions, journal?: EmitJournal | null);
|
|
814
917
|
/** The borrowed parameters of a hierarchy's vtable slot (empty: owned). */
|
|
815
918
|
virtualSlotBorrowed(rootName: string, slotIndex: number): ReadonlySet<number>;
|
|
816
919
|
/** Optimized emission: no debug-info (dev) posture. */
|
|
@@ -966,6 +1069,8 @@ export declare class LlEmitter {
|
|
|
966
1069
|
/** Interned NUL-terminated C-string constant (the scr_jb_puts /
|
|
967
1070
|
* stringify-indent currency) — `@`-ref, first-use order. */
|
|
968
1071
|
cstr(text: string): string;
|
|
1072
|
+
/** The method-id slot for a constant method name (methodIdSlots). */
|
|
1073
|
+
methodIdSlot(name: string): string;
|
|
969
1074
|
needBadTag(): void;
|
|
970
1075
|
/** The ScrMapOps descriptor holding these operands (ShapeHost.mapOps). */
|
|
971
1076
|
mapOps(operands: readonly string[]): string;
|
|
@@ -1184,6 +1289,12 @@ export declare class LlEmitter {
|
|
|
1184
1289
|
inline: boolean;
|
|
1185
1290
|
compressed: boolean;
|
|
1186
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;
|
|
1187
1298
|
/** Loads the reference a field pointer addresses: a pointer, or the
|
|
1188
1299
|
* decoded 32-bit reference of a compressed field (compressedFieldPtrs).
|
|
1189
1300
|
* `tagged`: the load carries the field's alias tags. */
|
|
@@ -1244,8 +1355,8 @@ export declare class LlEmitter {
|
|
|
1244
1355
|
/** A binding's storage: a module global, a plain local slot, or a boxed
|
|
1245
1356
|
* local (the slot holds the capture BOX; access goes through it). */
|
|
1246
1357
|
matchBytesLoopVersion(s: IrStmt & {
|
|
1247
|
-
kind: "for";
|
|
1248
|
-
}, counted: IntegerCountedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
|
|
1358
|
+
kind: "for" | "while";
|
|
1359
|
+
}, counted: IntegerCountedForLoop | null, paired?: IntegerPairedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
|
|
1249
1360
|
/** The alias tag of a whole-slot load of a binding (module globals only). */
|
|
1250
1361
|
slotAlias(id: string): string;
|
|
1251
1362
|
binding(id: string): {
|
|
@@ -1343,6 +1454,26 @@ export declare class LlEmitter {
|
|
|
1343
1454
|
* parameter, at the top of the body. */
|
|
1344
1455
|
doubleCopies(fn: IrFunction): string[];
|
|
1345
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;
|
|
1346
1477
|
/** The double-ABI entry of a function with an i32 entry: every caller
|
|
1347
1478
|
* that is not a direct call (closures, dispatch, adapters, the runtime)
|
|
1348
1479
|
* enters here. A pending exception passes through to its caller. */
|
|
@@ -1583,6 +1714,11 @@ export declare class LlEmitter {
|
|
|
1583
1714
|
* "compact": classes.ts COMPACT_PUBLISHED); leaves the builder in the cold
|
|
1584
1715
|
* block and answers the continuation label. */
|
|
1585
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;
|
|
1586
1722
|
private publishedNamesSym;
|
|
1587
1723
|
/** The class-name table the hierarchy field guards index by preorder. */
|
|
1588
1724
|
publishedClassNamesDefs(): string[];
|
|
@@ -1597,7 +1733,7 @@ export declare class LlEmitter {
|
|
|
1597
1733
|
emitPublishedFieldGuard(obj: string, className: string | null, field: string): void;
|
|
1598
1734
|
/** The frozen-array guard (scr_throw_published_array's ops): `index` and
|
|
1599
1735
|
* `count` are doubles (the written index, the argument count). */
|
|
1600
|
-
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;
|
|
1601
1737
|
/** The published Map/Set guard: "Cannot modify a published Map/Set". */
|
|
1602
1738
|
emitPublishedCollectionGuard(m: string, t: IrType): void;
|
|
1603
1739
|
emitSerializationExpr(e: ExprOf<"jsonStringify" | "dynCheck">): LlValue;
|
|
@@ -1673,6 +1809,9 @@ export declare class LlEmitter {
|
|
|
1673
1809
|
jsIcSite(): string;
|
|
1674
1810
|
/** A fresh read-site cache for one constant-key dyn read. */
|
|
1675
1811
|
dynReadIcSite(): string;
|
|
1812
|
+
/** A fresh speculative loop site: the global that counts its bailing
|
|
1813
|
+
* entries in a row. */
|
|
1814
|
+
speculativeLoopSite(): string;
|
|
1676
1815
|
dynKind(d: string): string;
|
|
1677
1816
|
raceAdapterFor(from: IrType, to: IrType): string;
|
|
1678
1817
|
genResultThunkFor(genT: IrType & {
|
|
@@ -1712,7 +1851,7 @@ export declare class LlEmitter {
|
|
|
1712
1851
|
streamDataAdapter(cbT: IrType & {
|
|
1713
1852
|
kind: "func";
|
|
1714
1853
|
}): string;
|
|
1715
|
-
streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l", doneT: IrType & {
|
|
1854
|
+
streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l" | "c", doneT: IrType & {
|
|
1716
1855
|
kind: "func";
|
|
1717
1856
|
}): string;
|
|
1718
1857
|
fsRenameThunkFor(cbT: IrType & {
|
|
@@ -1727,10 +1866,10 @@ export declare class LlEmitter {
|
|
|
1727
1866
|
zlibBytesThunkFor(cbT: IrType & {
|
|
1728
1867
|
kind: "func";
|
|
1729
1868
|
}): string;
|
|
1730
|
-
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;
|
|
1731
1870
|
resolveThunkFor(inner: IrType): string;
|
|
1732
1871
|
tagInSet(uName: string, unionId: string, tags: number[]): string;
|
|
1733
|
-
arrPush(arr: string, acc:
|
|
1872
|
+
arrPush(arr: string, acc: ArrayAccess, value: string, element: IrType | null): string;
|
|
1734
1873
|
emitArrayCopyLoop(dst: string, src: string, acc: "f64" | "bool" | "ref"): void;
|
|
1735
1874
|
emitStrIntrinsic(e: IrExpr & {
|
|
1736
1875
|
kind: "strIntrinsic";
|