@scriptc/compiler 0.3.1 → 0.3.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 +832 -55
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/literals.d.ts +7 -0
- package/dist/backend/literals.js +32 -0
- package/dist/backend/literals.js.map +1 -1
- package/dist/backend/literals.test.js +17 -1
- package/dist/backend/literals.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -4
- package/dist/backend/llvm/alloc.js +63 -25
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +62 -2
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
- package/dist/backend/llvm/appended-array-literals.js +109 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
- package/dist/backend/llvm/appended-array-literals.test.js +90 -0
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
- package/dist/backend/llvm/array-search.d.ts +8 -0
- package/dist/backend/llvm/array-search.js +52 -0
- package/dist/backend/llvm/array-search.js.map +1 -0
- package/dist/backend/llvm/array-search.test.d.ts +1 -0
- package/dist/backend/llvm/array-search.test.js +72 -0
- package/dist/backend/llvm/array-search.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +11 -1
- package/dist/backend/llvm/call-lifetimes.js +74 -4
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +54 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +97 -38
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +2 -2
- package/dist/backend/llvm/common.d.ts +1 -1
- package/dist/backend/llvm/common.js +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +18 -13
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +15 -2
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +6 -0
- package/dist/backend/llvm/dyn.js +84 -11
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +108 -16
- package/dist/backend/llvm/emitter.js +598 -108
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +26 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +174 -7
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +11 -0
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
- package/dist/backend/llvm/expr-callbacks.js +96 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +12 -1
- package/dist/backend/llvm/expr-calls.js +133 -54
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +7 -0
- package/dist/backend/llvm/expr-containers.js +80 -22
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +2 -0
- package/dist/backend/llvm/expr-control.d.ts +8 -0
- package/dist/backend/llvm/expr-control.js +103 -69
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +21 -10
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +7 -0
- package/dist/backend/llvm/expr-primitives.js +53 -51
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +19 -5
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +111 -39
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/inline-unions.d.ts +48 -0
- package/dist/backend/llvm/inline-unions.js +134 -0
- package/dist/backend/llvm/inline-unions.js.map +1 -0
- package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
- package/dist/backend/llvm/inline-unions.test.js +124 -0
- package/dist/backend/llvm/inline-unions.test.js.map +1 -0
- package/dist/backend/llvm/int32-abi.d.ts +18 -2
- package/dist/backend/llvm/int32-abi.js +23 -2
- package/dist/backend/llvm/int32-abi.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +75 -1
- package/dist/backend/llvm/int32-abi.test.js.map +1 -1
- package/dist/backend/llvm/integer-remainder.d.ts +28 -5
- package/dist/backend/llvm/integer-remainder.js +80 -9
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +170 -28
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +181 -5
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +9 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +2 -2
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +208 -9
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +12 -6
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +6 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +26 -2
- package/dist/backend/llvm/local-union-storage.js +132 -12
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +107 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
- package/dist/backend/llvm/loop-array-borrows.js +93 -13
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -0
- package/dist/backend/llvm/map-number-lookup.js +66 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
- package/dist/backend/llvm/map-number-lookup.test.js +102 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +3 -1
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +29 -0
- package/dist/backend/llvm/record-results.js +260 -0
- package/dist/backend/llvm/record-results.js.map +1 -0
- package/dist/backend/llvm/reference-effects.js +15 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +29 -9
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +68 -0
- package/dist/backend/llvm/regions.js +314 -0
- package/dist/backend/llvm/regions.js.map +1 -0
- package/dist/backend/llvm/regions.test.d.ts +1 -0
- package/dist/backend/llvm/regions.test.js +173 -0
- package/dist/backend/llvm/regions.test.js.map +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +86 -13
- package/dist/backend/llvm/shapes.js +208 -54
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +68 -9
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +1 -1
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +29 -0
- package/dist/backend/llvm/stack-objects.js +142 -0
- package/dist/backend/llvm/stack-objects.js.map +1 -0
- package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
- package/dist/backend/llvm/stack-objects.test.js +255 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -0
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +89 -9
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.js +5 -4
- package/dist/backend/llvm/switch-dispatch.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +13 -0
- package/dist/backend/llvm/walkers.js +108 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +10 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +7 -2
- package/dist/backend/native/executable.js +28 -2
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -1
- 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 +3 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +1 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +1 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +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 +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.js +17 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +16 -0
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/compat/fetch-profile.js +4 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +2 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +1 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +6 -5
- package/dist/diagnostics/diagnostic.js +7 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/comptime-node.js +2 -2
- package/dist/frontend/comptime-node.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +12 -0
- package/dist/frontend/experimental-import.js +63 -0
- package/dist/frontend/experimental-import.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +1 -1
- package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
- package/dist/frontend/lowering/builtin-calls.js +36 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +8 -4
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
- package/dist/frontend/lowering/builtins/blob.js +167 -0
- package/dist/frontend/lowering/builtins/blob.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.js +3 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/console.d.ts +16 -6
- package/dist/frontend/lowering/builtins/console.js +33 -9
- package/dist/frontend/lowering/builtins/console.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +415 -120
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +20 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
- package/dist/frontend/lowering/builtins/filesystem.js +97 -15
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
- package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
- package/dist/frontend/lowering/builtins/json.d.ts +2 -2
- package/dist/frontend/lowering/builtins/json.js +13 -4
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
- package/dist/frontend/lowering/builtins/key-object.js +56 -0
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +60 -12
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +17 -0
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
- package/dist/frontend/lowering/builtins/operating-system.js +361 -1
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
- package/dist/frontend/lowering/builtins/performance.js +340 -5
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +122 -17
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +109 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
- package/dist/frontend/lowering/builtins/properties.js +39 -11
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
- package/dist/frontend/lowering/builtins/readline.js +266 -90
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +8 -0
- package/dist/frontend/lowering/builtins/url.js +36 -0
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +1 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +20 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
- package/dist/frontend/lowering/checked-promise-all.js +52 -6
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +8 -3
- package/dist/frontend/lowering/class-dynamic-dispatch.js +159 -32
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +3 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.js +6 -5
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +33 -6
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +8 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
- package/dist/frontend/lowering/containers/array-methods.js +43 -2
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +38 -26
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
- package/dist/frontend/lowering/containers/for-of.js +5 -1
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +91 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +77 -12
- package/dist/frontend/lowering/crypto-tables.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
- package/dist/frontend/lowering/cycle-initialization.js +166 -12
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
- 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/expressions/nullish-assignment.js +10 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +21 -68
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +231 -10
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +2 -2
- package/dist/frontend/lowering/generic-functions.js +2 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
- package/dist/frontend/lowering/lifetime-regions.js +216 -0
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +40 -3
- package/dist/frontend/lowering/lower-array-sort.js +661 -194
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +103 -4
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +2 -2
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +248 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +173 -111
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +12 -5
- package/dist/frontend/lowering/lower-classes.js +156 -11
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +4 -4
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.d.ts +13 -0
- package/dist/frontend/lowering/lower-console.js +460 -4
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
- package/dist/frontend/lowering/lower-event-emitter.js +124 -38
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
- package/dist/frontend/lowering/lower-event-target.js +362 -0
- package/dist/frontend/lowering/lower-event-target.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.js +2 -2
- package/dist/frontend/lowering/lower-exprs.js +247 -42
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +15 -7
- package/dist/frontend/lowering/lower-generators.js +183 -99
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
- package/dist/frontend/lowering/lower-inspect.js +247 -28
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +27 -17
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
- package/dist/frontend/lowering/lower-namespaces.js +2 -2
- package/dist/frontend/lowering/lower-server.js +39 -14
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +11 -1
- package/dist/frontend/lowering/lower-stdlib.js +45 -4
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
- package/dist/frontend/lowering/lower-stmts.js +112 -23
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +234 -22
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +45 -6
- package/dist/frontend/lowering/lowerer.js +360 -48
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +2 -2
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
- package/dist/frontend/lowering/regex-span-reads.js +164 -0
- package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
- package/dist/frontend/lowering/runtime-optional-records.js +715 -0
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +7 -3
- package/dist/frontend/lowering/surfaces.js +385 -32
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
- package/dist/frontend/lowering/var-hoisting.js +261 -0
- package/dist/frontend/lowering/var-hoisting.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +1 -1
- package/dist/frontend/npm-static-prune.js +1 -1
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/pipeline.js +6 -4
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +6 -5
- package/dist/frontend/program.js +42 -22
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +13 -0
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +1 -1
- package/dist/frontend/ts7/adapter.js +1 -1
- package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
- package/dist/frontend/ts7/ast-bytes.js +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +1 -1
- package/dist/frontend/ts7/semantic-json.js +1 -1
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/world-check.js +1 -1
- package/dist/frontend/tsc-codes.js +2 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +28 -1
- package/dist/frontend/type-mapper.js +288 -30
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +12 -6
- package/dist/ir/analysis.js +26 -10
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -3
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +108 -2
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +436 -53
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/function-references.test.js +1 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-slots.js +2 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +2 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +129 -36
- package/dist/ir/ir.js +42 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +116 -5
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.js +1 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +1 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +250 -34
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +125 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.d.ts +1 -1
- package/dist/library/fence-eval.js +5 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +11 -4
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-profile.js +13 -13
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +1 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/library/sidecar.js +3 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/prepare.js +3 -2
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +537 -142
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ArraySearchKind } from "./array-search.js";
|
|
1
2
|
import type { IrBytesElem, IrExpr, IrFfiImport, IrFunction, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
|
|
2
3
|
import { type SplitSpan } from "./split-loops.js";
|
|
3
4
|
import { type IntegerRanges } from "../../ir/integer-ranges.js";
|
|
@@ -7,8 +8,10 @@ import { type Int32Local } from "./int32-locals.js";
|
|
|
7
8
|
import { type ConstantNumericTable } from "../../ir/constant-tables.js";
|
|
8
9
|
import { type FfiCallbackAdapter } from "../ffi-callbacks.js";
|
|
9
10
|
import { type CallLifetimes } from "./call-lifetimes.js";
|
|
11
|
+
import { type UnionSources } from "./local-union-storage.js";
|
|
10
12
|
import { BlockBuilder } from "./blocks.js";
|
|
11
13
|
import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
|
|
14
|
+
import { InlineUnionFields } from "./inline-unions.js";
|
|
12
15
|
import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
|
|
13
16
|
import { CheckedNarrows } from "./checked-narrows.js";
|
|
14
17
|
import { type MapReadLifetimes } from "./map-read-lifetimes.js";
|
|
@@ -18,11 +21,12 @@ import { StackCallbacks } from "./stack-callbacks.js";
|
|
|
18
21
|
import { AmbientReceiverReaders } from "./constant-callbacks.js";
|
|
19
22
|
import { type StringSliceSnapshot } from "./string-slices.js";
|
|
20
23
|
import { type PublishedTypes } from "../publication.js";
|
|
24
|
+
import { type BytesThunkValue } from "./expr-stream-callbacks.js";
|
|
21
25
|
import { type LlClassMeta } from "./classes.js";
|
|
22
26
|
import { LlDyn, type DynHost } from "./dyn.js";
|
|
23
27
|
import { LlWalkers } from "./walkers.js";
|
|
24
28
|
import { NullableUnions } from "./nullable-unions.js";
|
|
25
|
-
import { type MapKeyAccess } from "./shapes.js";
|
|
29
|
+
import { type InlineRcMode, type MapKeyAccess } from "./shapes.js";
|
|
26
30
|
import type { ExprOf, LibCallExpr, LlStreamTypedRefAdapter, LlValue } from "./expr-context.js";
|
|
27
31
|
export { LlvmUnsupportedError } from "./unsupported.js";
|
|
28
32
|
export interface LlvmTargetOptions {
|
|
@@ -38,16 +42,20 @@ export interface LlvmTargetOptions {
|
|
|
38
42
|
* separate translation unit. Public/direct emission keeps them by default. */
|
|
39
43
|
emitLibraryIdentity?: boolean;
|
|
40
44
|
/** Program objects carry a strong reference to the matching runtime ABI
|
|
41
|
-
* marker so manual
|
|
45
|
+
* marker so a manual link against an incompatible runtime fails. */
|
|
42
46
|
runtimeAbiMarker?: boolean;
|
|
43
47
|
/** Emit live-object audit notes in emitted new/free helpers. Only the
|
|
44
48
|
* sanitized lane's SCR_RC_AUDIT runtime counts them; production plain
|
|
45
49
|
* builds pass false so release/dev objects carry no empty calls.
|
|
46
50
|
* Defaults to true for direct emission. */
|
|
47
51
|
objectAudit?: boolean;
|
|
48
|
-
/** Emit retain/release fast paths inline
|
|
49
|
-
*
|
|
50
|
-
|
|
52
|
+
/** Emit retain/release fast paths inline: `speed` for every family with a
|
|
53
|
+
* fast path, `release` for the string retain and the dyn retain and
|
|
54
|
+
* release (shapes.ts InlineRcMode). Off, every retain and release is a
|
|
55
|
+
* runtime call. */
|
|
56
|
+
inlineRc?: InlineRcMode;
|
|
57
|
+
/** Define the inline RC fast-path helpers `noinline` (sanitized builds). */
|
|
58
|
+
rcHelpersNoinline?: boolean;
|
|
51
59
|
/** Define `scr_detached_exit` so the Linux runtime hands the address-space
|
|
52
60
|
* teardown after `process.exit` to a helper process (`--detached-exit`).
|
|
53
61
|
* Executables only; the runtime's weak default keeps it off. */
|
|
@@ -63,6 +71,10 @@ export declare class LlEmitter {
|
|
|
63
71
|
private scalarStringSlices;
|
|
64
72
|
readonly stringSlices: Map<string, StringSliceSnapshot>;
|
|
65
73
|
private localStackUnions;
|
|
74
|
+
private localStackObjects;
|
|
75
|
+
private reassignedStackObjects;
|
|
76
|
+
/** The binding slot of each reassigned stack-object local. */
|
|
77
|
+
private stackObjectSlots;
|
|
66
78
|
private localUnionStorageProofs;
|
|
67
79
|
private localUnionStorage;
|
|
68
80
|
integerArrayBindings: Set<string>;
|
|
@@ -74,13 +86,18 @@ export declare class LlEmitter {
|
|
|
74
86
|
* operations and record views conservatively alias all of them. */
|
|
75
87
|
private markFieldPointer;
|
|
76
88
|
markMemoryPointer(ptr: string, field: string): void;
|
|
89
|
+
/** The alias tag of a runtime word that emitted code reads and writes
|
|
90
|
+
* outside every field (the lifetime-region count, owner and cursors). */
|
|
91
|
+
memoryAliasAttachment(category: string): string;
|
|
77
92
|
fieldAliasAttachment(ptr: string): string;
|
|
78
93
|
private fieldAliasMetadata;
|
|
79
94
|
private readonly debug;
|
|
95
|
+
/** Projection-only scalar objects may live in frame storage (stack-objects.ts). */
|
|
96
|
+
readonly stackObjects: boolean;
|
|
80
97
|
private debugScope;
|
|
81
98
|
readonly sizeType: "i32" | "i64";
|
|
82
99
|
readonly ffiExtendNarrowIntegers: boolean;
|
|
83
|
-
readonly
|
|
100
|
+
readonly cycleBufOffset: number;
|
|
84
101
|
/** Emitted ScrCycType descriptors so far (their collector statistics
|
|
85
102
|
* indices; see ShapeHost.nextCycKind). */
|
|
86
103
|
private cycKinds;
|
|
@@ -124,6 +141,8 @@ export declare class LlEmitter {
|
|
|
124
141
|
private readonly unitInstances;
|
|
125
142
|
/** unionId → symbol of the union's immortal ABSENT field-slot instance. */
|
|
126
143
|
private readonly absentInstances;
|
|
144
|
+
/** The zeroed box an inline store reads for a NULL union dummy. */
|
|
145
|
+
private needsUnionNone;
|
|
127
146
|
/** unionId → symbol of a flag set once a checked-dynamic cast caches one
|
|
128
147
|
* of the union's boxes. A cached box is refreshed in place, possibly with
|
|
129
148
|
* a tag that another union numbers apart, so it is never shared. */
|
|
@@ -175,7 +194,11 @@ export declare class LlEmitter {
|
|
|
175
194
|
/** Inline RC fast-path helpers requested by call sites (shapes.ts); null
|
|
176
195
|
* when inline RC is off. */
|
|
177
196
|
private readonly rcHelpers;
|
|
197
|
+
private readonly rcMode;
|
|
198
|
+
private readonly rcHelpersNoinline;
|
|
178
199
|
readonly fnByName: Map<string, IrFunction>;
|
|
200
|
+
/** Empty literals that construct with inline slots (appended-array-literals.ts). */
|
|
201
|
+
appendedArrayLiterals: ReadonlySet<IrExpr>;
|
|
179
202
|
/** Emitted LLVM text of every IR function body, by function name: the
|
|
180
203
|
* fiberless-async analysis scans it for suspension entry points. */
|
|
181
204
|
private readonly fnDefText;
|
|
@@ -187,6 +210,8 @@ export declare class LlEmitter {
|
|
|
187
210
|
* whose bindings end with the list (emitBlock and function bodies). */
|
|
188
211
|
private stmtCursor;
|
|
189
212
|
readonly optionalArrayReads: OptionalArrayReads;
|
|
213
|
+
/** Union sources a binding or projection can hold in a stack box. */
|
|
214
|
+
readonly unionSources: UnionSources;
|
|
190
215
|
readonly checkedNarrows: CheckedNarrows;
|
|
191
216
|
callArrayReads: Map<IrExpr, LocalArrayRead>;
|
|
192
217
|
mapReadLifetimes: MapReadLifetimes;
|
|
@@ -278,6 +303,10 @@ export declare class LlEmitter {
|
|
|
278
303
|
* typeKey → thunk symbol. */
|
|
279
304
|
readonly resolveThunks: Map<string, string>;
|
|
280
305
|
readonly resolveThunkDefs: string[];
|
|
306
|
+
/** Inline array searches used by the module (array-search.ts). */
|
|
307
|
+
readonly arraySearchKinds: Set<ArraySearchKind>;
|
|
308
|
+
/** Typed-ref recipe constants by type key (lazy receivers). */
|
|
309
|
+
readonly typedRefRecipes: Map<string, string>;
|
|
281
310
|
/** ReadableStream.from adapters keep typed arrays by reference and box
|
|
282
311
|
* one current element per pull. */
|
|
283
312
|
readonly streamFromArrayAdapters: Map<string, string>;
|
|
@@ -289,6 +318,7 @@ export declare class LlEmitter {
|
|
|
289
318
|
readonly dynPromiseAdapters: Map<string, string>;
|
|
290
319
|
readonly unionsById: Map<string, IrUnionDef>;
|
|
291
320
|
readonly nullableFields: NullableRefFields;
|
|
321
|
+
readonly inlineUnions: InlineUnionFields;
|
|
292
322
|
/** Unions whose values are nullable arm pointers (nullable-unions.ts). */
|
|
293
323
|
readonly nullableUnions: NullableUnions;
|
|
294
324
|
/** The union table without nullable unions: the stack-box analyses. */
|
|
@@ -399,9 +429,12 @@ export declare class LlEmitter {
|
|
|
399
429
|
private tryStack;
|
|
400
430
|
/** Return type of the function being emitted — the unwind path returns
|
|
401
431
|
* a dummy of this type (never read: callers check the flag first). */
|
|
402
|
-
|
|
432
|
+
currentReturnType: IrType;
|
|
403
433
|
/** The current body returns its number result as i32. */
|
|
404
434
|
private currentInt32Result;
|
|
435
|
+
/** The function's i32 entry returns its scalar union result as tag and
|
|
436
|
+
* payload bits (Int32Abi.union). */
|
|
437
|
+
private currentUnionResult;
|
|
405
438
|
/** Active only while emitting a body lowered with LLVM's
|
|
406
439
|
* switched-coroutine intrinsics (wasm32 async bodies and generators,
|
|
407
440
|
* native synchronous generators; see coroLowered). */
|
|
@@ -421,6 +454,8 @@ export declare class LlEmitter {
|
|
|
421
454
|
yieldT: IrType;
|
|
422
455
|
nextT: IrType;
|
|
423
456
|
} | null;
|
|
457
|
+
/** The function being emitted is an async generator body. */
|
|
458
|
+
private currentAsyncGenerator;
|
|
424
459
|
/** Active optional-chain bind slots, by chain id (chainRecv reads). */
|
|
425
460
|
readonly chainSlots: Map<string, LlValue>;
|
|
426
461
|
logArgSlots: number;
|
|
@@ -483,7 +518,7 @@ export declare class LlEmitter {
|
|
|
483
518
|
* programs keep fibers too: their fiber epilogue owns context
|
|
484
519
|
* termination (a stopping worker rejects and observes the promise), which
|
|
485
520
|
* the fiberless wrapper does not reproduce. A missed suspension still
|
|
486
|
-
* cannot reorder
|
|
521
|
+
* cannot reorder execution undetected: the runtime traps when a context parks while a
|
|
487
522
|
* fiberless body is on its stack. */
|
|
488
523
|
private fiberlessAsyncFunctions;
|
|
489
524
|
/** The spawn wrapper of a fiberless async function: runs the body on the
|
|
@@ -567,7 +602,7 @@ export declare class LlEmitter {
|
|
|
567
602
|
* holding the ABSENT state surfaces as the ordinary undefined arm, so
|
|
568
603
|
* absence never travels beyond its slot (a later `{ f: r.f }` is an
|
|
569
604
|
* explicit, present property). */
|
|
570
|
-
loadRecordField(ptr: string, t: IrType): string;
|
|
605
|
+
loadRecordField(ptr: string, t: IrType, inline: boolean): string;
|
|
571
606
|
declare(decl: string): void;
|
|
572
607
|
needOom(): void;
|
|
573
608
|
private currentFrame;
|
|
@@ -671,7 +706,7 @@ export declare class LlEmitter {
|
|
|
671
706
|
unionTag(uName: string, unionId: string): string;
|
|
672
707
|
/** Guard for helpers that build or read a union's `%ScrUnion` box
|
|
673
708
|
* directly (library-shaped unions with fixed arms): a nullable union
|
|
674
|
-
* reaching one is an emitter bug
|
|
709
|
+
* reaching one is an emitter bug and throws InternalCompilerError. */
|
|
675
710
|
requireBoxedUnion(unionId: string): void;
|
|
676
711
|
/** The BORROWED payload pointer of a ref arm (scr_union_peek inlined —
|
|
677
712
|
* the runtime's is a static inline); a nullable union is its payload. */
|
|
@@ -702,6 +737,7 @@ export declare class LlEmitter {
|
|
|
702
737
|
classFieldPtr(objName: string, className: string, field: string): {
|
|
703
738
|
ptr: string;
|
|
704
739
|
type: IrType;
|
|
740
|
+
inline: boolean;
|
|
705
741
|
};
|
|
706
742
|
/** `o->vt->pre` — the dynamic class's preorder number (borrowed object;
|
|
707
743
|
* the static class names which struct spelling carries the vt word). */
|
|
@@ -715,17 +751,35 @@ export declare class LlEmitter {
|
|
|
715
751
|
* same offset on every target. Share one field-read block per matching
|
|
716
752
|
* prefix; class variants retain their own concrete layout dispatch. */
|
|
717
753
|
unionFieldGroups(def: IrUnionDef, field: string): number[][];
|
|
718
|
-
/** The
|
|
754
|
+
/** The zeroed `%ScrUnion` constant (inline-unions.ts unionBoxBits). */
|
|
755
|
+
unionNoneRef(): string;
|
|
756
|
+
/** The field-slot pointer of a record member (rc header at index 0).
|
|
757
|
+
* `inline`: the slot stores a scalar union's tag and bits. */
|
|
719
758
|
recordFieldPtr(objName: string, shapeId: string, field: string): {
|
|
720
759
|
ptr: string;
|
|
721
760
|
type: IrType;
|
|
761
|
+
inline: boolean;
|
|
722
762
|
};
|
|
723
763
|
/** The overflow map's slot pointer on an index-signature shape. */
|
|
724
764
|
recordOvfPtr(objName: string, shapeId: string): string;
|
|
725
|
-
/** Loads a record field (i8-stored bools trunc to i1).
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
765
|
+
/** Loads a record field (i8-stored bools trunc to i1). An inline union
|
|
766
|
+
* field answers a private stack box with the slot's own bits, ABSENT
|
|
767
|
+
* included: it may only be borrowed. */
|
|
768
|
+
loadField(ptr: string, t: IrType, inline: boolean): string;
|
|
769
|
+
/** A record field of this shape stores its scalar union inline. */
|
|
770
|
+
recordFieldInline(shapeId: string, field: string): boolean;
|
|
771
|
+
/** The value a field store writes: an inline union slot copies the tag
|
|
772
|
+
* and bits of a borrowed projection, so no box is built for it. */
|
|
773
|
+
emitFieldValue(value: IrExpr, inline: boolean): LlValue;
|
|
774
|
+
/** Overwrites a field with `v` (from emitFieldValue). A reference moves
|
|
775
|
+
* in, and the old value is released AFTER the field is overwritten. */
|
|
776
|
+
replaceField(ptr: string, type: IrType, inline: boolean, v: LlValue): void;
|
|
777
|
+
/** Stores `v` (from emitFieldValue) into a fresh field slot. */
|
|
778
|
+
initField(ptr: string, type: IrType, inline: boolean, v: LlValue): void;
|
|
779
|
+
/** Stores a record field (i1 zext to the i8 storage). An inline union
|
|
780
|
+
* field copies the tag and bits of the union value, which its owner
|
|
781
|
+
* keeps. */
|
|
782
|
+
storeField(ptr: string, t: IrType, value: string, inline: boolean): void;
|
|
729
783
|
/** Reads an int32-specialized class field: the i32 slot is the value,
|
|
730
784
|
* and its widening is the exact double every program observation sees. */
|
|
731
785
|
loadInt32Field(ptr: string, type: IrType): LlValue;
|
|
@@ -802,6 +856,21 @@ export declare class LlEmitter {
|
|
|
802
856
|
* that is not a direct call (closures, dispatch, adapters, the runtime)
|
|
803
857
|
* enters here. A pending exception passes through to its caller. */
|
|
804
858
|
private emitInt32AbiWrapper;
|
|
859
|
+
/** The SCALAR_UNION_RESULT pair of a `%ScrUnion` box of `type`. */
|
|
860
|
+
scalarUnionPair(box: string, type: IrType): string;
|
|
861
|
+
/** A private stack box holding a SCALAR_UNION_RESULT pair of `type`. */
|
|
862
|
+
stackScalarUnion(pair: string, type: IrType): LlValue;
|
|
863
|
+
/** A direct call whose i32 entry returns its scalar union in registers. */
|
|
864
|
+
scalarResultCall(e: IrExpr): boolean;
|
|
865
|
+
/** A fresh heap box (+1) for a SCALAR_UNION_RESULT pair of `type`; the
|
|
866
|
+
* exception dummy (tag -1) answers NULL. */
|
|
867
|
+
boxScalarUnion(pair: string, type: IrType): string;
|
|
868
|
+
/** A fresh heap box (+1) for an inline union field's value; the ABSENT
|
|
869
|
+
* state reads as the undefined arm. */
|
|
870
|
+
inlineFieldUnion(ptr: string, type: IrType): string;
|
|
871
|
+
/** boxScalarUnion over a separate tag and payload bits. Unit arms answer
|
|
872
|
+
* their immortal instances whatever the bits. */
|
|
873
|
+
boxScalarUnionBits(tag: string, bits: string, type: IrType): string;
|
|
805
874
|
/** The i32 bits of a number proven an int32 (a direct call's i32
|
|
806
875
|
* argument or an i32 result): its exact integer when the value carries
|
|
807
876
|
* one, else the conversion the proof makes exact. */
|
|
@@ -854,6 +923,9 @@ export declare class LlEmitter {
|
|
|
854
923
|
* runs afterwards with no handler in scope: a rejection settles the
|
|
855
924
|
* function's promise instead of reaching its own catch clauses. */
|
|
856
925
|
private emitAdoptingReturn;
|
|
926
|
+
/** An async generator completing without a further turn: its request
|
|
927
|
+
* settles as the body returns (scr_async_gen_hop_done). */
|
|
928
|
+
private emitAsyncGenSettled;
|
|
857
929
|
/** `return x` of a local whose slot is an owned scope entry of the same
|
|
858
930
|
* type: the return can take over the local's reference. */
|
|
859
931
|
private movableReturn;
|
|
@@ -946,6 +1018,10 @@ export declare class LlEmitter {
|
|
|
946
1018
|
* value, making the snapshot unique unless a real observable alias exists.
|
|
947
1019
|
*/
|
|
948
1020
|
emitStringSelfConcatAssign(localId: string, left: IrExpr, suffix: IrExpr, retainForYield: boolean): LlValue;
|
|
1021
|
+
/** The code of a one-argument `String.fromCharCode(c)` suffix, emitted, so
|
|
1022
|
+
* `s += String.fromCharCode(c)` appends the character without building
|
|
1023
|
+
* the one-character string; null for any other suffix. */
|
|
1024
|
+
private emitSingleCharCode;
|
|
949
1025
|
/** `local = local + suffix` when the suffix cannot read or write the
|
|
950
1026
|
* local (an unboxed binding is only reachable through this function's own
|
|
951
1027
|
* expressions): reading the binding after the suffix gives the value the
|
|
@@ -960,6 +1036,12 @@ export declare class LlEmitter {
|
|
|
960
1036
|
emitRecordExpr(e: ExprOf<"fieldGet" | "recordGet" | "recordLit" | "recordClone" | "recordKeyGet" | "recordOvfKeys" | "recordOvfHas" | "recordHas" | "fieldAbsent">): LlValue;
|
|
961
1037
|
emitDynamicExpr(e: ExprOf<"dynFrom" | "dynCall" | "dynInvoke" | "dynArrLit" | "dynObjLit" | "unionWrap" | "unionNarrow" | "unionDisc" | "unionKeyGet" | "unionIsTag" | "dynKeyGet" | "dynHasKey" | "dynScalarEq" | "dynTest" | "unionEq" | "unionFuncEq" | "caughtTest" | "caughtCheck" | "caughtNarrow" | "caughtToDyn">): LlValue;
|
|
962
1038
|
emitIntrinsicExpr(e: ExprOf<"intrinsic">): LlValue;
|
|
1039
|
+
/** Lifetime regions in modules with lifetimeRegions (llvm/regions.ts).
|
|
1040
|
+
* Created with the class graph; null elsewhere. */
|
|
1041
|
+
private regions;
|
|
1042
|
+
/** LifetimeRegion's runtime calls: create answers the region id, enter
|
|
1043
|
+
* and leave bracket run(), release condemns. */
|
|
1044
|
+
private emitRegionIntrinsic;
|
|
963
1045
|
private publishWalkersCache;
|
|
964
1046
|
/** Per-type publication walkers, created on the first publish. */
|
|
965
1047
|
private get publishWalkers();
|
|
@@ -993,11 +1075,16 @@ export declare class LlEmitter {
|
|
|
993
1075
|
* their ordinary statement-frame ownership. The caller must retain any
|
|
994
1076
|
* reference result before evaluating another expression. */
|
|
995
1077
|
emitReadReceiver(e: IrExpr): LlValue;
|
|
1078
|
+
/** The frame slot a reassigned stack-object local keeps for its value. */
|
|
1079
|
+
private stackObjectSlot;
|
|
996
1080
|
/** A private stack union source with an independently owned payload. */
|
|
997
1081
|
canStackReceiver(e: IrExpr): boolean;
|
|
998
1082
|
/** True for union sources that emitReadReceiver can produce as a private
|
|
999
1083
|
* stack box with an independently owned payload (no heap union). */
|
|
1000
1084
|
isStackUnionSource(e: IrExpr): boolean;
|
|
1085
|
+
/** A read of a record or class field that stores its scalar union
|
|
1086
|
+
* inline. */
|
|
1087
|
+
inlineFieldGet(e: IrExpr): boolean;
|
|
1001
1088
|
/** The nullable-pointer representation behind a union-typed class field
|
|
1002
1089
|
* read, or null for every other expression. */
|
|
1003
1090
|
nullableFieldGet(e: IrExpr): NullableRefField | null;
|
|
@@ -1033,6 +1120,8 @@ export declare class LlEmitter {
|
|
|
1033
1120
|
* and projection-only parameters (callers may pass stack boxes). Such a
|
|
1034
1121
|
* box must only be projected: never retained, released, or stored. */
|
|
1035
1122
|
isStackUnionLocal(localId: string): boolean;
|
|
1123
|
+
/** The instance of a capsule known to hold exactly this class (borrowed). */
|
|
1124
|
+
emitExactCapsuleObject(value: IrExpr, type: IrType): LlValue;
|
|
1036
1125
|
canBorrowReceiver(e: IrExpr): boolean;
|
|
1037
1126
|
/** A reference held as one plain pointer that emitReadReceiver can read
|
|
1038
1127
|
* without owning: class instances, records, arrays, strings and
|
|
@@ -1103,7 +1192,10 @@ export declare class LlEmitter {
|
|
|
1103
1192
|
}): string;
|
|
1104
1193
|
cryptoBytesThunkFor(cbT: IrType & {
|
|
1105
1194
|
kind: "func";
|
|
1106
|
-
}, arrayBuffer?: boolean): string;
|
|
1195
|
+
}, arrayBuffer?: boolean, valueMode?: BytesThunkValue): string;
|
|
1196
|
+
cryptoIntThunkFor(cbT: IrType & {
|
|
1197
|
+
kind: "func";
|
|
1198
|
+
}): string;
|
|
1107
1199
|
zlibBytesThunkFor(cbT: IrType & {
|
|
1108
1200
|
kind: "func";
|
|
1109
1201
|
}): string;
|