@scriptc/compiler 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +844 -36
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.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/array-search.js +1 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +11 -1
- package/dist/backend/llvm/call-lifetimes.js +30 -3
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +31 -1
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -0
- package/dist/backend/llvm/common.js +7 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -21
- package/dist/backend/llvm/constant-callbacks.js +36 -219
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +22 -0
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +9 -0
- package/dist/backend/llvm/dense-array-access.js +29 -3
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +46 -1
- package/dist/backend/llvm/dyn.js +218 -33
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +87 -1
- package/dist/backend/llvm/emitter.js +568 -61
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +17 -7
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +159 -64
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +11 -0
- package/dist/backend/llvm/expr-callbacks.js +53 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +137 -3
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +63 -29
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +9 -1
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +4 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/integer-clones.d.ts +103 -0
- package/dist/backend/llvm/integer-clones.js +1336 -0
- package/dist/backend/llvm/integer-clones.js.map +1 -0
- package/dist/backend/llvm/integer-clones.test.d.ts +1 -0
- package/dist/backend/llvm/integer-clones.test.js +219 -0
- package/dist/backend/llvm/integer-clones.test.js.map +1 -0
- package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +24 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +96 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +51 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +16 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +24 -0
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +114 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +87 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +6 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +1 -1
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +28 -0
- package/dist/backend/llvm/map-entry-fusion.js +233 -0
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/map-entry-fusion.test.d.ts +1 -0
- package/dist/backend/llvm/map-entry-fusion.test.js +183 -0
- package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +6 -0
- package/dist/backend/llvm/map-number-lookup.js +23 -1
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +60 -5
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +11 -0
- package/dist/backend/llvm/map-read-lifetimes.js +92 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +131 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +21 -0
- package/dist/backend/llvm/publish.js +101 -11
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.d.ts +1 -0
- package/dist/backend/llvm/publish.test.js +94 -0
- package/dist/backend/llvm/publish.test.js.map +1 -0
- package/dist/backend/llvm/record-results.js +76 -2
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-sources.d.ts +7 -0
- package/dist/backend/llvm/record-sources.js +14 -0
- package/dist/backend/llvm/record-sources.js.map +1 -0
- package/dist/backend/llvm/reference-writes.js +5 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +4 -1
- package/dist/backend/llvm/regions.js +12 -3
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +9 -3
- package/dist/backend/llvm/shapes.js +18 -14
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +5 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +75 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +17 -0
- package/dist/backend/llvm/walkers.js +123 -0
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +4 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -1
- package/dist/backend/native/executable.js +16 -6
- 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-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.js +3 -1
- package/dist/backend/publication.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 +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/target-diagnostics.js +7 -0
- 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/executable/executable-cache.d.ts +1 -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/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +3 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/callable-aliases.js +54 -8
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +8 -6
- package/dist/frontend/lowering/builtins/child-process-async.js +45 -29
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +175 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +111 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +2 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +5 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +60 -0
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.d.ts +26 -0
- package/dist/frontend/lowering/builtins/fs-streams.js +131 -0
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +5 -1
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +6 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +216 -20
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +33 -12
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.js +20 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +700 -61
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +11 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +75 -6
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +3 -0
- package/dist/frontend/lowering/lower-classes.js +43 -0
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +132 -67
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -1
- package/dist/frontend/lowering/lower-event-emitter.js +78 -0
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
- package/dist/frontend/lowering/lower-exprs.js +144 -58
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +138 -39
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.js +7 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +4 -0
- package/dist/frontend/lowering/lower-server.js +448 -30
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +35 -8
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +794 -27
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +25 -1
- package/dist/frontend/lowering/lowerer.js +74 -9
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/record-sources.d.ts +15 -0
- package/dist/frontend/lowering/record-sources.js +46 -0
- package/dist/frontend/lowering/record-sources.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +4 -0
- package/dist/frontend/lowering/surfaces.js +94 -16
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.js.map +1 -0
- package/dist/frontend/pipeline.js +5 -3
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.js +6 -1
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +14 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/tsc-codes.js +1 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +8 -0
- package/dist/frontend/type-mapper.js +155 -9
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +10 -0
- package/dist/ir/analysis.js +35 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +69 -1
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +72 -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 +238 -15
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/capture-values.d.ts +107 -0
- package/dist/ir/capture-values.js +850 -0
- package/dist/ir/capture-values.js.map +1 -0
- package/dist/ir/capture-values.test.d.ts +1 -0
- package/dist/ir/capture-values.test.js +268 -0
- package/dist/ir/capture-values.test.js.map +1 -0
- package/dist/ir/field-values.d.ts +16 -0
- package/dist/ir/field-values.js +128 -0
- package/dist/ir/field-values.js.map +1 -0
- package/dist/ir/field-values.test.d.ts +1 -0
- package/dist/ir/field-values.test.js +160 -0
- package/dist/ir/field-values.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +4 -1
- package/dist/ir/final-fields.js +11 -3
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.test.js +1 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +16 -0
- package/dist/ir/init-only-globals.js +121 -0
- package/dist/ir/init-only-globals.js.map +1 -0
- package/dist/ir/init-only-globals.test.d.ts +1 -0
- package/dist/ir/init-only-globals.test.js +115 -0
- package/dist/ir/init-only-globals.test.js.map +1 -0
- package/dist/ir/initializer-bindings.d.ts +18 -1
- package/dist/ir/initializer-bindings.js +91 -1
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/initializer-bindings.test.js +57 -2
- package/dist/ir/initializer-bindings.test.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +22 -0
- package/dist/ir/int32-slots.js +376 -13
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +91 -8
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +19 -1
- package/dist/ir/integer-loop-facts.js +155 -7
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +8 -5
- package/dist/ir/integer-ranges.js +147 -55
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +225 -7
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +29 -2
- package/dist/ir/ir.js +17 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/property-bags.d.ts +14 -0
- package/dist/ir/property-bags.js +121 -0
- package/dist/ir/property-bags.js.map +1 -0
- package/dist/ir/receiver-readers.d.ts +21 -0
- package/dist/ir/receiver-readers.js +217 -0
- package/dist/ir/receiver-readers.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +34 -2
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/validate.js +221 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +21 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/int-infer.js +3 -0
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +1 -0
- 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 +896 -49
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type ArraySearchKind } from "./array-search.js";
|
|
2
2
|
import type { IrBytesElem, IrExpr, IrFfiImport, IrFunction, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
|
|
3
3
|
import { type SplitSpan } from "./split-loops.js";
|
|
4
|
-
import { type IntegerRanges } from "../../ir/integer-ranges.js";
|
|
4
|
+
import { type IntegerRange, type IntegerRanges } from "../../ir/integer-ranges.js";
|
|
5
5
|
import { type Int32Slots } from "../../ir/int32-slots.js";
|
|
6
6
|
import { type Int32Abi } from "./int32-abi.js";
|
|
7
7
|
import { type Int32Local } from "./int32-locals.js";
|
|
8
|
+
import { type IntegerClones } from "./integer-clones.js";
|
|
8
9
|
import { type ConstantNumericTable } from "../../ir/constant-tables.js";
|
|
9
10
|
import { type FfiCallbackAdapter } from "../ffi-callbacks.js";
|
|
10
11
|
import { type CallLifetimes } from "./call-lifetimes.js";
|
|
@@ -15,6 +16,7 @@ import { InlineUnionFields } from "./inline-unions.js";
|
|
|
15
16
|
import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
|
|
16
17
|
import { CheckedNarrows } from "./checked-narrows.js";
|
|
17
18
|
import { type MapReadLifetimes } from "./map-read-lifetimes.js";
|
|
19
|
+
import { type MapEntryFusion } from "./map-entry-fusion.js";
|
|
18
20
|
import { ReferenceEffects } from "./reference-effects.js";
|
|
19
21
|
import { ReferenceWrites, type Writes } from "./reference-writes.js";
|
|
20
22
|
import { StackCallbacks } from "./stack-callbacks.js";
|
|
@@ -89,6 +91,10 @@ export declare class LlEmitter {
|
|
|
89
91
|
/** The alias tag of a runtime word that emitted code reads and writes
|
|
90
92
|
* outside every field (the lifetime-region count, owner and cursors). */
|
|
91
93
|
memoryAliasAttachment(category: string): string;
|
|
94
|
+
/** The `!range` attachment of an array length load: a length is at most
|
|
95
|
+
* 2^32 - 1 (the runtime's SCR_ARR_MAX_LENGTH), so conversions to double
|
|
96
|
+
* and back fold. 32-bit targets load the full range anyway. */
|
|
97
|
+
get arrayLengthRange(): string;
|
|
92
98
|
fieldAliasAttachment(ptr: string): string;
|
|
93
99
|
private fieldAliasMetadata;
|
|
94
100
|
private readonly debug;
|
|
@@ -173,6 +179,8 @@ export declare class LlEmitter {
|
|
|
173
179
|
/** Interned NUL-terminated C-string constants (scr_jb_puts labels, the
|
|
174
180
|
* stringify indent text): UTF-8 text → { symbol, byte length }. */
|
|
175
181
|
private readonly cstrs;
|
|
182
|
+
/** Interned ScrMapOps descriptors (scr_map.h): initializer → symbol. */
|
|
183
|
+
private readonly mapOpsConsts;
|
|
176
184
|
/** Type-directed walker functions (JSON serializers, the indent
|
|
177
185
|
* rewriter, union ToString/join) — interned per typeKey/unionId, defs
|
|
178
186
|
* flushed with the shape helpers. */
|
|
@@ -215,6 +223,9 @@ export declare class LlEmitter {
|
|
|
215
223
|
readonly checkedNarrows: CheckedNarrows;
|
|
216
224
|
callArrayReads: Map<IrExpr, LocalArrayRead>;
|
|
217
225
|
mapReadLifetimes: MapReadLifetimes;
|
|
226
|
+
readNumberMapWrites: ReadonlySet<IrExpr>;
|
|
227
|
+
/** The current function's fused string-key Map get-then-set pairs (map-entry-fusion.ts). */
|
|
228
|
+
mapEntryFusion: MapEntryFusion | null;
|
|
218
229
|
readonly callLifetimes: CallLifetimes;
|
|
219
230
|
readonly constantCallbacks: Map<string, Map<string, string>>;
|
|
220
231
|
currentConstantCallbacks: ReadonlyMap<string, string>;
|
|
@@ -373,8 +384,18 @@ export declare class LlEmitter {
|
|
|
373
384
|
private readonly initializerBindings;
|
|
374
385
|
/** Whole-program int32 storage and parameter/result facts. */
|
|
375
386
|
readonly int32Slots: Int32Slots;
|
|
387
|
+
/** The program has no runtime store into a checked-dynamic value
|
|
388
|
+
* (dynamicFieldStores), so live views of classes and records never
|
|
389
|
+
* commit back into their objects. Library builds keep their commits:
|
|
390
|
+
* their values cross a native boundary. */
|
|
391
|
+
readonly liveViewsReadOnly: boolean;
|
|
376
392
|
/** Functions whose direct calls use i32 parameters or results. */
|
|
377
393
|
readonly int32Abis: ReadonlyMap<string, Int32Abi>;
|
|
394
|
+
/** Pure number functions with speculative integer clones. */
|
|
395
|
+
readonly integerClones: IntegerClones;
|
|
396
|
+
/** The IR function being emitted. */
|
|
397
|
+
currentFunctionName: string;
|
|
398
|
+
integerParamRange(fnName: string, localId: string): IntegerRange | null;
|
|
378
399
|
/** Immutable module constants (contract types) whose graphs become
|
|
379
400
|
* immortal once initialized: their reads need no reference counting. */
|
|
380
401
|
readonly immortalGlobals: ReadonlySet<string>;
|
|
@@ -406,6 +427,9 @@ export declare class LlEmitter {
|
|
|
406
427
|
private byteWindowEntries;
|
|
407
428
|
bytesBounds: ReadonlySet<IrExpr | IrStmt>;
|
|
408
429
|
integerViews: Map<string, string>;
|
|
430
|
+
/** Module globals the current function owns outright (initializer
|
|
431
|
+
* bindings): their function-local slot, which stands in for the global. */
|
|
432
|
+
private privateGlobalSlots;
|
|
409
433
|
/** Number locals of the current function stored only as an i32
|
|
410
434
|
* (int32-locals.ts); their slots are `alloca i32`. */
|
|
411
435
|
int32Locals: Map<string, Int32Local>;
|
|
@@ -446,7 +470,14 @@ export declare class LlEmitter {
|
|
|
446
470
|
finalLabel: string;
|
|
447
471
|
cleanupLabel: string;
|
|
448
472
|
suspendLabel: string;
|
|
473
|
+
/** The generator's OUT slot (%ScrGenSlot) for a native body whose
|
|
474
|
+
* yield channel is a number or boolean, which its yields store into
|
|
475
|
+
* inline (see emitGenSlotStore); null otherwise. */
|
|
476
|
+
out: string | null;
|
|
449
477
|
} | null;
|
|
478
|
+
/** Inline generator slot accesses need the %ScrGenHead/%ScrGenSlot
|
|
479
|
+
* mirrors in the module header. */
|
|
480
|
+
usesGenSlots: boolean;
|
|
450
481
|
/** The generator channels of the function being emitted (null outside
|
|
451
482
|
* generator bodies): yieldExpr emission reads them, and emitTryCatch's
|
|
452
483
|
* catch prologue emits the GENRET sentinel re-unwind exactly here. */
|
|
@@ -463,6 +494,8 @@ export declare class LlEmitter {
|
|
|
463
494
|
constructor(mod: IrModule, options: LlvmTargetOptions);
|
|
464
495
|
/** The borrowed parameters of a hierarchy's vtable slot (empty: owned). */
|
|
465
496
|
virtualSlotBorrowed(rootName: string, slotIndex: number): ReadonlySet<number>;
|
|
497
|
+
/** Optimized emission: no debug-info (dev) posture. */
|
|
498
|
+
get optimizing(): boolean;
|
|
466
499
|
/** The vtable entry for one implementation (VirtualBorrows.entry). */
|
|
467
500
|
virtualEntry(implFn: string): string;
|
|
468
501
|
private implSlotBorrowed;
|
|
@@ -581,6 +614,8 @@ export declare class LlEmitter {
|
|
|
581
614
|
* stringify-indent currency) — `@`-ref, first-use order. */
|
|
582
615
|
cstr(text: string): string;
|
|
583
616
|
needBadTag(): void;
|
|
617
|
+
/** The ScrMapOps descriptor holding these operands (ShapeHost.mapOps). */
|
|
618
|
+
mapOps(operands: readonly string[]): string;
|
|
584
619
|
/** The interned immortal instance for a UNIT arm of a union — asserts
|
|
585
620
|
* the arm really is payload-less (undefined/null). Public: class
|
|
586
621
|
* emission initializes undefined-admitting fields through it
|
|
@@ -687,6 +722,11 @@ export declare class LlEmitter {
|
|
|
687
722
|
* conditions in expr-calls.ts). */
|
|
688
723
|
private callTestsPending;
|
|
689
724
|
private workerLoopBudget;
|
|
725
|
+
/** The amortized cancellation poll, emitted on the loop's back edge (the
|
|
726
|
+
* continue target), after the body. A poll in the header would be a loop
|
|
727
|
+
* exit ahead of the body; LLVM then cannot rotate the loop, so loads that
|
|
728
|
+
* the body repeats on every iteration (a typed array's length, for one)
|
|
729
|
+
* stay in the loop. */
|
|
690
730
|
private emitWorkerLoopCheck;
|
|
691
731
|
/** Moves an already-evaluated value into the runtime's exception cell —
|
|
692
732
|
* the `throw` statement's kind dispatch (stmts.ts's), shared with
|
|
@@ -846,11 +886,24 @@ export declare class LlEmitter {
|
|
|
846
886
|
* whether the promise waiter list or the ready FIFO owns the continuation;
|
|
847
887
|
* LLVM keeps all live locals in the coroutine frame. */
|
|
848
888
|
emitWasiSuspend(promise: string | null): void;
|
|
889
|
+
/** A native generator's OUT slot (scr_async.c's ScrGen.out, mirrored by
|
|
890
|
+
* %ScrGenHead and %ScrGenSlot { kind, f64, b, payload, release_fn }). */
|
|
891
|
+
genOutSlot(gen: string): string;
|
|
892
|
+
/** A yield on a number or boolean channel: scr_gen_slot_f64/bool inline.
|
|
893
|
+
* Such a body's OUT never holds a reference at a yield (only its final
|
|
894
|
+
* completion can park one), so the slot needs no release first. */
|
|
895
|
+
emitGenSlotStore(slot: string, kind: "f64" | "bool", value: string): void;
|
|
896
|
+
/** scr_gen_take_out_f64/bool inline: the slot's value when it holds that
|
|
897
|
+
* kind (otherwise 0 or false), leaving the slot empty. */
|
|
898
|
+
emitGenSlotTake(slot: string, kind: "f64" | "bool"): string;
|
|
849
899
|
/** Suspend after a target-specific runtime helper already queued the
|
|
850
900
|
* continuation (used by module awaits, which skip the hop when settled). */
|
|
851
901
|
emitCoroSuspendPrepared(): void;
|
|
852
902
|
/** Move a clean async return value into the current fiber's promise. */
|
|
853
903
|
private emitWasiFulfill;
|
|
904
|
+
/** Number locals declared as a copy of a capture or of a lazily boxed
|
|
905
|
+
* parameter, at the top of the body. */
|
|
906
|
+
private doubleCopies;
|
|
854
907
|
private emitFunction;
|
|
855
908
|
/** The double-ABI entry of a function with an i32 entry: every caller
|
|
856
909
|
* that is not a direct call (closures, dispatch, adapters, the runtime)
|
|
@@ -1022,6 +1075,27 @@ export declare class LlEmitter {
|
|
|
1022
1075
|
* `s += String.fromCharCode(c)` appends the character without building
|
|
1023
1076
|
* the one-character string; null for any other suffix. */
|
|
1024
1077
|
private emitSingleCharCode;
|
|
1078
|
+
/**
|
|
1079
|
+
* Lower `recv.f = recv.f + suffix` on a plain string field like
|
|
1080
|
+
* emitStringSelfConcatAssign does for locals. The field's old value is
|
|
1081
|
+
* snapshotted (+1) and the suffix evaluated in JavaScript order; then the
|
|
1082
|
+
* field unlinks and releases its CURRENT value, so the snapshot is unique
|
|
1083
|
+
* unless a real alias exists and the concat appends in place instead of
|
|
1084
|
+
* copying the whole string on every append. Returns false (emitting
|
|
1085
|
+
* nothing) for every other store.
|
|
1086
|
+
*/
|
|
1087
|
+
private emitFieldSelfConcat;
|
|
1088
|
+
/** A snapshot the current statement frames own (+1), or an immortal
|
|
1089
|
+
* value: it stays valid after its container releases the same string. */
|
|
1090
|
+
private ownsSnapshot;
|
|
1091
|
+
/**
|
|
1092
|
+
* `a[i] = a[i] + suffix` on a string array (the canonical statement form
|
|
1093
|
+
* of `a[i] += suffix`): the old element is snapshotted (+1) and the
|
|
1094
|
+
* suffix evaluated in JavaScript order; then, when the slot still holds
|
|
1095
|
+
* the snapshot, the array lets go of it (emitDenseSlotUnlink) so the
|
|
1096
|
+
* concat can append in place, and the result is stored as usual.
|
|
1097
|
+
*/
|
|
1098
|
+
private emitArraySelfConcat;
|
|
1025
1099
|
/** `local = local + suffix` when the suffix cannot read or write the
|
|
1026
1100
|
* local (an unboxed binding is only reachable through this function's own
|
|
1027
1101
|
* expressions): reading the binding after the suffix gives the value the
|
|
@@ -1036,6 +1110,12 @@ export declare class LlEmitter {
|
|
|
1036
1110
|
emitRecordExpr(e: ExprOf<"fieldGet" | "recordGet" | "recordLit" | "recordClone" | "recordKeyGet" | "recordOvfKeys" | "recordOvfHas" | "recordHas" | "fieldAbsent">): LlValue;
|
|
1037
1111
|
emitDynamicExpr(e: ExprOf<"dynFrom" | "dynCall" | "dynInvoke" | "dynArrLit" | "dynObjLit" | "unionWrap" | "unionNarrow" | "unionDisc" | "unionKeyGet" | "unionIsTag" | "dynKeyGet" | "dynHasKey" | "dynScalarEq" | "dynTest" | "unionEq" | "unionFuncEq" | "caughtTest" | "caughtCheck" | "caughtNarrow" | "caughtToDyn">): LlValue;
|
|
1038
1112
|
emitIntrinsicExpr(e: ExprOf<"intrinsic">): LlValue;
|
|
1113
|
+
/** InternTable's runtime calls (scr_itable.c). Table and entry handles
|
|
1114
|
+
* are f64 values carrying pointer bits; entry values are 64-bit slots
|
|
1115
|
+
* (double bits, a bool, or a pointer to an immortal value) that the
|
|
1116
|
+
* table neither retains nor releases. Lookups and inserts of array keys
|
|
1117
|
+
* throw a TypeError for keys longer than a table accepts. */
|
|
1118
|
+
private emitInternTableIntrinsic;
|
|
1039
1119
|
/** Lifetime regions in modules with lifetimeRegions (llvm/regions.ts).
|
|
1040
1120
|
* Created with the class graph; null elsewhere. */
|
|
1041
1121
|
private regions;
|
|
@@ -1177,6 +1257,12 @@ export declare class LlEmitter {
|
|
|
1177
1257
|
fn: string;
|
|
1178
1258
|
shim: string;
|
|
1179
1259
|
};
|
|
1260
|
+
emitterOnceAdapter(boxerT: IrType & {
|
|
1261
|
+
kind: "func";
|
|
1262
|
+
}): {
|
|
1263
|
+
fn: string;
|
|
1264
|
+
shim: string;
|
|
1265
|
+
};
|
|
1180
1266
|
wrapEmitterListener(target: string, adapterFn: string): string;
|
|
1181
1267
|
unwrapNullableClosure(u: string, funcTag: number): string;
|
|
1182
1268
|
closeBindThunkFor(cbUnion: IrType, retServer: boolean): string;
|