@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,4 +1,5 @@
|
|
|
1
1
|
import { RUNTIME_EMITTER_CLASS, RUNTIME_STREAM_CLASSES } from "../ir/ir.js";
|
|
2
|
+
import { dynamicFieldStores } from "../ir/int32-slots.js";
|
|
2
3
|
import { everyExprChild, everyModuleNode, everyStmtChild, everyTypeChild } from "../ir/traverse.js";
|
|
3
4
|
const DYNAMIC_ISLAND_EXPRS = new Set([
|
|
4
5
|
"jsMarshal",
|
|
@@ -20,7 +21,12 @@ export function fieldKey(unit, field) {
|
|
|
20
21
|
return `${unit}\0${field}`;
|
|
21
22
|
}
|
|
22
23
|
export function computeCycleMutability(mod, unitOfClass) {
|
|
23
|
-
const result = {
|
|
24
|
+
const result = {
|
|
25
|
+
all: false,
|
|
26
|
+
emptyPropertyBags: false,
|
|
27
|
+
units: new Set(),
|
|
28
|
+
fields: new Set(),
|
|
29
|
+
};
|
|
24
30
|
if (mod.lib !== undefined)
|
|
25
31
|
return { ...result, all: true };
|
|
26
32
|
const classes = mod.classes ?? [];
|
|
@@ -41,6 +47,19 @@ export function computeCycleMutability(mod, unitOfClass) {
|
|
|
41
47
|
if (c.runtime || c.name === RUNTIME_EMITTER_CLASS || RUNTIME_STREAM_CLASSES.has(c.name))
|
|
42
48
|
result.units.add(unitOfClass(c.name));
|
|
43
49
|
}
|
|
50
|
+
// A typed-ref capsule writes into its native object only when a runtime
|
|
51
|
+
// store into the capsule commits (dynamicFieldStores audits which helpers
|
|
52
|
+
// can store; a commit rewrites every field, reference fields possibly
|
|
53
|
+
// with fresh conversions). Without any such store in the program,
|
|
54
|
+
// crossing into checked-dynamic code writes nothing. FFI calls and
|
|
55
|
+
// intrinsics other than publish (which only marks objects immortal) stay
|
|
56
|
+
// conservative.
|
|
57
|
+
const dynStores = dynamicFieldStores(mod);
|
|
58
|
+
const dynamicStores = dynStores.all || dynStores.names.size > 0;
|
|
59
|
+
result.emptyPropertyBags = !dynamicStores;
|
|
60
|
+
const boundaryWrites = (e) => dynamicStores ||
|
|
61
|
+
e.kind === "ffiCall" ||
|
|
62
|
+
(e.kind === "intrinsic" && e.name !== "threads.publish");
|
|
44
63
|
// Types that can become checked-dynamic values: mark their whole closure.
|
|
45
64
|
const exposedTypes = new Set();
|
|
46
65
|
const expose = (root) => {
|
|
@@ -86,11 +105,43 @@ export function computeCycleMutability(mod, unitOfClass) {
|
|
|
86
105
|
}
|
|
87
106
|
}
|
|
88
107
|
};
|
|
108
|
+
// Constructor stores are construction-only until `this` first escapes:
|
|
109
|
+
// stores from the escaping statement on, and every store of a
|
|
110
|
+
// constructor whose ancestor constructor already let `this` escape, are
|
|
111
|
+
// ordinary writes.
|
|
112
|
+
const fnByName = new Map(mod.functions.map((fn) => [fn.name, fn]));
|
|
113
|
+
const classByName = new Map(classes.map((c) => [c.name, c]));
|
|
114
|
+
const escapePoints = new Map();
|
|
115
|
+
/** The constructor's escape point; 0 without an analyzable constructor. */
|
|
116
|
+
const escapePoint = (name) => {
|
|
117
|
+
const known = escapePoints.get(name);
|
|
118
|
+
if (known !== undefined)
|
|
119
|
+
return known;
|
|
120
|
+
const fn = fnByName.get(`%${name}.constructor`);
|
|
121
|
+
const cls = classByName.get(name);
|
|
122
|
+
const thisId = fn?.params[0]?.localId;
|
|
123
|
+
const base = cls?.base !== undefined ? `%${cls.base}.constructor` : null;
|
|
124
|
+
const point = fn === undefined || cls === undefined || thisId === undefined
|
|
125
|
+
? 0
|
|
126
|
+
: constructorEscapePoint(fn, thisId, base);
|
|
127
|
+
escapePoints.set(name, point);
|
|
128
|
+
return point;
|
|
129
|
+
};
|
|
130
|
+
const escapes = (name) => escapePoint(name) < (fnByName.get(`%${name}.constructor`)?.body.length ?? 1);
|
|
131
|
+
const ancestorEscaped = (name) => {
|
|
132
|
+
for (let c = classByName.get(name)?.base; c !== undefined; c = classByName.get(c)?.base)
|
|
133
|
+
if (escapes(c))
|
|
134
|
+
return true;
|
|
135
|
+
return false;
|
|
136
|
+
};
|
|
137
|
+
let privateUntil = 0;
|
|
138
|
+
let topLevel = 0;
|
|
139
|
+
let aliases = new Set();
|
|
89
140
|
const isThisRef = (e, thisId) => {
|
|
90
141
|
if (thisId === null)
|
|
91
142
|
return false;
|
|
92
143
|
if (e.kind === "varRef")
|
|
93
|
-
return e.localId
|
|
144
|
+
return aliases.has(e.localId);
|
|
94
145
|
if (e.kind === "upcast")
|
|
95
146
|
return isThisRef(e.value, thisId);
|
|
96
147
|
if (e.kind === "seqExpr")
|
|
@@ -100,9 +151,14 @@ export function computeCycleMutability(mod, unitOfClass) {
|
|
|
100
151
|
for (const fn of mod.functions) {
|
|
101
152
|
const ctorClass = ctorOf.get(fn.name);
|
|
102
153
|
const thisId = ctorClass !== undefined ? (fn.params[0]?.localId ?? null) : null;
|
|
154
|
+
aliases = thisId !== null ? constructorThisAliases(fn, thisId) : new Set();
|
|
155
|
+
privateUntil =
|
|
156
|
+
ctorClass !== undefined && thisId !== null && !ancestorEscaped(ctorClass.name)
|
|
157
|
+
? escapePoint(ctorClass.name)
|
|
158
|
+
: 0;
|
|
103
159
|
const baseCtor = ctorClass?.base !== undefined ? `%${ctorClass.base}.constructor` : null;
|
|
104
160
|
const expr = (e) => {
|
|
105
|
-
if (DYNAMIC_BOUNDARY_EXPRS.has(e.kind)) {
|
|
161
|
+
if (DYNAMIC_BOUNDARY_EXPRS.has(e.kind) && boundaryWrites(e)) {
|
|
106
162
|
everyExprChild(e, (child) => {
|
|
107
163
|
expose(child.type);
|
|
108
164
|
return true;
|
|
@@ -131,7 +187,7 @@ export function computeCycleMutability(mod, unitOfClass) {
|
|
|
131
187
|
const stmt = (s) => {
|
|
132
188
|
switch (s.kind) {
|
|
133
189
|
case "fieldSet":
|
|
134
|
-
if (!isThisRef(s.obj, thisId))
|
|
190
|
+
if (!isThisRef(s.obj, thisId) || topLevel >= privateUntil)
|
|
135
191
|
result.fields.add(fieldKey(unitOfClass(s.className), s.field));
|
|
136
192
|
break;
|
|
137
193
|
case "recordSet":
|
|
@@ -145,23 +201,54 @@ export function computeCycleMutability(mod, unitOfClass) {
|
|
|
145
201
|
result.units.add(`record:${s.shapeId}`);
|
|
146
202
|
break;
|
|
147
203
|
case "throw":
|
|
148
|
-
|
|
204
|
+
if (dynamicStores)
|
|
205
|
+
expose(s.value.type);
|
|
149
206
|
break;
|
|
150
207
|
}
|
|
151
208
|
return everyStmtChild(s, expr, stmt);
|
|
152
209
|
};
|
|
153
|
-
fn.body.
|
|
154
|
-
|
|
155
|
-
result.units.add(unitOfClass(ctorClass.name));
|
|
210
|
+
for (topLevel = 0; topLevel < fn.body.length; topLevel++)
|
|
211
|
+
stmt(fn.body[topLevel]);
|
|
156
212
|
}
|
|
157
213
|
return result;
|
|
158
214
|
}
|
|
159
|
-
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
function
|
|
215
|
+
/** The locals of a constructor that always hold its `this`: the parameter
|
|
216
|
+
* itself plus immutable locals declared with a `this` initializer and never
|
|
217
|
+
* assigned (the receiver temporaries of compound field assignments). */
|
|
218
|
+
export function constructorThisAliases(fn, thisId) {
|
|
219
|
+
const aliases = new Set([thisId]);
|
|
220
|
+
const immutable = new Set(fn.locals.filter((l) => !l.mutable).map((l) => l.id));
|
|
221
|
+
const assigned = new Set();
|
|
222
|
+
const candidates = [];
|
|
223
|
+
const isThisParam = (e) => (e.kind === "varRef" && e.localId === thisId) ||
|
|
224
|
+
(e.kind === "upcast" && isThisParam(e.value)) ||
|
|
225
|
+
(e.kind === "seqExpr" && isThisParam(e.result));
|
|
226
|
+
const expr = (e) => everyExprChild(e, expr, stmt);
|
|
227
|
+
const stmt = (s) => {
|
|
228
|
+
if (s.kind === "assign")
|
|
229
|
+
assigned.add(s.localId);
|
|
230
|
+
if (s.kind === "varDecl" && s.init !== null && immutable.has(s.localId) && isThisParam(s.init))
|
|
231
|
+
candidates.push(s.localId);
|
|
232
|
+
return everyStmtChild(s, expr, stmt);
|
|
233
|
+
};
|
|
234
|
+
fn.body.every(stmt);
|
|
235
|
+
for (const id of candidates)
|
|
236
|
+
if (!assigned.has(id))
|
|
237
|
+
aliases.add(id);
|
|
238
|
+
return aliases;
|
|
239
|
+
}
|
|
240
|
+
/** The index of the first top-level statement of a constructor body in
|
|
241
|
+
* which `this` can be observed by anything other than the constructor's own
|
|
242
|
+
* field stores and reads (the body length when it never is). Statements run
|
|
243
|
+
* in order, so every store in an earlier statement completes while the
|
|
244
|
+
* object is still private. Within and after the escaping statement nothing
|
|
245
|
+
* is private any more. With `selfStores`, storing `this` into one of its
|
|
246
|
+
* own fields is not an escape (it exposes nothing to other code, but it
|
|
247
|
+
* does create a cycle). */
|
|
248
|
+
export function constructorEscapePoint(fn, thisId, baseCtor, options = {}) {
|
|
163
249
|
let escaped = false;
|
|
164
|
-
const
|
|
250
|
+
const aliases = constructorThisAliases(fn, thisId);
|
|
251
|
+
const isThisRef = (e) => (e.kind === "varRef" && aliases.has(e.localId)) ||
|
|
165
252
|
(e.kind === "upcast" && isThisRef(e.value)) ||
|
|
166
253
|
(e.kind === "seqExpr" && isThisRef(e.result));
|
|
167
254
|
// The non-`this` parts of a `this`-valued wrapper (seqExpr statements).
|
|
@@ -173,12 +260,13 @@ function constructorEscapes(fn, thisId, baseCtor) {
|
|
|
173
260
|
return true;
|
|
174
261
|
};
|
|
175
262
|
const expr = (e) => {
|
|
176
|
-
if (e.kind === "varRef" && e.localId
|
|
263
|
+
if (e.kind === "varRef" && aliases.has(e.localId)) {
|
|
177
264
|
escaped = true;
|
|
178
265
|
return false;
|
|
179
266
|
}
|
|
180
267
|
// Closures and class references are the expressions that capture locals.
|
|
181
|
-
if ((e.kind === "closure" || e.kind === "classRef") &&
|
|
268
|
+
if ((e.kind === "closure" || e.kind === "classRef") &&
|
|
269
|
+
(e.captures ?? []).some((id) => aliases.has(id))) {
|
|
182
270
|
escaped = true;
|
|
183
271
|
return false;
|
|
184
272
|
}
|
|
@@ -193,13 +281,27 @@ function constructorEscapes(fn, thisId, baseCtor) {
|
|
|
193
281
|
return everyExprChild(e, expr, stmt);
|
|
194
282
|
};
|
|
195
283
|
const stmt = (s) => {
|
|
196
|
-
if (s.kind === "fieldSet" && isThisRef(s.obj))
|
|
284
|
+
if (s.kind === "fieldSet" && isThisRef(s.obj)) {
|
|
285
|
+
if (options.selfStores === true) {
|
|
286
|
+
// `this` itself, possibly wrapped into the field's union type.
|
|
287
|
+
const self = s.value.kind === "unionWrap" ? s.value.value : s.value;
|
|
288
|
+
if (isThisRef(self))
|
|
289
|
+
return wrapper(s.obj) && wrapper(self);
|
|
290
|
+
}
|
|
197
291
|
return wrapper(s.obj) && expr(s.value);
|
|
292
|
+
}
|
|
198
293
|
if (s.kind === "exprStmt" && isThisRef(s.expr))
|
|
199
294
|
return wrapper(s.expr);
|
|
295
|
+
// Declaring an alias is not an escape; its uses are checked like `this`.
|
|
296
|
+
if (s.kind === "varDecl" && aliases.has(s.localId) && s.init !== null)
|
|
297
|
+
return wrapper(s.init);
|
|
200
298
|
return everyStmtChild(s, expr, stmt);
|
|
201
299
|
};
|
|
202
|
-
fn.body.
|
|
203
|
-
|
|
300
|
+
for (let i = 0; i < fn.body.length; i++) {
|
|
301
|
+
stmt(fn.body[i]);
|
|
302
|
+
if (escaped)
|
|
303
|
+
return i;
|
|
304
|
+
}
|
|
305
|
+
return fn.body.length;
|
|
204
306
|
}
|
|
205
307
|
//# sourceMappingURL=cycle-mutability.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cycle-mutability.js","sourceRoot":"","sources":["../../src/backend/cycle-mutability.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cycle-mutability.js","sourceRoot":"","sources":["../../src/backend/cycle-mutability.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@ export interface AllocHost {
|
|
|
8
8
|
/** Emit the RC-audit object notes on the out-of-line paths (ShapeHost
|
|
9
9
|
* objectAudit: only --sanitize builds count them). Absent means emit. */
|
|
10
10
|
readonly objectAudit?: boolean;
|
|
11
|
+
/** The allocator state, live count and dispose hook are thread-local
|
|
12
|
+
* (worker executables). */
|
|
13
|
+
readonly threadLocalAlloc?: boolean;
|
|
11
14
|
}
|
|
12
15
|
/** Whether a target can use the inline allocation paths. */
|
|
13
16
|
export declare function inlineAllocSupported(options: {
|
|
@@ -16,11 +19,21 @@ export declare function inlineAllocSupported(options: {
|
|
|
16
19
|
targetTriple?: string | undefined;
|
|
17
20
|
threadInstances?: boolean | undefined;
|
|
18
21
|
}): boolean;
|
|
19
|
-
/** A collector header to install: the object's
|
|
22
|
+
/** A collector header to install: the object type's constant ScrCycType
|
|
23
|
+
* descriptor (its trace and teardown; see cycTypeDescriptor). */
|
|
20
24
|
export interface CycHeader {
|
|
21
|
-
|
|
22
|
-
free: string;
|
|
25
|
+
type: string;
|
|
23
26
|
}
|
|
27
|
+
/** The first collector statistics index of an emitted ScrCycType
|
|
28
|
+
* descriptor; the runtime's own families use the ones below
|
|
29
|
+
* (SCR_CYC_KIND_EMITTED in scr_runtime.h). */
|
|
30
|
+
export declare const FIRST_EMITTED_CYC_KIND = 32;
|
|
31
|
+
/** The definition of a shape's ScrCycType descriptor `{ trace, free_fn,
|
|
32
|
+
* kind }`, referenced by every header of that shape. `kind` indexes the
|
|
33
|
+
* collector's per-type statistics (scr_runtime.h); emitted shapes number
|
|
34
|
+
* themselves from FIRST_EMITTED_CYC_KIND (ShapeHost.nextCycKind) and 0
|
|
35
|
+
* keeps none. */
|
|
36
|
+
export declare function cycTypeDescriptor(name: string, trace: string, free: string, kind?: number): string;
|
|
24
37
|
/**
|
|
25
38
|
* Lines that leave a zeroed object of `size` bytes (an integer constant
|
|
26
39
|
* expression) in `%o`, aborting on OOM, with the RC-audit allocation note
|
|
@@ -21,12 +21,48 @@
|
|
|
21
21
|
* otherwise). Blocks outside the reservation (system fallbacks) go back
|
|
22
22
|
* through scr_rt_free.
|
|
23
23
|
*
|
|
24
|
-
* Inlining is limited to the targets where the allocator can be live
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* remain. */
|
|
24
|
+
* Inlining is limited to the targets where the allocator can be live: 64-bit,
|
|
25
|
+
* not WASI, not Windows, and not thread-instanced libraries (whose
|
|
26
|
+
* allocator is compiled out). Worker programs inline too, against the
|
|
27
|
+
* thread-local allocator state, live count and dispose hook of the calling
|
|
28
|
+
* script thread (each thread owns an arena; see scr_runtime.h). Elsewhere
|
|
29
|
+
* the out-of-line calls remain. */
|
|
30
|
+
/** The state globals of the inline allocation paths and, in worker
|
|
31
|
+
* executables, their byte offsets inside the runtime's one thread-local
|
|
32
|
+
* ScrThreadHot block (layout asserted in scr_runtime.h). */
|
|
33
|
+
const STATE_GLOBALS = [
|
|
34
|
+
["@scr_sa", 0],
|
|
35
|
+
["@scr_cyc_live", 792],
|
|
36
|
+
["@scr_cyc_old_freed", 800],
|
|
37
|
+
["@scr_weak_dispose_hook", 808],
|
|
38
|
+
];
|
|
39
|
+
const THREAD_HOT_TYPE = "{ { i64, i64, i32, [32 x ptr], [32 x ptr], [32 x ptr] }, i64, i64, ptr }";
|
|
40
|
+
/** Worker executables: address the thread's ScrThreadHot block once through
|
|
41
|
+
* llvm.threadlocal.address (which LLVM can share across a function; on
|
|
42
|
+
* Darwin each distinct thread-local costs a call) and rewrite the lines to
|
|
43
|
+
* address the state globals at their offsets in it. */
|
|
44
|
+
function threadLocalState(host, prefix, lines) {
|
|
45
|
+
if (host.threadLocalAlloc !== true)
|
|
46
|
+
return lines;
|
|
47
|
+
const hot = `%${prefix}.tl.hot`;
|
|
48
|
+
const preamble = [];
|
|
49
|
+
let text = lines.join("\n");
|
|
50
|
+
for (const [global, offset] of STATE_GLOBALS) {
|
|
51
|
+
if (!text.includes(`ptr ${global}`))
|
|
52
|
+
continue;
|
|
53
|
+
if (preamble.length === 0) {
|
|
54
|
+
host.declare(`@scr_thread_hot = external thread_local global ${THREAD_HOT_TYPE}`);
|
|
55
|
+
host.declare(`declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)`);
|
|
56
|
+
preamble.push(` ${hot} = call ptr @llvm.threadlocal.address.p0(ptr @scr_thread_hot)`);
|
|
57
|
+
}
|
|
58
|
+
const local = `%${prefix}.tl.${global.slice(5)}`;
|
|
59
|
+
preamble.push(` ${local} = getelementptr inbounds i8, ptr ${hot}, i64 ${offset}`);
|
|
60
|
+
text = text
|
|
61
|
+
.replaceAll(`ptr ${global},`, `ptr ${local},`)
|
|
62
|
+
.replaceAll(`ptr ${global}`, `ptr ${local}`);
|
|
63
|
+
}
|
|
64
|
+
return [...preamble, ...text.split("\n")];
|
|
65
|
+
}
|
|
30
66
|
const ALLOC_NOTE = ` call void @scr_obj_alloc_note()`;
|
|
31
67
|
const FREE_NOTE = ` call void @scr_obj_free_note()`;
|
|
32
68
|
/** Whether a target can use the inline allocation paths. */
|
|
@@ -49,13 +85,32 @@ const SA_BUMP = 280;
|
|
|
49
85
|
const SA_LIM = 536;
|
|
50
86
|
const SA_STEP_SHIFT = 4; // 16-byte classes
|
|
51
87
|
const SA_MAX = 512;
|
|
52
|
-
/** sizeof(ScrCycHdr) on 64-bit targets
|
|
53
|
-
*
|
|
54
|
-
const CYC_HDR =
|
|
88
|
+
/** sizeof(ScrCycHdr); on 64-bit targets the type descriptor is its first
|
|
89
|
+
* word, and every other header word starts zero. */
|
|
90
|
+
const CYC_HDR = 16;
|
|
91
|
+
/** ScrCycHdr.gen, an i8 at this header offset (scr_runtime.h asserts it). */
|
|
92
|
+
const CYC_GEN = 9;
|
|
55
93
|
function declareState(host) {
|
|
56
|
-
host.
|
|
94
|
+
if (host.threadLocalAlloc !== true)
|
|
95
|
+
host.declare(`@scr_sa = external global ${SA_TYPE}`);
|
|
57
96
|
host.declare(`declare i1 @llvm.expect.i1(i1, i1)`);
|
|
58
97
|
}
|
|
98
|
+
function declareGlobal(host, decl) {
|
|
99
|
+
if (host.threadLocalAlloc !== true)
|
|
100
|
+
host.declare(decl);
|
|
101
|
+
}
|
|
102
|
+
/** The first collector statistics index of an emitted ScrCycType
|
|
103
|
+
* descriptor; the runtime's own families use the ones below
|
|
104
|
+
* (SCR_CYC_KIND_EMITTED in scr_runtime.h). */
|
|
105
|
+
export const FIRST_EMITTED_CYC_KIND = 32;
|
|
106
|
+
/** The definition of a shape's ScrCycType descriptor `{ trace, free_fn,
|
|
107
|
+
* kind }`, referenced by every header of that shape. `kind` indexes the
|
|
108
|
+
* collector's per-type statistics (scr_runtime.h); emitted shapes number
|
|
109
|
+
* themselves from FIRST_EMITTED_CYC_KIND (ShapeHost.nextCycKind) and 0
|
|
110
|
+
* keeps none. */
|
|
111
|
+
export function cycTypeDescriptor(name, trace, free, kind = 0) {
|
|
112
|
+
return `${name} = internal constant { ptr, ptr, i32 } { ptr ${trace}, ptr ${free}, i32 ${kind} }`;
|
|
113
|
+
}
|
|
59
114
|
/**
|
|
60
115
|
* Lines that leave a zeroed object of `size` bytes (an integer constant
|
|
61
116
|
* expression) in `%o`, aborting on OOM, with the RC-audit allocation note
|
|
@@ -66,7 +121,7 @@ function declareState(host) {
|
|
|
66
121
|
* `sa.` prefix; the lines end in an open block.
|
|
67
122
|
*/
|
|
68
123
|
export function emitObjectAlloc(host, size, cyc, stored = 8) {
|
|
69
|
-
const lines = allocLines(host, size, cyc, stored);
|
|
124
|
+
const lines = threadLocalState(host, "sa", allocLines(host, size, cyc, stored));
|
|
70
125
|
if (host.objectAudit === false)
|
|
71
126
|
return lines.filter((line) => line !== ALLOC_NOTE);
|
|
72
127
|
host.declare(`declare void @scr_obj_alloc_note()`);
|
|
@@ -76,9 +131,9 @@ function allocLines(host, size, cyc, stored) {
|
|
|
76
131
|
const S = host.sizeType;
|
|
77
132
|
if (host.inlineAlloc !== true) {
|
|
78
133
|
if (cyc) {
|
|
79
|
-
host.declare(`declare ptr @scr_cyc_alloc(${S}, ptr
|
|
134
|
+
host.declare(`declare ptr @scr_cyc_alloc(${S}, ptr)`);
|
|
80
135
|
return [
|
|
81
|
-
` %o = call ptr @scr_cyc_alloc(${S} ${size}, ptr ${cyc.
|
|
136
|
+
` %o = call ptr @scr_cyc_alloc(${S} ${size}, ptr ${cyc.type})`,
|
|
82
137
|
` call void @scr_obj_alloc_note()`,
|
|
83
138
|
];
|
|
84
139
|
}
|
|
@@ -97,8 +152,8 @@ function allocLines(host, size, cyc, stored) {
|
|
|
97
152
|
}
|
|
98
153
|
declareState(host);
|
|
99
154
|
// Bytes of the block that the fast path itself stores after the clear:
|
|
100
|
-
// the header's
|
|
101
|
-
const keep = cyc ?
|
|
155
|
+
// the header's descriptor word, or the object's leading words.
|
|
156
|
+
const keep = cyc ? 8 : stored;
|
|
102
157
|
const lines = [
|
|
103
158
|
` %sa.n = add i64 ${size}, ${cyc ? CYC_HDR : 0}`,
|
|
104
159
|
` %sa.small = icmp ule i64 %sa.n, ${SA_MAX}`,
|
|
@@ -142,9 +197,9 @@ function allocLines(host, size, cyc, stored) {
|
|
|
142
197
|
];
|
|
143
198
|
host.declare(`declare void @llvm.memset.p0.i64(ptr, i8, i64, i1)`);
|
|
144
199
|
if (cyc) {
|
|
145
|
-
host.declare(`declare ptr @scr_cyc_alloc(${S}, ptr
|
|
146
|
-
host
|
|
147
|
-
lines.push(`sa.fast:`, ` %sa.blk = phi ptr [ %sa.b, %sa.pop ], [ %sa.p, %sa.carve ]`, ` store ptr ${cyc.
|
|
200
|
+
host.declare(`declare ptr @scr_cyc_alloc(${S}, ptr)`);
|
|
201
|
+
declareGlobal(host, `@scr_cyc_live = external global i64`);
|
|
202
|
+
lines.push(`sa.fast:`, ` %sa.blk = phi ptr [ %sa.b, %sa.pop ], [ %sa.p, %sa.carve ]`, ` store ptr ${cyc.type}, ptr %sa.blk ; ScrCycHdr.type`, ` %sa.live = load i64, ptr @scr_cyc_live`, ` %sa.live1 = add i64 %sa.live, 1`, ` store i64 %sa.live1, ptr @scr_cyc_live`, ` %sa.obj = getelementptr inbounds i8, ptr %sa.blk, i64 ${CYC_HDR}`, ` br label %sa.done`, `sa.slow:`, ` %sa.s = call ptr @scr_cyc_alloc(i64 ${size}, ptr ${cyc.type})`, ` call void @scr_obj_alloc_note()`, ` br label %sa.done`, `sa.done:`, ` %o = phi ptr [ %sa.obj, %sa.fast ], [ %sa.s, %sa.slow ]`);
|
|
148
203
|
}
|
|
149
204
|
else {
|
|
150
205
|
host.declare(`declare ptr @scr_rt_calloc(${S})`);
|
|
@@ -160,7 +215,7 @@ function allocLines(host, size, cyc, stored) {
|
|
|
160
215
|
* Labels use the `sf.` prefix; the lines end in an open block.
|
|
161
216
|
*/
|
|
162
217
|
export function emitObjectFree(host, cyc) {
|
|
163
|
-
const lines = freeLines(host, cyc);
|
|
218
|
+
const lines = threadLocalState(host, "sf", freeLines(host, cyc));
|
|
164
219
|
if (host.objectAudit === false)
|
|
165
220
|
return lines.filter((line) => line !== FREE_NOTE);
|
|
166
221
|
host.declare(`declare void @scr_obj_free_note()`);
|
|
@@ -182,7 +237,7 @@ function freeLines(host, cyc) {
|
|
|
182
237
|
}
|
|
183
238
|
declareState(host);
|
|
184
239
|
host.declare(`declare void @scr_rt_free(ptr)`);
|
|
185
|
-
host
|
|
240
|
+
declareGlobal(host, `@scr_weak_dispose_hook = external global ptr`);
|
|
186
241
|
const lines = [
|
|
187
242
|
` %sf.hook = load ptr, ptr @scr_weak_dispose_hook`,
|
|
188
243
|
` %sf.has = icmp ne ptr %sf.hook, null`,
|
|
@@ -194,9 +249,9 @@ function freeLines(host, cyc) {
|
|
|
194
249
|
`sf.block:`,
|
|
195
250
|
];
|
|
196
251
|
if (cyc) {
|
|
197
|
-
host
|
|
198
|
-
host
|
|
199
|
-
lines.push(` %sf.live = load i64, ptr @scr_cyc_live`, ` %sf.live1 = sub i64 %sf.live, 1`, ` store i64 %sf.live1, ptr @scr_cyc_live`, ` %sf.blk = getelementptr inbounds i8, ptr %o, i64 -${CYC_HDR}`, ` %sf.genp = getelementptr inbounds i8, ptr %sf.blk, i64
|
|
252
|
+
declareGlobal(host, `@scr_cyc_live = external global i64`);
|
|
253
|
+
declareGlobal(host, `@scr_cyc_old_freed = external global i64`);
|
|
254
|
+
lines.push(` %sf.live = load i64, ptr @scr_cyc_live`, ` %sf.live1 = sub i64 %sf.live, 1`, ` store i64 %sf.live1, ptr @scr_cyc_live`, ` %sf.blk = getelementptr inbounds i8, ptr %o, i64 -${CYC_HDR}`, ` %sf.genp = getelementptr inbounds i8, ptr %sf.blk, i64 ${CYC_GEN}`, ` %sf.gen = load i8, ptr %sf.genp`, ` %sf.old = icmp eq i8 %sf.gen, 2`, ` br i1 %sf.old, label %sf.oldcount, label %sf.accounted`, `sf.oldcount:`, ` %sf.freed = load i64, ptr @scr_cyc_old_freed`, ` %sf.freed1 = add i64 %sf.freed, 1`, ` store i64 %sf.freed1, ptr @scr_cyc_old_freed`, ` br label %sf.accounted`, `sf.accounted:`);
|
|
200
255
|
}
|
|
201
256
|
const blk = cyc ? "%sf.blk" : "%o";
|
|
202
257
|
lines.push(` %sf.base = load i64, ptr @scr_sa`, ` %sf.spanp = getelementptr inbounds i8, ptr @scr_sa, i64 ${SA_SPAN}`, ` %sf.span = load i64, ptr %sf.spanp`, ` %sf.bi = ptrtoint ptr ${blk} to i64`, ` %sf.off = sub i64 %sf.bi, %sf.base`, ` %sf.in = icmp ult i64 %sf.off, %sf.span`, ` %sf.inx = call i1 @llvm.expect.i1(i1 %sf.in, i1 true)`, ` br i1 %sf.inx, label %sf.push, label %sf.sys`, `sf.push:`, ` %sf.shp = getelementptr inbounds i8, ptr @scr_sa, i64 ${SA_SHIFT}`, ` %sf.sh32 = load i32, ptr %sf.shp`, ` %sf.sh = zext i32 %sf.sh32 to i64`, ` %sf.c = lshr i64 %sf.off, %sf.sh`, ` %sf.c8 = shl i64 %sf.c, 3`, ` %sf.fo = add i64 %sf.c8, ${SA_FREE}`, ` %sf.fp = getelementptr inbounds i8, ptr @scr_sa, i64 %sf.fo`, ` %sf.head = load ptr, ptr %sf.fp`, ` store ptr %sf.head, ptr ${blk}`, ` store ptr ${blk}, ptr %sf.fp`, ` br label %sf.done`, `sf.sys: ; outside the reservation, or the allocator is compiled out`, ` call void @scr_obj_free_note()`, ` call void @scr_rt_free(ptr ${blk})`, ` br label %sf.done`, `sf.done:`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alloc.js","sourceRoot":"","sources":["../../../src/backend/llvm/alloc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"alloc.js","sourceRoot":"","sources":["../../../src/backend/llvm/alloc.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,8 +49,8 @@ describe("emitted object allocation", () => {
|
|
|
49
49
|
"ok:",
|
|
50
50
|
" call void @scr_obj_alloc_note()",
|
|
51
51
|
]);
|
|
52
|
-
expect(emitObjectAlloc(h, "24", {
|
|
53
|
-
" %o = call ptr @scr_cyc_alloc(i64 24, ptr @
|
|
52
|
+
expect(emitObjectAlloc(h, "24", { type: "@ty" })).toEqual([
|
|
53
|
+
" %o = call ptr @scr_cyc_alloc(i64 24, ptr @ty)",
|
|
54
54
|
" call void @scr_obj_alloc_note()",
|
|
55
55
|
]);
|
|
56
56
|
expect(emitObjectFree(h, true)).toEqual([
|
|
@@ -77,10 +77,10 @@ describe("emitted object allocation", () => {
|
|
|
77
77
|
expect(slow).toContain(" call void @scr_obj_alloc_note()");
|
|
78
78
|
expect(plain.filter((l) => l.includes("@scr_obj_alloc_note")).length).toBe(1);
|
|
79
79
|
expect(plain.at(-1)).toBe(" %o = phi ptr [ %sa.blk, %sa.fast ], [ %sa.s, %sa.noted ]");
|
|
80
|
-
const cyc = emitObjectAlloc(h, "40", {
|
|
80
|
+
const cyc = emitObjectAlloc(h, "40", { type: "@ty" });
|
|
81
81
|
expectSingleDefinitions(cyc);
|
|
82
|
-
expect(cyc).toContain(" %sa.n = add i64 40,
|
|
83
|
-
expect(cyc).toContain(" %sa.s = call ptr @scr_cyc_alloc(i64 40, ptr @
|
|
82
|
+
expect(cyc).toContain(" %sa.n = add i64 40, 16");
|
|
83
|
+
expect(cyc).toContain(" %sa.s = call ptr @scr_cyc_alloc(i64 40, ptr @ty)");
|
|
84
84
|
expect(cyc).toContain(" store i64 %sa.live1, ptr @scr_cyc_live");
|
|
85
85
|
expect(h.decls).toContain("@scr_sa = external global { i64, i64, i32, [32 x ptr], [32 x ptr], [32 x ptr] }");
|
|
86
86
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alloc.test.js","sourceRoot":"","sources":["../../../src/backend/llvm/alloc.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"alloc.test.js","sourceRoot":"","sources":["../../../src/backend/llvm/alloc.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,17 @@ export declare class BlockBuilder {
|
|
|
8
8
|
private tempCounter;
|
|
9
9
|
private labelCounter;
|
|
10
10
|
debugLocation: string | null;
|
|
11
|
+
/** The body is a synchronous IR function: the active exception cell is one
|
|
12
|
+
* value from entry to every pending check. Other builders (adapters,
|
|
13
|
+
* runtime helpers) keep loading it at each check. */
|
|
14
|
+
excCellInvariant: boolean;
|
|
15
|
+
/** The entry-block load of the active exception cell, once requested. */
|
|
16
|
+
excCell: string | null;
|
|
11
17
|
/** Function epilogue shared by normal and exceptional returns. */
|
|
12
18
|
returnEpilogue: string | null;
|
|
19
|
+
/** Temps known to hold immortal values (temp names are only unique
|
|
20
|
+
* within one builder). */
|
|
21
|
+
readonly immortalTemps: Set<string>;
|
|
13
22
|
constructor();
|
|
14
23
|
newLabel(hint: string): string;
|
|
15
24
|
startBlock(label: string): void;
|
|
@@ -19,8 +19,17 @@ export class BlockBuilder {
|
|
|
19
19
|
tempCounter = 0;
|
|
20
20
|
labelCounter = 0;
|
|
21
21
|
debugLocation = null;
|
|
22
|
+
/** The body is a synchronous IR function: the active exception cell is one
|
|
23
|
+
* value from entry to every pending check. Other builders (adapters,
|
|
24
|
+
* runtime helpers) keep loading it at each check. */
|
|
25
|
+
excCellInvariant = false;
|
|
26
|
+
/** The entry-block load of the active exception cell, once requested. */
|
|
27
|
+
excCell = null;
|
|
22
28
|
/** Function epilogue shared by normal and exceptional returns. */
|
|
23
29
|
returnEpilogue = null;
|
|
30
|
+
/** Temps known to hold immortal values (temp names are only unique
|
|
31
|
+
* within one builder). */
|
|
32
|
+
immortalTemps = new Set();
|
|
24
33
|
constructor() {
|
|
25
34
|
this.cur = { label: "entry", lines: [], term: null };
|
|
26
35
|
this.blocks.push(this.cur);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/backend/llvm/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;6CAU6C;AAE7C,MAAM,OAAO,YAAY;IACN,MAAM,GAA8D,EAAE,CAAC;IAChF,GAAG,CAA0D;IACrE;;2CAEuC;IAC9B,YAAY,GAAa,EAAE,CAAC;IAC7B,WAAW,GAAG,CAAC,CAAC;IAChB,YAAY,GAAG,CAAC,CAAC;IACzB,aAAa,GAAkB,IAAI,CAAC;IACpC,kEAAkE;IAClE,cAAc,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/backend/llvm/blocks.ts"],"names":[],"mappings":"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"}
|