@scriptc/compiler 0.3.2 → 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 +490 -39
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/llvm/alloc.js +24 -10
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +47 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- 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 +8 -1
- package/dist/backend/llvm/call-lifetimes.js +33 -11
- 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 +87 -36
- package/dist/backend/llvm/classes.js.map +1 -1
- 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 +1 -1
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +73 -9
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +65 -14
- package/dist/backend/llvm/emitter.js +297 -81
- 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 +52 -1
- 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.js +16 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +8 -1
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +42 -15
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +19 -8
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +28 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +8 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +35 -32
- package/dist/backend/llvm/expr-stream-bridges.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/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 +163 -28
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +125 -7
- 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 +132 -0
- 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 +7 -3
- 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 +2 -0
- package/dist/backend/llvm/local-union-storage.js +5 -0
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -0
- 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 +8 -5
- package/dist/backend/llvm/record-results.js +20 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +13 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +14 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -0
- package/dist/backend/llvm/regions.js +12 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- 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 +56 -10
- package/dist/backend/llvm/shapes.js +178 -39
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +61 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.js +16 -4
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +11 -0
- package/dist/backend/llvm/walkers.js +106 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +9 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +2 -2
- package/dist/backend/native/executable.js +14 -3
- 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-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-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.js +4 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +4 -1
- 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/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/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +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/crypto.js +415 -120
- package/dist/frontend/lowering/builtins/crypto.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/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 +44 -11
- package/dist/frontend/lowering/builtins/module-calls.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 +107 -14
- package/dist/frontend/lowering/builtins/process.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/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/class-dynamic-dispatch.d.ts +2 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +105 -1
- 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 +4 -7
- package/dist/frontend/lowering/containers/array-callbacks.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/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/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/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 +16 -12
- package/dist/frontend/lowering/expressions/object-literals.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/lower-array-sort.d.ts +12 -1
- package/dist/frontend/lowering/lower-array-sort.js +561 -191
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
- 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 +101 -9
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +8 -2
- package/dist/frontend/lowering/lower-classes.js +40 -9
- 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-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 +112 -22
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +129 -11
- 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 +7 -3
- 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 +7 -1
- package/dist/frontend/lowering/lower-stdlib.js +10 -3
- 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 +46 -12
- 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 +23 -5
- package/dist/frontend/lowering/lowerer.js +245 -41
- 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/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 +273 -22
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- 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 +1 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -3
- package/dist/frontend/program.js +19 -17
- package/dist/frontend/program.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 +16 -1
- package/dist/frontend/type-mapper.js +143 -18
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +5 -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 +79 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +291 -38
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +1 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +64 -16
- package/dist/ir/ir.js +37 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.js +83 -6
- package/dist/ir/runtime-features.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 +100 -9
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +60 -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 +10 -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/package.json +20 -20
- package/surface-manifest.json +379 -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";
|
|
@@ -10,6 +11,7 @@ import { type CallLifetimes } from "./call-lifetimes.js";
|
|
|
10
11
|
import { type UnionSources } from "./local-union-storage.js";
|
|
11
12
|
import { BlockBuilder } from "./blocks.js";
|
|
12
13
|
import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
|
|
14
|
+
import { InlineUnionFields } from "./inline-unions.js";
|
|
13
15
|
import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
|
|
14
16
|
import { CheckedNarrows } from "./checked-narrows.js";
|
|
15
17
|
import { type MapReadLifetimes } from "./map-read-lifetimes.js";
|
|
@@ -19,11 +21,12 @@ import { StackCallbacks } from "./stack-callbacks.js";
|
|
|
19
21
|
import { AmbientReceiverReaders } from "./constant-callbacks.js";
|
|
20
22
|
import { type StringSliceSnapshot } from "./string-slices.js";
|
|
21
23
|
import { type PublishedTypes } from "../publication.js";
|
|
24
|
+
import { type BytesThunkValue } from "./expr-stream-callbacks.js";
|
|
22
25
|
import { type LlClassMeta } from "./classes.js";
|
|
23
26
|
import { LlDyn, type DynHost } from "./dyn.js";
|
|
24
27
|
import { LlWalkers } from "./walkers.js";
|
|
25
28
|
import { NullableUnions } from "./nullable-unions.js";
|
|
26
|
-
import { type MapKeyAccess } from "./shapes.js";
|
|
29
|
+
import { type InlineRcMode, type MapKeyAccess } from "./shapes.js";
|
|
27
30
|
import type { ExprOf, LibCallExpr, LlStreamTypedRefAdapter, LlValue } from "./expr-context.js";
|
|
28
31
|
export { LlvmUnsupportedError } from "./unsupported.js";
|
|
29
32
|
export interface LlvmTargetOptions {
|
|
@@ -39,16 +42,20 @@ export interface LlvmTargetOptions {
|
|
|
39
42
|
* separate translation unit. Public/direct emission keeps them by default. */
|
|
40
43
|
emitLibraryIdentity?: boolean;
|
|
41
44
|
/** Program objects carry a strong reference to the matching runtime ABI
|
|
42
|
-
* marker so manual
|
|
45
|
+
* marker so a manual link against an incompatible runtime fails. */
|
|
43
46
|
runtimeAbiMarker?: boolean;
|
|
44
47
|
/** Emit live-object audit notes in emitted new/free helpers. Only the
|
|
45
48
|
* sanitized lane's SCR_RC_AUDIT runtime counts them; production plain
|
|
46
49
|
* builds pass false so release/dev objects carry no empty calls.
|
|
47
50
|
* Defaults to true for direct emission. */
|
|
48
51
|
objectAudit?: boolean;
|
|
49
|
-
/** Emit retain/release fast paths inline
|
|
50
|
-
*
|
|
51
|
-
|
|
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;
|
|
52
59
|
/** Define `scr_detached_exit` so the Linux runtime hands the address-space
|
|
53
60
|
* teardown after `process.exit` to a helper process (`--detached-exit`).
|
|
54
61
|
* Executables only; the runtime's weak default keeps it off. */
|
|
@@ -134,6 +141,8 @@ export declare class LlEmitter {
|
|
|
134
141
|
private readonly unitInstances;
|
|
135
142
|
/** unionId → symbol of the union's immortal ABSENT field-slot instance. */
|
|
136
143
|
private readonly absentInstances;
|
|
144
|
+
/** The zeroed box an inline store reads for a NULL union dummy. */
|
|
145
|
+
private needsUnionNone;
|
|
137
146
|
/** unionId → symbol of a flag set once a checked-dynamic cast caches one
|
|
138
147
|
* of the union's boxes. A cached box is refreshed in place, possibly with
|
|
139
148
|
* a tag that another union numbers apart, so it is never shared. */
|
|
@@ -185,6 +194,8 @@ export declare class LlEmitter {
|
|
|
185
194
|
/** Inline RC fast-path helpers requested by call sites (shapes.ts); null
|
|
186
195
|
* when inline RC is off. */
|
|
187
196
|
private readonly rcHelpers;
|
|
197
|
+
private readonly rcMode;
|
|
198
|
+
private readonly rcHelpersNoinline;
|
|
188
199
|
readonly fnByName: Map<string, IrFunction>;
|
|
189
200
|
/** Empty literals that construct with inline slots (appended-array-literals.ts). */
|
|
190
201
|
appendedArrayLiterals: ReadonlySet<IrExpr>;
|
|
@@ -292,6 +303,8 @@ export declare class LlEmitter {
|
|
|
292
303
|
* typeKey → thunk symbol. */
|
|
293
304
|
readonly resolveThunks: Map<string, string>;
|
|
294
305
|
readonly resolveThunkDefs: string[];
|
|
306
|
+
/** Inline array searches used by the module (array-search.ts). */
|
|
307
|
+
readonly arraySearchKinds: Set<ArraySearchKind>;
|
|
295
308
|
/** Typed-ref recipe constants by type key (lazy receivers). */
|
|
296
309
|
readonly typedRefRecipes: Map<string, string>;
|
|
297
310
|
/** ReadableStream.from adapters keep typed arrays by reference and box
|
|
@@ -305,6 +318,7 @@ export declare class LlEmitter {
|
|
|
305
318
|
readonly dynPromiseAdapters: Map<string, string>;
|
|
306
319
|
readonly unionsById: Map<string, IrUnionDef>;
|
|
307
320
|
readonly nullableFields: NullableRefFields;
|
|
321
|
+
readonly inlineUnions: InlineUnionFields;
|
|
308
322
|
/** Unions whose values are nullable arm pointers (nullable-unions.ts). */
|
|
309
323
|
readonly nullableUnions: NullableUnions;
|
|
310
324
|
/** The union table without nullable unions: the stack-box analyses. */
|
|
@@ -504,7 +518,7 @@ export declare class LlEmitter {
|
|
|
504
518
|
* programs keep fibers too: their fiber epilogue owns context
|
|
505
519
|
* termination (a stopping worker rejects and observes the promise), which
|
|
506
520
|
* the fiberless wrapper does not reproduce. A missed suspension still
|
|
507
|
-
* cannot reorder
|
|
521
|
+
* cannot reorder execution undetected: the runtime traps when a context parks while a
|
|
508
522
|
* fiberless body is on its stack. */
|
|
509
523
|
private fiberlessAsyncFunctions;
|
|
510
524
|
/** The spawn wrapper of a fiberless async function: runs the body on the
|
|
@@ -588,7 +602,7 @@ export declare class LlEmitter {
|
|
|
588
602
|
* holding the ABSENT state surfaces as the ordinary undefined arm, so
|
|
589
603
|
* absence never travels beyond its slot (a later `{ f: r.f }` is an
|
|
590
604
|
* explicit, present property). */
|
|
591
|
-
loadRecordField(ptr: string, t: IrType): string;
|
|
605
|
+
loadRecordField(ptr: string, t: IrType, inline: boolean): string;
|
|
592
606
|
declare(decl: string): void;
|
|
593
607
|
needOom(): void;
|
|
594
608
|
private currentFrame;
|
|
@@ -692,7 +706,7 @@ export declare class LlEmitter {
|
|
|
692
706
|
unionTag(uName: string, unionId: string): string;
|
|
693
707
|
/** Guard for helpers that build or read a union's `%ScrUnion` box
|
|
694
708
|
* directly (library-shaped unions with fixed arms): a nullable union
|
|
695
|
-
* reaching one is an emitter bug
|
|
709
|
+
* reaching one is an emitter bug and throws InternalCompilerError. */
|
|
696
710
|
requireBoxedUnion(unionId: string): void;
|
|
697
711
|
/** The BORROWED payload pointer of a ref arm (scr_union_peek inlined —
|
|
698
712
|
* the runtime's is a static inline); a nullable union is its payload. */
|
|
@@ -723,6 +737,7 @@ export declare class LlEmitter {
|
|
|
723
737
|
classFieldPtr(objName: string, className: string, field: string): {
|
|
724
738
|
ptr: string;
|
|
725
739
|
type: IrType;
|
|
740
|
+
inline: boolean;
|
|
726
741
|
};
|
|
727
742
|
/** `o->vt->pre` — the dynamic class's preorder number (borrowed object;
|
|
728
743
|
* the static class names which struct spelling carries the vt word). */
|
|
@@ -736,17 +751,35 @@ export declare class LlEmitter {
|
|
|
736
751
|
* same offset on every target. Share one field-read block per matching
|
|
737
752
|
* prefix; class variants retain their own concrete layout dispatch. */
|
|
738
753
|
unionFieldGroups(def: IrUnionDef, field: string): number[][];
|
|
739
|
-
/** 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. */
|
|
740
758
|
recordFieldPtr(objName: string, shapeId: string, field: string): {
|
|
741
759
|
ptr: string;
|
|
742
760
|
type: IrType;
|
|
761
|
+
inline: boolean;
|
|
743
762
|
};
|
|
744
763
|
/** The overflow map's slot pointer on an index-signature shape. */
|
|
745
764
|
recordOvfPtr(objName: string, shapeId: string): string;
|
|
746
|
-
/** Loads a record field (i8-stored bools trunc to i1).
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
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;
|
|
750
783
|
/** Reads an int32-specialized class field: the i32 slot is the value,
|
|
751
784
|
* and its widening is the exact double every program observation sees. */
|
|
752
785
|
loadInt32Field(ptr: string, type: IrType): LlValue;
|
|
@@ -832,6 +865,12 @@ export declare class LlEmitter {
|
|
|
832
865
|
/** A fresh heap box (+1) for a SCALAR_UNION_RESULT pair of `type`; the
|
|
833
866
|
* exception dummy (tag -1) answers NULL. */
|
|
834
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;
|
|
835
874
|
/** The i32 bits of a number proven an int32 (a direct call's i32
|
|
836
875
|
* argument or an i32 result): its exact integer when the value carries
|
|
837
876
|
* one, else the conversion the proof makes exact. */
|
|
@@ -979,6 +1018,10 @@ export declare class LlEmitter {
|
|
|
979
1018
|
* value, making the snapshot unique unless a real observable alias exists.
|
|
980
1019
|
*/
|
|
981
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;
|
|
982
1025
|
/** `local = local + suffix` when the suffix cannot read or write the
|
|
983
1026
|
* local (an unboxed binding is only reachable through this function's own
|
|
984
1027
|
* expressions): reading the binding after the suffix gives the value the
|
|
@@ -1039,6 +1082,9 @@ export declare class LlEmitter {
|
|
|
1039
1082
|
/** True for union sources that emitReadReceiver can produce as a private
|
|
1040
1083
|
* stack box with an independently owned payload (no heap union). */
|
|
1041
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;
|
|
1042
1088
|
/** The nullable-pointer representation behind a union-typed class field
|
|
1043
1089
|
* read, or null for every other expression. */
|
|
1044
1090
|
nullableFieldGet(e: IrExpr): NullableRefField | null;
|
|
@@ -1074,6 +1120,8 @@ export declare class LlEmitter {
|
|
|
1074
1120
|
* and projection-only parameters (callers may pass stack boxes). Such a
|
|
1075
1121
|
* box must only be projected: never retained, released, or stored. */
|
|
1076
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;
|
|
1077
1125
|
canBorrowReceiver(e: IrExpr): boolean;
|
|
1078
1126
|
/** A reference held as one plain pointer that emitReadReceiver can read
|
|
1079
1127
|
* without owning: class instances, records, arrays, strings and
|
|
@@ -1144,7 +1192,10 @@ export declare class LlEmitter {
|
|
|
1144
1192
|
}): string;
|
|
1145
1193
|
cryptoBytesThunkFor(cbT: IrType & {
|
|
1146
1194
|
kind: "func";
|
|
1147
|
-
}, arrayBuffer?: boolean): string;
|
|
1195
|
+
}, arrayBuffer?: boolean, valueMode?: BytesThunkValue): string;
|
|
1196
|
+
cryptoIntThunkFor(cbT: IrType & {
|
|
1197
|
+
kind: "func";
|
|
1198
|
+
}): string;
|
|
1148
1199
|
zlibBytesThunkFor(cbT: IrType & {
|
|
1149
1200
|
kind: "func";
|
|
1150
1201
|
}): string;
|