@scriptc/compiler 0.0.35 → 0.1.1
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 +14 -11
- package/ambient/scriptc-overrides.d.ts +0 -7
- package/ambient/scriptc.d.ts +1 -1
- 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 +7937 -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 +4 -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} +395 -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} +242 -304
- package/dist/backend/c/walkers.js.map +1 -0
- package/dist/backend/external-c.d.ts +33 -0
- package/dist/backend/external-c.js +51 -0
- package/dist/backend/external-c.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/link-plan.d.ts +37 -0
- package/dist/backend/link-plan.js +26 -0
- package/dist/backend/link-plan.js.map +1 -0
- package/dist/backend/linker.d.ts +22 -0
- package/dist/backend/linker.js +236 -0
- package/dist/backend/linker.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 +159 -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 +548 -9988
- 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 +637 -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 +153 -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 +642 -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 +420 -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/unsupported.d.ts +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -3
- package/dist/backend/llvm/walkers.js +195 -222
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +45 -0
- package/dist/backend/native-codegen.js +275 -0
- package/dist/backend/native-codegen.js.map +1 -0
- package/dist/backend/native-codegen.test.js +226 -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 +243 -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} +54 -34
- package/dist/backend/{cc.js → native-toolchain.js} +231 -810
- 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} +219 -7
- package/dist/backend/native-toolchain.test.js.map +1 -0
- package/dist/backend/object-localize.js +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-targets.test.d.ts +1 -0
- package/dist/backend/runtime-pack-targets.test.js +54 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -0
- package/dist/backend/runtime-pack.d.ts +112 -0
- package/dist/backend/runtime-pack.js +305 -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 +473 -0
- package/dist/backend/runtime-pack.test.js.map +1 -0
- package/dist/backend/targets.d.ts +76 -0
- package/dist/backend/targets.js +262 -0
- package/dist/backend/targets.js.map +1 -0
- package/dist/backend/targets.test.d.ts +1 -0
- package/dist/backend/targets.test.js +41 -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 +35 -33
- 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/{early-cache.d.ts → executable-cache.d.ts} +2 -2
- package/dist/executable/{early-cache.js → executable-cache.js} +36 -98
- package/dist/executable/executable-cache.js.map +1 -0
- package/dist/executable/executable-cache.test.d.ts +1 -0
- package/dist/executable/{early-cache.test.js → executable-cache.test.js} +3 -3
- package/dist/executable/executable-cache.test.js.map +1 -0
- package/dist/ffi/{profile.js → ffi-manifest.js} +1 -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/array-values.d.ts +8 -0
- package/dist/frontend/lowering/array-values.js +60 -0
- package/dist/frontend/lowering/array-values.js.map +1 -0
- 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-array-sort.d.ts +22 -0
- package/dist/frontend/lowering/lower-array-sort.js +619 -0
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -0
- 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 +1285 -1233
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +59 -192
- package/dist/frontend/lowering/lower-calls.js +1644 -1506
- 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 +1984 -2227
- 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 +60 -264
- package/dist/frontend/lowering/lower-exprs.js +2361 -1765
- 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 +273 -261
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +39 -49
- package/dist/frontend/lowering/lower-island.js +447 -513
- 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 +85 -85
- 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 +909 -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 +1463 -1285
- 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 +134 -22
- package/dist/frontend/lowering/lowerer.js +1277 -126
- 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 +24 -35
- package/dist/frontend/lowering/surfaces.js +78 -66
- 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 +9 -4
- 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.js +2 -36
- 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} +12 -11
- 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 +113 -31
- package/dist/index.js +536 -128
- 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} +119 -37
- package/dist/ir/{nodes.js → ir.js} +170 -166
- 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 +2 -2
- package/dist/ir/serialize.js +3 -2
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.d.ts +1 -1
- package/dist/ir/validate.js +93 -41
- 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/{implementation-identity.js → compiler-self-identity.js} +1 -1
- 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 +8 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.d.ts +1 -36
- package/dist/library/int-infer.js +29 -18
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/{early-cache.d.ts → library-cache.d.ts} +1 -1
- package/dist/library/{early-cache.js → library-cache.js} +34 -89
- 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} +7 -7
- 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 +11 -3
- package/dist/startup-cache.js +17 -2
- package/dist/startup-cache.js.map +1 -1
- package/package.json +19 -2
- package/surface-manifest.json +5 -5
- 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/executable/early-cache.js.map +0 -1
- package/dist/executable/early-cache.test.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/implementation-identity.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/{executable/early-cache.test.d.ts → backend/llvm/shapes.test.d.ts} +0 -0
- /package/dist/{library/early-cache.test.d.ts → backend/native-codegen.test.d.ts} +0 -0
- /package/dist/ffi/{profile.d.ts → ffi-manifest.d.ts} +0 -0
- /package/dist/frontend/ts7/{program.d.ts → program-adapter.d.ts} +0 -0
- /package/dist/library/{implementation-identity.d.ts → compiler-self-identity.d.ts} +0 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
/* Focused LLVM expression emission extracted from emitter.ts. */
|
|
2
|
+
import { InternalCompilerError } from "../../errors.js";
|
|
3
|
+
import { isRefCounted, typeKey } from "../../ir/ir.js";
|
|
4
|
+
import { FN_ATTRS, releaseSym, retainSym, traceArg } from "./shapes.js";
|
|
5
|
+
export function streamDataAdapter(host, cbT) {
|
|
6
|
+
const key = `eed:${typeKey(cbT)}`;
|
|
7
|
+
let sym = host.resolveThunks.get(key);
|
|
8
|
+
if (sym)
|
|
9
|
+
return sym;
|
|
10
|
+
sym = `sc_ee_dad_${host.resolveThunks.size}`;
|
|
11
|
+
host.resolveThunks.set(key, sym);
|
|
12
|
+
const p = cbT.params[0];
|
|
13
|
+
if (cbT.params.length > 1 || (p && p.kind !== "bytes" && p.kind !== "string" && p.kind !== "dyn")) {
|
|
14
|
+
throw new InternalCompilerError("llvm emitter bug: stream data listener param shape (frontend must fence)");
|
|
15
|
+
}
|
|
16
|
+
host.declare(`declare ptr @scr_box_get_ref(ptr)`);
|
|
17
|
+
host.declare(`declare void @scr_closure_release(ptr)`);
|
|
18
|
+
const d = [
|
|
19
|
+
`define internal void @${sym}(ptr %cb, ptr %a0, ptr %a1) ${FN_ATTRS} { ; stream 'data' adapter ${typeKey(cbT)}`,
|
|
20
|
+
`entry:`,
|
|
21
|
+
` %capsp = getelementptr inbounds %ScrClosure, ptr %cb, i64 1`,
|
|
22
|
+
` %bx = load ptr, ptr %capsp`,
|
|
23
|
+
` %orig = call ptr @scr_box_get_ref(ptr %bx) ; the listener, +1`,
|
|
24
|
+
];
|
|
25
|
+
const finish = (arg) => {
|
|
26
|
+
d.push(` %fnp = getelementptr inbounds %ScrClosure, ptr %orig, i64 0, i32 1`, ` %fn = load ptr, ptr %fnp`);
|
|
27
|
+
const retTy = host.llType(cbT.ret);
|
|
28
|
+
const argList = arg === null ? `ptr %orig` : `ptr %orig, ptr ${arg}`;
|
|
29
|
+
if (retTy === "void") {
|
|
30
|
+
d.push(` call void %fn(${argList})`);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
d.push(` %ret = call ${retTy} %fn(${argList})`);
|
|
34
|
+
if (isRefCounted(cbT.ret)) {
|
|
35
|
+
d.push(` call void ${releaseSym(host, cbT.ret)}(ptr %ret) ; discarded listener result`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
d.push(` call void @scr_closure_release(ptr %orig)`, ` ret void`);
|
|
39
|
+
};
|
|
40
|
+
if (p === undefined) {
|
|
41
|
+
finish(null);
|
|
42
|
+
d.push(`}`, ``);
|
|
43
|
+
}
|
|
44
|
+
else if (p.kind === "bytes" || p.kind === "string") {
|
|
45
|
+
const msg = p.kind === "bytes"
|
|
46
|
+
? "a 'data' listener declaring a Buffer chunk received a string (the stream has an encoding set)"
|
|
47
|
+
: "a 'data' listener declaring a string chunk received a Buffer (call setEncoding, or declare the chunk as a Buffer)";
|
|
48
|
+
const slot = p.kind === "bytes" ? "%a0" : "%a1";
|
|
49
|
+
host.declare(`declare void @scr_throw_error_msg(i32, ptr, ${host.sizeType})`);
|
|
50
|
+
d.push(` %miss = icmp eq ptr ${slot}, null`, ` br i1 %miss, label %bad, label %ok`, `bad:`, ` call void @scr_throw_error_msg(i32 1, ptr ${host.cstr(msg)}, ${host.sizeType} ${Buffer.byteLength(msg, "utf8")})`, ` call void @scr_closure_release(ptr %orig)`, ` ret void`, `ok:`, ` %r0 = call ptr ${retainSym(host, p)}(ptr ${slot})`);
|
|
51
|
+
finish("%r0");
|
|
52
|
+
d.push(`}`, ``);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// dyn: box by runtime tag — the JS lane's adapter parameter.
|
|
56
|
+
host.declare(`declare ptr @scr_dyn_new_buffer_copy(ptr)`);
|
|
57
|
+
host.declare(`declare ptr @scr_dyn_new_str(ptr)`);
|
|
58
|
+
d.push(` %dslot = alloca ptr`, ` %isb = icmp ne ptr %a0, null`, ` br i1 %isb, label %buf, label %str`, `buf:`, ` %db = call ptr @scr_dyn_new_buffer_copy(ptr %a0)`, ` store ptr %db, ptr %dslot`, ` br label %go`, `str:`, ` %ds = call ptr @scr_dyn_new_str(ptr %a1)`, ` store ptr %ds, ptr %dslot`, ` br label %go`, `go:`, ` %dv = load ptr, ptr %dslot`);
|
|
59
|
+
finish("%dv");
|
|
60
|
+
d.push(`}`, ``);
|
|
61
|
+
}
|
|
62
|
+
host.resolveThunkDefs.push(...d);
|
|
63
|
+
return sym;
|
|
64
|
+
}
|
|
65
|
+
export function streamDoneFnFor(host, kind, doneT) {
|
|
66
|
+
const key = `sd:${kind}:${typeKey(doneT)}`;
|
|
67
|
+
let sym = host.resolveThunks.get(key);
|
|
68
|
+
if (sym)
|
|
69
|
+
return sym;
|
|
70
|
+
sym = `sc_sd_${host.resolveThunks.size}`;
|
|
71
|
+
host.resolveThunks.set(key, sym);
|
|
72
|
+
const errT = doneT.params[0];
|
|
73
|
+
let errTag = -1;
|
|
74
|
+
if (errT !== undefined) {
|
|
75
|
+
if (errT.kind !== "union")
|
|
76
|
+
throw new InternalCompilerError("llvm emitter bug: stream done err param not a union");
|
|
77
|
+
const def = host.unionsById.get(errT.unionId);
|
|
78
|
+
errTag = def ? def.arms.findIndex((a) => a.kind === "object") : -1;
|
|
79
|
+
if (errTag < 0)
|
|
80
|
+
throw new InternalCompilerError("llvm emitter bug: stream done err union lacks its Error arm");
|
|
81
|
+
}
|
|
82
|
+
const dataT = kind === "t" || kind === "l" ? doneT.params[1] : undefined;
|
|
83
|
+
let bytesTag = -1;
|
|
84
|
+
let strTag = -1;
|
|
85
|
+
if (dataT !== undefined) {
|
|
86
|
+
if (dataT.kind !== "union")
|
|
87
|
+
throw new InternalCompilerError("llvm emitter bug: stream done data param not a union");
|
|
88
|
+
const def = host.unionsById.get(dataT.unionId);
|
|
89
|
+
bytesTag = def ? def.arms.findIndex((a) => a.kind === "bytes") : -1;
|
|
90
|
+
strTag = def ? def.arms.findIndex((a) => a.kind === "string") : -1;
|
|
91
|
+
}
|
|
92
|
+
const entry = kind === "w" ? "scr_stream_write_done" :
|
|
93
|
+
kind === "f" ? "scr_stream_final_done" :
|
|
94
|
+
kind === "d" ? "scr_stream_destroy_done" :
|
|
95
|
+
kind === "t" ? "scr_stream_transform_done" : "scr_stream_flush_done";
|
|
96
|
+
const twoSlot = kind === "t" || kind === "l";
|
|
97
|
+
host.declare(`declare void @${entry}(ptr, ptr${twoSlot ? ", ptr, ptr" : ""})`);
|
|
98
|
+
host.declare(`declare ptr @scr_box_get_ref(ptr)`);
|
|
99
|
+
host.declare(`declare void @scr_stream_release_v(ptr)`);
|
|
100
|
+
host.declare(`declare ptr @scr_error_retain_v(ptr)`);
|
|
101
|
+
host.declare(`declare void @scr_union_release(ptr)`);
|
|
102
|
+
const params = [
|
|
103
|
+
"ptr %self",
|
|
104
|
+
...(errT !== undefined ? ["ptr %e"] : []),
|
|
105
|
+
...(dataT !== undefined ? ["ptr %d"] : []),
|
|
106
|
+
];
|
|
107
|
+
const d = [
|
|
108
|
+
`define internal void @${sym}(${params.join(", ")}) ${FN_ATTRS} { ; stream '${kind}' done ${typeKey(doneT)}`,
|
|
109
|
+
`entry:`,
|
|
110
|
+
` %eslot = alloca ptr`,
|
|
111
|
+
...(twoSlot ? [` %bslot = alloca ptr`, ` %sslot = alloca ptr`] : []),
|
|
112
|
+
` %capsp = getelementptr inbounds %ScrClosure, ptr %self, i64 1`,
|
|
113
|
+
` %bx = load ptr, ptr %capsp`,
|
|
114
|
+
` %s = call ptr @scr_box_get_ref(ptr %bx) ; the stream, +1`,
|
|
115
|
+
` store ptr null, ptr %eslot`,
|
|
116
|
+
...(twoSlot ? [` store ptr null, ptr %bslot`, ` store ptr null, ptr %sslot`] : []),
|
|
117
|
+
];
|
|
118
|
+
// A tag-guarded retained peek out of a union argument into a slot.
|
|
119
|
+
let arm = 0;
|
|
120
|
+
const unwrap = (u, tag, retain, slot) => {
|
|
121
|
+
const a = arm++;
|
|
122
|
+
d.push(` %un${a} = icmp ne ptr ${u}, null`, ` br i1 %un${a}, label %chk${a}, label %done${a}`, `chk${a}:`, ` %tp${a} = getelementptr inbounds %ScrUnion, ptr ${u}, i64 0, i32 1`, ` %tg${a} = load i32, ptr %tp${a}`, ` %hit${a} = icmp eq i32 %tg${a}, ${tag}`, ` br i1 %hit${a}, label %yes${a}, label %done${a}`, `yes${a}:`, ` %pp${a} = getelementptr inbounds %ScrUnion, ptr ${u}, i64 0, i32 5`, ` %pv${a} = load ptr, ptr %pp${a}`, ` %rt${a} = call ptr ${retain}(ptr %pv${a})`, ` store ptr %rt${a}, ptr ${slot}`, ` br label %done${a}`, `done${a}:`);
|
|
123
|
+
};
|
|
124
|
+
if (errT !== undefined)
|
|
125
|
+
unwrap("%e", errTag, "@scr_error_retain_v", "%eslot");
|
|
126
|
+
if (dataT !== undefined && bytesTag >= 0) {
|
|
127
|
+
host.declare(`declare ptr @scr_bytes_retain_v(ptr)`);
|
|
128
|
+
unwrap("%d", bytesTag, "@scr_bytes_retain_v", "%bslot");
|
|
129
|
+
}
|
|
130
|
+
if (dataT !== undefined && strTag >= 0) {
|
|
131
|
+
host.declare(`declare ptr @scr_str_retain_v(ptr)`);
|
|
132
|
+
unwrap("%d", strTag, "@scr_str_retain_v", "%sslot");
|
|
133
|
+
}
|
|
134
|
+
d.push(` %ev = load ptr, ptr %eslot`);
|
|
135
|
+
if (twoSlot) {
|
|
136
|
+
d.push(` %bv = load ptr, ptr %bslot`, ` %sv = load ptr, ptr %sslot`, ` call void @${entry}(ptr %s, ptr %ev, ptr %bv, ptr %sv) ; moves err/data; borrows s`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
d.push(` call void @${entry}(ptr %s, ptr %ev) ; moves err; borrows s`);
|
|
140
|
+
}
|
|
141
|
+
d.push(` call void @scr_stream_release_v(ptr %s)`);
|
|
142
|
+
if (errT !== undefined)
|
|
143
|
+
d.push(` call void @scr_union_release(ptr %e)`);
|
|
144
|
+
if (dataT !== undefined)
|
|
145
|
+
d.push(` call void @scr_union_release(ptr %d)`);
|
|
146
|
+
d.push(` ret void`, `}`, ``);
|
|
147
|
+
host.resolveThunkDefs.push(...d);
|
|
148
|
+
return sym;
|
|
149
|
+
}
|
|
150
|
+
export function fsRenameThunkFor(host, cbT) {
|
|
151
|
+
if (cbT.params.length === 0) {
|
|
152
|
+
host.declare(`declare void @scr_fs_rename_thunk0(ptr, ptr)`);
|
|
153
|
+
return "scr_fs_rename_thunk0";
|
|
154
|
+
}
|
|
155
|
+
const key = `fsren:${typeKey(cbT)}`;
|
|
156
|
+
let sym = host.resolveThunks.get(key);
|
|
157
|
+
if (sym)
|
|
158
|
+
return sym;
|
|
159
|
+
sym = `sc_fsren_${host.resolveThunks.size}`;
|
|
160
|
+
host.resolveThunks.set(key, sym);
|
|
161
|
+
const param = cbT.params[0];
|
|
162
|
+
const d = [
|
|
163
|
+
`define internal void @${sym}(ptr %cb, ptr %err) ${FN_ATTRS} { ; fs.rename callback ${typeKey(cbT)}`,
|
|
164
|
+
`entry:`,
|
|
165
|
+
` %slot = alloca ptr`,
|
|
166
|
+
` %has = icmp ne ptr %err, null`,
|
|
167
|
+
` br i1 %has, label %yes, label %no`,
|
|
168
|
+
`yes:`,
|
|
169
|
+
];
|
|
170
|
+
if (param.kind === "dyn") {
|
|
171
|
+
host.declare(`declare ptr @scr_dyn_from_error(ptr)`);
|
|
172
|
+
host.declare(`declare ptr @scr_dyn_new_null()`);
|
|
173
|
+
d.push(` %de = call ptr @scr_dyn_from_error(ptr %err)`, ` store ptr %de, ptr %slot`, ` br label %go`, `no:`, ` %dn = call ptr @scr_dyn_new_null()`, ` store ptr %dn, ptr %slot`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
if (param.kind !== "union")
|
|
177
|
+
throw new InternalCompilerError("llvm emitter bug: fs.rename error param not a union");
|
|
178
|
+
const def = host.unionsById.get(param.unionId);
|
|
179
|
+
const errTag = def ? def.arms.findIndex((a) => a.kind === "object" && a.className === "%Error") : -1;
|
|
180
|
+
const nullTag = def ? def.arms.findIndex((a) => a.kind === "nullT") : -1;
|
|
181
|
+
if (errTag < 0 || nullTag < 0)
|
|
182
|
+
throw new InternalCompilerError("llvm emitter bug: fs.rename error union lacks its arms");
|
|
183
|
+
host.declare(`declare ptr @scr_error_retain(ptr)`);
|
|
184
|
+
host.declare(`declare ptr @scr_error_retain_v(ptr)`);
|
|
185
|
+
host.declare(`declare void @scr_error_release_v(ptr)`);
|
|
186
|
+
host.declare(`declare ptr @scr_union_new_ref(i32, ptr, ptr, ptr, ptr)`);
|
|
187
|
+
d.push(` %er = call ptr @scr_error_retain(ptr %err)`, ` %eu = call ptr @scr_union_new_ref(i32 ${errTag}, ptr %er, ptr @scr_error_retain_v, ptr @scr_error_release_v, ptr null)`, ` store ptr %eu, ptr %slot`, ` br label %go`, `no:`, ` store ptr ${host.unitInstanceRef(param.unionId, nullTag)}, ptr %slot`);
|
|
188
|
+
}
|
|
189
|
+
d.push(` br label %go`, `go:`, ` %arg = load ptr, ptr %slot`, ` %fnp = getelementptr inbounds %ScrClosure, ptr %cb, i64 0, i32 1`, ` %fn = load ptr, ptr %fnp`, ` call void %fn(ptr %cb, ptr %arg)`, ` ret void`, `}`, ``);
|
|
190
|
+
host.resolveThunkDefs.push(...d);
|
|
191
|
+
return sym;
|
|
192
|
+
}
|
|
193
|
+
export function streamCbThunkFor(host, kind, cbT) {
|
|
194
|
+
if (cbT.kind !== "func")
|
|
195
|
+
throw new InternalCompilerError("llvm emitter bug: stream option callback not a func");
|
|
196
|
+
const key = `scb:${kind}:${typeKey(cbT)}`;
|
|
197
|
+
let sym = host.resolveThunks.get(key);
|
|
198
|
+
if (sym)
|
|
199
|
+
return sym;
|
|
200
|
+
sym = `sc_scb_${host.resolveThunks.size}`;
|
|
201
|
+
host.resolveThunks.set(key, sym);
|
|
202
|
+
const runtimeParams = kind === "r" ? ["ptr %s", "double %size"] :
|
|
203
|
+
kind === "w" || kind === "t" ? ["ptr %s", "ptr %chunk"] :
|
|
204
|
+
kind === "d" || kind === "e" ? ["ptr %s", "ptr %err"] :
|
|
205
|
+
["ptr %s"];
|
|
206
|
+
const declared = cbT.params;
|
|
207
|
+
const hasThis = declared[0] !== undefined && declared[0].kind === "object";
|
|
208
|
+
if (declared.length === 0) {
|
|
209
|
+
throw new InternalCompilerError("llvm emitter bug: stream option callback with no params (frontend must fence)");
|
|
210
|
+
}
|
|
211
|
+
const off = hasThis ? 1 : 0;
|
|
212
|
+
const full = (kind === "r" ? 1 : kind === "w" || kind === "t" ? 3 : kind === "d" ? 2 : 1) + off;
|
|
213
|
+
if (declared.length > full) {
|
|
214
|
+
throw new InternalCompilerError(`llvm emitter bug: stream '${kind}' callback declares ${declared.length} params (frontend must fence)`);
|
|
215
|
+
}
|
|
216
|
+
const d = [
|
|
217
|
+
`define internal void @${sym}(ptr %cb, ${runtimeParams.join(", ")}) ${FN_ATTRS} { ; stream '${kind}' option callback ${typeKey(cbT)}`,
|
|
218
|
+
`entry:`,
|
|
219
|
+
];
|
|
220
|
+
const passed = ["ptr %cb"];
|
|
221
|
+
if (hasThis) {
|
|
222
|
+
host.declare(`declare ptr @scr_stream_retain_v(ptr)`);
|
|
223
|
+
d.push(` %sr = call ptr @scr_stream_retain_v(ptr %s)`);
|
|
224
|
+
passed.push(`ptr %sr`);
|
|
225
|
+
}
|
|
226
|
+
// The stream-owning completion closure (a 1-cap closure boxing the
|
|
227
|
+
// retained stream) — shared by the typed and dyn done shapes.
|
|
228
|
+
const doneClosure = (fnRef, tag) => {
|
|
229
|
+
host.declare(`declare ptr @scr_closure_new(ptr, ${host.sizeType})`);
|
|
230
|
+
host.declare(`declare ptr @scr_box_new_obj(ptr, ptr, ptr)`);
|
|
231
|
+
host.declare(`declare void @scr_box_set_ref(ptr, ptr)`);
|
|
232
|
+
host.declare(`declare ptr @scr_stream_retain_v(ptr)`);
|
|
233
|
+
host.declare(`declare void @scr_stream_release_v(ptr)`);
|
|
234
|
+
host.declare(`declare void @scr_stream_trace(ptr, ptr, ptr)`);
|
|
235
|
+
d.push(` %${tag}clo = call ptr @scr_closure_new(ptr ${fnRef}, ${host.sizeType} 1)`, ` %${tag}bx = call ptr @scr_box_new_obj(ptr @scr_stream_retain_v, ptr @scr_stream_release_v, ptr @scr_stream_trace)`, ` %${tag}cp = getelementptr inbounds %ScrClosure, ptr %${tag}clo, i64 1`, ` store ptr %${tag}bx, ptr %${tag}cp`, ` %${tag}sr = call ptr @scr_stream_retain_v(ptr %s)`, ` call void @scr_box_set_ref(ptr %${tag}bx, ptr %${tag}sr)`);
|
|
236
|
+
return `%${tag}clo`;
|
|
237
|
+
};
|
|
238
|
+
for (let i = off; i < declared.length; i++) {
|
|
239
|
+
const p = declared[i];
|
|
240
|
+
const pos = i - off;
|
|
241
|
+
if (kind === "r") {
|
|
242
|
+
if (p.kind === "dyn") {
|
|
243
|
+
host.declare(`declare ptr @scr_dyn_new_num(double)`);
|
|
244
|
+
d.push(` %dn${i} = call ptr @scr_dyn_new_num(double %size)`);
|
|
245
|
+
passed.push(`ptr %dn${i}`);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
passed.push(`double %size`);
|
|
249
|
+
}
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const isChunkPos = (kind === "w" || kind === "t") && pos === 0;
|
|
253
|
+
const isEncPos = (kind === "w" || kind === "t") && pos === 1;
|
|
254
|
+
const isErrPos = (kind === "d" || kind === "e") && pos === 0;
|
|
255
|
+
const isDonePos = kind === "e" ? false
|
|
256
|
+
: (kind === "w" || kind === "t") ? pos === 2 : (kind === "f" || kind === "l") ? pos === 0 : pos === 1;
|
|
257
|
+
if (p.kind === "dyn") {
|
|
258
|
+
if (isChunkPos) {
|
|
259
|
+
host.declare(`declare ptr @scr_dyn_new_buffer_copy(ptr)`);
|
|
260
|
+
d.push(` %dc${i} = call ptr @scr_dyn_new_buffer_copy(ptr %chunk)`);
|
|
261
|
+
passed.push(`ptr %dc${i}`);
|
|
262
|
+
}
|
|
263
|
+
else if (isEncPos) {
|
|
264
|
+
host.declare(`declare ptr @scr_str_new(ptr, ${host.sizeType})`);
|
|
265
|
+
host.declare(`declare ptr @scr_dyn_new_str(ptr)`);
|
|
266
|
+
host.declare(`declare void @scr_str_release(ptr)`);
|
|
267
|
+
d.push(` %es${i} = call ptr @scr_str_new(ptr ${host.cstr("buffer")}, ${host.sizeType} 6)`, ` %ed${i} = call ptr @scr_dyn_new_str(ptr %es${i})`, ` call void @scr_str_release(ptr %es${i})`);
|
|
268
|
+
passed.push(`ptr %ed${i}`);
|
|
269
|
+
}
|
|
270
|
+
else if (isErrPos) {
|
|
271
|
+
// finished/pipeline succeed with UNDEFINED (Node calls the eos
|
|
272
|
+
// callback with no arguments); destroy passes null.
|
|
273
|
+
host.declare(`declare ptr @scr_dyn_from_error(ptr)`);
|
|
274
|
+
d.push(` %edslot${i} = alloca ptr`, ` %ehas${i} = icmp ne ptr %err, null`, ` br i1 %ehas${i}, label %eyes${i}, label %eno${i}`, `eyes${i}:`, ` %ede${i} = call ptr @scr_dyn_from_error(ptr %err)`, ` store ptr %ede${i}, ptr %edslot${i}`, ` br label %ego${i}`, `eno${i}:`);
|
|
275
|
+
if (kind === "e") {
|
|
276
|
+
host.declare(`declare ptr @scr_dyn_undefined()`);
|
|
277
|
+
host.declare(`declare ptr @scr_dyn_retain_v(ptr)`);
|
|
278
|
+
d.push(` %eun${i} = call ptr @scr_dyn_undefined()`, ` %eur${i} = call ptr @scr_dyn_retain_v(ptr %eun${i})`, ` store ptr %eur${i}, ptr %edslot${i}`);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
host.declare(`declare ptr @scr_dyn_new_null()`);
|
|
282
|
+
d.push(` %enl${i} = call ptr @scr_dyn_new_null()`, ` store ptr %enl${i}, ptr %edslot${i}`);
|
|
283
|
+
}
|
|
284
|
+
d.push(` br label %ego${i}`, `ego${i}:`, ` %edv${i} = load ptr, ptr %edslot${i}`);
|
|
285
|
+
passed.push(`ptr %edv${i}`);
|
|
286
|
+
}
|
|
287
|
+
else if (isDonePos) {
|
|
288
|
+
const glue = `scr_stream_done_dyn_${kind}`;
|
|
289
|
+
host.declare(`declare ptr @${glue}(ptr, ptr, ${host.sizeType})`);
|
|
290
|
+
host.declare(`declare ptr @scr_dyn_new_func(ptr, ptr, i32, ptr, ptr)`);
|
|
291
|
+
const clo = doneClosure(`@${glue}`, `dd${i}`);
|
|
292
|
+
const arity = kind === "t" || kind === "l" ? 2 : 1;
|
|
293
|
+
const sig = kind === "t" || kind === "l" ? "(error,data)" : "(error)";
|
|
294
|
+
d.push(` %ddn${i} = call ptr @scr_dyn_new_func(ptr ${clo}, ptr @${glue}, i32 ${arity}, ptr ${host.cstr(sig)}, ptr ${host.cstr("callback")})`);
|
|
295
|
+
passed.push(`ptr %ddn${i}`);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
throw new InternalCompilerError(`llvm emitter bug: stream '${kind}' dyn callback param ${i} has no adapter`);
|
|
299
|
+
}
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
if (isChunkPos) {
|
|
303
|
+
host.declare(`declare ptr @scr_bytes_retain_v(ptr)`);
|
|
304
|
+
d.push(` %rc${i} = call ptr @scr_bytes_retain_v(ptr %chunk)`);
|
|
305
|
+
passed.push(`ptr %rc${i}`);
|
|
306
|
+
}
|
|
307
|
+
else if (isEncPos) {
|
|
308
|
+
// Node's encoding for decoded (Buffer) chunks is 'buffer'.
|
|
309
|
+
host.declare(`declare ptr @scr_str_new(ptr, ${host.sizeType})`);
|
|
310
|
+
d.push(` %en${i} = call ptr @scr_str_new(ptr ${host.cstr("buffer")}, ${host.sizeType} 6)`);
|
|
311
|
+
passed.push(`ptr %en${i}`);
|
|
312
|
+
}
|
|
313
|
+
else if (isErrPos) {
|
|
314
|
+
// destroy's error argument: `Error | null` — wrap type-directedly.
|
|
315
|
+
// The finished/pipeline callback ("e") may declare `Error | null |
|
|
316
|
+
// undefined`; success prefers the undefined arm there.
|
|
317
|
+
if (p.kind !== "union")
|
|
318
|
+
throw new InternalCompilerError("llvm emitter bug: stream destroy err param not a union");
|
|
319
|
+
const def = host.unionsById.get(p.unionId);
|
|
320
|
+
const errTag = def ? def.arms.findIndex((a) => a.kind === "object") : -1;
|
|
321
|
+
const undefTag = kind === "e" && def ? def.arms.findIndex((a) => a.kind === "undefinedT") : -1;
|
|
322
|
+
const nullTag = def
|
|
323
|
+
? (undefTag >= 0 ? undefTag : def.arms.findIndex((a) => a.kind === "nullT"))
|
|
324
|
+
: -1;
|
|
325
|
+
if (errTag < 0 || nullTag < 0)
|
|
326
|
+
throw new InternalCompilerError("llvm emitter bug: stream destroy err union lacks its arms");
|
|
327
|
+
host.declare(`declare ptr @scr_union_new_ref(i32, ptr, ptr, ptr, ptr)`);
|
|
328
|
+
host.declare(`declare ptr @scr_error_retain_v(ptr)`);
|
|
329
|
+
host.declare(`declare void @scr_error_release_v(ptr)`);
|
|
330
|
+
d.push(` %euslot${i} = alloca ptr`, ` %euh${i} = icmp ne ptr %err, null`, ` br i1 %euh${i}, label %euy${i}, label %eun${i}`, `euy${i}:`, ` %eur${i} = call ptr @scr_error_retain_v(ptr %err)`, ` %euu${i} = call ptr @scr_union_new_ref(i32 ${errTag}, ptr %eur${i}, ptr @scr_error_retain_v, ptr @scr_error_release_v, ptr ${traceArg(host, def.arms[errTag])})`, ` store ptr %euu${i}, ptr %euslot${i}`, ` br label %eug${i}`, `eun${i}:`, ` store ptr ${host.unitInstanceRef(p.unionId, nullTag)}, ptr %euslot${i}`, ` br label %eug${i}`, `eug${i}:`, ` %euv${i} = load ptr, ptr %euslot${i}`);
|
|
331
|
+
passed.push(`ptr %euv${i}`);
|
|
332
|
+
}
|
|
333
|
+
else if (isDonePos) {
|
|
334
|
+
const doneKind = kind; // "e" has no done position
|
|
335
|
+
if (p.kind !== "func")
|
|
336
|
+
throw new InternalCompilerError("llvm emitter bug: stream done callback not a func");
|
|
337
|
+
const doneFn = host.streamDoneFnFor(doneKind, p);
|
|
338
|
+
const clo = doneClosure(`@${doneFn}`, `dn${i}`);
|
|
339
|
+
passed.push(`ptr ${clo}`);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
throw new InternalCompilerError(`llvm emitter bug: stream '${kind}' callback param ${i} has no adapter`);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
d.push(` %fnp = getelementptr inbounds %ScrClosure, ptr %cb, i64 0, i32 1`, ` %fn = load ptr, ptr %fnp`);
|
|
346
|
+
const retTy = host.llType(cbT.ret);
|
|
347
|
+
if (retTy === "void") {
|
|
348
|
+
d.push(` call void %fn(${passed.join(", ")})`);
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
d.push(` %ret = call ${retTy} %fn(${passed.join(", ")})`);
|
|
352
|
+
if (isRefCounted(cbT.ret)) {
|
|
353
|
+
d.push(` call void ${releaseSym(host, cbT.ret)}(ptr %ret) ; discarded option-callback result`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
d.push(` ret void`, `}`, ``);
|
|
357
|
+
host.resolveThunkDefs.push(...d);
|
|
358
|
+
return sym;
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=expr-stream-callbacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expr-stream-callbacks.js","sourceRoot":"","sources":["../../../src/backend/llvm/expr-stream-callbacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { LlvmEmitterContext, LibCallExpr, LlValue } from "./expr-context.js";
|
|
2
|
+
export declare function emitAssertInspectLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;
|
|
3
|
+
export declare function emitIoLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;
|
|
4
|
+
export declare function emitGenericLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;
|
|
5
|
+
export declare function emitLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;
|