@scriptc/compiler 0.4.5 → 0.4.6
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/node-fallback/assert-strict.d.ts +47 -0
- package/ambient/node-fallback/assert.d.ts +86 -0
- package/ambient/node-fallback/async_hooks.d.ts +41 -0
- package/ambient/node-fallback/buffer.d.ts +23 -0
- package/ambient/node-fallback/child_process.d.ts +242 -0
- package/ambient/node-fallback/cluster.d.ts +17 -0
- package/ambient/node-fallback/constants.d.ts +15 -0
- package/ambient/node-fallback/crypto.d.ts +837 -0
- package/ambient/node-fallback/dgram.d.ts +58 -0
- package/ambient/node-fallback/diagnostics_channel.d.ts +87 -0
- package/ambient/node-fallback/dns-promises.d.ts +27 -0
- package/ambient/node-fallback/dns.d.ts +65 -0
- package/ambient/node-fallback/events.d.ts +60 -0
- package/ambient/node-fallback/fs-promises.d.ts +225 -0
- package/ambient/node-fallback/fs.d.ts +641 -0
- package/ambient/node-fallback/graceful-fs.d.ts +9 -0
- package/ambient/node-fallback/http.d.ts +326 -0
- package/ambient/node-fallback/http2.d.ts +816 -0
- package/ambient/node-fallback/https.d.ts +59 -0
- package/ambient/node-fallback/module.d.ts +10 -0
- package/ambient/node-fallback/net.d.ts +374 -0
- package/ambient/node-fallback/os.d.ts +288 -0
- package/ambient/node-fallback/path-posix.d.ts +22 -0
- package/ambient/node-fallback/path-win32.d.ts +22 -0
- package/ambient/node-fallback/path.d.ts +55 -0
- package/ambient/node-fallback/process.d.ts +11 -0
- package/ambient/node-fallback/punycode.d.ts +18 -0
- package/ambient/node-fallback/querystring.d.ts +55 -0
- package/ambient/node-fallback/stream-consumers.d.ts +21 -0
- package/ambient/node-fallback/stream-promises.d.ts +28 -0
- package/ambient/node-fallback/stream-web.d.ts +36 -0
- package/ambient/node-fallback/stream.d.ts +644 -0
- package/ambient/node-fallback/string_decoder.d.ts +20 -0
- package/ambient/node-fallback/test.d.ts +236 -0
- package/ambient/node-fallback/timers-promises.d.ts +31 -0
- package/ambient/node-fallback/timers.d.ts +28 -0
- package/ambient/node-fallback/tls.d.ts +169 -0
- package/ambient/node-fallback/url.d.ts +95 -0
- package/ambient/node-fallback/util-types.d.ts +50 -0
- package/ambient/node-fallback/util.d.ts +416 -0
- package/ambient/node-fallback/v8.d.ts +43 -0
- package/ambient/node-fallback/worker_threads.d.ts +113 -0
- package/ambient/node-fallback/zlib.d.ts +422 -0
- package/ambient/scriptc-node-fallback.d.ts +224 -6688
- package/dist/backend/cycle-analysis.js +4 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/executable-features.d.ts +1 -1
- package/dist/backend/executable-features.js +15 -2
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/huge-text.d.ts +16 -0
- package/dist/backend/huge-text.js +103 -0
- package/dist/backend/huge-text.js.map +1 -0
- package/dist/backend/huge-text.test.d.ts +1 -0
- package/dist/backend/huge-text.test.js +73 -0
- package/dist/backend/huge-text.test.js.map +1 -0
- package/dist/backend/library-pack.js +1 -1
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +10 -0
- package/dist/backend/link-plan-core.js +14 -2
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan-core.test.d.ts +1 -0
- package/dist/backend/link-plan-core.test.js +20 -0
- package/dist/backend/link-plan-core.test.js.map +1 -0
- package/dist/backend/link-plan.d.ts +8 -0
- package/dist/backend/link-plan.js +7 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/linker.js +37 -14
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +13 -0
- package/dist/backend/lld.js +18 -1
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +7 -1
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +2 -0
- package/dist/backend/llvm/alloc.js +1 -1
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +78 -0
- package/dist/backend/llvm/arenas.js +313 -0
- package/dist/backend/llvm/arenas.js.map +1 -0
- package/dist/backend/llvm/arenas.test.d.ts +1 -0
- package/dist/backend/llvm/arenas.test.js +140 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +11 -1
- package/dist/backend/llvm/blocks.js +23 -5
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.d.ts +19 -0
- package/dist/backend/llvm/bytes-headers.js +55 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +4 -3
- package/dist/backend/llvm/bytes-loop-versions.js +42 -7
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +39 -4
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +5 -0
- package/dist/backend/llvm/call-lifetimes.js +43 -8
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +26 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.d.ts +3 -0
- package/dist/backend/llvm/checked-narrows.js +8 -1
- package/dist/backend/llvm/checked-narrows.js.map +1 -1
- package/dist/backend/llvm/class-unions.d.ts +21 -0
- package/dist/backend/llvm/class-unions.js +141 -0
- package/dist/backend/llvm/class-unions.js.map +1 -0
- package/dist/backend/llvm/class-unions.test.d.ts +1 -0
- package/dist/backend/llvm/class-unions.test.js +137 -0
- package/dist/backend/llvm/class-unions.test.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +46 -8
- package/dist/backend/llvm/classes.js +259 -32
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +4 -0
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +23 -0
- package/dist/backend/llvm/common.js +34 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +39 -0
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/constant-choices.d.ts +32 -0
- package/dist/backend/llvm/constant-choices.js +209 -0
- package/dist/backend/llvm/constant-choices.js.map +1 -0
- package/dist/backend/llvm/constant-choices.test.d.ts +1 -0
- package/dist/backend/llvm/constant-choices.test.js +94 -0
- package/dist/backend/llvm/constant-choices.test.js.map +1 -0
- package/dist/backend/llvm/counted-loops.d.ts +14 -2
- package/dist/backend/llvm/counted-loops.js +60 -7
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/counted-loops.test.d.ts +1 -0
- package/dist/backend/llvm/counted-loops.test.js +34 -0
- package/dist/backend/llvm/counted-loops.test.js.map +1 -0
- package/dist/backend/llvm/cpu-dispatch.d.ts +26 -0
- package/dist/backend/llvm/cpu-dispatch.js +279 -0
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -0
- package/dist/backend/llvm/dense-array-access.d.ts +13 -2
- package/dist/backend/llvm/dense-array-access.js +60 -6
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +40 -14
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +28 -2
- package/dist/backend/llvm/dyn.js +176 -27
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +25 -3
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +1 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -1
- package/dist/backend/llvm/emit-module.d.ts +5 -3
- package/dist/backend/llvm/emit-module.js +362 -74
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +327 -59
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +223 -33
- package/dist/backend/llvm/emitter.js +713 -100
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +20 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +32 -6
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -1
- package/dist/backend/llvm/expr-bytes.js +105 -9
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +1 -1
- package/dist/backend/llvm/expr-callbacks.js +29 -22
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +0 -4
- package/dist/backend/llvm/expr-calls.js +116 -14
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +77 -12
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +22 -0
- package/dist/backend/llvm/expr-control.d.ts +4 -0
- package/dist/backend/llvm/expr-control.js +485 -426
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.js +4 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +3 -3
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +6 -0
- package/dist/backend/llvm/expr-primitives.js +119 -58
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +36 -4
- package/dist/backend/llvm/expr-records.js +249 -37
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +124 -7
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +13 -14
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/frame-escapes.d.ts +11 -0
- package/dist/backend/llvm/frame-escapes.js +219 -0
- package/dist/backend/llvm/frame-escapes.js.map +1 -0
- package/dist/backend/llvm/function-layout.d.ts +15 -0
- package/dist/backend/llvm/function-layout.js +40 -0
- package/dist/backend/llvm/function-layout.js.map +1 -0
- package/dist/backend/llvm/heap-census.d.ts +34 -0
- package/dist/backend/llvm/heap-census.js +163 -0
- package/dist/backend/llvm/heap-census.js.map +1 -0
- package/dist/backend/llvm/inline-arrays.d.ts +41 -0
- package/dist/backend/llvm/inline-arrays.js +195 -0
- package/dist/backend/llvm/inline-arrays.js.map +1 -0
- package/dist/backend/llvm/int32-kind-loops.js +2 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -1
- package/dist/backend/llvm/integer-clones.d.ts +32 -5
- package/dist/backend/llvm/integer-clones.js +237 -44
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/integer-clones.test.js +120 -0
- package/dist/backend/llvm/integer-clones.test.js.map +1 -1
- package/dist/backend/llvm/iterative-teardown.test.d.ts +1 -0
- package/dist/backend/llvm/iterative-teardown.test.js +62 -0
- package/dist/backend/llvm/iterative-teardown.test.js.map +1 -0
- package/dist/backend/llvm/js-ic.js +246 -62
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +2 -2
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +153 -16
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.d.ts +8 -0
- package/dist/backend/llvm/lib-filesystem.js +48 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +4 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +1 -1
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +15 -1
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +32 -8
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +3 -0
- package/dist/backend/llvm/lib-shared.js +191 -28
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +1 -1
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +15 -1
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-extents.d.ts +22 -0
- package/dist/backend/llvm/local-extents.js +102 -0
- package/dist/backend/llvm/local-extents.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.js +15 -2
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-callees.d.ts +21 -0
- package/dist/backend/llvm/loop-callees.js +119 -0
- package/dist/backend/llvm/loop-callees.js.map +1 -0
- package/dist/backend/llvm/loop-callees.test.d.ts +1 -0
- package/dist/backend/llvm/loop-callees.test.js +65 -0
- package/dist/backend/llvm/loop-callees.test.js.map +1 -0
- package/dist/backend/llvm/loop-entry-versions.d.ts +17 -0
- package/dist/backend/llvm/loop-entry-versions.js +185 -0
- package/dist/backend/llvm/loop-entry-versions.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +13 -4
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +11 -0
- package/dist/backend/llvm/map-read-lifetimes.js +51 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +6 -3
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +67 -10
- package/dist/backend/llvm/nullable-unions.js +218 -22
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +124 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/periodic-guards.d.ts +16 -0
- package/dist/backend/llvm/periodic-guards.js +91 -0
- package/dist/backend/llvm/periodic-guards.js.map +1 -0
- package/dist/backend/llvm/periodic-guards.test.d.ts +1 -0
- package/dist/backend/llvm/periodic-guards.test.js +64 -0
- package/dist/backend/llvm/periodic-guards.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +12 -2
- package/dist/backend/llvm/publish.js +15 -8
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/rebound-parameters.d.ts +4 -1
- package/dist/backend/llvm/rebound-parameters.js +17 -1
- package/dist/backend/llvm/rebound-parameters.js.map +1 -1
- package/dist/backend/llvm/receivers.d.ts +7 -0
- package/dist/backend/llvm/receivers.js +77 -10
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-union-keys.test.js +29 -0
- package/dist/backend/llvm/record-union-keys.test.js.map +1 -1
- package/dist/backend/llvm/record-views.d.ts +29 -0
- package/dist/backend/llvm/record-views.js +249 -0
- package/dist/backend/llvm/record-views.js.map +1 -0
- package/dist/backend/llvm/record-views.test.d.ts +1 -0
- package/dist/backend/llvm/record-views.test.js +118 -0
- package/dist/backend/llvm/record-views.test.js.map +1 -0
- package/dist/backend/llvm/reference-writes.js +21 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.js +42 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.d.ts +5 -1
- package/dist/backend/llvm/regex-matchers.js +173 -21
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +39 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/region-groups.d.ts +67 -0
- package/dist/backend/llvm/region-groups.js +1719 -0
- package/dist/backend/llvm/region-groups.js.map +1 -0
- package/dist/backend/llvm/region-groups.test.d.ts +1 -0
- package/dist/backend/llvm/region-groups.test.js +197 -0
- package/dist/backend/llvm/region-groups.test.js.map +1 -0
- package/dist/backend/llvm/region-ir.d.ts +31 -0
- package/dist/backend/llvm/region-ir.js +256 -0
- package/dist/backend/llvm/region-ir.js.map +1 -0
- package/dist/backend/llvm/region-sites.d.ts +20 -0
- package/dist/backend/llvm/region-sites.js +327 -0
- package/dist/backend/llvm/region-sites.js.map +1 -0
- package/dist/backend/llvm/region-sites.test.d.ts +1 -0
- package/dist/backend/llvm/region-sites.test.js +216 -0
- package/dist/backend/llvm/region-sites.test.js.map +1 -0
- package/dist/backend/llvm/repr-report.d.ts +9 -0
- package/dist/backend/llvm/repr-report.js +143 -0
- package/dist/backend/llvm/repr-report.js.map +1 -0
- package/dist/backend/llvm/repr-report.test.d.ts +1 -0
- package/dist/backend/llvm/repr-report.test.js +62 -0
- package/dist/backend/llvm/repr-report.test.js.map +1 -0
- package/dist/backend/llvm/runtime-registries.test.d.ts +1 -0
- package/dist/backend/llvm/runtime-registries.test.js +88 -0
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shape-union-tags.test.d.ts +1 -0
- package/dist/backend/llvm/shape-union-tags.test.js +75 -0
- package/dist/backend/llvm/shape-union-tags.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +60 -10
- package/dist/backend/llvm/shapes.js +233 -51
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -18
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +3 -0
- package/dist/backend/llvm/speculative-integers.js +20 -8
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/split.js +6 -1
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +23 -0
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-callbacks.js +4 -2
- package/dist/backend/llvm/stack-callbacks.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +12 -3
- package/dist/backend/llvm/stack-objects.js +110 -22
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +144 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +24 -1
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.js +2 -1
- package/dist/backend/llvm/string-lifetimes.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +4 -0
- package/dist/backend/llvm/string-reads.js +27 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/test-boxed-unions.d.ts +10 -8
- package/dist/backend/llvm/test-boxed-unions.js +20 -25
- package/dist/backend/llvm/test-boxed-unions.js.map +1 -1
- package/dist/backend/llvm/union-repr.js +9 -8
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +45 -2
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +20 -8
- package/dist/backend/llvm/unwind-abi.js +177 -70
- package/dist/backend/llvm/unwind-abi.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.test.js +90 -3
- package/dist/backend/llvm/unwind-abi.test.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -2
- package/dist/backend/llvm/walk-borrows.js +2 -2
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.test.js +18 -0
- package/dist/backend/llvm/walk-borrows.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +14 -1
- package/dist/backend/llvm/walkers.js +103 -11
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +26 -6
- package/dist/backend/llvm/wrapping-sums.js +64 -12
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/loop-polls.d.ts +4 -2
- package/dist/backend/loop-polls.js +11 -2
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/mangle.d.ts +0 -5
- package/dist/backend/mangle.js +0 -9
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +10 -9
- package/dist/backend/may-throw.js +189 -27
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +44 -7
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/compiler-fingerprint.d.ts +5 -0
- package/dist/backend/native/compiler-fingerprint.js +62 -16
- package/dist/backend/native/compiler-fingerprint.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +31 -8
- package/dist/backend/native/executable.js +56 -32
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +3 -4
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/object-merge.d.ts +3 -1
- package/dist/backend/native/object-merge.js +24 -11
- package/dist/backend/native/object-merge.js.map +1 -1
- package/dist/backend/native/program-shards.js +6 -3
- package/dist/backend/native/program-shards.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +3 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native-codegen-core.d.ts +15 -6
- package/dist/backend/native-codegen-core.js +20 -9
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +51 -5
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +82 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +68 -4
- package/dist/backend/native-profile.js +86 -14
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +127 -4
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +1 -1
- package/dist/backend/native-toolchain.js +1 -1
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +58 -4
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/native-tools.d.ts +17 -3
- package/dist/backend/native-tools.js +12 -4
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/native-tools.test.d.ts +1 -0
- package/dist/backend/native-tools.test.js +76 -0
- package/dist/backend/native-tools.test.js.map +1 -0
- package/dist/backend/object-localize.js +69 -9
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +99 -10
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/publication.d.ts +2 -0
- package/dist/backend/publication.js +4 -0
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +19 -0
- package/dist/backend/runtime-pack-core.js +23 -3
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +48 -2
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-cpu.d.ts +2 -0
- package/dist/backend/target-cpu.js +4 -0
- package/dist/backend/target-cpu.js.map +1 -1
- package/dist/backend/target-diagnostics.js +1 -19
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/backend/targets.d.ts +28 -0
- package/dist/backend/targets.js +70 -0
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +75 -1
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/backend/vendor-archives.d.ts +1 -1
- package/dist/backend/vendor-archives.js +25 -12
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +15 -2
- package/dist/backend/vendor-inputs.js +59 -3
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.d.ts +1 -0
- package/dist/backend/vendor-inputs.test.js +74 -0
- package/dist/backend/vendor-inputs.test.js.map +1 -0
- package/dist/cli/command.js +95 -5
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +3 -0
- package/dist/cli/output-options.js +8 -2
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +28 -1
- package/dist/cli/usage.js +56 -6
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +3 -0
- package/dist/compat/fetch-profile.js +23 -3
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +45 -0
- package/dist/contracts/check.js +70 -2
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +2 -1
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +5 -1
- package/dist/coverage/report.js +83 -2
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +5 -10
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/codes.d.ts +145 -0
- package/dist/diagnostics/codes.js +159 -0
- package/dist/diagnostics/codes.js.map +1 -0
- package/dist/diagnostics/codes.test.d.ts +1 -0
- package/dist/diagnostics/codes.test.js +78 -0
- package/dist/diagnostics/codes.test.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +101 -2
- package/dist/diagnostics/diagnostic.js +155 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-slots.d.ts +23 -0
- package/dist/diagnostics/dynamic-slots.js +29 -0
- package/dist/diagnostics/dynamic-slots.js.map +1 -0
- package/dist/diagnostics/dynamic-tier.d.ts +6 -0
- package/dist/diagnostics/dynamic-tier.js +8 -1
- package/dist/diagnostics/dynamic-tier.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +43 -1
- package/dist/diagnostics/envelope.js +19 -1
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/envelope.test.js.map +1 -1
- package/dist/diagnostics/render.d.ts +3 -1
- package/dist/diagnostics/render.js +27 -6
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +41 -0
- package/dist/executable/executable-cache.js +39 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +4 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +2 -1
- package/dist/executable/prepare.js +421 -10
- 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/canon-map.d.ts +17 -0
- package/dist/frontend/canon-map.js +177 -0
- package/dist/frontend/canon-map.js.map +1 -0
- package/dist/frontend/canon.d.ts +122 -0
- package/dist/frontend/canon.js +462 -0
- package/dist/frontend/canon.js.map +1 -0
- package/dist/frontend/contract-types.d.ts +9 -1
- package/dist/frontend/contract-types.js +46 -4
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +3 -0
- package/dist/frontend/decl-projection.js +121 -3
- package/dist/frontend/decl-projection.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +17 -4
- package/dist/frontend/dts-paths.js +149 -5
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/fork-target.js +4 -4
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +3 -3
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/heritage-elements.d.ts +15 -0
- package/dist/frontend/heritage-elements.js +18 -0
- package/dist/frontend/heritage-elements.js.map +1 -0
- package/dist/frontend/heritage-elements.test.d.ts +1 -0
- package/dist/frontend/heritage-elements.test.js +68 -0
- package/dist/frontend/heritage-elements.test.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +20 -0
- package/dist/frontend/input-tracker.js +74 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +66 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/any-collection-residue.d.ts +9 -0
- package/dist/frontend/lowering/any-collection-residue.js +42 -0
- package/dist/frontend/lowering/any-collection-residue.js.map +1 -0
- package/dist/frontend/lowering/array-values.d.ts +44 -2
- package/dist/frontend/lowering/array-values.js +193 -3
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +6 -2
- package/dist/frontend/lowering/builtin-namespaces.js +28 -6
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtins/array-classes.d.ts +69 -0
- package/dist/frontend/lowering/builtins/array-classes.js +729 -0
- package/dist/frontend/lowering/builtins/array-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +4 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +34 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js +1 -3
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +13 -9
- package/dist/frontend/lowering/builtins/errors.js +136 -56
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +85 -4
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +11 -6
- package/dist/frontend/lowering/builtins/filesystem.js +270 -24
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +7 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/mime.d.ts +25 -0
- package/dist/frontend/lowering/builtins/mime.js +167 -0
- package/dist/frontend/lowering/builtins/mime.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +3 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +6 -0
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +79 -12
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +7 -4
- package/dist/frontend/lowering/builtins/module-resolution.js +115 -13
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +3 -1
- package/dist/frontend/lowering/builtins/navigator.js +22 -8
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +49 -9
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +18 -3
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +6 -2
- package/dist/frontend/lowering/builtins/promisify-callback.js +19 -6
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +23 -5
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +42 -0
- package/dist/frontend/lowering/builtins/web-streams-dyn.js +321 -0
- package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/x509.js +35 -5
- package/dist/frontend/lowering/builtins/x509.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +14 -1
- package/dist/frontend/lowering/call-arguments.js +84 -70
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +108 -24
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-attributes.js +6 -5
- package/dist/frontend/lowering/class-attributes.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +40 -19
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +4 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +61 -1
- package/dist/frontend/lowering/class-protocols.js +297 -21
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +3 -2
- package/dist/frontend/lowering/class-to-primitive.js +15 -5
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/coercions/asserted.d.ts +16 -0
- package/dist/frontend/lowering/coercions/asserted.js +79 -0
- package/dist/frontend/lowering/coercions/asserted.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +13 -0
- package/dist/frontend/lowering/coercions/function-adapters.js +70 -3
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +23 -0
- package/dist/frontend/lowering/coercions/state.js +9 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +67 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.d.ts +10 -0
- package/dist/frontend/lowering/coercions/structural.js +134 -4
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +11 -0
- package/dist/frontend/lowering/coercions/unions.js +83 -4
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/completion-callbacks.js +3 -2
- package/dist/frontend/lowering/completion-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +10 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +224 -81
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.d.ts +5 -2
- package/dist/frontend/lowering/containers/array-concat.js +76 -7
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +9 -4
- package/dist/frontend/lowering/containers/array-construction.js +112 -100
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +193 -45
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.d.ts +3 -0
- package/dist/frontend/lowering/containers/array-pipelines.js +81 -13
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +1 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +28 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +13 -3
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.js +34 -3
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +34 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +131 -72
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.js +43 -6
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/decl-origin.d.ts +49 -0
- package/dist/frontend/lowering/decl-origin.js +402 -0
- package/dist/frontend/lowering/decl-origin.js.map +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +2 -0
- package/dist/frontend/lowering/deferred-module-initializers.js +7 -0
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/divergences.js +5 -0
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +8 -2
- package/dist/frontend/lowering/dynamic-tier.js +111 -3
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +14 -1
- package/dist/frontend/lowering/expressions/array-literals.js +43 -5
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/asserted-receiver.d.ts +48 -0
- package/dist/frontend/lowering/expressions/asserted-receiver.js +233 -0
- package/dist/frontend/lowering/expressions/asserted-receiver.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.js +136 -1
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.d.ts +7 -0
- package/dist/frontend/lowering/expressions/element-access.js +363 -12
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.d.ts +3 -0
- package/dist/frontend/lowering/expressions/identifiers.js +78 -62
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/message-listeners.d.ts +3 -0
- package/dist/frontend/lowering/expressions/message-listeners.js +19 -0
- package/dist/frontend/lowering/expressions/message-listeners.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.js +224 -6
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +5 -2
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +282 -24
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +15 -3
- package/dist/frontend/lowering/expressions/property-access.js +397 -74
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +202 -70
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +9 -1
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +28 -8
- package/dist/frontend/lowering/expressions/union-fields.js +168 -14
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +8 -0
- package/dist/frontend/lowering/frozen-records.js +56 -9
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +3 -0
- package/dist/frontend/lowering/function-context.js +4 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.d.ts +4 -0
- package/dist/frontend/lowering/function-returns.js +231 -2
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.js +3 -2
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +26 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +294 -2
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +10 -0
- package/dist/frontend/lowering/generic-functions.js +67 -7
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-values.d.ts +37 -0
- package/dist/frontend/lowering/global-values.js +395 -0
- package/dist/frontend/lowering/global-values.js.map +1 -0
- package/dist/frontend/lowering/handle-properties.js +3 -2
- package/dist/frontend/lowering/handle-properties.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.test.d.ts +1 -0
- package/dist/frontend/lowering/handle-properties.test.js +25 -0
- package/dist/frontend/lowering/handle-properties.test.js.map +1 -0
- package/dist/frontend/lowering/import-meta.d.ts +3 -0
- package/dist/frontend/lowering/import-meta.js +8 -3
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +3 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +2 -0
- package/dist/frontend/lowering/key-order-witness.js +10 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +5 -1
- package/dist/frontend/lowering/lower-array-sort.js +16 -2
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +7 -0
- package/dist/frontend/lowering/lower-builtin-values.js +65 -16
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +222 -24
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +6 -0
- package/dist/frontend/lowering/lower-classes.js +154 -20
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +25 -2
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +29 -0
- package/dist/frontend/lowering/lower-exprs.js +544 -24
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +93 -18
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +4 -1
- package/dist/frontend/lowering/lower-global-value.js +10 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +44 -4
- package/dist/frontend/lowering/lower-inspect.js +723 -26
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +3 -1
- package/dist/frontend/lowering/lower-modules.js +189 -24
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +7 -0
- package/dist/frontend/lowering/lower-namespaces.js +23 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.d.ts +74 -0
- package/dist/frontend/lowering/lower-node-island.js +1931 -0
- package/dist/frontend/lowering/lower-node-island.js.map +1 -0
- package/dist/frontend/lowering/lower-server.js +44 -0
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-shared-modules.d.ts +27 -0
- package/dist/frontend/lowering/lower-shared-modules.js +611 -0
- package/dist/frontend/lowering/lower-shared-modules.js.map +1 -0
- package/dist/frontend/lowering/lower-stdlib.js +85 -9
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -6
- package/dist/frontend/lowering/lower-stmts.js +781 -143
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +548 -36
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +9 -0
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +514 -10
- package/dist/frontend/lowering/lowerer.js +2667 -163
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +44 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +6 -0
- package/dist/frontend/lowering/maybe-promise.js +13 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +12 -0
- package/dist/frontend/lowering/module-namespace-elements.js +114 -18
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +11 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -2
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +4 -0
- package/dist/frontend/lowering/narrowing-stability.js +14 -6
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/receiver-returns.d.ts +3 -0
- package/dist/frontend/lowering/receiver-returns.js +134 -0
- package/dist/frontend/lowering/receiver-returns.js.map +1 -0
- package/dist/frontend/lowering/record-inherited.d.ts +26 -0
- package/dist/frontend/lowering/record-inherited.js +807 -0
- package/dist/frontend/lowering/record-inherited.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +31 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +105 -13
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.d.ts +3 -0
- package/dist/frontend/lowering/runtime-optional-guards.js +35 -7
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +59 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/stable-names.d.ts +8 -0
- package/dist/frontend/lowering/stable-names.js +22 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -1
- package/dist/frontend/lowering/stable-names.test.d.ts +1 -0
- package/dist/frontend/lowering/stable-names.test.js +16 -0
- package/dist/frontend/lowering/stable-names.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +5 -4
- package/dist/frontend/lowering/static-typeof.js +10 -4
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +22 -0
- package/dist/frontend/lowering/structural-instances.js +282 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +108 -12
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +32 -0
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/type-failure.d.ts +17 -0
- package/dist/frontend/lowering/type-failure.js +163 -0
- package/dist/frontend/lowering/type-failure.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +5 -6
- package/dist/frontend/lowering/typed-arguments.js +10 -2
- package/dist/frontend/lowering/typed-arguments.js.map +1 -1
- package/dist/frontend/lowering/union-narrow.d.ts +9 -1
- package/dist/frontend/lowering/union-narrow.js +31 -2
- package/dist/frontend/lowering/union-narrow.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +42 -2
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +194 -0
- package/dist/frontend/lowering/unit-journal.js +556 -0
- package/dist/frontend/lowering/unit-journal.js.map +1 -0
- package/dist/frontend/lowering/unit-journal.test.d.ts +1 -0
- package/dist/frontend/lowering/unit-journal.test.js +335 -0
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +19 -0
- package/dist/frontend/node-api-import.d.ts +21 -0
- package/dist/frontend/node-api-import.js +88 -0
- package/dist/frontend/node-api-import.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.js +4 -3
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -1
- package/dist/frontend/npm-static.js +9 -2
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +6 -2
- package/dist/frontend/package-shims.js +13 -2
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +11 -4
- package/dist/frontend/pipeline.js +249 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +3 -0
- package/dist/frontend/process-fork.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -0
- package/dist/frontend/program-analysis.js +4 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +12 -1
- package/dist/frontend/program.js +256 -36
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.js +8 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +23 -1
- package/dist/frontend/shape-inference/analyze.js +982 -97
- package/dist/frontend/shape-inference/analyze.js.map +1 -1
- package/dist/frontend/shape-inference/constant-graphs.d.ts +2 -0
- package/dist/frontend/shape-inference/constant-graphs.js +39 -4
- package/dist/frontend/shape-inference/constant-graphs.js.map +1 -1
- package/dist/frontend/shape-inference/domain.d.ts +2 -0
- package/dist/frontend/shape-inference/domain.js.map +1 -1
- package/dist/frontend/shape-inference/fallback.d.ts +17 -0
- package/dist/frontend/shape-inference/fallback.js +303 -0
- package/dist/frontend/shape-inference/fallback.js.map +1 -0
- package/dist/frontend/shape-inference/index.d.ts +75 -1
- package/dist/frontend/shape-inference/index.js +531 -2
- package/dist/frontend/shape-inference/index.js.map +1 -1
- package/dist/frontend/shape-inference/inferred-checks.d.ts +2 -0
- package/dist/frontend/shape-inference/inferred-checks.js +90 -0
- package/dist/frontend/shape-inference/inferred-checks.js.map +1 -0
- package/dist/frontend/shape-inference/memo.d.ts +30 -0
- package/dist/frontend/shape-inference/memo.js +99 -0
- package/dist/frontend/shape-inference/memo.js.map +1 -0
- package/dist/frontend/shape-inference/overlay.d.ts +81 -0
- package/dist/frontend/shape-inference/overlay.js +1160 -0
- package/dist/frontend/shape-inference/overlay.js.map +1 -0
- package/dist/frontend/shape-inference/registry.test.d.ts +1 -0
- package/dist/frontend/shape-inference/registry.test.js +34 -0
- package/dist/frontend/shape-inference/registry.test.js.map +1 -0
- package/dist/frontend/shape-inference/report.js +42 -8
- package/dist/frontend/shape-inference/report.js.map +1 -1
- package/dist/frontend/shape-inference/static-objects.d.ts +29 -0
- package/dist/frontend/shape-inference/static-objects.js +1951 -0
- package/dist/frontend/shape-inference/static-objects.js.map +1 -0
- package/dist/frontend/tier-analysis.d.ts +53 -1
- package/dist/frontend/tier-analysis.js +133 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- package/dist/frontend/ts7/api.js +4 -2
- package/dist/frontend/ts7/api.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +9 -0
- package/dist/frontend/ts7/ast-node.js +42 -10
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +23 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire-protocols.test.d.ts +1 -0
- package/dist/frontend/ts7/ast-wire-protocols.test.js +93 -0
- package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -0
- package/dist/frontend/ts7/ast-wire.d.ts +18 -0
- package/dist/frontend/ts7/ast-wire.js +66 -4
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/checker-server.d.ts +12 -11
- package/dist/frontend/ts7/checker-server.js +28 -12
- package/dist/frontend/ts7/checker-server.js.map +1 -1
- package/dist/frontend/ts7/checker-server.test.js +8 -3
- package/dist/frontend/ts7/checker-server.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +4 -0
- package/dist/frontend/ts7/checker.js +9 -0
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +216 -205
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +71 -4
- package/dist/frontend/ts7/lib-diagnostics.js +337 -20
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.test.js +268 -5
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -1
- package/dist/frontend/ts7/native-api.d.ts +4 -0
- package/dist/frontend/ts7/native-api.js +36 -1
- package/dist/frontend/ts7/native-api.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +19 -2
- package/dist/frontend/ts7/program-host.js +69 -9
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +42 -1
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-filesystem.d.ts +4 -2
- package/dist/frontend/ts7/rpc-filesystem.js +23 -2
- package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
- package/dist/frontend/ts7/rpc-filesystem.test.js +28 -2
- package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.js +73 -5
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +106 -74
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +2 -6
- package/dist/frontend/ts7/semantic-model-71.test.d.ts +1 -0
- package/dist/frontend/ts7/semantic-model-71.test.js +131 -0
- package/dist/frontend/ts7/semantic-model-71.test.js.map +1 -0
- package/dist/frontend/ts7/semantic-model.d.ts +121 -3
- package/dist/frontend/ts7/semantic-model.js +245 -8
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +19 -1
- package/dist/frontend/ts7/session.js +111 -11
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +259 -239
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/test-servers.d.ts +12 -0
- package/dist/frontend/ts7/test-servers.js +16 -0
- package/dist/frontend/ts7/test-servers.js.map +1 -0
- package/dist/frontend/tsc-codes.js +6 -3
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +61 -1
- package/dist/frontend/type-mapper.js +577 -28
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-patches/command.d.ts +19 -0
- package/dist/frontend/type-patches/command.js +352 -0
- package/dist/frontend/type-patches/command.js.map +1 -0
- package/dist/frontend/type-patches/layer.d.ts +45 -0
- package/dist/frontend/type-patches/layer.js +409 -0
- package/dist/frontend/type-patches/layer.js.map +1 -0
- package/dist/frontend/type-patches/locate.d.ts +41 -0
- package/dist/frontend/type-patches/locate.js +914 -0
- package/dist/frontend/type-patches/locate.js.map +1 -0
- package/dist/frontend/type-patches/locate.test.d.ts +1 -0
- package/dist/frontend/type-patches/locate.test.js +179 -0
- package/dist/frontend/type-patches/locate.test.js.map +1 -0
- package/dist/frontend/type-patches/selector.d.ts +43 -0
- package/dist/frontend/type-patches/selector.js +126 -0
- package/dist/frontend/type-patches/selector.js.map +1 -0
- package/dist/frontend/type-patches/selector.test.d.ts +1 -0
- package/dist/frontend/type-patches/selector.test.js +56 -0
- package/dist/frontend/type-patches/selector.test.js.map +1 -0
- package/dist/frontend/type-patches/semver.d.ts +19 -0
- package/dist/frontend/type-patches/semver.js +221 -0
- package/dist/frontend/type-patches/semver.js.map +1 -0
- package/dist/frontend/type-patches/semver.test.d.ts +1 -0
- package/dist/frontend/type-patches/semver.test.js +47 -0
- package/dist/frontend/type-patches/semver.test.js.map +1 -0
- package/dist/frontend/worker-target.test.js +2 -2
- package/dist/frontend/worker-target.test.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +292 -27
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +51 -5
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +4 -3
- package/dist/ir/builtin-signatures.js +277 -12
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.js +108 -67
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +7 -1
- package/dist/ir/capture-values.js +28 -5
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.js +38 -42
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/expression-inlining.js +12 -6
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +751 -0
- package/dist/ir/fields.generated.js +2071 -0
- package/dist/ir/fields.generated.js.map +1 -0
- package/dist/ir/fields.test.d.ts +1 -0
- package/dist/ir/fields.test.js +113 -0
- package/dist/ir/fields.test.js.map +1 -0
- package/dist/ir/function-references.js +4 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +25 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/inline-array-sources.d.ts +15 -0
- package/dist/ir/inline-array-sources.js +1825 -0
- package/dist/ir/inline-array-sources.js.map +1 -0
- package/dist/ir/inline-arrays.d.ts +41 -0
- package/dist/ir/inline-arrays.js +533 -0
- package/dist/ir/inline-arrays.js.map +1 -0
- package/dist/ir/inline-arrays.test.d.ts +1 -0
- package/dist/ir/inline-arrays.test.js +225 -0
- package/dist/ir/inline-arrays.test.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +6 -0
- package/dist/ir/int32-slots.js +154 -16
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +48 -0
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +12 -0
- package/dist/ir/integer-loops.js +23 -0
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +7 -1
- package/dist/ir/integer-ranges.js +29 -2
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +2 -1
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +103 -5
- package/dist/ir/ir.js +38 -4
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +134 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/jsval.js +211 -29
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/jsval.test.js +120 -0
- package/dist/ir/jsval.test.js.map +1 -1
- package/dist/ir/loop-entry-ranges.d.ts +38 -0
- package/dist/ir/loop-entry-ranges.js +259 -0
- package/dist/ir/loop-entry-ranges.js.map +1 -0
- package/dist/ir/loop-entry-ranges.test.d.ts +1 -0
- package/dist/ir/loop-entry-ranges.test.js +191 -0
- package/dist/ir/loop-entry-ranges.test.js.map +1 -0
- package/dist/ir/node-index.d.ts +3 -0
- package/dist/ir/node-index.js +6 -0
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +9 -6
- package/dist/ir/numeric-call-specialization.js +164 -34
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.js +23 -19
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.js +6 -3
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/receiver-readers.d.ts +10 -0
- package/dist/ir/receiver-readers.js +65 -28
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +9 -1
- package/dist/ir/row-pairs.js +136 -43
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/row-pairs.test.js +25 -5
- package/dist/ir/row-pairs.test.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +33 -1
- package/dist/ir/runtime-features.js +104 -6
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +13 -0
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/saturating-loop-jams.d.ts +24 -0
- package/dist/ir/saturating-loop-jams.js +420 -0
- package/dist/ir/saturating-loop-jams.js.map +1 -0
- package/dist/ir/saturating-loop-jams.test.d.ts +1 -0
- package/dist/ir/saturating-loop-jams.test.js +196 -0
- package/dist/ir/saturating-loop-jams.test.js.map +1 -0
- package/dist/ir/scalar-records.js +9 -3
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.js +2 -1
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/serialize.d.ts +5 -1
- package/dist/ir/serialize.js +7 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +3 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +91 -9
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cache.js +2 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +54 -7
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.d.ts +3 -0
- package/dist/native/compiler.js +173 -36
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +86 -3
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +20 -2
- package/dist/native/executable-cache.js +17 -10
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/executable-cache.test.js +38 -1
- package/dist/native/executable-cache.test.js.map +1 -1
- package/dist/native/linker-job.d.ts +71 -0
- package/dist/native/linker-job.js +242 -0
- package/dist/native/linker-job.js.map +1 -0
- package/dist/native/linker-job.test.d.ts +1 -0
- package/dist/native/linker-job.test.js +349 -0
- package/dist/native/linker-job.test.js.map +1 -0
- package/dist/native/prepare.js +15 -2
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +10 -15
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +152 -66
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +11 -2
- package/dist/native/toolchain.js +43 -17
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +75 -0
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +37 -0
- package/dist/node-islands/boundary.js +135 -0
- package/dist/node-islands/boundary.js.map +1 -0
- package/dist/node-islands/classify.js +1 -1
- package/dist/node-islands/classify.js.map +1 -1
- package/dist/node-islands/effect-gate.d.ts +11 -0
- package/dist/node-islands/effect-gate.js +746 -0
- package/dist/node-islands/effect-gate.js.map +1 -0
- package/dist/node-islands/effect-gate.test.d.ts +1 -0
- package/dist/node-islands/effect-gate.test.js +152 -0
- package/dist/node-islands/effect-gate.test.js.map +1 -0
- package/dist/node-islands/libnode-pack.d.ts +68 -0
- package/dist/node-islands/libnode-pack.js +199 -0
- package/dist/node-islands/libnode-pack.js.map +1 -0
- package/dist/node-islands/libnode-pack.test.d.ts +1 -0
- package/dist/node-islands/libnode-pack.test.js +258 -0
- package/dist/node-islands/libnode-pack.test.js.map +1 -0
- package/dist/node-islands/libnode.d.ts +32 -0
- package/dist/node-islands/libnode.js +212 -0
- package/dist/node-islands/libnode.js.map +1 -0
- package/dist/node-islands/libnode.test.d.ts +1 -0
- package/dist/node-islands/libnode.test.js +170 -0
- package/dist/node-islands/libnode.test.js.map +1 -0
- package/dist/node-islands/modules.d.ts +96 -0
- package/dist/node-islands/modules.js +803 -0
- package/dist/node-islands/modules.js.map +1 -0
- package/dist/node-islands/modules.test.d.ts +1 -0
- package/dist/node-islands/modules.test.js +276 -0
- package/dist/node-islands/modules.test.js.map +1 -0
- package/dist/node-islands/resolve.d.ts +8 -0
- package/dist/node-islands/resolve.js +10 -0
- package/dist/node-islands/resolve.js.map +1 -0
- package/dist/node-islands/snapshot.d.ts +16 -0
- package/dist/node-islands/snapshot.js +486 -0
- package/dist/node-islands/snapshot.js.map +1 -0
- package/dist/node-islands/snapshot.test.d.ts +1 -0
- package/dist/node-islands/snapshot.test.js +56 -0
- package/dist/node-islands/snapshot.test.js.map +1 -0
- package/dist/project-config.d.ts +37 -1
- package/dist/project-config.js +159 -7
- package/dist/project-config.js.map +1 -1
- package/dist/project-config.test.js +153 -0
- package/dist/project-config.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/package.json +24 -21
- package/surface-manifest.json +47 -7
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ARENA_RC, arenaDisposeLines, arenaDisposeSym, arenaNewLines, disposeFieldLines, plainRefType, } from "./arenas.js";
|
|
1
2
|
import { InternalCompilerError } from "../../errors.js";
|
|
2
3
|
import { isRefCounted, RUNTIME_EMITTER_CLASS, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, classValueConstructor, } from "../../ir/ir.js";
|
|
3
4
|
import { streamRooted, undefinedArmTag } from "../../ir/analysis.js";
|
|
@@ -6,7 +7,7 @@ import { cycTypeDescriptor, emitObjectAlloc, emitObjectFree } from "./alloc.js";
|
|
|
6
7
|
import { llvmCommentText } from "./common.js";
|
|
7
8
|
import { INLINE_UNION_FIELD } from "./inline-unions.js";
|
|
8
9
|
import { NullableRefFields } from "./nullable-fields.js";
|
|
9
|
-
import { cycleRootLines, traceFieldVisitLines, FN_ATTRS, cycleDeadLines, destroyDefinitions, directChildReleaseLines, directDestroyTarget, segmentPrologueLines, segmentTeardownLines, segmentedTeardown, usedDirectTargets, llFieldType, releaseBody, releaseFastPath, needsBoundedRelease, releaseSym, retainBody, traceAdapter, youngEntryLines, } from "./shapes.js";
|
|
10
|
+
import { cycleRootLines, traceFieldVisitLines, FN_ATTRS, cycleDeadLines, destroyDefinitions, directChildReleaseLines, directDestroyTarget, segmentPrologueLines, segmentTeardownLines, iterativeTeardownDefinitions, segmentedTeardown, usedDirectTargets, llFieldType, releaseBody, releaseFastPath, needsBoundedRelease, releaseSym, retainBody, traceAdapter, youngEntryLines, arrElemInit, } from "./shapes.js";
|
|
10
11
|
/** Per-class node of the class graph. */
|
|
11
12
|
export class LlClassMeta {
|
|
12
13
|
def;
|
|
@@ -29,7 +30,9 @@ export class LlClassMeta {
|
|
|
29
30
|
* a vtable word, the rc word holds the class id (classIdRcWord) in its
|
|
30
31
|
* high 32 bits (CLASS_ID_OFFSET) and the reference count in its low 32
|
|
31
32
|
* bits, and the hierarchy's vtables are one array indexed by the id
|
|
32
|
-
* (mangleVtArray).
|
|
33
|
+
* (mangleVtArray). A standalone class that is an arm of a class union
|
|
34
|
+
* (nullable-unions.ts taggedClasses) keeps its id the same way, without
|
|
35
|
+
* vtables. */
|
|
33
36
|
idInRc = false;
|
|
34
37
|
/** A ProgramLifetime class with the 32-bit header (assignCompactLayouts):
|
|
35
38
|
* the i32 at offset 0 is compactHeaderWord, with the class id in place of
|
|
@@ -44,6 +47,11 @@ export class LlClassMeta {
|
|
|
44
47
|
* a compact class instance as a 32-bit index (COMPACT_REF) rather than a
|
|
45
48
|
* pointer: compactRefLoadLines decodes it, compactRefStoreLines encodes it. */
|
|
46
49
|
compressed = [];
|
|
50
|
+
/** Compact classes with an inline array field (ir/inline-arrays.ts): the
|
|
51
|
+
* field's slot holds the element count as an i32, and the elements follow
|
|
52
|
+
* the fixed fields as 32-bit references from `tailOffset`, the same offset
|
|
53
|
+
* in every class of the declaring class's subtree. Absent otherwise. */
|
|
54
|
+
inlineTail;
|
|
47
55
|
constructor(def) {
|
|
48
56
|
this.def = def;
|
|
49
57
|
this.root = this;
|
|
@@ -55,7 +63,7 @@ export class LlClassMeta {
|
|
|
55
63
|
* slots — a class's method gets a slot iff no ancestor declares it AND some
|
|
56
64
|
* strict descendant redeclares it (whole-program devirtualization).
|
|
57
65
|
* The preorder intervals also identify runtime class membership. */
|
|
58
|
-
export function buildClassGraph(mod, fnByName, sizeType = "i64") {
|
|
66
|
+
export function buildClassGraph(mod, fnByName, sizeType = "i64", tagged = new Set()) {
|
|
59
67
|
const metaMap = new Map();
|
|
60
68
|
for (const cls of mod.classes ?? []) {
|
|
61
69
|
const meta = new LlClassMeta(cls);
|
|
@@ -88,7 +96,10 @@ export function buildClassGraph(mod, fnByName, sizeType = "i64") {
|
|
|
88
96
|
// EventEmitter, EventTarget, Event and the streams) and 32-bit targets
|
|
89
97
|
// have no spare half in the rc word: those keep the vtable word.
|
|
90
98
|
for (const meta of metaMap.values())
|
|
91
|
-
meta.idInRc =
|
|
99
|
+
meta.idInRc =
|
|
100
|
+
sizeType === "i64" &&
|
|
101
|
+
(meta.hierarchy || tagged.has(meta.def.name)) &&
|
|
102
|
+
meta.root.def.runtime !== true;
|
|
92
103
|
const slotRoots = new Set();
|
|
93
104
|
for (const key of mod.threadSlotKeys ?? []) {
|
|
94
105
|
const meta = metaMap.get(key);
|
|
@@ -273,12 +284,33 @@ function runtimePrefixOf(meta) {
|
|
|
273
284
|
* on classes rooted at a runtime base, then the stream-state slot on
|
|
274
285
|
* stream-rooted ones. */
|
|
275
286
|
function headerEnd(meta) {
|
|
287
|
+
if (meta.def.arrayElem !== undefined)
|
|
288
|
+
return ARRAY_PREFIX.length + 1;
|
|
276
289
|
if (!meta.hierarchy || meta.idInRc)
|
|
277
290
|
return 1;
|
|
278
291
|
if (streamRooted(meta))
|
|
279
292
|
return 5;
|
|
280
293
|
return runtimePrefixOf(meta) ? 4 : 2;
|
|
281
294
|
}
|
|
295
|
+
/** The array header a class declared `extends Array` begins with, after
|
|
296
|
+
* the size_t reference count: %ScrArr's len, cap, elem, cyc, spare, filled
|
|
297
|
+
* and data (scr_array.h). */
|
|
298
|
+
const ARRAY_PREFIX = ["i32", "i32", "i8", "i8", "i16", "i32", "ptr"];
|
|
299
|
+
/** LLVM `c"..."` text of a string's UTF-8 bytes and a terminating NUL. */
|
|
300
|
+
function nulTerminatedBytes(text) {
|
|
301
|
+
let out = "";
|
|
302
|
+
for (const byte of Buffer.from(text, "utf8"))
|
|
303
|
+
out +=
|
|
304
|
+
byte >= 0x20 && byte < 0x7f && byte !== 0x22 && byte !== 0x5c
|
|
305
|
+
? String.fromCharCode(byte)
|
|
306
|
+
: `\\${byte.toString(16).padStart(2, "0").toUpperCase()}`;
|
|
307
|
+
return out + "\\00";
|
|
308
|
+
}
|
|
309
|
+
/** The class descriptor (ScrArrClass: name, destroy) of a class declared
|
|
310
|
+
* `extends Array`. */
|
|
311
|
+
export function arrayClassDescriptor(className) {
|
|
312
|
+
return `@${mangleClassStruct(className)}.arrcls`;
|
|
313
|
+
}
|
|
282
314
|
/** The GEP index of the ThreadSlots slot word (an i32) in a class whose
|
|
283
315
|
* hierarchy holds ThreadSlots keys: right after the header words, so every
|
|
284
316
|
* member of the hierarchy has it at the same offset. */
|
|
@@ -304,6 +336,10 @@ export function classFieldIndex(meta, field, refs = "pointer") {
|
|
|
304
336
|
const idx = meta.def.fields.findIndex((f) => f.name === field);
|
|
305
337
|
if (idx < 0)
|
|
306
338
|
throw new InternalCompilerError(`llvm emitter bug: unknown field ${field} on class ${meta.def.name}`);
|
|
339
|
+
// An inline array field's slot holds its element count: its reads and
|
|
340
|
+
// writes go through inline-arrays.ts.
|
|
341
|
+
if (meta.inlineTail?.field === idx && meta.compact)
|
|
342
|
+
throw new InternalCompilerError(`llvm emitter bug: field slot of the inline array field ${meta.def.name}.${field}`);
|
|
307
343
|
const compressed = meta.compressed[idx] === true;
|
|
308
344
|
// Callers that read or write a field's storage as a pointer must not see
|
|
309
345
|
// a compressed one; callers that decode and encode pass "compressed".
|
|
@@ -338,7 +374,9 @@ function slotForgetLines(host, struct, meta, tag) {
|
|
|
338
374
|
* hierarchy folds away. The cycle analysis leaves the hierarchy untraced, so
|
|
339
375
|
* no trace adapter ever visits an instance (as for every untraced class). */
|
|
340
376
|
export function programLifetimeClass(host, meta) {
|
|
341
|
-
return host.programLifetime?.has(meta.root.def.name) === true &&
|
|
377
|
+
return (host.programLifetime?.has(meta.root.def.name) === true &&
|
|
378
|
+
meta.root.def.runtime !== true &&
|
|
379
|
+
meta.root.def.arrayElem === undefined);
|
|
342
380
|
}
|
|
343
381
|
/** The reference count a program-lifetime instance is created with: the
|
|
344
382
|
* midpoint of the size_t range (2^63, or 2^31 on 32-bit targets).
|
|
@@ -416,19 +454,35 @@ export function classIdLoadLines(meta, obj, id, group) {
|
|
|
416
454
|
* keeps it there (LlClassMeta.idInRc): the high half of the little-endian
|
|
417
455
|
* 64-bit word. The count is the i32 at offset 0. */
|
|
418
456
|
export const CLASS_ID_OFFSET = 4;
|
|
457
|
+
/** The bound on layout ids (scr_rc.h SCR_RC_LAYOUT_ID_LIMIT): the high
|
|
458
|
+
* half of a 64-bit rc word keeps the layout id in its low 30 bits, beside
|
|
459
|
+
* the program-lifetime and frozen bits. A class id is the layout id of its
|
|
460
|
+
* class's canonical layout. */
|
|
461
|
+
export const LAYOUT_ID_LIMIT = 0x3fffffff;
|
|
419
462
|
/** The rc word an LlClassMeta.idInRc instance is created with: the class
|
|
420
463
|
* id, its preorder number plus 1, in the high 32 bits, and in the low 32 bits
|
|
421
464
|
* a count of 1, or for a program-lifetime instance the midpoint of the 32-bit
|
|
422
|
-
* count (as programLifetimeRc is of the 32-bit word). The id is
|
|
423
|
-
*
|
|
424
|
-
* the runtime
|
|
465
|
+
* count (as programLifetimeRc is of the 32-bit word). The id is a layout id
|
|
466
|
+
* (LAYOUT_ID_LIMIT), so it never sets the program-lifetime or frozen bit
|
|
467
|
+
* and the runtime reads it back (scr_rc.h scr_rc_layout_id). */
|
|
425
468
|
export function classIdRcWord(meta, lifetime) {
|
|
469
|
+
if (meta.pre + 1 >= LAYOUT_ID_LIMIT)
|
|
470
|
+
throw new InternalCompilerError(`class id ${meta.pre + 1} is not a layout id`);
|
|
426
471
|
return (BigInt(meta.pre + 1) * 2n ** 32n + (lifetime ? 2n ** 31n : 1n)).toString();
|
|
427
472
|
}
|
|
473
|
+
/** The rc word of an immortal LlClassMeta.idInRc instance (a frame
|
|
474
|
+
* object): the class id in the high half and the immortal count, all ones,
|
|
475
|
+
* in the low half, which scr_rc_immortal reads as immortal. */
|
|
476
|
+
export function classIdImmortalRcWord(meta) {
|
|
477
|
+
if (meta.pre + 1 >= LAYOUT_ID_LIMIT)
|
|
478
|
+
throw new InternalCompilerError(`class id ${meta.pre + 1} is not a layout id`);
|
|
479
|
+
return (BigInt(meta.pre + 1) * 2n ** 32n + 0xffffffffn).toString();
|
|
480
|
+
}
|
|
428
481
|
/** The 32-bit header of a compact class instance (LlClassMeta.compact):
|
|
429
482
|
* COMPACT_HEADER_TAG, the class id (classIdRcWord's preorder number + 1, 0
|
|
430
|
-
*
|
|
431
|
-
* publication marks the object. No other object's
|
|
483
|
+
* for a class without LlClassMeta.idInRc) in the low 28 bits, and
|
|
484
|
+
* COMPACT_PUBLISHED once publication marks the object. No other object's
|
|
485
|
+
* count reaches
|
|
432
486
|
* 0x70000000, so the runtime reads a word of 0xf0000000 and up as published
|
|
433
487
|
* for every object (scr_rc.h SCR_RC_PUBLISHED). */
|
|
434
488
|
export const COMPACT_HEADER_TAG = 0x70000000;
|
|
@@ -446,7 +500,7 @@ export function storedHeaderBytes(meta) {
|
|
|
446
500
|
}
|
|
447
501
|
/** The header word a compact instance is created with. */
|
|
448
502
|
export function compactHeaderWord(meta) {
|
|
449
|
-
return COMPACT_HEADER_TAG | (meta.
|
|
503
|
+
return COMPACT_HEADER_TAG | (meta.idInRc ? meta.pre + 1 : 0);
|
|
450
504
|
}
|
|
451
505
|
/** Lines that decode the 32-bit reference `idx` (an i32) of a compressed
|
|
452
506
|
* field into the pointer `out`. The program-lifetime region lies below
|
|
@@ -547,10 +601,13 @@ export function classFieldTypes(host, cls, int32) {
|
|
|
547
601
|
* cache line; then the other fields, widest first. So 32-bit and smaller
|
|
548
602
|
* fields share 8-byte words. The struct lists the header and the fields by
|
|
549
603
|
* offset, which LLVM's layout of the type reproduces (checked). */
|
|
550
|
-
export function assignCompactLayouts(metaMap, compact, fieldTypes, compressedRef) {
|
|
604
|
+
export function assignCompactLayouts(metaMap, compact, fieldTypes, compressedRef, inlineArrays) {
|
|
551
605
|
const isCompact = (className) => {
|
|
552
606
|
const target = metaMap.get(className);
|
|
553
|
-
return target !== undefined &&
|
|
607
|
+
return (target !== undefined &&
|
|
608
|
+
target.def.runtime !== true &&
|
|
609
|
+
target.root.def.arrayElem === undefined &&
|
|
610
|
+
compact(target.root));
|
|
554
611
|
};
|
|
555
612
|
const byPre = [...metaMap.values()].sort((a, b) => a.pre - b.pre);
|
|
556
613
|
for (const meta of byPre) {
|
|
@@ -570,7 +627,17 @@ export function assignCompactLayouts(metaMap, compact, fieldTypes, compressedRef
|
|
|
570
627
|
const compressed = meta.def.fields.map((_, i) => i < baseCount
|
|
571
628
|
? base.compressed[i]
|
|
572
629
|
: compressedRef !== undefined && compressedRef(meta.def, i, isCompact));
|
|
630
|
+
// An inline array field (ir/inline-arrays.ts) whose elements are compact
|
|
631
|
+
// keeps its element count in its slot.
|
|
632
|
+
const inline = inlineArrays?.get(meta.def.name);
|
|
633
|
+
const inlineField = inline !== undefined && isCompact(inline.elemClass) && isCompact(inline.declaringClass)
|
|
634
|
+
? inline.fieldIndex
|
|
635
|
+
: -1;
|
|
573
636
|
const types = fieldTypes(meta.def).map((t, i) => {
|
|
637
|
+
if (i === inlineField) {
|
|
638
|
+
compressed[i] = false;
|
|
639
|
+
return "i32";
|
|
640
|
+
}
|
|
574
641
|
if (!compressed[i])
|
|
575
642
|
return t;
|
|
576
643
|
if (t !== "ptr")
|
|
@@ -616,6 +683,46 @@ export function assignCompactLayouts(metaMap, compact, fieldTypes, compressedRef
|
|
|
616
683
|
meta.compactSlots = slots;
|
|
617
684
|
meta.compressed = compressed;
|
|
618
685
|
}
|
|
686
|
+
if (inlineArrays !== undefined)
|
|
687
|
+
assignInlineTails(metaMap, inlineArrays);
|
|
688
|
+
}
|
|
689
|
+
/** Gives each compact class of an inline array field's subtree its tail
|
|
690
|
+
* (LlClassMeta.inlineTail): the elements start after the largest fixed part
|
|
691
|
+
* of any class in the subtree, so that a read through any static type of
|
|
692
|
+
* the subtree finds them at the same offset. */
|
|
693
|
+
function assignInlineTails(metaMap, inlineArrays) {
|
|
694
|
+
const subtrees = new Map();
|
|
695
|
+
for (const [name, plan] of inlineArrays) {
|
|
696
|
+
const meta = metaMap.get(name);
|
|
697
|
+
if (meta === undefined || !meta.compact)
|
|
698
|
+
continue;
|
|
699
|
+
// The layout gave the field its i32 count only when the elements are
|
|
700
|
+
// compact (assignCompactLayouts).
|
|
701
|
+
const slot = meta.compactSlots[plan.fieldIndex];
|
|
702
|
+
if (slot === undefined || meta.compactElems[slot]?.type !== "i32")
|
|
703
|
+
continue;
|
|
704
|
+
const members = subtrees.get(plan.declaringClass);
|
|
705
|
+
if (members === undefined)
|
|
706
|
+
subtrees.set(plan.declaringClass, [meta]);
|
|
707
|
+
else
|
|
708
|
+
members.push(meta);
|
|
709
|
+
}
|
|
710
|
+
for (const members of subtrees.values()) {
|
|
711
|
+
let end = 0;
|
|
712
|
+
for (const meta of members)
|
|
713
|
+
for (const e of meta.compactElems)
|
|
714
|
+
end = Math.max(end, e.offset + e.size);
|
|
715
|
+
const tailOffset = alignTo(end, 4);
|
|
716
|
+
for (const meta of members) {
|
|
717
|
+
const plan = inlineArrays.get(meta.def.name);
|
|
718
|
+
meta.inlineTail = {
|
|
719
|
+
field: plan.fieldIndex,
|
|
720
|
+
tailOffset,
|
|
721
|
+
elemClass: plan.elemClass,
|
|
722
|
+
lengthArg: plan.lengthArg,
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
}
|
|
619
726
|
}
|
|
620
727
|
function alignTo(n, align) {
|
|
621
728
|
return Math.ceil(n / align) * align;
|
|
@@ -625,6 +732,13 @@ function sameFieldPrefix(base, cls) {
|
|
|
625
732
|
base.fields.every((f, i) => cls.fields[i].name === f.name));
|
|
626
733
|
}
|
|
627
734
|
function undefFieldInits(host, meta, nullable) {
|
|
735
|
+
return classUndefinedFieldInits(host, meta, nullable, "%o", "%uf");
|
|
736
|
+
}
|
|
737
|
+
/** The stores that start an instance's union and dyn fields at undefined,
|
|
738
|
+
* for the instance at `object`, with temporaries named `<prefix><index>`
|
|
739
|
+
* and `<prefix>v<index>`. A nullable-pointer field's zeroed slot already is
|
|
740
|
+
* its unit arm. */
|
|
741
|
+
export function classUndefinedFieldInits(host, meta, nullable, object, prefix) {
|
|
628
742
|
const out = [];
|
|
629
743
|
meta.def.fields.forEach((f, i) => {
|
|
630
744
|
// Error.cause uses NULL for absence; an options constructor installs
|
|
@@ -634,6 +748,9 @@ function undefFieldInits(host, meta, nullable) {
|
|
|
634
748
|
// A nullable-pointer field's zeroed slot already is its unit arm.
|
|
635
749
|
if (nullable?.get(meta.def.name, f.name))
|
|
636
750
|
return;
|
|
751
|
+
// An inline array field's slot holds its count, which `new` stores.
|
|
752
|
+
if (meta.inlineTail?.field === i && meta.compact)
|
|
753
|
+
return;
|
|
637
754
|
// Only union and dyn fields get a store here; a compressed field is a
|
|
638
755
|
// class reference, which starts NULL.
|
|
639
756
|
const { index, compressed } = classFieldIndex(meta, f.name, "compressed");
|
|
@@ -644,12 +761,12 @@ function undefFieldInits(host, meta, nullable) {
|
|
|
644
761
|
const tag = undefinedArmTag(f.type, host.unionsById);
|
|
645
762
|
if (tag < 0)
|
|
646
763
|
return;
|
|
647
|
-
out.push(`
|
|
764
|
+
out.push(` ${prefix}${i} = getelementptr inbounds %${mangleClassStruct(meta.def.name)}, ptr ${object}, i64 0, i32 ${index}, i32 0`, ` store i32 ${tag}, ptr ${prefix}${i} ; ${llvmCommentText(f.name)} starts undefined`);
|
|
648
765
|
return;
|
|
649
766
|
}
|
|
650
767
|
if (f.type.kind === "dyn") {
|
|
651
768
|
host.declare("declare ptr @scr_dyn_undefined()");
|
|
652
|
-
out.push(`
|
|
769
|
+
out.push(` ${prefix}v${i} = call ptr @scr_dyn_undefined()`, ` ${prefix}${i} = getelementptr inbounds %${mangleClassStruct(meta.def.name)}, ptr ${object}, i64 0, i32 ${index}`, ` store ptr ${prefix}v${i}, ptr ${prefix}${i} ; ${llvmCommentText(f.name)} starts undefined`);
|
|
653
770
|
return;
|
|
654
771
|
}
|
|
655
772
|
if (f.type.kind !== "union")
|
|
@@ -657,7 +774,7 @@ function undefFieldInits(host, meta, nullable) {
|
|
|
657
774
|
const tag = undefinedArmTag(f.type, host.unionsById);
|
|
658
775
|
if (tag < 0)
|
|
659
776
|
return;
|
|
660
|
-
out.push(`
|
|
777
|
+
out.push(` ${prefix}${i} = getelementptr inbounds %${mangleClassStruct(meta.def.name)}, ptr ${object}, i64 0, i32 ${index}`, ` store ptr ${host.unitInstanceRef(f.type.unionId, tag)}, ptr ${prefix}${i} ; ${llvmCommentText(f.name)} starts undefined`);
|
|
661
778
|
});
|
|
662
779
|
return out;
|
|
663
780
|
}
|
|
@@ -697,13 +814,15 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
697
814
|
// ScrEmitter* / ScrStream* / ScrEventTargetObj* / ScrEventObj* are the
|
|
698
815
|
// usual pointer reinterprets.
|
|
699
816
|
const runtimePrefix = runtimePrefixOf(meta);
|
|
700
|
-
const prefix =
|
|
701
|
-
?
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
? ["ptr", "ptr", "ptr"]
|
|
705
|
-
:
|
|
706
|
-
|
|
817
|
+
const prefix = cls.arrayElem !== undefined
|
|
818
|
+
? ARRAY_PREFIX
|
|
819
|
+
: meta.hierarchy && !meta.idInRc
|
|
820
|
+
? streamRooted(meta)
|
|
821
|
+
? ["ptr", "ptr", "ptr", "ptr"]
|
|
822
|
+
: runtimePrefix
|
|
823
|
+
? ["ptr", "ptr", "ptr"]
|
|
824
|
+
: ["ptr"]
|
|
825
|
+
: [];
|
|
707
826
|
const members = [...prefix, ...(meta.threadSlot ? ["i32"] : []), ...fieldTys];
|
|
708
827
|
typeDefs.push(`%${mangleClassStruct(cls.name)} = type { ${host.sizeType}${members.length ? ", " + members.join(", ") : ""} } ` +
|
|
709
828
|
`; class ${cls.name}${meta.idInRc ? " (class id in rc)" : meta.hierarchy ? " (vt at 1)" : ""}${streamRooted(meta) ? " (ScrStream prefix at 2)" : runtimePrefix ? ` (${runtimePrefix.struct} prefix at 2)` : ""} { ${cls.fields.map((f) => llvmCommentText(f.name)).join("; ")} }`);
|
|
@@ -746,7 +865,7 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
746
865
|
// instance is the element at its number minus the root's.
|
|
747
866
|
for (const name of roots) {
|
|
748
867
|
const root = metaMap.get(name);
|
|
749
|
-
if (!root.idInRc)
|
|
868
|
+
if (!root.hierarchy || !root.idInRc)
|
|
750
869
|
continue;
|
|
751
870
|
const members = [...metaMap.values()]
|
|
752
871
|
.filter((m) => m.root === root)
|
|
@@ -772,6 +891,8 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
772
891
|
fieldTypes.push(t);
|
|
773
892
|
if (programLifetimeClass(host, meta))
|
|
774
893
|
continue;
|
|
894
|
+
if (cls.arrayElem !== undefined)
|
|
895
|
+
continue;
|
|
775
896
|
if (meta.hierarchy && (meta.children.length !== 0 || meta.root.def.runtime === true))
|
|
776
897
|
continue;
|
|
777
898
|
if (!types.some((t) => isRefCounted(t) && needsBoundedRelease(t)))
|
|
@@ -789,6 +910,11 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
789
910
|
]);
|
|
790
911
|
}
|
|
791
912
|
const directTargets = usedDirectTargets(host, candidates, fieldTypes);
|
|
913
|
+
// The descriptor entries of a class declared `extends Array`: a helper
|
|
914
|
+
// the module defines, or null (a class that is never constructed has
|
|
915
|
+
// neither).
|
|
916
|
+
const defined = new Set(mod.functions.map((fn) => fn.name));
|
|
917
|
+
const arrayClassFn = (name) => name !== undefined && defined.has(name) ? `@${mangleFunction(name)}` : "null";
|
|
792
918
|
for (const cls of emitted) {
|
|
793
919
|
const meta = metaMap.get(cls.name);
|
|
794
920
|
const struct = mangleClassStruct(cls.name);
|
|
@@ -818,8 +944,14 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
818
944
|
// A traced class whose trace visits nothing carries the collector header
|
|
819
945
|
// only because its hierarchy is traced: it is never on a cycle. Its
|
|
820
946
|
// descriptor names scr_cyc_no_children and its objects start out
|
|
821
|
-
// SCR_CYC_ACYCLIC, so releases never buffer them.
|
|
822
|
-
|
|
947
|
+
// SCR_CYC_ACYCLIC, so releases never buffer them. An Array subclass's
|
|
948
|
+
// trace also visits its elements by their current element ops
|
|
949
|
+
// (scr_arr_subclass_trace), so it is never acyclic.
|
|
950
|
+
const acyclic = traced &&
|
|
951
|
+
runtimePrefix === null &&
|
|
952
|
+
!isStreamRooted &&
|
|
953
|
+
tracedFields.length === 0 &&
|
|
954
|
+
cls.arrayElem === undefined;
|
|
823
955
|
const bounded = runtimePrefix !== null ||
|
|
824
956
|
isStreamRooted ||
|
|
825
957
|
refFields.some((field) => needsBoundedRelease(field.type));
|
|
@@ -853,6 +985,7 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
853
985
|
// segmentedTeardown).
|
|
854
986
|
const destroy = `${meta.hierarchy ? mangleClassReleaseDirect(cls.name) : mangleClassRelease(cls.name)}_destroy`;
|
|
855
987
|
const segmented = chained &&
|
|
988
|
+
cls.arrayElem === undefined &&
|
|
856
989
|
!meta.compact &&
|
|
857
990
|
runtimePrefix === null &&
|
|
858
991
|
!isStreamRooted &&
|
|
@@ -863,7 +996,11 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
863
996
|
// members). Runs at rc == 0.
|
|
864
997
|
const teardown = (lines) => {
|
|
865
998
|
const release = (prefix, f, t) => {
|
|
866
|
-
|
|
999
|
+
// An Array subclass instance's destroy releases its fields plainly
|
|
1000
|
+
// (it takes no chain length).
|
|
1001
|
+
const direct = bounded && cls.arrayElem === undefined
|
|
1002
|
+
? directDestroyTarget(host, f.type, directTargets)
|
|
1003
|
+
: null;
|
|
867
1004
|
if (direct === null)
|
|
868
1005
|
return [
|
|
869
1006
|
` call void ${releaseSym(host, f.type)}(ptr %v${t}) ; ${llvmCommentText(f.name)}`,
|
|
@@ -947,17 +1084,52 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
947
1084
|
defs.push(...reld);
|
|
948
1085
|
}
|
|
949
1086
|
}
|
|
1087
|
+
else if (cls.arrayElem !== undefined) {
|
|
1088
|
+
// An instance is an array: its release is the array's, which reaches
|
|
1089
|
+
// the class's destroy (the descriptor's) when the count reaches zero.
|
|
1090
|
+
host.declare(`declare void @scr_arr_release(ptr)`);
|
|
1091
|
+
host.declare(`declare void @scr_arr_subclass_drop(ptr)`);
|
|
1092
|
+
const destroy = `${mangleClassRelease(cls.name)}.arrdestroy`;
|
|
1093
|
+
const destroyBody = [
|
|
1094
|
+
`define internal void @${destroy}(ptr %o) ${FN_ATTRS} { ; destroy ${cls.name} (an Array subclass instance)`,
|
|
1095
|
+
`entry:`,
|
|
1096
|
+
];
|
|
1097
|
+
const fieldsTeardown = [];
|
|
1098
|
+
teardown(fieldsTeardown);
|
|
1099
|
+
const free = emitObjectFree(host, traced);
|
|
1100
|
+
destroyBody.push(...fieldsTeardown.slice(0, fieldsTeardown.length - free.length), ` call void @scr_arr_subclass_drop(ptr %o)`, ...free, ` ret void`, `}`, ``);
|
|
1101
|
+
const displayName = cls.name.includes(".")
|
|
1102
|
+
? cls.name.slice(cls.name.lastIndexOf(".") + 1)
|
|
1103
|
+
: cls.name;
|
|
1104
|
+
const jsName = cls.jsName ?? displayName;
|
|
1105
|
+
defs.push(...destroyBody,
|
|
1106
|
+
// The name is the class's own copy: its address identifies the
|
|
1107
|
+
// class in dyn snapshots of an instance (scr_arr_copy_metadata).
|
|
1108
|
+
`${arrayClassDescriptor(cls.name)}.name = private constant [${Buffer.byteLength(jsName, "utf8") + 1} x i8] c"${nulTerminatedBytes(jsName)}"`, `${arrayClassDescriptor(cls.name)} = internal constant { ptr, ptr, ptr, ptr } { ptr ${arrayClassDescriptor(cls.name)}.name, ptr @${destroy}, ptr ${arrayClassFn(cls.arrayFields)}, ptr ${arrayClassFn(cls.arraySpecies)} }`, ``, `define internal void @${mangleClassRelease(cls.name)}(ptr %o) ${FN_ATTRS} { ; release ${cls.name} (the array's)`, `entry:`, ` call void @scr_arr_release(ptr %o)`, ` ret void`, `}`, ``);
|
|
1109
|
+
}
|
|
950
1110
|
else {
|
|
951
1111
|
const freeBody = [];
|
|
952
1112
|
teardown(freeBody);
|
|
953
|
-
|
|
1113
|
+
// A segmented class whose every reference field holds its own type and
|
|
1114
|
+
// that has no collector header tears down in one loop (shapes.ts
|
|
1115
|
+
// iterativeTeardownDefinitions).
|
|
1116
|
+
const iterative = segmented &&
|
|
1117
|
+
!traced &&
|
|
1118
|
+
refFields.every((f) => directDestroyTarget(host, f.type, directTargets)?.destroy === destroy);
|
|
1119
|
+
defs.push(...releaseBody(host, mangleClassRelease(cls.name), traced, freeBody, `release ${cls.name}`, bounded, lifetime, chained, segmented, false, iterative
|
|
1120
|
+
? iterativeTeardownDefinitions(host, destroy, struct, refFields.map((f) => f.index), `@${mangleClassRelease(cls.name)}`, "weak", count)
|
|
1121
|
+
: null, count), ``);
|
|
954
1122
|
}
|
|
955
1123
|
// new: zeroed allocation, rc = 1, the vtable word on hierarchy
|
|
956
1124
|
// members, undefined-admitting union fields at the interned unit
|
|
957
1125
|
// instance. Traced shapes allocate with the collector header; alloc.ts
|
|
958
1126
|
// inlines the allocator fast paths and the alloc note.
|
|
1127
|
+
// An inline array field's instance (LlClassMeta.inlineTail) takes the
|
|
1128
|
+
// field's element count and has room for the elements after its fixed
|
|
1129
|
+
// fields.
|
|
1130
|
+
const tail = meta.compact && regionRefs ? (meta.inlineTail ?? null) : null;
|
|
959
1131
|
const nw = [
|
|
960
|
-
`define internal ptr @${mangleClassNew(cls.name)}() ${FN_ATTRS} { ; new ${cls.name}`,
|
|
1132
|
+
`define internal ptr @${mangleClassNew(cls.name)}(${tail !== null ? "i32 %inl.len" : ""}) ${FN_ATTRS} { ; new ${cls.name}`,
|
|
961
1133
|
`entry:`,
|
|
962
1134
|
];
|
|
963
1135
|
const cycType = `@${mangleClassTrace(cls.name)}.cyctype`;
|
|
@@ -979,10 +1151,17 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
979
1151
|
// Compressed fields refer to compact instances by their index in the
|
|
980
1152
|
// program-lifetime region, so every compact instance lives there:
|
|
981
1153
|
// zeroed, 8-byte aligned and never freed.
|
|
982
|
-
|
|
1154
|
+
if (tail !== null) {
|
|
1155
|
+
nw.push(` %inl.n = zext i32 %inl.len to ${host.sizeType}`, ` %inl.bytes = shl nuw nsw ${host.sizeType} %inl.n, 2`, ` %inl.size = add nuw nsw ${host.sizeType} %inl.bytes, ${tail.tailOffset}`);
|
|
1156
|
+
nw.push(...plrAllocLines(host, "%inl.size"));
|
|
1157
|
+
}
|
|
1158
|
+
else
|
|
1159
|
+
nw.push(...plrAllocLines(host, sizeOf));
|
|
983
1160
|
}
|
|
984
1161
|
else
|
|
985
1162
|
nw.push(...emitObjectAlloc(host, sizeOf, traced && !lifetime ? { type: cycType, acyclic } : null, storedHeaderBytes(meta)));
|
|
1163
|
+
// The header and field set-up, shared with the arena-aware constructor.
|
|
1164
|
+
const initStart = nw.length;
|
|
986
1165
|
if (meta.compact && !meta.hierarchy)
|
|
987
1166
|
nw.push(` store i32 ${compactHeaderWord(meta)}, ptr %o ; no count (compactHeaderWord)`);
|
|
988
1167
|
else if (meta.compact) {
|
|
@@ -1002,6 +1181,11 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
1002
1181
|
}
|
|
1003
1182
|
else
|
|
1004
1183
|
nw.push(` store ${host.sizeType} ${lifetime ? programLifetimeRc(host.sizeType) : 1}, ptr %o`);
|
|
1184
|
+
if (cls.arrayElem !== undefined) {
|
|
1185
|
+
const init = arrElemInit(host, cls.arrayElem);
|
|
1186
|
+
host.declare(`declare void @scr_arr_subclass_init(ptr, i8, ptr, ptr, i1 zeroext)`);
|
|
1187
|
+
nw.push(` call void @scr_arr_subclass_init(ptr %o, i8 ${init.kind}, ptr ${init.ops}, ptr ${arrayClassDescriptor(cls.name)}, i1 ${traced})`);
|
|
1188
|
+
}
|
|
1005
1189
|
if (lifetime && audit) {
|
|
1006
1190
|
// --sanitize builds: the RC audit skips its leak report when the
|
|
1007
1191
|
// program keeps program-lifetime objects (scr_console.c), and
|
|
@@ -1028,13 +1212,40 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
1028
1212
|
nw.push(` %clsp = getelementptr inbounds %${struct}, ptr %o, i64 0, i32 3`, ` store ptr ${host.cstr(displayName)}, ptr %clsp ; ${runtimePrefix.what} display name`);
|
|
1029
1213
|
}
|
|
1030
1214
|
nw.push(...undefFieldInits(host, meta, nullable));
|
|
1215
|
+
if (tail !== null)
|
|
1216
|
+
nw.push(` %inl.countp = getelementptr inbounds %${struct}, ptr %o, i64 0, i32 ${meta.compactSlots[tail.field]}`, ` store i32 %inl.len, ptr %inl.countp ; ${llvmCommentText(cls.name)} inline array count`);
|
|
1031
1217
|
// Young instances: program-owned traced classes. Classes rooted at a
|
|
1032
1218
|
// runtime base (errors, emitters, events, streams) carry runtime state
|
|
1033
1219
|
// and stay with trial deletion, like every runtime family.
|
|
1034
|
-
|
|
1220
|
+
const init = nw.slice(initStart);
|
|
1221
|
+
if (traced &&
|
|
1222
|
+
!lifetime &&
|
|
1223
|
+
(!meta.hierarchy || meta.root.def.runtime !== true) &&
|
|
1224
|
+
cls.arrayElem === undefined)
|
|
1035
1225
|
nw.push(...youngEntryLines(host));
|
|
1036
1226
|
nw.push(` ret ptr ${meta.hierarchy ? "%o.vt" : "%o"}`, `}`, ``);
|
|
1037
1227
|
defs.push(...nw);
|
|
1228
|
+
if (host.arenaClasses?.has(cls.name) === true &&
|
|
1229
|
+
cls.arrayElem === undefined &&
|
|
1230
|
+
!lifetime &&
|
|
1231
|
+
regions === null &&
|
|
1232
|
+
!meta.compact &&
|
|
1233
|
+
runtimePrefix === null &&
|
|
1234
|
+
!isStreamRooted &&
|
|
1235
|
+
!meta.threadSlot) {
|
|
1236
|
+
// The arena count in place of 1, in the rc word or its low half.
|
|
1237
|
+
const counted = meta.idInRc
|
|
1238
|
+
? ` store i64 ${classIdRcWord(meta, false)}, ptr %o.vt`
|
|
1239
|
+
: ` store ${host.sizeType} 1, ptr %o`;
|
|
1240
|
+
const arenaCount = meta.idInRc
|
|
1241
|
+
? ` store i64 ${(BigInt(meta.pre + 1) * 2n ** 32n + BigInt(ARENA_RC)).toString()}, ptr %o.vt`
|
|
1242
|
+
: ` store ${host.sizeType} ${ARENA_RC}, ptr %o`;
|
|
1243
|
+
const newSym = mangleClassNew(cls.name);
|
|
1244
|
+
const dispose = refFields.length > 0 && host.arenasClosed !== true ? arenaDisposeSym(newSym) : null;
|
|
1245
|
+
defs.push(...arenaNewLines(host, newSym, sizeOf, traced ? cycType : null, dispose, init.map((line) => (line.startsWith(counted) ? arenaCount : line)), meta.hierarchy ? "%o.vt" : "%o"));
|
|
1246
|
+
if (dispose !== null)
|
|
1247
|
+
defs.push(...arenaDisposeLines(newSym, refFields.flatMap((f, t) => disposeFieldLines(t, `getelementptr inbounds %${struct}, ptr %o, i64 0, i32 ${f.index}`, plainRefType(f.type), releaseSym(host, f.type), llvmCommentText(f.name)))));
|
|
1248
|
+
}
|
|
1038
1249
|
if (traced) {
|
|
1039
1250
|
// trace: visit exactly the cycle-capable fields; gcFree: release
|
|
1040
1251
|
// exactly the complement, then free (the trace/teardown complement
|
|
@@ -1052,6 +1263,12 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
1052
1263
|
tracedFields.forEach((f, i) => {
|
|
1053
1264
|
tr.push(...traceFieldVisitLines(struct, f.index, i, llvmCommentText(f.name)));
|
|
1054
1265
|
});
|
|
1266
|
+
// An Array subclass instance's elements, when its current element
|
|
1267
|
+
// storage is cycle-capable (a species result can retype it).
|
|
1268
|
+
if (cls.arrayElem !== undefined) {
|
|
1269
|
+
host.declare(`declare void @scr_arr_subclass_trace(ptr, ptr, ptr)`);
|
|
1270
|
+
tr.push(` call void @scr_arr_subclass_trace(ptr %o, ptr %visit, ptr %ctx) ; the elements`);
|
|
1271
|
+
}
|
|
1055
1272
|
tr.push(` ret void`, `}`, ``);
|
|
1056
1273
|
defs.push(...tr);
|
|
1057
1274
|
const gf = [
|
|
@@ -1067,6 +1284,12 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
|
|
|
1067
1284
|
});
|
|
1068
1285
|
if (meta.threadSlot)
|
|
1069
1286
|
gf.push(...slotForgetLines(host, struct, meta, "gfw"));
|
|
1287
|
+
if (cls.arrayElem !== undefined) {
|
|
1288
|
+
// The elements: traced ones are the collector's, the others are
|
|
1289
|
+
// released with the storage (the same test as the trace's).
|
|
1290
|
+
host.declare(`declare void @scr_arr_subclass_gc_drop(ptr)`);
|
|
1291
|
+
gf.push(` call void @scr_arr_subclass_gc_drop(ptr %o)`);
|
|
1292
|
+
}
|
|
1070
1293
|
gf.push(...emitObjectFree(host, true), ` ret void`, `}`, ``);
|
|
1071
1294
|
defs.push(...gf);
|
|
1072
1295
|
}
|
|
@@ -1096,6 +1319,8 @@ export function emitClassObjDefs(host, metaMap, classObjs, fnByName, llType, thr
|
|
|
1096
1319
|
const ctor = fnByName.get(valueCtor.fn);
|
|
1097
1320
|
if (!ctor)
|
|
1098
1321
|
throw new InternalCompilerError(`llvm emitter bug: class object for ${className} without a constructor`);
|
|
1322
|
+
if (meta.inlineTail !== undefined)
|
|
1323
|
+
throw new InternalCompilerError(`llvm emitter bug: class object for ${className}, which has an inline array field`);
|
|
1099
1324
|
const params = ctor.params.slice(valueCtor.firstArg);
|
|
1100
1325
|
const paramDecls = params.map((p, i) => `${llType(p.type)} %a${i}`).join(", ");
|
|
1101
1326
|
const ctorArgs = params.map((p, i) => `${llType(p.type)} %a${i}`);
|
|
@@ -1137,7 +1362,9 @@ export function emitClassObjDefs(host, metaMap, classObjs, fnByName, llType, thr
|
|
|
1137
1362
|
localOwner = base;
|
|
1138
1363
|
localValue = `%base.value${id}`;
|
|
1139
1364
|
}
|
|
1140
|
-
out.push(`define internal ptr @${mangleCtorThunk(className)}(ptr %class${paramDecls ? ", " + paramDecls : ""}) ${FN_ATTRS} { ; construct thunk ${className}`, `entry:`, ` %o = call ptr @${mangleClassNew(className)}()`,
|
|
1365
|
+
out.push(`define internal ptr @${mangleCtorThunk(className)}(ptr %class${paramDecls ? ", " + paramDecls : ""}) ${FN_ATTRS} { ; construct thunk ${className}`, `entry:`, ` %o = call ptr @${mangleClassNew(className)}()`,
|
|
1366
|
+
// Construction through a class value: the census counts it here.
|
|
1367
|
+
...(host.heapCensus?.newLines(className) ?? []), ...(meta.def.localCaptures !== undefined
|
|
1141
1368
|
? [
|
|
1142
1369
|
` %class.owned = call ptr @scr_classobj_retain_v(ptr %class)`,
|
|
1143
1370
|
` %class.slot = getelementptr inbounds %${mangleClassStruct(className)}, ptr %o, i64 0, i32 ${classEnvironmentIndex(meta)}`,
|