@scriptc/compiler 0.0.34 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +7 -6
- package/dist/backend/build-cache.d.ts +44 -0
- package/dist/backend/build-cache.js +241 -0
- package/dist/backend/build-cache.js.map +1 -0
- package/dist/backend/{emission/emit-async.d.ts → c/async.d.ts} +21 -30
- package/dist/backend/{emission/emit-async.js → c/async.js} +270 -286
- package/dist/backend/c/async.js.map +1 -0
- package/dist/backend/{emission/emitter.d.ts → c/c-emitter.d.ts} +6 -23
- package/dist/backend/{emission/emitter.js → c/c-emitter.js} +53 -107
- package/dist/backend/c/c-emitter.js.map +1 -0
- package/dist/backend/c/exprs.d.ts +8 -0
- package/dist/backend/c/exprs.js +7913 -0
- package/dist/backend/c/exprs.js.map +1 -0
- package/dist/backend/{emission/emit-island.d.ts → c/island.d.ts} +5 -5
- package/dist/backend/{emission/emit-island.js → c/island.js} +24 -22
- package/dist/backend/c/island.js.map +1 -0
- package/dist/backend/{emission → c}/may-throw.d.ts +1 -1
- package/dist/backend/{emission → c}/may-throw.js +1 -1
- package/dist/backend/c/may-throw.js.map +1 -0
- package/dist/backend/{emission/emit-shapes.d.ts → c/shapes.d.ts} +19 -19
- package/dist/backend/{emission/emit-shapes.js → c/shapes.js} +78 -87
- package/dist/backend/c/shapes.js.map +1 -0
- package/dist/backend/{emission/emit-stmts.d.ts → c/stmts.d.ts} +12 -12
- package/dist/backend/{emission/emit-stmts.js → c/stmts.js} +377 -343
- package/dist/backend/c/stmts.js.map +1 -0
- package/dist/backend/{emission/emit-types.d.ts → c/types.d.ts} +1 -1
- package/dist/backend/{emission/emit-types.js → c/types.js} +42 -286
- package/dist/backend/c/types.js.map +1 -0
- package/dist/backend/c/types.test.js +25 -0
- package/dist/backend/c/types.test.js.map +1 -0
- package/dist/backend/{emission/emit-walkers.d.ts → c/walkers.d.ts} +19 -41
- package/dist/backend/{emission/emit-walkers.js → c/walkers.js} +238 -298
- package/dist/backend/c/walkers.js.map +1 -0
- package/dist/backend/ffi-callbacks.d.ts +1 -1
- package/dist/backend/ffi-callbacks.js +4 -3
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/{library-identity.d.ts → library-identity-markers.d.ts} +0 -4
- package/dist/backend/{library-identity.js → library-identity-markers.js} +10 -9
- package/dist/backend/library-identity-markers.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +4 -0
- package/dist/backend/llvm/blocks.js +29 -0
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +2 -19
- package/dist/backend/llvm/classes.js +20 -52
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +4 -0
- package/dist/backend/llvm/common.js +27 -0
- package/dist/backend/llvm/common.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +3 -8
- package/dist/backend/llvm/dyn.js +152 -224
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +4 -1
- package/dist/backend/llvm/emitter.js +514 -9981
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.d.ts +4 -0
- package/dist/backend/llvm/expr-async.js +726 -0
- package/dist/backend/llvm/expr-async.js.map +1 -0
- package/dist/backend/llvm/expr-bytes.d.ts +13 -0
- package/dist/backend/llvm/expr-bytes.js +456 -0
- package/dist/backend/llvm/expr-bytes.js.map +1 -0
- package/dist/backend/llvm/expr-callbacks.d.ts +22 -0
- package/dist/backend/llvm/expr-callbacks.js +520 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -0
- package/dist/backend/llvm/expr-calls.d.ts +2 -0
- package/dist/backend/llvm/expr-calls.js +618 -0
- package/dist/backend/llvm/expr-calls.js.map +1 -0
- package/dist/backend/llvm/expr-containers.d.ts +25 -0
- package/dist/backend/llvm/expr-containers.js +623 -0
- package/dist/backend/llvm/expr-containers.js.map +1 -0
- package/dist/backend/llvm/expr-context.d.ts +255 -0
- package/dist/backend/llvm/expr-context.js +2 -0
- package/dist/backend/llvm/expr-context.js.map +1 -0
- package/dist/backend/llvm/expr-control.d.ts +2 -0
- package/dist/backend/llvm/expr-control.js +473 -0
- package/dist/backend/llvm/expr-control.js.map +1 -0
- package/dist/backend/llvm/expr-dispatch.d.ts +4 -0
- package/dist/backend/llvm/expr-dispatch.js +151 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -0
- package/dist/backend/llvm/expr-dynamic.d.ts +2 -0
- package/dist/backend/llvm/expr-dynamic.js +810 -0
- package/dist/backend/llvm/expr-dynamic.js.map +1 -0
- package/dist/backend/llvm/expr-island.d.ts +15 -0
- package/dist/backend/llvm/expr-island.js +690 -0
- package/dist/backend/llvm/expr-island.js.map +1 -0
- package/dist/backend/llvm/expr-primitives.d.ts +6 -0
- package/dist/backend/llvm/expr-primitives.js +622 -0
- package/dist/backend/llvm/expr-primitives.js.map +1 -0
- package/dist/backend/llvm/expr-records.d.ts +9 -0
- package/dist/backend/llvm/expr-records.js +299 -0
- package/dist/backend/llvm/expr-records.js.map +1 -0
- package/dist/backend/llvm/expr-stream-bridges.d.ts +13 -0
- package/dist/backend/llvm/expr-stream-bridges.js +396 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -0
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +12 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +360 -0
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -0
- package/dist/backend/llvm/lib-dispatch.d.ts +5 -0
- package/dist/backend/llvm/lib-dispatch.js +267 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -0
- package/dist/backend/llvm/lib-filesystem.d.ts +6 -0
- package/dist/backend/llvm/lib-filesystem.js +594 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -0
- package/dist/backend/llvm/lib-network.d.ts +2 -0
- package/dist/backend/llvm/lib-network.js +429 -0
- package/dist/backend/llvm/lib-network.js.map +1 -0
- package/dist/backend/llvm/lib-process.d.ts +5 -0
- package/dist/backend/llvm/lib-process.js +585 -0
- package/dist/backend/llvm/lib-process.js.map +1 -0
- package/dist/backend/llvm/lib-shared.d.ts +6 -0
- package/dist/backend/llvm/lib-shared.js +687 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -0
- package/dist/backend/llvm/lib-stream.d.ts +2 -0
- package/dist/backend/llvm/lib-stream.js +470 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +12 -2
- package/dist/backend/llvm/shapes.js +66 -307
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +52 -0
- package/dist/backend/llvm/shapes.test.js.map +1 -0
- package/dist/backend/llvm/split.d.ts +43 -0
- package/dist/backend/llvm/split.js +227 -0
- package/dist/backend/llvm/split.js.map +1 -0
- package/dist/backend/llvm/split.test.d.ts +1 -0
- package/dist/backend/llvm/split.test.js +102 -0
- package/dist/backend/llvm/split.test.js.map +1 -0
- package/dist/backend/llvm/unsupported.d.ts +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -3
- package/dist/backend/llvm/walkers.js +164 -218
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +38 -0
- package/dist/backend/native-codegen.js +261 -0
- package/dist/backend/native-codegen.js.map +1 -0
- package/dist/backend/native-codegen.test.d.ts +1 -0
- package/dist/backend/native-codegen.test.js +188 -0
- package/dist/backend/native-codegen.test.js.map +1 -0
- package/dist/backend/native-link-info.d.ts +96 -0
- package/dist/backend/native-link-info.js +219 -0
- package/dist/backend/native-link-info.js.map +1 -0
- package/dist/backend/native-link-info.test.d.ts +1 -0
- package/dist/backend/native-link-info.test.js +134 -0
- package/dist/backend/native-link-info.test.js.map +1 -0
- package/dist/backend/{cc.d.ts → native-toolchain.d.ts} +139 -47
- package/dist/backend/{cc.js → native-toolchain.js} +1008 -910
- package/dist/backend/native-toolchain.js.map +1 -0
- package/dist/backend/native-toolchain.test.d.ts +1 -0
- package/dist/backend/{cc-cache.test.js → native-toolchain.test.js} +1297 -127
- package/dist/backend/native-toolchain.test.js.map +1 -0
- package/dist/backend/object-localize.js +1 -1
- package/dist/backend/object-localize.test.js +20 -0
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +10 -0
- package/dist/backend/runtime-abi.js +11 -0
- package/dist/backend/runtime-abi.js.map +1 -0
- package/dist/backend/runtime-pack.d.ts +137 -0
- package/dist/backend/runtime-pack.js +400 -0
- package/dist/backend/runtime-pack.js.map +1 -0
- package/dist/backend/runtime-pack.test.d.ts +1 -0
- package/dist/backend/runtime-pack.test.js +438 -0
- package/dist/backend/runtime-pack.test.js.map +1 -0
- package/dist/backend/targets.d.ts +30 -0
- package/dist/backend/targets.js +46 -0
- package/dist/backend/targets.js.map +1 -0
- package/dist/backend/targets.test.d.ts +1 -0
- package/dist/backend/targets.test.js +19 -0
- package/dist/backend/targets.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +41 -0
- package/dist/backend/vendor-archives.js +462 -0
- package/dist/backend/vendor-archives.js.map +1 -0
- package/dist/compat/fetch-profile.d.ts +0 -1
- package/dist/compat/fetch-profile.js +0 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/coverage/report.js +3 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +25 -32
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +11 -12
- package/dist/diagnostics/diagnostic.js +19 -17
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/render.d.ts +1 -1
- package/dist/diagnostics/render.js +1 -1
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/errors.d.ts +5 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +86 -0
- package/dist/executable/executable-cache.js +398 -0
- package/dist/executable/executable-cache.js.map +1 -0
- package/dist/executable/executable-cache.test.d.ts +1 -0
- package/dist/executable/executable-cache.test.js +300 -0
- package/dist/executable/executable-cache.test.js.map +1 -0
- package/dist/ffi/{profile.d.ts → ffi-manifest.d.ts} +7 -2
- package/dist/ffi/{profile.js → ffi-manifest.js} +2 -1
- package/dist/ffi/ffi-manifest.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +21 -0
- package/dist/frontend/builtin-modules.js +82 -0
- package/dist/frontend/builtin-modules.js.map +1 -0
- package/dist/frontend/cjs-lexer.d.ts +7 -0
- package/dist/frontend/cjs-lexer.js +15 -17
- package/dist/frontend/cjs-lexer.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +26 -0
- package/dist/frontend/dts-paths.js +41 -0
- package/dist/frontend/dts-paths.js.map +1 -0
- package/dist/frontend/input-tracker.d.ts +0 -2
- package/dist/frontend/input-tracker.js +1 -4
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.d.ts +1 -5
- package/dist/frontend/lib-contract.js +1 -1
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.d.ts +1 -1
- package/dist/frontend/lowering/call-position.d.ts +4 -0
- package/dist/frontend/lowering/call-position.js +7 -0
- package/dist/frontend/lowering/call-position.js.map +1 -0
- package/dist/frontend/lowering/callback-arg.d.ts +20 -0
- package/dist/frontend/lowering/callback-arg.js +44 -0
- package/dist/frontend/lowering/callback-arg.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +1 -1
- package/dist/frontend/lowering/lib-boundary.js +34 -34
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.d.ts +3 -3
- package/dist/frontend/lowering/lower-assert.js +214 -241
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +74 -146
- package/dist/frontend/lowering/lower-builtins.js +1126 -1234
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +56 -188
- package/dist/frontend/lowering/lower-calls.js +1409 -1494
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +62 -125
- package/dist/frontend/lowering/lower-classes.js +832 -866
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +5 -12
- package/dist/frontend/lowering/lower-comptime.js +32 -31
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +35 -135
- package/dist/frontend/lowering/lower-containers.js +1394 -1715
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +3 -7
- package/dist/frontend/lowering/lower-dgram.js +97 -111
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.d.ts +4 -4
- package/dist/frontend/lowering/lower-enums.js +30 -30
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/{lower-emitter.d.ts → lower-event-emitter.d.ts} +7 -18
- package/dist/frontend/lowering/{lower-emitter.js → lower-event-emitter.js} +172 -174
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.d.ts +5 -5
- package/dist/frontend/lowering/lower-expando.js +40 -40
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +56 -264
- package/dist/frontend/lowering/lower-exprs.js +1644 -1704
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -6
- package/dist/frontend/lowering/lower-generators.js +73 -72
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +5 -17
- package/dist/frontend/lowering/lower-inspect.js +236 -238
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +34 -45
- package/dist/frontend/lowering/lower-island.js +440 -511
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.d.ts +7 -10
- package/dist/frontend/lowering/lower-mixins.js +86 -86
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +12 -18
- package/dist/frontend/lowering/lower-modules.js +284 -283
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +23 -49
- package/dist/frontend/lowering/lower-namespaces.js +123 -115
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +18 -25
- package/dist/frontend/lowering/lower-server.js +899 -899
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +30 -149
- package/dist/frontend/lowering/lower-stmts.js +1176 -1229
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +12 -12
- package/dist/frontend/lowering/lower-stream.js +300 -301
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +5 -5
- package/dist/frontend/lowering/lower-test.js +82 -82
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +66 -20
- package/dist/frontend/lowering/lowerer.js +421 -198
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +11 -0
- package/dist/frontend/lowering/pairs-snapshot.js +85 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -0
- package/dist/frontend/lowering/static-this.d.ts +6 -0
- package/dist/frontend/lowering/static-this.js +24 -0
- package/dist/frontend/lowering/static-this.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +14 -33
- package/dist/frontend/lowering/surfaces.js +64 -64
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/npm-static-rewrite.js +6 -28
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +0 -10
- package/dist/frontend/npm-static.js +4 -7
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +0 -24
- package/dist/frontend/npm.js +11 -85
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -1
- package/dist/frontend/program.js +51 -17
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/provenance-registry.d.ts +0 -2
- package/dist/frontend/provenance-registry.js +0 -10
- package/dist/frontend/provenance-registry.js.map +1 -1
- package/dist/frontend/provenance.js +4 -7
- package/dist/frontend/provenance.js.map +1 -1
- package/dist/frontend/resolve.d.ts +7 -2
- package/dist/frontend/resolve.js +12 -17
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.d.ts +1 -0
- package/dist/frontend/resolve.test.js +29 -0
- package/dist/frontend/resolve.test.js.map +1 -0
- package/dist/frontend/ts7/adapter.d.ts +2 -2
- package/dist/frontend/ts7/adapter.js +1 -1
- package/dist/frontend/ts7/adapter.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +40 -2
- package/dist/frontend/ts7/checker.js +182 -54
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/enums.js +2 -1
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/{program.js → program-adapter.js} +7 -6
- package/dist/frontend/ts7/program-adapter.js.map +1 -0
- package/dist/frontend/ts7/world-check.d.ts +1 -3
- package/dist/frontend/ts7/world-check.js +3 -1
- package/dist/frontend/ts7/world-check.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +8 -0
- package/dist/frontend/tsc-codes.js +109 -0
- package/dist/frontend/tsc-codes.js.map +1 -0
- package/dist/frontend/{types.d.ts → type-mapper.d.ts} +2 -25
- package/dist/frontend/{types.js → type-mapper.js} +31 -52
- package/dist/frontend/type-mapper.js.map +1 -0
- package/dist/frontend/workspace-registry.d.ts +26 -0
- package/dist/frontend/workspace-registry.js +71 -0
- package/dist/frontend/workspace-registry.js.map +1 -0
- package/dist/index.d.ts +115 -30
- package/dist/index.js +650 -146
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +37 -0
- package/dist/ir/analysis.js +118 -0
- package/dist/ir/analysis.js.map +1 -0
- package/dist/ir/analysis.test.d.ts +1 -0
- package/dist/ir/analysis.test.js +21 -0
- package/dist/ir/analysis.test.js.map +1 -0
- package/dist/ir/build.d.ts +9 -0
- package/dist/ir/build.js +33 -0
- package/dist/ir/build.js.map +1 -0
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/{nodes.d.ts → ir.d.ts} +60 -26
- package/dist/ir/{nodes.js → ir.js} +173 -141
- package/dist/ir/ir.js.map +1 -0
- package/dist/ir/ir.test.d.ts +1 -0
- package/dist/ir/ir.test.js +17 -0
- package/dist/ir/ir.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +2 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.d.ts +1 -1
- package/dist/ir/validate.js +16 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/cache-primitives.d.ts +24 -0
- package/dist/library/cache-primitives.js +83 -0
- package/dist/library/cache-primitives.js.map +1 -0
- package/dist/library/cache-reset.test.d.ts +1 -0
- package/dist/library/cache-reset.test.js +47 -0
- package/dist/library/cache-reset.test.js.map +1 -0
- package/dist/library/compiler-self-identity.d.ts +23 -0
- package/dist/library/compiler-self-identity.js +84 -0
- package/dist/library/compiler-self-identity.js.map +1 -0
- package/dist/library/fence-eval.d.ts +3 -1
- package/dist/library/fence-eval.js +5 -1
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.d.ts +1 -36
- package/dist/library/int-infer.js +17 -17
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/{early-cache.d.ts → library-cache.d.ts} +1 -1
- package/dist/library/{early-cache.js → library-cache.js} +37 -111
- package/dist/library/library-cache.js.map +1 -0
- package/dist/library/library-cache.test.d.ts +1 -0
- package/dist/library/{early-cache.test.js → library-cache.test.js} +2 -2
- package/dist/library/library-cache.test.js.map +1 -0
- package/dist/library/{profile.d.ts → library-profile.d.ts} +4 -7
- package/dist/library/{profile.js → library-profile.js} +18 -11
- package/dist/library/library-profile.js.map +1 -0
- package/dist/library/semantic-source.js +2 -1
- package/dist/library/semantic-source.js.map +1 -1
- package/dist/library/sidecar.d.ts +5 -2
- package/dist/library/sidecar.js +11 -5
- package/dist/library/sidecar.js.map +1 -1
- package/dist/startup-cache.d.ts +6 -0
- package/dist/startup-cache.js +6 -0
- package/dist/startup-cache.js.map +1 -0
- package/package.json +7 -2
- package/surface-manifest.json +1 -1
- package/dist/backend/cc-cache.test.js.map +0 -1
- package/dist/backend/cc.js.map +0 -1
- package/dist/backend/emission/emit-async.js.map +0 -1
- package/dist/backend/emission/emit-exprs.d.ts +0 -13
- package/dist/backend/emission/emit-exprs.js +0 -7407
- package/dist/backend/emission/emit-exprs.js.map +0 -1
- package/dist/backend/emission/emit-island.js.map +0 -1
- package/dist/backend/emission/emit-shapes.js.map +0 -1
- package/dist/backend/emission/emit-stmts.js.map +0 -1
- package/dist/backend/emission/emit-types.js.map +0 -1
- package/dist/backend/emission/emit-walkers.js.map +0 -1
- package/dist/backend/emission/emitter.js.map +0 -1
- package/dist/backend/emission/may-throw.js.map +0 -1
- package/dist/backend/library-identity.js.map +0 -1
- package/dist/ffi/profile.js.map +0 -1
- package/dist/frontend/lowering/lower-emitter.js.map +0 -1
- package/dist/frontend/shared.d.ts +0 -82
- package/dist/frontend/shared.js +0 -308
- package/dist/frontend/shared.js.map +0 -1
- package/dist/frontend/ts7/program.js.map +0 -1
- package/dist/frontend/types.js.map +0 -1
- package/dist/ir/nodes.js.map +0 -1
- package/dist/library/early-cache.js.map +0 -1
- package/dist/library/early-cache.test.js.map +0 -1
- package/dist/library/profile.js.map +0 -1
- /package/dist/backend/{cc-cache.test.d.ts → c/types.test.d.ts} +0 -0
- /package/dist/{library/early-cache.test.d.ts → backend/llvm/shapes.test.d.ts} +0 -0
- /package/dist/frontend/ts7/{program.d.ts → program-adapter.d.ts} +0 -0
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InternalCompilerError } from "../../errors.js";
|
|
2
|
+
import { RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, isRefCounted, mapOf, STRING } from "../../ir/ir.js";
|
|
2
3
|
import { mangleClassGcFree, mangleClassNew, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleField, mangleFunction, mangleRecordClone, mangleRecordGcFree, mangleRecordNew, mangleRecordRelease, mangleRecordRetain, mangleRecordStruct, mangleRecordTrace, mangleVtAdapter, mangleVtInstance, mangleVtStruct } from "../mangle.js";
|
|
3
|
-
import { boxKindC, cDecl, cType, elemKindC, mapValKindC, releaseCallC, retainCallC, vAdapters } from "./
|
|
4
|
+
import { boxKindC, cDecl, cType, elemKindC, mapValKindC, releaseCallC, retainCallC, vAdapters } from "./types.js";
|
|
5
|
+
import { streamRooted } from "../../ir/analysis.js";
|
|
4
6
|
/** The overflow map's C member name on index-signature record structs.
|
|
5
7
|
* User fields mangle to `sc_fld_*`, so no field can collide. */
|
|
6
8
|
export const OVERFLOW_MEMBER = "sc_ovf";
|
|
7
|
-
/** True when the class descends from a runtime stream class: its struct
|
|
8
|
-
* embeds the FULL ScrStream prefix (registry, display name, state
|
|
9
|
-
* pointer) and its RC/trace helpers delegate the state block to
|
|
10
|
-
* scr_stream_st_*. */
|
|
11
|
-
function streamRooted(meta) {
|
|
12
|
-
for (let m = meta.base; m; m = m.base) {
|
|
13
|
-
if (RUNTIME_STREAM_CLASSES.has(m.def.name))
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
9
|
/** Per-shape C structs + RC helpers for classes AND record shapes (the
|
|
19
10
|
* layouts are identical: `size_t rc` header + fields). All structs are
|
|
20
11
|
* forward-declared first so fields can reference any shape regardless of
|
|
@@ -29,32 +20,32 @@ function streamRooted(meta) {
|
|
|
29
20
|
* exactly the other refcounted fields (the trace/teardown complement
|
|
30
21
|
* contract in scr_runtime.h) — and their retain/release feed the
|
|
31
22
|
* candidate-root buffer. Acyclic shapes keep the lean 1-word header. */
|
|
32
|
-
export function emitStructDefs(
|
|
23
|
+
export function emitStructDefs(emitter, out) {
|
|
33
24
|
// Runtime-provided classes (the builtin Error hierarchy) emit NOTHING
|
|
34
25
|
// here — struct, RC helpers, and vtables live in the runtime. They keep
|
|
35
26
|
// their ClassMeta (preorder numbering, instanceof constants, vtable
|
|
36
27
|
// struct type for user subclasses); main() stamps their intervals.
|
|
37
28
|
const shapes = [
|
|
38
|
-
...(
|
|
29
|
+
...(emitter.mod.classes ?? []).filter((cls) => !cls.runtime).map((cls) => ({
|
|
39
30
|
struct: mangleClassStruct(cls.name),
|
|
40
31
|
newFn: mangleClassNew(cls.name),
|
|
41
32
|
retain: mangleClassRetain(cls.name),
|
|
42
33
|
release: mangleClassRelease(cls.name),
|
|
43
34
|
trace: mangleClassTrace(cls.name),
|
|
44
35
|
gcFree: mangleClassGcFree(cls.name),
|
|
45
|
-
traced:
|
|
36
|
+
traced: emitter.tracedShapes.has(`object:${cls.name}`),
|
|
46
37
|
fields: cls.fields,
|
|
47
38
|
comment: `class ${cls.name}`,
|
|
48
|
-
meta:
|
|
39
|
+
meta: emitter.classMeta.get(cls.name) ?? null,
|
|
49
40
|
})),
|
|
50
|
-
...(
|
|
41
|
+
...(emitter.mod.records ?? []).map((rec) => ({
|
|
51
42
|
struct: mangleRecordStruct(rec.id),
|
|
52
43
|
newFn: mangleRecordNew(rec.id),
|
|
53
44
|
retain: mangleRecordRetain(rec.id),
|
|
54
45
|
release: mangleRecordRelease(rec.id),
|
|
55
46
|
trace: mangleRecordTrace(rec.id),
|
|
56
47
|
gcFree: mangleRecordGcFree(rec.id),
|
|
57
|
-
traced:
|
|
48
|
+
traced: emitter.tracedShapes.has(`record:${rec.id}`),
|
|
58
49
|
fields: rec.fields,
|
|
59
50
|
recordId: rec.id,
|
|
60
51
|
...(rec.indexValue ? { indexValue: rec.indexValue } : {}),
|
|
@@ -87,7 +78,7 @@ export function emitStructDefs(E, out) {
|
|
|
87
78
|
// every construction site (literal lowering fills omitted optional
|
|
88
79
|
// fields, the dynCheck/JSON builders fill missing keys), and the
|
|
89
80
|
// immortal instance costs nothing if overwritten (releases skip it).
|
|
90
|
-
const undefFieldInitC = (s) => s.meta === null ? [] : s.fields.flatMap((f) =>
|
|
81
|
+
const undefFieldInitC = (s) => s.meta === null ? [] : s.fields.flatMap((f) => emitter.undefFieldInitLineC(f.name, f.type));
|
|
91
82
|
// The overflow map's construction call (in the shape's newFn): value
|
|
92
83
|
// handling is type-directed exactly like a user Map's.
|
|
93
84
|
const overflowNewC = (s) => {
|
|
@@ -97,7 +88,7 @@ export function emitStructDefs(E, out) {
|
|
|
97
88
|
return `scr_map_new(SCR_MAP_KEY_STR, ${valKind}, NULL, NULL, NULL)`;
|
|
98
89
|
}
|
|
99
90
|
const rc = vAdapters(v);
|
|
100
|
-
return `scr_map_new(SCR_MAP_KEY_STR, SCR_MAP_VAL_REF, &${rc.retain}, &${rc.release}, ${
|
|
91
|
+
return `scr_map_new(SCR_MAP_KEY_STR, SCR_MAP_VAL_REF, &${rc.retain}, &${rc.release}, ${emitter.traceArgC(v)})`;
|
|
101
92
|
};
|
|
102
93
|
for (const s of shapes) {
|
|
103
94
|
out.push(`typedef struct ${s.struct} ${s.struct}; /* ${s.comment} */`);
|
|
@@ -139,10 +130,10 @@ export function emitStructDefs(E, out) {
|
|
|
139
130
|
// from the EMITTED hierarchy classes' roots, while adapter prototypes,
|
|
140
131
|
// instances, and helpers stay shapes-only (the runtime owns the
|
|
141
132
|
// builtin classes; a subclass-free Error tree emits nothing at all).
|
|
142
|
-
|
|
133
|
+
emitter.emitVtableDecls(out, shapes.filter(inHierarchy).map((s) => s.meta));
|
|
143
134
|
for (const s of shapes) {
|
|
144
135
|
out.push(`static ${s.struct} *${s.retain}(${s.struct} *o);`, `static void ${s.release}(${s.struct} *o);`, `static ${s.struct} *${s.newFn}(void);`);
|
|
145
|
-
if (s.recordId !== undefined &&
|
|
136
|
+
if (s.recordId !== undefined && emitter.recordCloneShapes.has(s.recordId)) {
|
|
146
137
|
out.push(`static ${s.struct} *${mangleRecordClone(s.recordId)}(${s.struct} *src);`);
|
|
147
138
|
}
|
|
148
139
|
if (inHierarchy(s)) {
|
|
@@ -153,10 +144,10 @@ export function emitStructDefs(E, out) {
|
|
|
153
144
|
}
|
|
154
145
|
}
|
|
155
146
|
out.push("");
|
|
156
|
-
|
|
147
|
+
emitter.emitVtableInstances(out, shapes.filter(inHierarchy).map((s) => s.meta));
|
|
157
148
|
for (const s of shapes) {
|
|
158
149
|
if (inHierarchy(s)) {
|
|
159
|
-
|
|
150
|
+
emitter.emitHierarchyClassHelpers(out, s.meta, s);
|
|
160
151
|
continue;
|
|
161
152
|
}
|
|
162
153
|
// NULL-tolerant: zeroed fields (calloc) and user `null as unknown as C`
|
|
@@ -169,15 +160,15 @@ export function emitStructDefs(E, out) {
|
|
|
169
160
|
const field = `o->${m.member}`;
|
|
170
161
|
out.push(` if (${field}) ${releaseCallC(m.type, field)};`);
|
|
171
162
|
}
|
|
172
|
-
out.push(` scr_obj_free_note();`, ` free(o);`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = calloc(1, sizeof *o);`, ` if (!o) { scr_trap("scriptc: out of memory\\n"); }`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined &&
|
|
163
|
+
out.push(` scr_obj_free_note();`, ` free(o);`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = calloc(1, sizeof *o);`, ` if (!o) { scr_trap("scriptc: out of memory\\n"); }`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && emitter.recordCloneShapes.has(s.recordId)
|
|
173
164
|
? emitRecordCloneC(s.recordId, s.struct, s.fields, s.newFn)
|
|
174
165
|
: []), `static void *${s.retain}_v(void *o) { return ${s.retain}((${s.struct} *)o); }`, `static void ${s.release}_v(void *o) { ${s.release}((${s.struct} *)o); }`, ``);
|
|
175
166
|
continue;
|
|
176
167
|
}
|
|
177
168
|
// Cycle-capable shape: cycle-headered allocation, root-buffer hooks
|
|
178
169
|
// on release, and the trace/teardown complement pair.
|
|
179
|
-
const tracedFields = rcMembers(s).filter((m) =>
|
|
180
|
-
const untracedRefFields = rcMembers(s).filter((m) => isRefCounted(m.type) &&
|
|
170
|
+
const tracedFields = rcMembers(s).filter((m) => emitter.traceAdapterC(m.type) !== null);
|
|
171
|
+
const untracedRefFields = rcMembers(s).filter((m) => isRefCounted(m.type) && emitter.traceAdapterC(m.type) === null);
|
|
181
172
|
out.push(`static ${s.struct} *${s.retain}(${s.struct} *o) {`, ` if (o && o->rc != SIZE_MAX) {`, ` o->rc++;`, ` scr_cyc_mark_live(o);`, ` }`, ` return o;`, `}`, `static void ${s.release}(${s.struct} *o) {`, ` if (!o || o->rc == SIZE_MAX) return;`, ` if (--o->rc == 0) {`, ` scr_cyc_on_dead(o);`);
|
|
182
173
|
for (const m of rcMembers(s)) {
|
|
183
174
|
if (!isRefCounted(m.type))
|
|
@@ -185,7 +176,7 @@ export function emitStructDefs(E, out) {
|
|
|
185
176
|
const field = `o->${m.member}`;
|
|
186
177
|
out.push(` if (${field}) ${releaseCallC(m.type, field)};`);
|
|
187
178
|
}
|
|
188
|
-
out.push(` scr_obj_free_note();`, ` scr_cyc_free(o);`, ` } else {`, ` scr_cyc_on_release(o); /* possible cycle root; may collect */`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = scr_cyc_alloc(sizeof *o, &${s.trace}, &${s.gcFree});`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined &&
|
|
179
|
+
out.push(` scr_obj_free_note();`, ` scr_cyc_free(o);`, ` } else {`, ` scr_cyc_on_release(o); /* possible cycle root; may collect */`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = scr_cyc_alloc(sizeof *o, &${s.trace}, &${s.gcFree});`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && emitter.recordCloneShapes.has(s.recordId)
|
|
189
180
|
? emitRecordCloneC(s.recordId, s.struct, s.fields, s.newFn)
|
|
190
181
|
: []), `static void ${s.trace}(void *o0, ScrTraceVisit visit, void *ctx) {`, ` ${s.struct} *o = (${s.struct} *)o0;`, ...tracedFields.map((m) => ` visit(o->${m.member}, ctx); /* ${m.name} */`), `}`, `static void ${s.gcFree}(void *o0) {`, ...(untracedRefFields.length > 0
|
|
191
182
|
? [
|
|
@@ -229,7 +220,7 @@ function emitRecordCloneC(shapeId, struct, fields, newFn) {
|
|
|
229
220
|
* ABSTRACT class whose chain holds only abstract declarations of the
|
|
230
221
|
* slot also answers null — the class never instantiates (tsc), so its
|
|
231
222
|
* own vtable entry can never dispatch. */
|
|
232
|
-
export function vtEntriesFor(
|
|
223
|
+
export function vtEntriesFor(emitter, meta) {
|
|
233
224
|
return meta.root.slots.map((slot) => {
|
|
234
225
|
if (!(slot.declarer.pre <= meta.pre && meta.pre <= slot.declarer.post)) {
|
|
235
226
|
return { slot, impl: null };
|
|
@@ -241,11 +232,11 @@ export function vtEntriesFor(E, meta) {
|
|
|
241
232
|
}
|
|
242
233
|
if (meta.def.abstract === true)
|
|
243
234
|
return { slot, impl: null };
|
|
244
|
-
throw new
|
|
235
|
+
throw new InternalCompilerError(`emitter bug: no implementation of ${slot.method} for ${meta.def.name}`);
|
|
245
236
|
});
|
|
246
237
|
}
|
|
247
238
|
/** The C parameter list of a slot (declaring-class `this` first). */
|
|
248
|
-
export function vtSlotParams(
|
|
239
|
+
export function vtSlotParams(emitter, slot, named) {
|
|
249
240
|
const thisParam = named
|
|
250
241
|
? `${mangleClassStruct(slot.declarer.def.name)} *o`
|
|
251
242
|
: `${mangleClassStruct(slot.declarer.def.name)} *`;
|
|
@@ -256,7 +247,7 @@ export function vtSlotParams(E, slot, named) {
|
|
|
256
247
|
}
|
|
257
248
|
/** Vtable struct typedefs + adapter prototypes (the definitions call
|
|
258
249
|
* function bodies, so they flush after the signature block — see emit). */
|
|
259
|
-
export function emitVtableDecls(
|
|
250
|
+
export function emitVtableDecls(emitter, out, hierarchyClasses) {
|
|
260
251
|
// Roots of the EMITTED classes' hierarchies — a runtime root (%Error)
|
|
261
252
|
// counts exactly when some emitted subclass needs its vtable type.
|
|
262
253
|
const roots = [...new Set(hierarchyClasses.map((m) => m.root))];
|
|
@@ -266,34 +257,34 @@ export function emitVtableDecls(E, out, hierarchyClasses) {
|
|
|
266
257
|
out.push(` ScrVt head;`);
|
|
267
258
|
for (const slot of root.slots) {
|
|
268
259
|
const ret = cType(slot.fn.returnType).trim();
|
|
269
|
-
out.push(` ${ret} (*${slot.member})(${
|
|
260
|
+
out.push(` ${ret} (*${slot.member})(${emitter.vtSlotParams(slot, false).join(", ")}); /* ${slot.method} */`);
|
|
270
261
|
}
|
|
271
262
|
out.push(`} ${vtt};`);
|
|
272
263
|
}
|
|
273
264
|
if (roots.length > 0)
|
|
274
265
|
out.push("");
|
|
275
266
|
for (const meta of hierarchyClasses) {
|
|
276
|
-
for (const { slot, impl } of
|
|
267
|
+
for (const { slot, impl } of emitter.vtEntriesFor(meta)) {
|
|
277
268
|
if (impl === null)
|
|
278
269
|
continue;
|
|
279
270
|
const key = `${impl.def.name}.${slot.method}`;
|
|
280
|
-
if (
|
|
271
|
+
if (emitter.vtAdapters.has(key))
|
|
281
272
|
continue;
|
|
282
|
-
|
|
273
|
+
emitter.vtAdapters.set(key, { impl, slot });
|
|
283
274
|
const ret = cType(slot.fn.returnType).trim();
|
|
284
|
-
out.push(`static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${
|
|
275
|
+
out.push(`static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${emitter.vtSlotParams(slot, false).join(", ")});`);
|
|
285
276
|
}
|
|
286
277
|
}
|
|
287
|
-
if (
|
|
278
|
+
if (emitter.vtAdapters.size > 0)
|
|
288
279
|
out.push("");
|
|
289
280
|
}
|
|
290
281
|
/** One static const vtable per hierarchy class: interval, direct
|
|
291
282
|
* release, and the class's dispatch entry for every slot. */
|
|
292
|
-
export function emitVtableInstances(
|
|
283
|
+
export function emitVtableInstances(emitter, out, hierarchyClasses) {
|
|
293
284
|
for (const meta of hierarchyClasses) {
|
|
294
285
|
const vtt = mangleVtStruct(meta.root.def.name);
|
|
295
286
|
const head = `{ ${meta.pre}, ${meta.post}, &${mangleClassReleaseDirect(meta.def.name)} }`;
|
|
296
|
-
const entries =
|
|
287
|
+
const entries = emitter.vtEntriesFor(meta).map(({ slot, impl }) => impl === null
|
|
297
288
|
? `0 /* ${slot.method}: outside the declaring subtree */`
|
|
298
289
|
: `&${mangleVtAdapter(impl.def.name, slot.method)} /* ${slot.method} */`);
|
|
299
290
|
out.push(`static const ${vtt} ${mangleVtInstance(meta.def.name)} = { /* class ${meta.def.name} */`, ` ${[head, ...entries].join(",\n ")}`, `};`);
|
|
@@ -303,13 +294,13 @@ export function emitVtableInstances(E, out, hierarchyClasses) {
|
|
|
303
294
|
}
|
|
304
295
|
/** Adapter definitions (flushed after the signature block): the impl
|
|
305
296
|
* class's method behind the slot's declaring-class signature. */
|
|
306
|
-
export function emitVtAdapterDefs(
|
|
307
|
-
for (const { impl, slot } of
|
|
297
|
+
export function emitVtAdapterDefs(emitter, out) {
|
|
298
|
+
for (const { impl, slot } of emitter.vtAdapters.values()) {
|
|
308
299
|
const ret = cType(slot.fn.returnType).trim();
|
|
309
300
|
const recv = impl === slot.declarer ? "o" : `(${mangleClassStruct(impl.def.name)} *)o`;
|
|
310
301
|
const args = [recv, ...slot.fn.params.slice(1).map((_, i) => `sc_a${i}`)].join(", ");
|
|
311
302
|
const call = `${mangleFunction(`%${impl.def.name}.${slot.method}`)}(${args})`;
|
|
312
|
-
out.push(``, `static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${
|
|
303
|
+
out.push(``, `static ${ret} ${mangleVtAdapter(impl.def.name, slot.method)}(${emitter.vtSlotParams(slot, true).join(", ")}) {`, slot.fn.returnType.kind === "void" ? ` ${call};` : ` return ${call};`, `}`);
|
|
313
304
|
}
|
|
314
305
|
}
|
|
315
306
|
/** RC helpers of one hierarchy class. Retain is layout-generic (rc sits
|
|
@@ -319,7 +310,7 @@ export function emitVtAdapterDefs(E, out) {
|
|
|
319
310
|
* teardown. Cycle capability is hierarchy-uniform (constructor fixpoint),
|
|
320
311
|
* and the cycle header's trace/teardown are stamped with the concrete
|
|
321
312
|
* class's functions at allocation — the collector needs no vtable. */
|
|
322
|
-
export function emitHierarchyClassHelpers(
|
|
313
|
+
export function emitHierarchyClassHelpers(emitter, out, meta, s) {
|
|
323
314
|
const reld = mangleClassReleaseDirect(meta.def.name);
|
|
324
315
|
const emitterRooted = meta.root.def.name === RUNTIME_EMITTER_CLASS;
|
|
325
316
|
const isStreamRooted = streamRooted(meta);
|
|
@@ -356,10 +347,10 @@ export function emitHierarchyClassHelpers(E, out, meta, s) {
|
|
|
356
347
|
// Undefined-admitting fields start as JS's undefined, not NULL — see
|
|
357
348
|
// undefFieldInitLineC. s.fields is the FLATTENED layout (base prefix
|
|
358
349
|
// + own), so a derived allocation covers inherited fields too.
|
|
359
|
-
...s.fields.flatMap((f) =>
|
|
350
|
+
...s.fields.flatMap((f) => emitter.undefFieldInitLineC(f.name, f.type)), ` scr_obj_alloc_note();`, ` return o;`, `}`);
|
|
360
351
|
if (s.traced) {
|
|
361
|
-
const tracedFields = s.fields.filter((f) =>
|
|
362
|
-
const untracedRefFields = s.fields.filter((f) => isRefCounted(f.type) &&
|
|
352
|
+
const tracedFields = s.fields.filter((f) => emitter.traceAdapterC(f.type) !== null);
|
|
353
|
+
const untracedRefFields = s.fields.filter((f) => isRefCounted(f.type) && emitter.traceAdapterC(f.type) === null);
|
|
363
354
|
out.push(`static void ${s.trace}(void *o0, ScrTraceVisit visit, void *ctx) {`, ` ${s.struct} *o = (${s.struct} *)o0;`, ...(emitterRooted
|
|
364
355
|
? [` scr_emitter_reg_trace(o->sc_eereg, visit, ctx); /* listener closures */`]
|
|
365
356
|
: []), ...(isStreamRooted
|
|
@@ -383,35 +374,35 @@ export function emitHierarchyClassHelpers(E, out, meta, s) {
|
|
|
383
374
|
* (definitions land later with the other synthesized bodies —
|
|
384
375
|
* emitCtorThunkDefs). The interval constants are the same numbering the
|
|
385
376
|
* vtables carry, so instanceOfValue agrees with compiled instanceOf. */
|
|
386
|
-
export function emitClassObjs(
|
|
387
|
-
if (
|
|
377
|
+
export function emitClassObjs(emitter, out) {
|
|
378
|
+
if (emitter.classObjs.size === 0)
|
|
388
379
|
return;
|
|
389
380
|
out.push("");
|
|
390
|
-
for (const [className, sym] of
|
|
391
|
-
const meta =
|
|
381
|
+
for (const [className, sym] of emitter.classObjs) {
|
|
382
|
+
const meta = emitter.classMeta.get(className);
|
|
392
383
|
if (!meta)
|
|
393
|
-
throw new
|
|
384
|
+
throw new InternalCompilerError(`emitter bug: class object for unknown class ${className}`);
|
|
394
385
|
// A generic-class INSTANTIATION's class object carries its FAMILY's
|
|
395
386
|
// interval: at runtime JS has ONE `Box`, so instanceof through the
|
|
396
387
|
// value must answer for the whole family (every instantiation and
|
|
397
388
|
// their subclasses) — IrClassDef.genericOf. Construction still
|
|
398
389
|
// dispatches the instantiation's own thunk.
|
|
399
390
|
const intervalMeta = meta.def.genericOf !== undefined
|
|
400
|
-
?
|
|
391
|
+
? emitter.classMeta.get(meta.def.genericOf)
|
|
401
392
|
: meta;
|
|
402
393
|
if (!intervalMeta)
|
|
403
|
-
throw new
|
|
404
|
-
const nameSym =
|
|
405
|
-
out.push(`static void *${mangleCtorThunk(className)}(${ctorThunkParams(
|
|
394
|
+
throw new InternalCompilerError(`emitter bug: class object for ${className} names unknown family ${meta.def.genericOf ?? ""}`);
|
|
395
|
+
const nameSym = emitter.internLiteral(meta.def.jsName ?? "");
|
|
396
|
+
out.push(`static void *${mangleCtorThunk(className)}(${ctorThunkParams(emitter, className).decls || "void"});`, `static ScrClassObj ${sym} = { SIZE_MAX, ${intervalMeta.pre}, ${intervalMeta.post}, ` +
|
|
406
397
|
`(void *)&${mangleCtorThunk(className)}, (const ScrStr *)&${nameSym} }; /* class ${className} */`);
|
|
407
398
|
}
|
|
408
399
|
}
|
|
409
400
|
/** The construct thunk's parameter list: the constructor's completed ABI
|
|
410
401
|
* minus the `this` the thunk allocates itself. */
|
|
411
|
-
function ctorThunkParams(
|
|
412
|
-
const ctor =
|
|
402
|
+
function ctorThunkParams(emitter, className) {
|
|
403
|
+
const ctor = emitter.fnByName.get(`%${className}.constructor`);
|
|
413
404
|
if (!ctor)
|
|
414
|
-
throw new
|
|
405
|
+
throw new InternalCompilerError(`emitter bug: class object for ${className} without a constructor`);
|
|
415
406
|
const params = ctor.params.slice(1);
|
|
416
407
|
return {
|
|
417
408
|
decls: params.map((p, i) => cDecl(p.type, `sc_a${i}`)).join(", "),
|
|
@@ -426,9 +417,9 @@ function ctorThunkParams(E, className) {
|
|
|
426
417
|
* constructor leaves the pending flag set: the thunk releases the
|
|
427
418
|
* half-built object and returns NULL (a dummy the checked call site
|
|
428
419
|
* never reads). */
|
|
429
|
-
export function emitCtorThunkDefs(
|
|
430
|
-
for (const className of
|
|
431
|
-
const { decls, names } = ctorThunkParams(
|
|
420
|
+
export function emitCtorThunkDefs(emitter, out) {
|
|
421
|
+
for (const className of emitter.classObjs.keys()) {
|
|
422
|
+
const { decls, names } = ctorThunkParams(emitter, className);
|
|
432
423
|
const struct = mangleClassStruct(className);
|
|
433
424
|
const lines = [
|
|
434
425
|
``,
|
|
@@ -436,7 +427,7 @@ export function emitCtorThunkDefs(E, out) {
|
|
|
436
427
|
` ${struct} *o = ${mangleClassNew(className)}();`,
|
|
437
428
|
` ${mangleFunction(`%${className}.constructor`)}(${[`${mangleClassRetain(className)}(o)`, ...names].join(", ")});`,
|
|
438
429
|
];
|
|
439
|
-
if (
|
|
430
|
+
if (emitter.mayThrow.has(`%${className}.constructor`)) {
|
|
440
431
|
lines.push(` if (scr_exc_pending()) {`, ` ${mangleClassRelease(className)}(o);`, ` return NULL;`, ` }`);
|
|
441
432
|
}
|
|
442
433
|
lines.push(` return (void *)o;`, `}`);
|
|
@@ -449,15 +440,15 @@ export function emitCtorThunkDefs(E, out) {
|
|
|
449
440
|
* cycle-capable fields — capability is hierarchy-uniform, so the
|
|
450
441
|
* runtime's own allocations need collector headers too). Empty for
|
|
451
442
|
* hand-written IR without the builtin defs. */
|
|
452
|
-
export function errorVtStampLines(
|
|
443
|
+
export function errorVtStampLines(emitter) {
|
|
453
444
|
const lines = [];
|
|
454
445
|
for (const [name, rec] of RUNTIME_ERROR_CLASSES) {
|
|
455
|
-
const meta =
|
|
446
|
+
const meta = emitter.classMeta.get(name);
|
|
456
447
|
if (!meta)
|
|
457
448
|
return [];
|
|
458
449
|
lines.push(` scr_error_vts[${rec.kind}].pre = ${meta.pre}; scr_error_vts[${rec.kind}].post = ${meta.post}; /* ${rec.lib} */`);
|
|
459
450
|
}
|
|
460
|
-
if (
|
|
451
|
+
if (emitter.tracedShapes.has("object:%Error")) {
|
|
461
452
|
lines.push(` scr_error_set_traced();`);
|
|
462
453
|
}
|
|
463
454
|
return lines;
|
|
@@ -466,8 +457,8 @@ export function errorVtStampLines(E) {
|
|
|
466
457
|
* interval from THIS module's numbering (the errorVtStampLines story).
|
|
467
458
|
* Empty when the program never touches the emitter surface — the class
|
|
468
459
|
* def only rides modules that reference it. */
|
|
469
|
-
export function emitterVtStampLines(
|
|
470
|
-
const meta =
|
|
460
|
+
export function emitterVtStampLines(emitter) {
|
|
461
|
+
const meta = emitter.classMeta.get(RUNTIME_EMITTER_CLASS);
|
|
471
462
|
if (!meta)
|
|
472
463
|
return [];
|
|
473
464
|
return [
|
|
@@ -479,10 +470,10 @@ export function emitterVtStampLines(E) {
|
|
|
479
470
|
* def rides the module only when the program touches the stream
|
|
480
471
|
* surface, and instanceof needs their preorder intervals under the
|
|
481
472
|
* emitter root. */
|
|
482
|
-
export function streamVtStampLines(
|
|
473
|
+
export function streamVtStampLines(emitter) {
|
|
483
474
|
const lines = [];
|
|
484
475
|
for (const [name, rec] of RUNTIME_STREAM_CLASSES) {
|
|
485
|
-
const meta =
|
|
476
|
+
const meta = emitter.classMeta.get(name);
|
|
486
477
|
if (!meta)
|
|
487
478
|
continue;
|
|
488
479
|
const vt = `scr_${rec.lib.toLowerCase()}_vt`;
|
|
@@ -492,16 +483,16 @@ export function streamVtStampLines(E) {
|
|
|
492
483
|
}
|
|
493
484
|
/** The trace entry point symbol for a payload/field type, or null when
|
|
494
485
|
* the type cannot participate in a cycle (see the constructor fixpoint). */
|
|
495
|
-
export function traceAdapterC(
|
|
486
|
+
export function traceAdapterC(emitter, t) {
|
|
496
487
|
switch (t.kind) {
|
|
497
488
|
case "func":
|
|
498
489
|
return "scr_closure_trace_v";
|
|
499
490
|
case "union":
|
|
500
|
-
return
|
|
491
|
+
return emitter.tracedUnions.has(t.unionId) ? "scr_union_trace_v" : null;
|
|
501
492
|
case "promise":
|
|
502
493
|
return "scr_promise_trace_v";
|
|
503
494
|
case "object":
|
|
504
|
-
if (!
|
|
495
|
+
if (!emitter.tracedShapes.has(`object:${t.className}`))
|
|
505
496
|
return null;
|
|
506
497
|
if (RUNTIME_ERROR_CLASSES.has(t.className))
|
|
507
498
|
return "scr_error_trace";
|
|
@@ -511,26 +502,26 @@ export function traceAdapterC(E, t) {
|
|
|
511
502
|
return "scr_stream_trace";
|
|
512
503
|
return mangleClassTrace(t.className);
|
|
513
504
|
case "record":
|
|
514
|
-
return
|
|
505
|
+
return emitter.tracedShapes.has(`record:${t.shapeId}`) ? mangleRecordTrace(t.shapeId) : null;
|
|
515
506
|
// Cycle-capable exactly when the VALUE type is (mirrors the
|
|
516
507
|
// constructor fixpoint's map rule): such maps allocate with the
|
|
517
508
|
// collector header and their runtime trace visits every live value.
|
|
518
509
|
case "map":
|
|
519
|
-
return
|
|
510
|
+
return emitter.traceAdapterC(t.value) !== null ? "scr_map_trace_v" : null;
|
|
520
511
|
// Arrays mirror maps: cycle-capable exactly when the ELEMENT type is
|
|
521
512
|
// (a record/object/union element — or a cycle-capable inner array —
|
|
522
513
|
// can point back at the array holding it). Such arrays allocate with
|
|
523
514
|
// the collector header (scr_arr_new_ref with a trace); scalar/
|
|
524
515
|
// string/bytes-element arrays stay lean.
|
|
525
516
|
case "array":
|
|
526
|
-
return
|
|
517
|
+
return emitter.traceAdapterC(t.elem) !== null ? "scr_arr_trace_v" : null;
|
|
527
518
|
default:
|
|
528
519
|
return null;
|
|
529
520
|
}
|
|
530
521
|
}
|
|
531
522
|
/** `&<trace>` or `NULL` — the trace argument at a container call site. */
|
|
532
|
-
export function traceArgC(
|
|
533
|
-
const sym =
|
|
523
|
+
export function traceArgC(emitter, t) {
|
|
524
|
+
const sym = emitter.traceAdapterC(t);
|
|
534
525
|
return sym ? `&${sym}` : "NULL";
|
|
535
526
|
}
|
|
536
527
|
/** Array construction expression for one element type. Ref elements
|
|
@@ -541,7 +532,7 @@ export function traceArgC(E, t) {
|
|
|
541
532
|
* allocates with the collector header exactly when the element type
|
|
542
533
|
* carries one (trace non-NULL). Every other element kind keeps the
|
|
543
534
|
* historic scr_arr_new call. */
|
|
544
|
-
export function arrNewC(
|
|
535
|
+
export function arrNewC(emitter, elem, capExpr) {
|
|
545
536
|
const useRef = elem.kind === "record" || elem.kind === "object" || elem.kind === "union" ||
|
|
546
537
|
// Promise elements (Promise.all's food): refcounted, cycle-headered
|
|
547
538
|
// — the `_v` adapters and scr_promise_trace_v ride the same REF
|
|
@@ -556,22 +547,22 @@ export function arrNewC(E, elem, capExpr) {
|
|
|
556
547
|
// Closures: scr_closure_* adapters + scr_closure_trace_v (always
|
|
557
548
|
// cycle-headered — captures can reach back through boxes).
|
|
558
549
|
elem.kind === "func" ||
|
|
559
|
-
(elem.kind === "array" &&
|
|
550
|
+
(elem.kind === "array" && emitter.traceAdapterC(elem) !== null);
|
|
560
551
|
if (!useRef)
|
|
561
552
|
return `scr_arr_new(${elemKindC(elem)}, ${capExpr})`;
|
|
562
553
|
const v = vAdapters(elem);
|
|
563
|
-
return `scr_arr_new_ref(&${v.retain}, &${v.release}, ${
|
|
554
|
+
return `scr_arr_new_ref(&${v.retain}, &${v.release}, ${emitter.traceArgC(elem)}, ${capExpr})`;
|
|
564
555
|
}
|
|
565
556
|
/** Box construction expression — object/record/union/promise boxes carry
|
|
566
557
|
* their RC entry points (and the payload's trace) as function pointers
|
|
567
558
|
* (the SCR_BOX_OBJ mechanism: the runtime can't know per-shape layouts). */
|
|
568
|
-
export function boxNewC(
|
|
559
|
+
export function boxNewC(emitter, t) {
|
|
569
560
|
// A captured local can be typed by a class the module never collected
|
|
570
561
|
// (a runtime-fenced JS class — e.g. one declared inside a block —
|
|
571
562
|
// whose declaration and every use compile to runtime traps): no
|
|
572
563
|
// instance can ever exist, so the box is an inert placeholder — its
|
|
573
564
|
// RC adapters were never emitted and must not be referenced.
|
|
574
|
-
if (t.kind === "object" && !
|
|
565
|
+
if (t.kind === "object" && !emitter.classMeta.has(t.className)) {
|
|
575
566
|
return `scr_box_new(SCR_BOX_F64) /* ${t.className}: uncollected class, all uses trap */`;
|
|
576
567
|
}
|
|
577
568
|
if (t.kind === "object" || t.kind === "record" || t.kind === "union" ||
|
|
@@ -601,10 +592,10 @@ export function boxNewC(E, t) {
|
|
|
601
592
|
// A CYCLE-CAPABLE array must ride the obj-box so the box's trace
|
|
602
593
|
// reaches it (SCR_BOX_ARR payloads are never traced); acyclic arrays
|
|
603
594
|
// keep the historic plain-kind box below.
|
|
604
|
-
(t.kind === "array" &&
|
|
595
|
+
(t.kind === "array" && emitter.traceAdapterC(t) !== null)) {
|
|
605
596
|
const v = vAdapters(t);
|
|
606
|
-
return `scr_box_new_obj(&${v.retain}, &${v.release}, ${
|
|
597
|
+
return `scr_box_new_obj(&${v.retain}, &${v.release}, ${emitter.traceArgC(t)})`;
|
|
607
598
|
}
|
|
608
599
|
return `scr_box_new(${boxKindC(t)})`;
|
|
609
600
|
}
|
|
610
|
-
//# sourceMappingURL=
|
|
601
|
+
//# sourceMappingURL=shapes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../src/backend/c/shapes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { CEmitter, ScopeEntry } from "./emitter.js";
|
|
2
|
-
import type { IrFunction } from "../../ir/
|
|
3
|
-
import { IrExpr, IrStmt } from "../../ir/
|
|
4
|
-
export declare function emitFunction(
|
|
1
|
+
import type { CEmitter, ScopeEntry } from "./c-emitter.js";
|
|
2
|
+
import type { IrFunction } from "../../ir/ir.js";
|
|
3
|
+
import { IrExpr, IrStmt } from "../../ir/ir.js";
|
|
4
|
+
export declare function emitFunction(emitter: CEmitter, fn: IrFunction): void;
|
|
5
5
|
/** Emits a block in its own lexical scope (refcounted locals released at
|
|
6
6
|
* end). `setup` runs after the scope opens, before the statements — the
|
|
7
7
|
* catch-binding hook: it may emit prelude lines and register entries the
|
|
8
8
|
* scope owns (released on every exit, jumps and unwinds included). */
|
|
9
|
-
export declare function emitBlock(
|
|
10
|
-
export declare function emitStmts(
|
|
11
|
-
export declare function emitStmt(
|
|
9
|
+
export declare function emitBlock(emitter: CEmitter, stmts: IrStmt[], setup?: (scope: ScopeEntry[]) => void): void;
|
|
10
|
+
export declare function emitStmts(emitter: CEmitter, stmts: IrStmt[]): void;
|
|
11
|
+
export declare function emitStmt(emitter: CEmitter, s: IrStmt): void;
|
|
12
12
|
/** try/catch/finally via pending-flag unwinding. Entering a try emits NO
|
|
13
13
|
* code: the try context is compile-time state (tryStack) that redirects
|
|
14
14
|
* unwinds inside the region to a label here instead of out of the
|
|
@@ -40,7 +40,7 @@ export declare function emitStmt(E: CEmitter, s: IrStmt): void;
|
|
|
40
40
|
* normal, exception, and pending-return are the only paths a finally
|
|
41
41
|
* must model; jumps out of PLAIN try/catch need nothing here —
|
|
42
42
|
* release-on-jump already walks the try scopes. */
|
|
43
|
-
export declare function emitTryCatch(
|
|
43
|
+
export declare function emitTryCatch(emitter: CEmitter, s: IrStmt & {
|
|
44
44
|
kind: "tryCatch";
|
|
45
45
|
}): void;
|
|
46
46
|
/** JS-exact switch as a goto chain — C `switch` cannot express lazily
|
|
@@ -61,18 +61,18 @@ export declare function emitTryCatch(E: CEmitter, s: IrStmt & {
|
|
|
61
61
|
* it still holds the pointer a previous iteration's scope exit already
|
|
62
62
|
* released. The declarations are therefore NULL-reset up front; the
|
|
63
63
|
* scope-exit releases rely on the runtime's NULL-tolerant release calls. */
|
|
64
|
-
export declare function emitSwitch(
|
|
64
|
+
export declare function emitSwitch(emitter: CEmitter, s: IrStmt & {
|
|
65
65
|
kind: "switch";
|
|
66
66
|
}): void;
|
|
67
67
|
/** Emits `if (cond) ` followed by a block on the same line for readability. */
|
|
68
|
-
export declare function mergeBrace(
|
|
68
|
+
export declare function mergeBrace(emitter: CEmitter, emitBlockFn: () => void): void;
|
|
69
69
|
/** Evaluates `expr` in its own statement frame inside an already-open
|
|
70
70
|
* branch and moves the result into the C lvalue `target`: the chosen
|
|
71
71
|
* value's ownership transfers, every other temp the evaluation allocated
|
|
72
72
|
* releases inside the branch. The shared core of the lazily-branched
|
|
73
73
|
* expressions (`logical`, `ternary`); the caller owns the surrounding
|
|
74
74
|
* braces/indentation and registers `target` in ITS frame. */
|
|
75
|
-
export declare function emitBranchInto(
|
|
75
|
+
export declare function emitBranchInto(emitter: CEmitter, target: string, expr: IrExpr): void;
|
|
76
76
|
/** Evaluates a condition; its string temps are released before the branch,
|
|
77
77
|
* which is safe because the result is a scalar bool. */
|
|
78
|
-
export declare function emitCondition(
|
|
78
|
+
export declare function emitCondition(emitter: CEmitter, cond: IrExpr): string;
|