@scriptc/compiler 0.2.7 → 0.2.9
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 +3 -0
- package/dist/backend/cycle-analysis.js +50 -17
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +138 -14
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +31 -6
- package/dist/backend/cycle-mutability.js +120 -18
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +16 -3
- package/dist/backend/llvm/alloc.js +78 -23
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +5 -5
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +9 -0
- package/dist/backend/llvm/blocks.js +9 -0
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/borrowed-receivers.d.ts +7 -0
- package/dist/backend/llvm/borrowed-receivers.js +39 -0
- package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +2 -3
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +4 -1
- package/dist/backend/llvm/call-lifetimes.js +14 -3
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +8 -3
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.d.ts +24 -0
- package/dist/backend/llvm/checked-narrows.js +108 -0
- package/dist/backend/llvm/checked-narrows.js.map +1 -0
- package/dist/backend/llvm/checked-narrows.test.d.ts +1 -0
- package/dist/backend/llvm/checked-narrows.test.js +208 -0
- package/dist/backend/llvm/checked-narrows.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +13 -1
- package/dist/backend/llvm/classes.js +32 -23
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +32 -3
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +17 -0
- package/dist/backend/llvm/common.js +28 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/debug-info.d.ts +6 -2
- package/dist/backend/llvm/debug-info.js +11 -1
- package/dist/backend/llvm/debug-info.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.js +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +89 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +8 -4
- package/dist/backend/llvm/dyn.js +58 -31
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +227 -12
- package/dist/backend/llvm/emitter.js +1492 -169
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +54 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +4 -4
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +116 -32
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +29 -21
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +5 -0
- package/dist/backend/llvm/expr-calls.js +55 -10
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +7 -1
- package/dist/backend/llvm/expr-containers.js +231 -28
- 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.js +70 -14
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +75 -21
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-island.js +3 -8
- package/dist/backend/llvm/expr-island.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +41 -12
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +50 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +28 -14
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +3 -0
- package/dist/backend/llvm/expr-stream-bridges.js +114 -42
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +6 -3
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/layouts.d.ts +2 -1
- package/dist/backend/llvm/layouts.js +2 -2
- package/dist/backend/llvm/layouts.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +10 -0
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +25 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +8 -8
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +2 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.d.ts +17 -6
- package/dist/backend/llvm/local-array-reads.js +223 -51
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +7 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.js +10 -6
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +3 -2
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +18 -0
- package/dist/backend/llvm/map-number-lookup.js +62 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +6 -0
- package/dist/backend/llvm/map-read-lifetimes.js +24 -3
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +38 -19
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +68 -0
- package/dist/backend/llvm/nullable-unions.js +132 -0
- package/dist/backend/llvm/nullable-unions.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +58 -0
- package/dist/backend/llvm/publish.js +286 -0
- package/dist/backend/llvm/publish.js.map +1 -0
- package/dist/backend/llvm/rebound-parameters.d.ts +12 -0
- package/dist/backend/llvm/rebound-parameters.js +72 -0
- package/dist/backend/llvm/rebound-parameters.js.map +1 -0
- package/dist/backend/llvm/rebound-parameters.test.d.ts +1 -0
- package/dist/backend/llvm/rebound-parameters.test.js +67 -0
- package/dist/backend/llvm/rebound-parameters.test.js.map +1 -0
- package/dist/backend/llvm/reference-effects.d.ts +18 -2
- package/dist/backend/llvm/reference-effects.js +140 -17
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-effects.test.js +52 -1
- package/dist/backend/llvm/reference-effects.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +58 -19
- package/dist/backend/llvm/shapes.js +171 -62
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +36 -11
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +5 -2
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-construction.d.ts +10 -0
- package/dist/backend/llvm/string-construction.js +42 -0
- package/dist/backend/llvm/string-construction.js.map +1 -1
- package/dist/backend/llvm/string-key-hash.d.ts +9 -2
- package/dist/backend/llvm/string-key-hash.js +20 -3
- package/dist/backend/llvm/string-key-hash.js.map +1 -1
- package/dist/backend/llvm/string-key-hash.test.js +14 -3
- package/dist/backend/llvm/string-key-hash.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +24 -11
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +7 -0
- package/dist/backend/llvm/string-reads.js +79 -0
- package/dist/backend/llvm/string-reads.js.map +1 -0
- package/dist/backend/llvm/string-slices.js +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
- package/dist/backend/llvm/test-boxed-unions.d.ts +5 -0
- package/dist/backend/llvm/test-boxed-unions.js +13 -0
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -0
- package/dist/backend/llvm/trunc.d.ts +8 -0
- package/dist/backend/llvm/trunc.js +28 -0
- package/dist/backend/llvm/trunc.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +15 -0
- package/dist/backend/llvm/union-repr.js +89 -0
- package/dist/backend/llvm/union-repr.js.map +1 -0
- package/dist/backend/llvm/virtual-borrows.d.ts +31 -0
- package/dist/backend/llvm/virtual-borrows.js +82 -0
- package/dist/backend/llvm/virtual-borrows.js.map +1 -0
- package/dist/backend/llvm/walk-borrows.d.ts +43 -0
- package/dist/backend/llvm/walk-borrows.js +150 -0
- package/dist/backend/llvm/walk-borrows.js.map +1 -0
- package/dist/backend/llvm/walk-borrows.test.d.ts +1 -0
- package/dist/backend/llvm/walk-borrows.test.js +119 -0
- package/dist/backend/llvm/walk-borrows.test.js.map +1 -0
- package/dist/backend/llvm/walkers.d.ts +5 -1
- package/dist/backend/llvm/walkers.js +24 -21
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/loop-polls.d.ts +14 -0
- package/dist/backend/loop-polls.js +100 -0
- package/dist/backend/loop-polls.js.map +1 -0
- package/dist/backend/loop-polls.test.d.ts +1 -0
- package/dist/backend/loop-polls.test.js +86 -0
- package/dist/backend/loop-polls.test.js.map +1 -0
- package/dist/backend/may-throw.d.ts +29 -1
- package/dist/backend/may-throw.js +365 -3
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +136 -1
- package/dist/backend/may-throw.test.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 +7 -5
- package/dist/backend/native-codegen-core.js +14 -9
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +2 -0
- package/dist/backend/native-codegen.js +21 -2
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +41 -10
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +2 -0
- package/dist/backend/native-tools.js +3 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/publication.d.ts +28 -0
- package/dist/backend/publication.js +155 -0
- package/dist/backend/publication.js.map +1 -0
- package/dist/backend/publication.test.d.ts +1 -0
- package/dist/backend/publication.test.js +72 -0
- package/dist/backend/publication.test.js.map +1 -0
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-abi.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/cli/command.js +78 -8
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/output-options.d.ts +1 -0
- package/dist/cli/output-options.js +3 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +8 -1
- package/dist/cli/usage.js +14 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +17 -3
- package/dist/coverage/report.d.ts +25 -2
- package/dist/coverage/report.js +161 -33
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +63 -0
- package/dist/coverage/verdict-cache.js +193 -0
- package/dist/coverage/verdict-cache.js.map +1 -0
- package/dist/coverage/verdict-cache.test.d.ts +1 -0
- package/dist/coverage/verdict-cache.test.js +52 -0
- package/dist/coverage/verdict-cache.test.js.map +1 -0
- package/dist/coverage/verdict-semantic.d.ts +2 -0
- package/dist/coverage/verdict-semantic.js +24 -0
- package/dist/coverage/verdict-semantic.js.map +1 -0
- package/dist/coverage/verdict-startup.d.ts +15 -0
- package/dist/coverage/verdict-startup.js +66 -0
- package/dist/coverage/verdict-startup.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +29 -1
- package/dist/diagnostics/diagnostic.js +74 -4
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +130 -0
- package/dist/diagnostics/envelope.js +257 -0
- package/dist/diagnostics/envelope.js.map +1 -0
- package/dist/diagnostics/envelope.test.d.ts +1 -0
- package/dist/diagnostics/envelope.test.js +91 -0
- package/dist/diagnostics/envelope.test.js.map +1 -0
- package/dist/diagnostics/render.d.ts +3 -0
- package/dist/diagnostics/render.js +13 -2
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +2 -0
- package/dist/executable/executable-cache.js +3 -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/executable/prepare.d.ts +4 -0
- package/dist/executable/prepare.js +7 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +7 -0
- package/dist/frontend/lowering/array-values.js +157 -5
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +29 -1
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +4 -0
- package/dist/frontend/lowering/builtins/process.js +10 -0
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +4 -1
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/workers.js +4 -2
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +96 -4
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.d.ts +8 -0
- package/dist/frontend/lowering/class-assertions.js +217 -1
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +8 -5
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +88 -0
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +6 -0
- package/dist/frontend/lowering/coercions/state.js +2 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +8 -0
- package/dist/frontend/lowering/coercions/unions.js +67 -2
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.d.ts +1 -0
- package/dist/frontend/lowering/collation-repertoire.js +19 -0
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -0
- package/dist/frontend/lowering/construction-escapes.d.ts +38 -0
- package/dist/frontend/lowering/construction-escapes.js +146 -0
- package/dist/frontend/lowering/construction-escapes.js.map +1 -0
- package/dist/frontend/lowering/construction-escapes.test.d.ts +1 -0
- package/dist/frontend/lowering/construction-escapes.test.js +150 -0
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +81 -44
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +15 -2
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +231 -12
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +15 -4
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +43 -1
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +7 -63
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +6 -1
- package/dist/frontend/lowering/cycle-initialization.js +59 -33
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +9 -0
- package/dist/frontend/lowering/divergences.js +630 -0
- package/dist/frontend/lowering/divergences.js.map +1 -0
- package/dist/frontend/lowering/expressions/object-literals.js +40 -2
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +19 -0
- package/dist/frontend/lowering/expressions/union-fields.js +236 -0
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -0
- package/dist/frontend/lowering/lower-calls.d.ts +5 -0
- package/dist/frontend/lowering/lower-calls.js +237 -158
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +4 -0
- package/dist/frontend/lowering/lower-classes.js +72 -22
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -0
- package/dist/frontend/lowering/lower-exprs.js +592 -109
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +19 -13
- package/dist/frontend/lowering/lower-generators.js +67 -44
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +3 -2
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +1 -1
- package/dist/frontend/lowering/lower-island.js +10 -7
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +90 -1
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +47 -7
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +83 -2
- package/dist/frontend/lowering/lowerer.js +1158 -79
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +161 -0
- package/dist/frontend/lowering/nan-coded-reads.js +1342 -0
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.d.ts +31 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +360 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js +94 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +117 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +738 -0
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.d.ts +36 -0
- package/dist/frontend/lowering/runtime-optional-guards.js +375 -0
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.js +92 -0
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-ownership.d.ts +63 -0
- package/dist/frontend/lowering/runtime-optional-ownership.js +382 -0
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +2 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/string-index-bounds.d.ts +36 -0
- package/dist/frontend/lowering/string-index-bounds.js +537 -0
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.test.d.ts +1 -0
- package/dist/frontend/lowering/string-index-bounds.test.js +223 -0
- package/dist/frontend/lowering/string-index-bounds.test.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +8 -0
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.d.ts +2 -0
- package/dist/frontend/lowering/union-narrow.js +10 -6
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +10 -0
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +25 -0
- package/dist/frontend/program.js +613 -17
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +64 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.d.ts +6 -0
- package/dist/frontend/resolve.js +14 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/threads-import.d.ts +5 -0
- package/dist/frontend/threads-import.js +21 -0
- package/dist/frontend/threads-import.js.map +1 -0
- package/dist/frontend/type-mapper.d.ts +3 -0
- package/dist/frontend/type-mapper.js +72 -6
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/worker-target.d.ts +4 -0
- package/dist/frontend/worker-target.js +8 -1
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +67 -17
- package/dist/index.js.map +1 -1
- package/dist/ir/build.d.ts +5 -0
- package/dist/ir/build.js +7 -0
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +5 -0
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/constant-globals.d.ts +14 -0
- package/dist/ir/constant-globals.js +81 -0
- package/dist/ir/constant-globals.js.map +1 -0
- package/dist/ir/constant-globals.test.d.ts +1 -0
- package/dist/ir/constant-globals.test.js +97 -0
- package/dist/ir/constant-globals.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +35 -0
- package/dist/ir/final-fields.js +187 -0
- package/dist/ir/final-fields.js.map +1 -0
- package/dist/ir/final-fields.test.d.ts +1 -0
- package/dist/ir/final-fields.test.js +106 -0
- package/dist/ir/final-fields.test.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +81 -0
- package/dist/ir/int32-slots.js +850 -0
- package/dist/ir/int32-slots.js.map +1 -0
- package/dist/ir/int32-slots.test.d.ts +1 -0
- package/dist/ir/int32-slots.test.js +249 -0
- package/dist/ir/int32-slots.test.js.map +1 -0
- package/dist/ir/integer-loops.d.ts +5 -0
- package/dist/ir/integer-loops.js +20 -4
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +17 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +19 -3
- package/dist/ir/integer-ranges.js +168 -23
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +74 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +30 -7
- package/dist/ir/ir.js +4 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/serialize.d.ts +12 -2
- package/dist/ir/serialize.js +190 -39
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +65 -1
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/validate.js +21 -2
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +39 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/native/cache.d.ts +11 -1
- package/dist/native/cache.js +87 -2
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +32 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +1 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +5 -0
- package/dist/native/compiler.js +55 -7
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.d.ts +7 -1
- package/dist/native/prepare.js +65 -29
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +23 -1
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/text-file.d.ts +10 -0
- package/dist/native/text-file.js +41 -0
- package/dist/native/text-file.js.map +1 -0
- package/dist/startup-cache.d.ts +2 -0
- package/dist/startup-cache.js +2 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +5 -0
- package/dist/text-parts.js +36 -0
- package/dist/text-parts.js.map +1 -0
- package/package.json +20 -20
- package/surface-manifest.json +7 -1
- package/dist/frontend/lowering/expressions/union-field-write.d.ts +0 -8
- package/dist/frontend/lowering/expressions/union-field-write.js +0 -108
- package/dist/frontend/lowering/expressions/union-field-write.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { preservesDynTest } from "./checked-value-lifetimes.js";
|
|
2
2
|
import { isStableReceiverOperand } from "../../ir/analysis.js";
|
|
3
|
-
import { isRefCounted } from "../../ir/ir.js";
|
|
3
|
+
import { isRefCounted, } from "../../ir/ir.js";
|
|
4
4
|
import { everyExprChild, everyStmtChild, everyStmtList } from "../../ir/traverse.js";
|
|
5
5
|
import { borrowsStringInputs } from "./string-lifetimes.js";
|
|
6
6
|
import { borrowsMapReadInputs } from "./map-read-lifetimes.js";
|
|
@@ -27,7 +27,25 @@ export function preservesRegexInputs(method) {
|
|
|
27
27
|
return false;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
/** Array operations that never release an element or run user code: reads,
|
|
31
|
+
* copies into fresh arrays, and appends (an append retains the new element
|
|
32
|
+
* and may move the slot storage, but every element stays referenced).
|
|
33
|
+
* Removals (pop, shift, splice), truncation and overwrites are absent. */
|
|
34
|
+
const EDGE_PRESERVING_ARRAY_METHODS = new Set([
|
|
35
|
+
"length",
|
|
36
|
+
"getNumber",
|
|
37
|
+
"indexEq",
|
|
38
|
+
"indexOf",
|
|
39
|
+
"includes",
|
|
40
|
+
"nextPresent",
|
|
41
|
+
"join",
|
|
42
|
+
"slice",
|
|
43
|
+
"concatSpread",
|
|
44
|
+
"toReversed",
|
|
45
|
+
"push",
|
|
46
|
+
"pushSpread",
|
|
47
|
+
]);
|
|
48
|
+
function expressionPreservesEdges(e, call, privateLocals, virtualCall) {
|
|
31
49
|
switch (e.kind) {
|
|
32
50
|
case "numLit":
|
|
33
51
|
case "boolLit":
|
|
@@ -39,6 +57,7 @@ function expressionPreservesEdges(e, call, privateLocals) {
|
|
|
39
57
|
case "incDec":
|
|
40
58
|
case "toBool":
|
|
41
59
|
case "logical":
|
|
60
|
+
case "nullish":
|
|
42
61
|
case "ternary":
|
|
43
62
|
case "seqExpr":
|
|
44
63
|
case "fieldGet":
|
|
@@ -46,6 +65,9 @@ function expressionPreservesEdges(e, call, privateLocals) {
|
|
|
46
65
|
case "unionNarrow":
|
|
47
66
|
case "unionIsTag":
|
|
48
67
|
case "unionWrap":
|
|
68
|
+
case "downcast":
|
|
69
|
+
case "upcast":
|
|
70
|
+
case "instanceOf":
|
|
49
71
|
case "strConcat":
|
|
50
72
|
case "strEq":
|
|
51
73
|
case "strCmp":
|
|
@@ -58,7 +80,24 @@ function expressionPreservesEdges(e, call, privateLocals) {
|
|
|
58
80
|
case "caughtTest":
|
|
59
81
|
case "caughtNarrow":
|
|
60
82
|
case "caughtCheck":
|
|
83
|
+
// An immortal class object, or a fresh one retaining captured boxes.
|
|
84
|
+
case "classRef":
|
|
85
|
+
// A chain evaluates its receiver and body (checked as children); its
|
|
86
|
+
// bound receiver is a read.
|
|
87
|
+
case "optChain":
|
|
88
|
+
case "chainRecv":
|
|
61
89
|
return true;
|
|
90
|
+
// Formatting a primitive allocates a string and runs no user code.
|
|
91
|
+
case "toString":
|
|
92
|
+
return (e.operand.type.kind === "f64" ||
|
|
93
|
+
e.operand.type.kind === "bool" ||
|
|
94
|
+
e.operand.type.kind === "string");
|
|
95
|
+
case "virtualCall":
|
|
96
|
+
return virtualCall?.(e) ?? false;
|
|
97
|
+
// A module binding's TDZ check reads its initialization flag and may
|
|
98
|
+
// throw; it never touches a reference.
|
|
99
|
+
case "intrinsic":
|
|
100
|
+
return e.name === "module.tdzCheck";
|
|
62
101
|
case "dynTest":
|
|
63
102
|
return preservesDynTest(e.test);
|
|
64
103
|
case "assignExpr":
|
|
@@ -73,11 +112,22 @@ function expressionPreservesEdges(e, call, privateLocals) {
|
|
|
73
112
|
case "libCall":
|
|
74
113
|
// The typed-message constructor only allocates an error and retains
|
|
75
114
|
// its message. The checked options constructor may invoke user code.
|
|
76
|
-
|
|
115
|
+
// Math functions take numbers (the spread forms only read an array).
|
|
116
|
+
return (e.fn === "error.new" ||
|
|
117
|
+
e.fn === "error.nodeThrow" ||
|
|
118
|
+
e.fn.startsWith("math.") ||
|
|
119
|
+
// Atomic read-modify-write on an integer typed array (a shared id
|
|
120
|
+
// counter): numbers only, no callback.
|
|
121
|
+
e.fn === "atomics.op" ||
|
|
122
|
+
isStableReceiverOperand(e, ""));
|
|
77
123
|
case "call":
|
|
78
124
|
return call(e);
|
|
79
125
|
case "arrIntrinsic":
|
|
80
|
-
return e.method
|
|
126
|
+
return EDGE_PRESERVING_ARRAY_METHODS.has(e.method);
|
|
127
|
+
// A fresh array retains its elements. Spreads keep the conservative
|
|
128
|
+
// answer (an iterable spread may run an iterator).
|
|
129
|
+
case "arrayLit":
|
|
130
|
+
return e.spreads === undefined || e.spreads.length === 0;
|
|
81
131
|
case "bytesIntrinsic":
|
|
82
132
|
return (e.method === "get" ||
|
|
83
133
|
e.method === "length" ||
|
|
@@ -94,12 +144,15 @@ function statementPreservesEdges(s, privateLocals) {
|
|
|
94
144
|
case "exprStmt":
|
|
95
145
|
case "return":
|
|
96
146
|
case "throw":
|
|
147
|
+
// Throws a fresh Error with a constant message (an unreachable trap).
|
|
148
|
+
case "runtimeFence":
|
|
97
149
|
case "if":
|
|
98
150
|
case "for":
|
|
99
151
|
case "forOf":
|
|
100
152
|
case "while":
|
|
101
153
|
case "doWhile":
|
|
102
154
|
case "block":
|
|
155
|
+
case "switch":
|
|
103
156
|
case "break":
|
|
104
157
|
case "continue":
|
|
105
158
|
case "bytesSet":
|
|
@@ -113,6 +166,65 @@ function statementPreservesEdges(s, privateLocals) {
|
|
|
113
166
|
return false;
|
|
114
167
|
}
|
|
115
168
|
}
|
|
169
|
+
/** The module functions a virtual call can reach: the implementation the
|
|
170
|
+
* static class inherits or declares, plus every override in its subtree.
|
|
171
|
+
* Runtime classes keep their dispatch out of view, so they answer null. */
|
|
172
|
+
export class VirtualTargets {
|
|
173
|
+
classes = new Map();
|
|
174
|
+
children = new Map();
|
|
175
|
+
cache = new Map();
|
|
176
|
+
constructor(classes) {
|
|
177
|
+
for (const cls of classes)
|
|
178
|
+
this.classes.set(cls.name, cls);
|
|
179
|
+
for (const cls of classes) {
|
|
180
|
+
if (cls.base === undefined)
|
|
181
|
+
continue;
|
|
182
|
+
let list = this.children.get(cls.base);
|
|
183
|
+
if (!list)
|
|
184
|
+
this.children.set(cls.base, (list = []));
|
|
185
|
+
list.push(cls);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
targets(className, method) {
|
|
189
|
+
const key = `${className}\0${method}`;
|
|
190
|
+
const known = this.cache.get(key);
|
|
191
|
+
if (known !== undefined)
|
|
192
|
+
return known;
|
|
193
|
+
const result = this.compute(className, method);
|
|
194
|
+
this.cache.set(key, result);
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
compute(className, method) {
|
|
198
|
+
const declares = (cls) => cls.methods?.includes(method) !== true
|
|
199
|
+
? null
|
|
200
|
+
: cls.abstractMethods?.includes(method) === true
|
|
201
|
+
? "abstract"
|
|
202
|
+
: "concrete";
|
|
203
|
+
const targets = new Set();
|
|
204
|
+
// The nearest declaration on the static class or its ancestors.
|
|
205
|
+
for (let name = className; name !== undefined;) {
|
|
206
|
+
const cls = this.classes.get(name);
|
|
207
|
+
if (!cls || cls.runtime)
|
|
208
|
+
return null;
|
|
209
|
+
const declared = declares(cls);
|
|
210
|
+
if (declared === "concrete")
|
|
211
|
+
targets.add(`%${cls.name}.${method}`);
|
|
212
|
+
if (declared !== null)
|
|
213
|
+
break;
|
|
214
|
+
name = cls.base;
|
|
215
|
+
}
|
|
216
|
+
const pending = [...(this.children.get(className) ?? [])];
|
|
217
|
+
while (pending.length > 0) {
|
|
218
|
+
const cls = pending.pop();
|
|
219
|
+
if (cls.runtime)
|
|
220
|
+
return null;
|
|
221
|
+
if (declares(cls) === "concrete")
|
|
222
|
+
targets.add(`%${cls.name}.${method}`);
|
|
223
|
+
pending.push(...(this.children.get(cls.name) ?? []));
|
|
224
|
+
}
|
|
225
|
+
return [...targets];
|
|
226
|
+
}
|
|
227
|
+
}
|
|
116
228
|
/** Reference preservation is weaker than purity: scalar writes, allocation
|
|
117
229
|
* and throwing are allowed. Caller owners and their reference edges must
|
|
118
230
|
* survive until the consuming operation; callee-local rebinding is private.
|
|
@@ -124,10 +236,21 @@ export class ReferenceEffects {
|
|
|
124
236
|
intrinsicCall;
|
|
125
237
|
functions = new Set();
|
|
126
238
|
expressions = new Map();
|
|
127
|
-
|
|
239
|
+
virtualTargets;
|
|
240
|
+
constructor(functions, intrinsicCall, classes) {
|
|
128
241
|
this.intrinsicCall = intrinsicCall;
|
|
242
|
+
this.virtualTargets = classes ? new VirtualTargets(classes) : null;
|
|
129
243
|
const callers = new Map();
|
|
130
244
|
const unsafe = [];
|
|
245
|
+
const dependOn = (callee, caller) => {
|
|
246
|
+
if (!functions.has(callee))
|
|
247
|
+
return false;
|
|
248
|
+
let incoming = callers.get(callee);
|
|
249
|
+
if (!incoming)
|
|
250
|
+
callers.set(callee, (incoming = new Set()));
|
|
251
|
+
incoming.add(caller);
|
|
252
|
+
return true;
|
|
253
|
+
};
|
|
131
254
|
for (const fn of functions.values()) {
|
|
132
255
|
// Rebinding a callee's unboxed local cannot replace the caller's
|
|
133
256
|
// owner. The same write in a later caller operand still must reject
|
|
@@ -139,17 +262,12 @@ export class ReferenceEffects {
|
|
|
139
262
|
!fn.classCaptures &&
|
|
140
263
|
everyStmtList(fn.body, {
|
|
141
264
|
stmt: (stmt) => statementPreservesEdges(stmt, privateLocals),
|
|
142
|
-
expr: (e) => expressionPreservesEdges(e, (call) =>
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (!incoming)
|
|
149
|
-
callers.set(call.callee, (incoming = new Set()));
|
|
150
|
-
incoming.add(fn.name);
|
|
151
|
-
return true;
|
|
152
|
-
}, privateLocals),
|
|
265
|
+
expr: (e) => expressionPreservesEdges(e, (call) => intrinsicCall(call) || dependOn(call.callee, fn.name), privateLocals,
|
|
266
|
+
// Every reachable implementation must preserve edges; the
|
|
267
|
+
// dispatch itself passes owned arguments that callees release.
|
|
268
|
+
(call) => this.virtualTargets
|
|
269
|
+
?.targets(call.className, call.method)
|
|
270
|
+
?.every((target) => dependOn(target, fn.name)) ?? false),
|
|
153
271
|
});
|
|
154
272
|
if (safe)
|
|
155
273
|
this.functions.add(fn.name);
|
|
@@ -172,10 +290,15 @@ export class ReferenceEffects {
|
|
|
172
290
|
return known;
|
|
173
291
|
const expr = (node) => this.preserves(node);
|
|
174
292
|
const stmt = (node) => statementPreservesEdges(node) && everyStmtChild(node, expr, stmt);
|
|
175
|
-
const result = expressionPreservesEdges(value, (call) => this.intrinsicCall(call) || this.functions.has(call.callee)) && everyExprChild(value, expr, stmt);
|
|
293
|
+
const result = expressionPreservesEdges(value, (call) => this.intrinsicCall(call) || this.functions.has(call.callee), undefined, (call) => this.virtualPreserves(call)) && everyExprChild(value, expr, stmt);
|
|
176
294
|
this.expressions.set(value, result);
|
|
177
295
|
return result;
|
|
178
296
|
}
|
|
297
|
+
virtualPreserves(call) {
|
|
298
|
+
return (this.virtualTargets
|
|
299
|
+
?.targets(call.className, call.method)
|
|
300
|
+
?.every((target) => this.functions.has(target)) ?? false);
|
|
301
|
+
}
|
|
179
302
|
preservesScope(body) {
|
|
180
303
|
return everyStmtList(body, {
|
|
181
304
|
stmt: (stmt) => statementPreservesEdges(stmt),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-effects.js","sourceRoot":"","sources":["../../../src/backend/llvm/reference-effects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"reference-effects.js","sourceRoot":"","sources":["../../../src/backend/llvm/reference-effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect, test } from "vitest";
|
|
2
2
|
import { BOOL, DYN, F64, STRING, VOID, } from "../../ir/ir.js";
|
|
3
|
-
import { ReferenceEffects, preservesRegexInputs } from "./reference-effects.js";
|
|
3
|
+
import { ReferenceEffects, VirtualTargets, preservesRegexInputs } from "./reference-effects.js";
|
|
4
4
|
const loc = { file: "effects.ts", start: 0, end: 0 };
|
|
5
5
|
const number = { kind: "numLit", value: 1, type: F64, loc };
|
|
6
6
|
const text = { kind: "strLit", value: "text", type: STRING, loc };
|
|
@@ -154,4 +154,55 @@ test("checked scalar tests preserve owners while materializing reads stay conser
|
|
|
154
154
|
const replace = { kind: "assignExpr", localId: "value", value, type: DYN, loc };
|
|
155
155
|
expect(summary.preserves({ kind: "dynScalarEq", left: value, right: replace, type: BOOL, loc })).toBe(false);
|
|
156
156
|
});
|
|
157
|
+
test("nullish fallbacks and Math calls preserve references; their operands still count", () => {
|
|
158
|
+
const min = { kind: "libCall", fn: "math.min", args: [number, number], type: F64, loc };
|
|
159
|
+
const fallback = (right) => ({
|
|
160
|
+
kind: "nullish",
|
|
161
|
+
left: number,
|
|
162
|
+
right,
|
|
163
|
+
type: F64,
|
|
164
|
+
loc,
|
|
165
|
+
});
|
|
166
|
+
expect(effects([fn("pure", [fallback(min)])]).functions).toEqual(new Set(["pure"]));
|
|
167
|
+
const write = { kind: "assignExpr", localId: "owner", value: text, type: STRING, loc };
|
|
168
|
+
const summary = effects([fn("read")]);
|
|
169
|
+
expect(summary.preserves(fallback(write))).toBe(false);
|
|
170
|
+
expect(summary.preserves(fallback(call("read")))).toBe(true);
|
|
171
|
+
});
|
|
172
|
+
test("virtual calls preserve references only when every reachable override does", () => {
|
|
173
|
+
const cls = (name, methods, base, extra) => ({ name, base, fields: [], methods, loc, ...extra });
|
|
174
|
+
const classes = [
|
|
175
|
+
cls("A", ["run", "size"], undefined, { abstractMethods: ["size"] }),
|
|
176
|
+
cls("B", ["size"], "A"),
|
|
177
|
+
cls("C", ["run"], "B"),
|
|
178
|
+
cls("D", [], "A"),
|
|
179
|
+
];
|
|
180
|
+
const targets = new VirtualTargets(classes);
|
|
181
|
+
expect(targets.targets("A", "run")).toEqual(["%A.run", "%C.run"]);
|
|
182
|
+
// B inherits A.run; only C overrides below it. Abstract slots have no body.
|
|
183
|
+
expect(targets.targets("B", "run")).toEqual(["%A.run", "%C.run"]);
|
|
184
|
+
expect(targets.targets("A", "size")).toEqual(["%B.size"]);
|
|
185
|
+
expect(targets.targets("D", "run")).toEqual(["%A.run"]);
|
|
186
|
+
expect(new VirtualTargets([...classes, cls("E", ["run"], "D", { runtime: true })]).targets("A", "run")).toBe(null);
|
|
187
|
+
const virtual = {
|
|
188
|
+
kind: "virtualCall",
|
|
189
|
+
className: "A",
|
|
190
|
+
method: "run",
|
|
191
|
+
args: [],
|
|
192
|
+
type: F64,
|
|
193
|
+
loc,
|
|
194
|
+
};
|
|
195
|
+
const build = (mutating) => {
|
|
196
|
+
const functions = [fn("%A.run"), fn("%C.run"), fn("caller", [virtual])];
|
|
197
|
+
if (mutating)
|
|
198
|
+
functions[1].body.push({ kind: "assign", localId: "owner", value: text, loc });
|
|
199
|
+
return new ReferenceEffects(new Map(functions.map((f) => [f.name, f])), () => false, classes);
|
|
200
|
+
};
|
|
201
|
+
expect(build(false).preserves(virtual)).toBe(true);
|
|
202
|
+
expect(build(false).functions.has("caller")).toBe(true);
|
|
203
|
+
expect(build(true).preserves(virtual)).toBe(false);
|
|
204
|
+
expect(build(true).functions.has("caller")).toBe(false);
|
|
205
|
+
// Without class facts a virtual call stays a barrier.
|
|
206
|
+
expect(effects([fn("%A.run")]).preserves(virtual)).toBe(false);
|
|
207
|
+
});
|
|
157
208
|
//# sourceMappingURL=reference-effects.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-effects.test.js","sourceRoot":"","sources":["../../../src/backend/llvm/reference-effects.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reference-effects.test.js","sourceRoot":"","sources":["../../../src/backend/llvm/reference-effects.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* their fields. Every allocation has a size_t reference count at offset zero
|
|
4
4
|
* and participates in the runtime allocation audit. */
|
|
5
5
|
import type { IrModule, IrRecordShape, IrType } from "../../ir/ir.js";
|
|
6
|
+
import type { NullableUnions } from "./nullable-unions.js";
|
|
6
7
|
/** What the tables need from the emitter: the extern-declaration ledger
|
|
7
8
|
* and the module-wide cycle/shape indexes. */
|
|
8
9
|
export interface ShapeHost {
|
|
@@ -11,10 +12,13 @@ export interface ShapeHost {
|
|
|
11
12
|
needOom(): void;
|
|
12
13
|
/** The target C ABI's `size_t` / refcount integer type. */
|
|
13
14
|
readonly sizeType: "i32" | "i64";
|
|
14
|
-
/** Byte offset from an object pointer back to ScrCycHdr.
|
|
15
|
-
readonly
|
|
15
|
+
/** Byte offset from an object pointer back to ScrCycHdr.buffered. */
|
|
16
|
+
readonly cycleBufferedOffset: number;
|
|
16
17
|
readonly tracedShapes: Set<string>;
|
|
17
18
|
readonly tracedUnions: Set<string>;
|
|
19
|
+
/** Unions represented as a nullable arm pointer (nullable-unions.ts):
|
|
20
|
+
* their RC and trace entry points are the arm's NULL-tolerant ones. */
|
|
21
|
+
readonly nullableUnions: NullableUnions;
|
|
18
22
|
readonly recordsById: Map<string, IrRecordShape>;
|
|
19
23
|
readonly recordCloneShapes: ReadonlySet<string>;
|
|
20
24
|
/** Emit the live-object audit notes (`scr_obj_alloc_note` /
|
|
@@ -25,11 +29,18 @@ export interface ShapeHost {
|
|
|
25
29
|
readonly objectAudit?: boolean;
|
|
26
30
|
/** Inline the small-object allocator's fast paths (llvm/alloc.ts). */
|
|
27
31
|
readonly inlineAlloc?: boolean;
|
|
32
|
+
/** Worker executables: the inline allocator state is thread-local. */
|
|
33
|
+
readonly threadLocalAlloc?: boolean;
|
|
28
34
|
/** Inline RC fast-path helpers requested so far ("<family>:<op>"); the
|
|
29
35
|
* emitter defines each once through {@link emitInlineRcHelpers}. Null
|
|
30
36
|
* keeps every retain/release a runtime call: inline RC is a
|
|
31
37
|
* size-for-speed optimization of the `speed` posture only. */
|
|
32
38
|
readonly rcHelpers: Set<string> | null;
|
|
39
|
+
/** The next collector statistics index for an emitted ScrCycType
|
|
40
|
+
* descriptor (cycTypeDescriptor), counting from FIRST_EMITTED_CYC_KIND
|
|
41
|
+
* in emission order.
|
|
42
|
+
* Absent: every descriptor gets 0, which keeps no statistics. */
|
|
43
|
+
nextCycKind?(): number;
|
|
33
44
|
}
|
|
34
45
|
/** Every emitted function/helper carries #0 = { sanitize_address } — see
|
|
35
46
|
* the emitter header. */
|
|
@@ -50,14 +61,16 @@ export declare function vAdapters(host: ShapeHost, t: IrType): {
|
|
|
50
61
|
* table above; the split exists so call sites read type-directedly.
|
|
51
62
|
* Families with a mirrored fast path call the inline helper instead. */
|
|
52
63
|
export declare function retainSym(host: ShapeHost, t: IrType): string;
|
|
64
|
+
/** Definitions of the requested NULL-skipping retain wrappers. */
|
|
65
|
+
export declare function emitNullableRetainWrappers(host: ShapeHost): string[];
|
|
53
66
|
/** The release call target (ptr → void, NULL-tolerant). The runtime's
|
|
54
67
|
* typed releases are external symbols, so the direct (non-`_v`) entry
|
|
55
68
|
* points serve where one exists; records use their emitted helper.
|
|
56
69
|
* Families with a mirrored fast path call the inline helper instead. */
|
|
57
70
|
export declare function releaseSym(host: ShapeHost, t: IrType): string;
|
|
58
71
|
/** How a runtime family decides whether an object carries a ScrCycHdr:
|
|
59
|
-
* never, always, or per object through the trace slots its C
|
|
60
|
-
*
|
|
72
|
+
* never, always, or per object through the trace slots its C release
|
|
73
|
+
* tests (`a->elem_trace`, `m->key_trace || m->val_trace`). */
|
|
61
74
|
type RcCycle = "none" | "always" | "arr" | "map";
|
|
62
75
|
interface InlineRcFamily {
|
|
63
76
|
readonly cycle: RcCycle;
|
|
@@ -72,9 +85,8 @@ interface InlineRcFamily {
|
|
|
72
85
|
/** Runtime RC families whose fast paths the backend mirrors in IR, keyed
|
|
73
86
|
* by the family name without its `scr_` stem prefix. Each
|
|
74
87
|
* row restates the C entry points in scr_runtime.h and the runtime TUs:
|
|
75
|
-
* retain is `if (rc != SIZE_MAX)
|
|
76
|
-
*
|
|
77
|
-
* when headered. Everything else (destruction, RC-audit accounting, the
|
|
88
|
+
* retain is `if (rc != SIZE_MAX) rc++`, and a release that leaves the
|
|
89
|
+
* object alive is `rc--`, then scr_cyc_on_release when headered. Everything else (destruction, RC-audit accounting, the
|
|
78
90
|
* collector's on_dead bookkeeping) stays in the runtime release, which
|
|
79
91
|
* repeats its own checks, so the fast path never duplicates it.
|
|
80
92
|
*
|
|
@@ -95,15 +107,14 @@ export declare function boxReleaseSym(host: ShapeHost): string;
|
|
|
95
107
|
export declare function inlineRcDecls(host: ShapeHost): string[];
|
|
96
108
|
/** Definitions for every requested inline RC helper, in a stable order.
|
|
97
109
|
*
|
|
98
|
-
* retain: a NULL skip where the C retain tolerates NULL, the immortal skip
|
|
99
|
-
* the increment
|
|
100
|
-
* obj-cycleColorOffset (scr_cyc_mark_live).
|
|
110
|
+
* retain: a NULL skip where the C retain tolerates NULL, the immortal skip
|
|
111
|
+
* and the increment; retains never touch the cycle header.
|
|
101
112
|
*
|
|
102
113
|
* release: NULL and immortal skips. rc == 1 (and any headered object of a
|
|
103
114
|
* per-object family) calls the runtime release, marked cold so destruction
|
|
104
115
|
* stays out of line. Otherwise decrement; always-headered families then
|
|
105
|
-
* inline scr_cyc_on_release's already-buffered case (
|
|
106
|
-
*
|
|
116
|
+
* inline scr_cyc_on_release's already-buffered case (`buffered` is the i16
|
|
117
|
+
* four bytes after color), calling the runtime only
|
|
107
118
|
* to enqueue a new candidate. scr_runtime.h asserts both header offsets and
|
|
108
119
|
* the trace-slot offsets. */
|
|
109
120
|
export declare function emitInlineRcHelpers(host: ShapeHost): string[];
|
|
@@ -142,19 +153,47 @@ export declare function mapKeyParamType(access: MapKeyAccess): string;
|
|
|
142
153
|
/** The ScrMapKeyKind / ScrMapValKind constants for scr_map_new. */
|
|
143
154
|
export declare function mapKeyKindNum(key: IrType, unionArms?: IrType[]): number;
|
|
144
155
|
export declare function mapValKindNum(value: IrType): number;
|
|
145
|
-
/** The
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
|
|
149
|
-
* the runtime's is a static inline with no external symbol). */
|
|
150
|
-
export declare function retainBody(host: ShapeHost, fnName: string, traced: boolean, comment?: string): string[];
|
|
156
|
+
/** The NULL- and immortal-skipping retain body shared by every shape. A
|
|
157
|
+
* retain never touches the cycle header: a buffered candidate that is
|
|
158
|
+
* retained again stays a candidate (scr_cycle.c, markRoots). */
|
|
159
|
+
export declare function retainBody(host: ShapeHost, fnName: string, comment?: string): string[];
|
|
151
160
|
/** Scalar fields and native strings cannot form recursive ownership chains.
|
|
152
161
|
* Other reference kinds conservatively share the runtime destruction budget. */
|
|
153
162
|
export declare function needsBoundedRelease(type: IrType): boolean;
|
|
154
163
|
/** Common NULL/immortal/decrement skeleton for ordinary object releases.
|
|
155
164
|
* `freeBody` owns the zero-ref teardown and must leave the current block at
|
|
156
|
-
* its end; traced objects also get the possible-cycle-root branch.
|
|
165
|
+
* its end; traced objects also get the possible-cycle-root branch.
|
|
166
|
+
*
|
|
167
|
+
* `fnName` is only the inlinable fast path (releaseFastPath); the complete
|
|
168
|
+
* release is `${fnName}_slow`, kept out of line so callers that inline the
|
|
169
|
+
* release do not also inline its teardown. */
|
|
157
170
|
export declare function releaseBody(host: ShapeHost, fnName: string, traced: boolean, freeBody: string[], comment?: string, bounded?: boolean): string[];
|
|
171
|
+
/** The inlinable half of an object release. A reference that is neither the
|
|
172
|
+
* last one nor immortal (rc - 2 < SIZE_MAX - 2 rules out 0, 1 and SIZE_MAX
|
|
173
|
+
* in one compare) only decrements and, for headered objects, takes the
|
|
174
|
+
* possible-root step. Immortal references return; NULL and last references
|
|
175
|
+
* call `slow`, which
|
|
176
|
+
* holds the complete release: inlining it everywhere would copy teardowns
|
|
177
|
+
* (and their destroy calls) into every caller. */
|
|
178
|
+
export declare function releaseFastPath(host: ShapeHost, fnName: string, slow: string, traced: boolean, comment?: string): string[];
|
|
179
|
+
/** The possible-cycle-root step of a release that left a headered object
|
|
180
|
+
* alive: scr_cyc_on_release with its early return inlined. Read `buffered`
|
|
181
|
+
* (the i16 at obj-6; nonzero for a queued candidate or a
|
|
182
|
+
* tenured object) and call the runtime only to enqueue a new candidate.
|
|
183
|
+
* Every emitted release of a headered object shares this sequence
|
|
184
|
+
* (scr_runtime.h asserts the offset); it ends by branching to `done`. */
|
|
185
|
+
/** One traced field of an emitted trace function: load the slot and visit
|
|
186
|
+
* it unless it is null. Every collector visitor ignores null children, and
|
|
187
|
+
* most traced slots of a typical heap are empty (optional links, unset
|
|
188
|
+
* caches), so testing here saves an indirect call per empty slot on every
|
|
189
|
+
* collector walk. The sequence ends in the new block `tv<i>.next`. */
|
|
190
|
+
export declare function traceFieldVisitLines(struct: string, index: number, i: number, comment: string): string[];
|
|
191
|
+
export declare function cycleRootLines(host: ShapeHost, done: string): string[];
|
|
192
|
+
/** The death of a headered object: scr_cyc_on_dead with its early return
|
|
193
|
+
* inlined. Only an object still in a candidate buffer
|
|
194
|
+
* (`buffered` nonzero) has an entry to remove; the sequence continues at
|
|
195
|
+
* the new block `next`. */
|
|
196
|
+
export declare function cycleDeadLines(host: ShapeHost, next: string): string[];
|
|
158
197
|
/** Per-record-shape LLVM emission: the named struct types (returned as
|
|
159
198
|
* `typeDefs`) and the new/retain/release (+trace/gcFree for cycle-capable
|
|
160
199
|
* shapes) function definitions (`defs`). Layout follows the runtime ABI:
|