@scriptc/compiler 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/node-fallback/events.d.ts +6 -1
- package/ambient/node-fallback/fs-promises.d.ts +1 -1
- package/ambient/node-fallback/fs.d.ts +54 -10
- package/ambient/node-fallback/http.d.ts +3 -1
- package/ambient/node-fallback/net.d.ts +19 -0
- package/ambient/node-fallback/querystring.d.ts +3 -3
- package/ambient/scriptc-node-fallback.d.ts +58 -13
- package/dist/backend/executable-features.js +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +12 -1
- package/dist/backend/immutability.js +50 -4
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/immutability.test.js +95 -1
- package/dist/backend/immutability.test.js.map +1 -1
- package/dist/backend/library-pack.js +2 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.d.ts +11 -0
- package/dist/backend/linker.js +31 -3
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +7 -2
- package/dist/backend/lld.js +5 -3
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +10 -4
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +50 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/cpu-dispatch.js +6 -5
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +53 -1
- package/dist/backend/llvm/dyn.js +221 -9
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +1 -1
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +148 -50
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +39 -19
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +29 -2
- package/dist/backend/llvm/emitter.js +86 -7
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +4 -1
- package/dist/backend/llvm/expr-calls.js +20 -4
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +209 -16
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +94 -11
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +42 -2
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +16 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +206 -20
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +2 -0
- package/dist/backend/llvm/integer-values.js +6 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +38 -0
- package/dist/backend/llvm/js-ic.js +295 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +20 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +116 -11
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +136 -24
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +70 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +67 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/loop-entry-versions.d.ts +2 -2
- package/dist/backend/llvm/loop-entry-versions.js +43 -21
- package/dist/backend/llvm/loop-entry-versions.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +7 -1
- package/dist/backend/llvm/loop-state.js +20 -2
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +3 -1
- package/dist/backend/llvm/map-number-lookup.js +7 -3
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +52 -11
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/receiver-brackets.test.d.ts +1 -0
- package/dist/backend/llvm/receiver-brackets.test.js +68 -0
- package/dist/backend/llvm/receiver-brackets.test.js.map +1 -0
- package/dist/backend/llvm/record-views.d.ts +22 -2
- package/dist/backend/llvm/record-views.js +139 -10
- package/dist/backend/llvm/record-views.js.map +1 -1
- package/dist/backend/llvm/record-views.test.js +76 -0
- package/dist/backend/llvm/record-views.test.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +1 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +3 -0
- package/dist/backend/llvm/shapes.js +18 -3
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +4 -0
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +10 -1
- package/dist/backend/llvm/speculative-integers.js +59 -8
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +3 -3
- package/dist/backend/llvm/unwind-abi.js +8 -3
- package/dist/backend/llvm/unwind-abi.js.map +1 -1
- package/dist/backend/llvm/walkers.js +1 -1
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +54 -0
- package/dist/backend/native/executable.js +87 -5
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +5 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen.js +3 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +43 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-link-info.js +1 -0
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-profile.d.ts +4 -1
- package/dist/backend/native-profile.js +12 -1
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +10 -0
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/publication.d.ts +4 -1
- package/dist/backend/publication.js +4 -2
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +31 -7
- package/dist/backend/runtime-pack-core.js +21 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +18 -1
- package/dist/backend/runtime-pack-native.js +138 -29
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +166 -4
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +3 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -0
- package/dist/backend/runtime-pack.js +25 -3
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +3 -11
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/vendor-archives.d.ts +4 -1
- package/dist/backend/vendor-archives.js +264 -3
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +36 -0
- package/dist/backend/vendor-inputs.js +42 -0
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +28 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +2 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +7 -1
- package/dist/compat/fetch-profile.js +23 -10
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/check.d.ts +3 -0
- package/dist/contracts/check.js +18 -5
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -1
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/codes.d.ts +6 -0
- package/dist/diagnostics/codes.js +6 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +50 -0
- package/dist/diagnostics/diagnostic.js +142 -3
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.js +3 -1
- package/dist/diagnostics/dynamic-tier.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +29 -0
- package/dist/executable/executable-cache.js +18 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +5 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +13 -3
- package/dist/executable/prepare.js +271 -18
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +14 -0
- package/dist/frontend/early-errors.js +305 -0
- package/dist/frontend/early-errors.js.map +1 -0
- package/dist/frontend/early-errors.test.d.ts +1 -0
- package/dist/frontend/early-errors.test.js +42 -0
- package/dist/frontend/early-errors.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +23 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +47 -0
- package/dist/frontend/input-tracker.js +173 -36
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +86 -2
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/js-inference.d.ts +2 -0
- package/dist/frontend/js-inference.js +18 -0
- package/dist/frontend/js-inference.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.d.ts +2 -1
- package/dist/frontend/lowering/binding-analysis.js +65 -1
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +9 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +1 -1
- package/dist/frontend/lowering/builtin-namespaces.js +19 -2
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +7 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js +50 -10
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +5 -1
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +1 -1
- package/dist/frontend/lowering/builtins/dates.js +23 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/environment.d.ts +55 -0
- package/dist/frontend/lowering/builtins/environment.js +213 -2
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +47 -16
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +25 -7
- package/dist/frontend/lowering/builtins/filesystem.js +185 -16
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +39 -2
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +31 -5
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +3 -2
- package/dist/frontend/lowering/builtins/operating-system.js +5 -4
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +17 -1
- package/dist/frontend/lowering/builtins/process.js +285 -19
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.d.ts +8 -0
- package/dist/frontend/lowering/builtins/querystring.js +202 -18
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.js +21 -3
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +60 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +208 -59
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +20 -1
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +5 -5
- package/dist/frontend/lowering/builtins/v8.js +7 -5
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +17 -2
- package/dist/frontend/lowering/builtins/web-streams-dyn.js +97 -9
- package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +77 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +3 -0
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js +5 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +5 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +114 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +59 -10
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +15 -0
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-views.d.ts +13 -0
- package/dist/frontend/lowering/class-views.js +51 -0
- package/dist/frontend/lowering/class-views.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +15 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +54 -10
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +7 -0
- package/dist/frontend/lowering/coercions/state.js +7 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +60 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +29 -1
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +132 -28
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +16 -5
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +16 -0
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +4 -0
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +11 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +53 -0
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +10 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +69 -3
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +46 -2
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +14 -0
- package/dist/frontend/lowering/expressions/array-literals.js +26 -10
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +104 -12
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +121 -4
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +143 -3
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +11 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +22 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +25 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +5 -1
- package/dist/frontend/lowering/expressions/object-literals.js +778 -229
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +66 -20
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/property-access.js +796 -12
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +29 -1
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +17 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +132 -17
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +6 -0
- package/dist/frontend/lowering/frozen-records.js +10 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.test.d.ts +1 -0
- package/dist/frontend/lowering/frozen-records.test.js +44 -0
- package/dist/frontend/lowering/frozen-records.test.js.map +1 -0
- package/dist/frontend/lowering/function-names.d.ts +9 -0
- package/dist/frontend/lowering/function-names.js +95 -0
- package/dist/frontend/lowering/function-names.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +5 -3
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +49 -0
- package/dist/frontend/lowering/generic-functions.js +365 -7
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-values.d.ts +9 -0
- package/dist/frontend/lowering/global-values.js +44 -0
- package/dist/frontend/lowering/global-values.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.js +34 -1
- package/dist/frontend/lowering/handle-properties.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +54 -0
- package/dist/frontend/lowering/key-order-witness.js +546 -5
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +14 -0
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +110 -1
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +36 -6
- package/dist/frontend/lowering/lower-builtin-values.js +332 -58
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +22 -1
- package/dist/frontend/lowering/lower-calls.js +427 -48
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-calls.test.js +78 -0
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -0
- package/dist/frontend/lowering/lower-classes.d.ts +16 -5
- package/dist/frontend/lowering/lower-classes.js +168 -51
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -0
- package/dist/frontend/lowering/lower-event-emitter.js +383 -41
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +14 -0
- package/dist/frontend/lowering/lower-exprs.js +25 -0
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +2 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +80 -33
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +87 -25
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.d.ts +35 -4
- package/dist/frontend/lowering/lower-node-island.js +456 -61
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +160 -9
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-shared-modules.js +13 -1
- package/dist/frontend/lowering/lower-shared-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +3 -2
- package/dist/frontend/lowering/lower-stdlib.js +32 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +21 -4
- package/dist/frontend/lowering/lower-stmts.js +580 -103
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +126 -8
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +133 -21
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +139 -3
- package/dist/frontend/lowering/lowerer.js +579 -43
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +1 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js +15 -0
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/new-target.js +2 -2
- package/dist/frontend/lowering/nullish-empty-pattern.d.ts +17 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js +118 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -0
- package/dist/frontend/lowering/partial-assertions.d.ts +39 -0
- package/dist/frontend/lowering/partial-assertions.js +195 -0
- package/dist/frontend/lowering/partial-assertions.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.d.ts +34 -0
- package/dist/frontend/lowering/primitive-wrappers.js +220 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -0
- package/dist/frontend/lowering/private-statics.d.ts +46 -0
- package/dist/frontend/lowering/private-statics.js +322 -0
- package/dist/frontend/lowering/private-statics.js.map +1 -0
- package/dist/frontend/lowering/record-sources.d.ts +12 -1
- package/dist/frontend/lowering/record-sources.js +60 -0
- package/dist/frontend/lowering/record-sources.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.d.ts +4 -0
- package/dist/frontend/lowering/strict-equality.js +14 -0
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +27 -0
- package/dist/frontend/lowering/surfaces.js +135 -62
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +128 -17
- package/dist/frontend/lowering/unit-journal.js +310 -53
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +91 -3
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/unit-reuse.d.ts +92 -0
- package/dist/frontend/lowering/unit-reuse.js +1008 -0
- package/dist/frontend/lowering/unit-reuse.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +12 -0
- package/dist/frontend/npm-file-import.test.d.ts +1 -0
- package/dist/frontend/npm-file-import.test.js +76 -0
- package/dist/frontend/npm-file-import.test.js.map +1 -0
- package/dist/frontend/npm-static.js +17 -2
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +9 -0
- package/dist/frontend/npm.js +82 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/pipeline-native.js +2 -1
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +4 -0
- package/dist/frontend/pipeline.js +68 -7
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-node.d.ts +3 -0
- package/dist/frontend/program-node.js +13 -6
- package/dist/frontend/program-node.js.map +1 -1
- package/dist/frontend/program.d.ts +9 -0
- package/dist/frontend/program.js +159 -7
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/provenance-core.js +4 -0
- package/dist/frontend/provenance-core.js.map +1 -1
- package/dist/frontend/services.d.ts +14 -0
- package/dist/frontend/services.js +52 -2
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +61 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +5 -0
- package/dist/frontend/shape-inference/analyze.js +104 -4
- package/dist/frontend/shape-inference/analyze.js.map +1 -1
- package/dist/frontend/shape-inference/domain.js +0 -1
- package/dist/frontend/shape-inference/domain.js.map +1 -1
- package/dist/frontend/shape-inference/index.js +5 -1
- package/dist/frontend/shape-inference/index.js.map +1 -1
- package/dist/frontend/shape-inference/memo.d.ts +2 -1
- package/dist/frontend/shape-inference/memo.js +6 -2
- package/dist/frontend/shape-inference/memo.js.map +1 -1
- package/dist/frontend/shape-inference/overlay.d.ts +1 -1
- package/dist/frontend/shape-inference/overlay.js +116 -2
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- package/dist/frontend/shape-inference/static-objects.js +11 -6
- package/dist/frontend/shape-inference/static-objects.js.map +1 -1
- package/dist/frontend/source-phase-imports.test.d.ts +1 -0
- package/dist/frontend/source-phase-imports.test.js +37 -0
- package/dist/frontend/source-phase-imports.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +6 -1
- package/dist/frontend/ts7/ast-node.js +12 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-wire-protocols.test.js +11 -3
- package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.js +3 -5
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +13 -0
- package/dist/frontend/ts7/checker-backend.js +84 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +126 -2
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +22 -1
- package/dist/frontend/ts7/program-host.js +49 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +83 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.d.ts +16 -1
- package/dist/frontend/ts7/rpc-process.js +170 -92
- package/dist/frontend/ts7/rpc-process.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.test.js +49 -21
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
- package/dist/frontend/tsc-codes.js +70 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +7 -2
- package/dist/frontend/type-mapper.js +148 -1
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +152 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/build.d.ts +3 -2
- package/dist/ir/build.js +4 -2
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +53 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +211 -10
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/codec.d.ts +82 -0
- package/dist/ir/codec.generated.d.ts +13 -0
- package/dist/ir/codec.generated.js +5274 -0
- package/dist/ir/codec.generated.js.map +1 -0
- package/dist/ir/codec.js +325 -0
- package/dist/ir/codec.js.map +1 -0
- package/dist/ir/codec.test.d.ts +1 -0
- package/dist/ir/codec.test.js +225 -0
- package/dist/ir/codec.test.js.map +1 -0
- package/dist/ir/fields.generated.d.ts +20 -10
- package/dist/ir/fields.generated.js +1031 -11
- package/dist/ir/fields.generated.js.map +1 -1
- package/dist/ir/fields.test.js +46 -2
- package/dist/ir/fields.test.js.map +1 -1
- package/dist/ir/function-references.d.ts +5 -4
- package/dist/ir/function-references.js +8 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +7 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/inline-array-sources.js +4 -1
- package/dist/ir/inline-array-sources.js.map +1 -1
- package/dist/ir/inline-array-views.d.ts +13 -0
- package/dist/ir/inline-array-views.js +944 -0
- package/dist/ir/inline-array-views.js.map +1 -0
- package/dist/ir/inline-arrays.d.ts +7 -0
- package/dist/ir/inline-arrays.js +190 -55
- package/dist/ir/inline-arrays.js.map +1 -1
- package/dist/ir/inline-arrays.test.js +140 -2
- package/dist/ir/inline-arrays.test.js.map +1 -1
- package/dist/ir/integer-ranges.js +16 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +75 -44
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +10 -9
- package/dist/ir/js-ic.js +28 -20
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +10 -2
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/jsval.js +374 -63
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/jsval.test.js +96 -2
- package/dist/ir/jsval.test.js.map +1 -1
- package/dist/ir/loop-entry-ranges.js +112 -9
- package/dist/ir/loop-entry-ranges.js.map +1 -1
- package/dist/ir/loop-entry-ranges.test.js +40 -0
- package/dist/ir/loop-entry-ranges.test.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +2 -1
- package/dist/ir/parameter-versions.js +3 -1
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/receiver-readers.js +58 -2
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +60 -1
- package/dist/ir/runtime-features.js +277 -2
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +165 -1
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/saturating-loop-jams.d.ts +8 -1
- package/dist/ir/saturating-loop-jams.js +46 -7
- package/dist/ir/saturating-loop-jams.js.map +1 -1
- package/dist/ir/saturating-loop-jams.test.js +39 -1
- package/dist/ir/saturating-loop-jams.test.js.map +1 -1
- package/dist/ir/self-captures.js +8 -1
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/self-captures.test.js +15 -0
- package/dist/ir/self-captures.test.js.map +1 -1
- package/dist/ir/serialize.d.ts +3 -2
- package/dist/ir/serialize.js +6 -2
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.js +82 -4
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +46 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/ir-policy.js +3 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cache.js +2 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +2 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +32 -3
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +53 -3
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +88 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.js +9 -2
- package/dist/native/toolchain.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +25 -1
- package/dist/node-islands/boundary.js +28 -2
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/detect.d.ts +18 -1
- package/dist/node-islands/detect.js +365 -40
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +151 -4
- package/dist/node-islands/detect.test.js.map +1 -1
- package/dist/node-islands/effect-gate.js +30 -20
- package/dist/node-islands/effect-gate.js.map +1 -1
- package/dist/node-islands/effect-gate.test.js +4 -1
- package/dist/node-islands/effect-gate.test.js.map +1 -1
- package/dist/node-islands/libnode.d.ts +1 -1
- package/dist/node-islands/libnode.js +1 -1
- package/dist/node-islands/libnode.js.map +1 -1
- package/dist/node-islands/modules.d.ts +28 -0
- package/dist/node-islands/modules.js +156 -0
- package/dist/node-islands/modules.js.map +1 -1
- package/dist/node-islands/modules.test.js +105 -1
- package/dist/node-islands/modules.test.js.map +1 -1
- package/dist/node-islands/policy.js +2 -3
- package/dist/node-islands/policy.js.map +1 -1
- package/dist/node-islands/probe-recorder.d.ts +1 -0
- package/dist/node-islands/probe-recorder.js +596 -0
- package/dist/node-islands/probe-recorder.js.map +1 -0
- package/dist/node-islands/probe-recorder.test.d.ts +1 -0
- package/dist/node-islands/probe-recorder.test.js +80 -0
- package/dist/node-islands/probe-recorder.test.js.map +1 -0
- package/dist/node-islands/report.test.js +2 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +4 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +7 -1
- package/dist/node-islands/scan.js +51 -2
- package/dist/node-islands/scan.js.map +1 -1
- package/dist/node-islands/snapshot.d.ts +38 -1
- package/dist/node-islands/snapshot.js +165 -161
- package/dist/node-islands/snapshot.js.map +1 -1
- package/dist/node-islands/snapshot.test.js +63 -2
- package/dist/node-islands/snapshot.test.js.map +1 -1
- package/dist/node-islands/summary.js +8 -0
- package/dist/node-islands/summary.js.map +1 -1
- package/dist/node-islands/type-strip.d.ts +11 -0
- package/dist/node-islands/type-strip.js +157 -0
- package/dist/node-islands/type-strip.js.map +1 -0
- package/dist/node-islands/type-strip.test.d.ts +1 -0
- package/dist/node-islands/type-strip.test.js +31 -0
- package/dist/node-islands/type-strip.test.js.map +1 -0
- package/dist/project-config.d.ts +4 -0
- package/dist/project-config.js +19 -0
- package/dist/project-config.js.map +1 -1
- package/dist/project-config.test.js +10 -0
- package/dist/project-config.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +43 -11
|
@@ -50,7 +50,7 @@ import { type LlClassMeta, type LlInlineTail } from "./classes.js";
|
|
|
50
50
|
import { LifetimeRegions } from "./regions.js";
|
|
51
51
|
import { type ArenaPlan } from "./arenas.js";
|
|
52
52
|
import { type Node } from "./region-ir.js";
|
|
53
|
-
import { LlDyn, type DynHost } from "./dyn.js";
|
|
53
|
+
import { LlDyn, type DynHost, type JsEntryClosure } from "./dyn.js";
|
|
54
54
|
import { LlWalkers } from "./walkers.js";
|
|
55
55
|
import { NullableUnions } from "./nullable-unions.js";
|
|
56
56
|
import { type InlineRcMode, type MapKeyAccess } from "./shapes.js";
|
|
@@ -540,6 +540,10 @@ export declare class LlEmitter {
|
|
|
540
540
|
private readonly rcMode;
|
|
541
541
|
private readonly rcHelpersNoinline;
|
|
542
542
|
readonly fnByName: Map<string, IrFunction>;
|
|
543
|
+
/** Whether some closure has a jsval body (IrFunction.jsEntry): the
|
|
544
|
+
* dynamic tier's dynCall and dynInvoke sites then call a function value's
|
|
545
|
+
* jsval entry when it has one. */
|
|
546
|
+
jsEntries: boolean;
|
|
543
547
|
/** Empty literals that construct with inline slots (appended-array-literals.ts). */
|
|
544
548
|
appendedArrayLiterals: ReadonlySet<IrExpr>;
|
|
545
549
|
/** Emitted LLVM text of every IR function body, by function name: the
|
|
@@ -659,6 +663,9 @@ export declare class LlEmitter {
|
|
|
659
663
|
/** Static types whose values can be published (@scriptc/threads): their
|
|
660
664
|
* stores carry the frozen-object guard. Null without publish calls. */
|
|
661
665
|
readonly publishedTypes: PublishedTypes | null;
|
|
666
|
+
/** Constructor stores that write a field's first value (immutability.ts
|
|
667
|
+
* computeConstructionFacts): they store without releasing an old value. */
|
|
668
|
+
readonly freshFieldStores: ReadonlySet<IrStmt>;
|
|
662
669
|
/** Construction-only class and record fields (immutability.ts); null
|
|
663
670
|
* where the facts are disabled. */
|
|
664
671
|
private readonly immutableFields;
|
|
@@ -1135,6 +1142,16 @@ export declare class LlEmitter {
|
|
|
1135
1142
|
};
|
|
1136
1143
|
emit(): string;
|
|
1137
1144
|
emitParts(): string[];
|
|
1145
|
+
/** The entry point and JavaScript name of each named function the
|
|
1146
|
+
* module makes closures of: a declared function's wrapper (its interned
|
|
1147
|
+
* closure's entry) or a lifted function's call target, with its
|
|
1148
|
+
* displayName, else its sourceName. Function boxes without a static name
|
|
1149
|
+
* look the closure's entry up in this table. */
|
|
1150
|
+
private closureNameEntries;
|
|
1151
|
+
closureNames(): readonly {
|
|
1152
|
+
entry: string;
|
|
1153
|
+
name: string;
|
|
1154
|
+
}[];
|
|
1138
1155
|
/** The dispose-observer gates the emitted frees and record writers test
|
|
1139
1156
|
* (alloc.ts): defined after every helper is emitted, because dynCheck
|
|
1140
1157
|
* builders, JSON schemas and weak collection constructors are requested
|
|
@@ -1676,6 +1693,10 @@ export declare class LlEmitter {
|
|
|
1676
1693
|
* the fiber eagerly to its first suspension and returns the promise);
|
|
1677
1694
|
* generator bodies via theirs (which only ALLOCATES the suspended
|
|
1678
1695
|
* fiber and returns the generator object). */
|
|
1696
|
+
private jsEntryClosureList;
|
|
1697
|
+
/** The closures with a jsval body (IrFunction.jsEntry), on targets with
|
|
1698
|
+
* jsval words. */
|
|
1699
|
+
jsEntryClosures(): readonly JsEntryClosure[];
|
|
1679
1700
|
callTarget(fnName: string): string;
|
|
1680
1701
|
/** Queue the current wasm coroutine and suspend it. The runtime decides
|
|
1681
1702
|
* whether the promise waiter list or the ready FIFO owns the continuation;
|
|
@@ -2039,7 +2060,7 @@ export declare class LlEmitter {
|
|
|
2039
2060
|
* is produced without a union box where the value is a wrap, and as a
|
|
2040
2061
|
* retained payload of a borrowed box otherwise. Unlink-then-release like
|
|
2041
2062
|
* every field store. */
|
|
2042
|
-
emitNullableFieldStore(obj: string, className: string, field: string, nullable: NullableRefField, value: IrExpr): void;
|
|
2063
|
+
emitNullableFieldStore(obj: string, className: string, field: string, nullable: NullableRefField, value: IrExpr, fresh: boolean): void;
|
|
2043
2064
|
/** A union binding whose slot may hold a private stack box: stack locals
|
|
2044
2065
|
* and projection-only parameters (callers may pass stack boxes). Such a
|
|
2045
2066
|
* box must only be projected: never retained, released, or stored. */
|
|
@@ -2178,6 +2199,12 @@ export declare class LlEmitter {
|
|
|
2178
2199
|
fsRenameThunkFor(cbT: IrType & {
|
|
2179
2200
|
kind: "func";
|
|
2180
2201
|
}): string;
|
|
2202
|
+
watchNameThunkFor(cbT: IrType & {
|
|
2203
|
+
kind: "func";
|
|
2204
|
+
}): string;
|
|
2205
|
+
watchErrorThunkFor(cbT: IrType & {
|
|
2206
|
+
kind: "func";
|
|
2207
|
+
}): string;
|
|
2181
2208
|
cryptoBytesThunkFor(cbT: IrType & {
|
|
2182
2209
|
kind: "func";
|
|
2183
2210
|
}, arrayBuffer?: boolean, valueMode?: BytesThunkValue): string;
|
|
@@ -2,7 +2,7 @@ import { loopEntryInlines } from "./loop-entry-versions.js";
|
|
|
2
2
|
import { relieveHeapPressure } from "../../heap-pressure.js";
|
|
3
3
|
import { analyzeFrameEscapes } from "./frame-escapes.js";
|
|
4
4
|
import { wasmBoundsChecks } from "./wasm-modules.js";
|
|
5
|
-
import { jsTruthy } from "./jsval.js";
|
|
5
|
+
import { jsImmediates, jsTruthy } from "./jsval.js";
|
|
6
6
|
import { JsIcSites } from "../../ir/js-ic.js";
|
|
7
7
|
import {} from "./array-search.js";
|
|
8
8
|
import { emitStringInputs } from "./string-lifetimes.js";
|
|
@@ -96,13 +96,13 @@ import { emitCallExpr } from "./expr-calls.js";
|
|
|
96
96
|
import { emitDynamicExpr } from "./expr-dynamic.js";
|
|
97
97
|
import { emitIntrinsicExpr, emitSerializationExpr, emitAsyncExpr } from "./expr-async.js";
|
|
98
98
|
import { PublishWalkers } from "./publish.js";
|
|
99
|
-
import { computeImmutableFields, stableGlobals } from "../immutability.js";
|
|
99
|
+
import { computeConstructionFacts, computeImmutableFields, stableGlobals, } from "../immutability.js";
|
|
100
100
|
import { computeCycleMutability, hierarchyUnitOfClass } from "../cycle-mutability.js";
|
|
101
101
|
import { computePublishedTypes } from "../publication.js";
|
|
102
102
|
import { emitExpr } from "./expr-dispatch.js";
|
|
103
103
|
import { LOOPS } from "./loop-state.js";
|
|
104
104
|
import { dynKind, raceAdapterFor, genResultThunkFor, childExitThunkFor, childExitSignalThunkFor, childDataDynThunkFor, childDataThunkFor, execFileThunkFor, ipcMessageThunkFor, ipcSendThunkFor, emitterFixedAdapter, emitterOnceAdapter, wrapEmitterListener, unwrapNullableClosure, closeBindThunkFor, closeOverrideWrapFor, } from "./expr-callbacks.js";
|
|
105
|
-
import { streamDataAdapter, streamDoneFnFor, cryptoBytesThunkFor, cryptoIntThunkFor, fsRenameThunkFor, streamCbThunkFor, zlibBytesThunkFor, } from "./expr-stream-callbacks.js";
|
|
105
|
+
import { streamDataAdapter, streamDoneFnFor, cryptoBytesThunkFor, cryptoIntThunkFor, fsRenameThunkFor, watchNameThunkFor, watchErrorThunkFor, streamCbThunkFor, zlibBytesThunkFor, } from "./expr-stream-callbacks.js";
|
|
106
106
|
import { emitStableReceiver, resolveThunkFor, tagInSet, arrPush, emitArrayCopyLoop, emitStrIntrinsic, emitArrIntrinsic, wrapNullable, emitMapNew, mapSet, emitMapLikeIntrinsic, emitSetNew, } from "./expr-containers.js";
|
|
107
107
|
import { emitIntegerLoopIndex, emitBytesIndex, emitBytesData, emitBytesLength, emitBytesGet, emitToUint32, emitBytesSet, emitBytesIntrinsic, } from "./expr-bytes.js";
|
|
108
108
|
import { borrowedRecordKeyGetOr, emitRecordKeyGet, emitRegexIntrinsic, immortalDefault, keyedRecordReadInto, pointerRecordKeyGet, } from "./expr-records.js";
|
|
@@ -382,6 +382,7 @@ const GLOBAL_WRITE_KINDS = ["assign", "varDecl", "assignExpr", "incDec"];
|
|
|
382
382
|
const POLL_EVERY_ITERATION = "%worker.poll.every";
|
|
383
383
|
/** Runtime library calls (readsLoopMetrics). */
|
|
384
384
|
const LIB_CALL_KINDS = ["libCall"];
|
|
385
|
+
const CLOSURE_KINDS = ["closure"];
|
|
385
386
|
/** [A-Za-z0-9_] */
|
|
386
387
|
function isIdentifierByte(code) {
|
|
387
388
|
return ((code >= 48 && code <= 57) ||
|
|
@@ -912,6 +913,10 @@ export class LlEmitter {
|
|
|
912
913
|
rcMode;
|
|
913
914
|
rcHelpersNoinline;
|
|
914
915
|
fnByName = new Map();
|
|
916
|
+
/** Whether some closure has a jsval body (IrFunction.jsEntry): the
|
|
917
|
+
* dynamic tier's dynCall and dynInvoke sites then call a function value's
|
|
918
|
+
* jsval entry when it has one. */
|
|
919
|
+
jsEntries = false;
|
|
915
920
|
/** Empty literals that construct with inline slots (appended-array-literals.ts). */
|
|
916
921
|
appendedArrayLiterals = new Set();
|
|
917
922
|
/** Emitted LLVM text of every IR function body, by function name: the
|
|
@@ -1026,6 +1031,9 @@ export class LlEmitter {
|
|
|
1026
1031
|
/** Static types whose values can be published (@scriptc/threads): their
|
|
1027
1032
|
* stores carry the frozen-object guard. Null without publish calls. */
|
|
1028
1033
|
publishedTypes;
|
|
1034
|
+
/** Constructor stores that write a field's first value (immutability.ts
|
|
1035
|
+
* computeConstructionFacts): they store without releasing an old value. */
|
|
1036
|
+
freshFieldStores;
|
|
1029
1037
|
/** Construction-only class and record fields (immutability.ts); null
|
|
1030
1038
|
* where the facts are disabled. */
|
|
1031
1039
|
immutableFields;
|
|
@@ -1504,8 +1512,11 @@ export class LlEmitter {
|
|
|
1504
1512
|
this.ffiCallbackAdapters = allocateFfiCallbackAdapters(mod.ffiImports ?? []);
|
|
1505
1513
|
this.ffiHasRetainedCallback = hasRetainedFfiCallback(mod.ffiImports ?? []);
|
|
1506
1514
|
this.ffiHasForeignCallback = hasForeignFfiCallback(mod.ffiImports ?? []);
|
|
1507
|
-
for (const fn of mod.functions)
|
|
1515
|
+
for (const fn of mod.functions) {
|
|
1508
1516
|
this.fnByName.set(fn.name, fn);
|
|
1517
|
+
if (fn.jsEntry !== undefined)
|
|
1518
|
+
this.jsEntries = true;
|
|
1519
|
+
}
|
|
1509
1520
|
this.appendedArrayLiterals = findAppendedArrayLiterals(mod, this.nodeIndex);
|
|
1510
1521
|
for (const entry of mod.ffiImports ?? []) {
|
|
1511
1522
|
this.ffiByName.set(entry.name, entry);
|
|
@@ -1514,7 +1525,9 @@ export class LlEmitter {
|
|
|
1514
1525
|
// and per async fiber; WASI, Windows and library builds have none.
|
|
1515
1526
|
const triple = (options.targetTriple ?? "").toLowerCase();
|
|
1516
1527
|
const windows = triple === "" ? process.platform === "win32" : triple.includes("windows");
|
|
1517
|
-
|
|
1528
|
+
const construction = computeConstructionFacts(mod, this.nodeIndex);
|
|
1529
|
+
this.freshFieldStores = construction.freshStores;
|
|
1530
|
+
this.publishedTypes = computePublishedTypes(mod, this.nodeIndex, construction);
|
|
1518
1531
|
const mt = computeMayThrow(mod, {
|
|
1519
1532
|
stackChecks: !this.wasi && mod.lib === undefined && !windows,
|
|
1520
1533
|
published: this.publishedTypes,
|
|
@@ -1689,6 +1702,7 @@ export class LlEmitter {
|
|
|
1689
1702
|
? undefined
|
|
1690
1703
|
: (table, key, value) => this.journal?.entry(table, key, value),
|
|
1691
1704
|
compactArrayElem: (elem) => this.compactArrayElem(elem),
|
|
1705
|
+
jsEntryClosures: () => this.jsEntryClosures(),
|
|
1692
1706
|
compactRegion: () => this.compactRegion,
|
|
1693
1707
|
sizeType: this.sizeType,
|
|
1694
1708
|
cycleBufOffset: this.cycleBufOffset,
|
|
@@ -1746,6 +1760,7 @@ export class LlEmitter {
|
|
|
1746
1760
|
classValueAbiEquals(this.classMetaOf(sub).def, target, this.fnByName));
|
|
1747
1761
|
},
|
|
1748
1762
|
pendingTestLines: (dest) => this.pendingTestLines(dest),
|
|
1763
|
+
closureNames: () => this.closureNames(),
|
|
1749
1764
|
virtualEntry: (implFn) => this.virtualEntry(implFn),
|
|
1750
1765
|
programLifetime: this.programLifetime,
|
|
1751
1766
|
regionAliasTag: (word) => this.memoryAliasAttachment(`region.${word}`),
|
|
@@ -2044,6 +2059,34 @@ export class LlEmitter {
|
|
|
2044
2059
|
const out = this.cpuDispatch ? cloneForCpuDispatch(bridged) : bridged;
|
|
2045
2060
|
return this.heapCensus === null ? out : [...out, this.heapCensus.definitions().join("\n")];
|
|
2046
2061
|
}
|
|
2062
|
+
/** The entry point and JavaScript name of each named function the
|
|
2063
|
+
* module makes closures of: a declared function's wrapper (its interned
|
|
2064
|
+
* closure's entry) or a lifted function's call target, with its
|
|
2065
|
+
* displayName, else its sourceName. Function boxes without a static name
|
|
2066
|
+
* look the closure's entry up in this table. */
|
|
2067
|
+
closureNameEntries;
|
|
2068
|
+
closureNames() {
|
|
2069
|
+
if (this.closureNameEntries !== undefined)
|
|
2070
|
+
return this.closureNameEntries;
|
|
2071
|
+
const entries = new Map();
|
|
2072
|
+
const scan = this.nodeIndex.scan(CLOSURE_KINDS);
|
|
2073
|
+
for (const fn of this.mod.functions) {
|
|
2074
|
+
eachNodeOfKinds(fn, scan, (node) => {
|
|
2075
|
+
if (node.kind !== "closure")
|
|
2076
|
+
return true;
|
|
2077
|
+
const target = this.fnByName.get(node.fnName);
|
|
2078
|
+
const name = target?.displayName ??
|
|
2079
|
+
(target?.sourceName !== "<anonymous>" ? target?.sourceName : undefined);
|
|
2080
|
+
if (target === undefined || name === undefined || name === "")
|
|
2081
|
+
return true;
|
|
2082
|
+
const entry = target.captures === undefined ? mangleWrapper(node.fnName) : this.callTarget(node.fnName);
|
|
2083
|
+
if (!entries.has(entry))
|
|
2084
|
+
entries.set(entry, name);
|
|
2085
|
+
return true;
|
|
2086
|
+
});
|
|
2087
|
+
}
|
|
2088
|
+
return (this.closureNameEntries = [...entries].map(([entry, name]) => ({ entry, name })));
|
|
2089
|
+
}
|
|
2047
2090
|
/** The dispose-observer gates the emitted frees and record writers test
|
|
2048
2091
|
* (alloc.ts): defined after every helper is emitted, because dynCheck
|
|
2049
2092
|
* builders, JSON schemas and weak collection constructors are requested
|
|
@@ -4188,7 +4231,7 @@ export class LlEmitter {
|
|
|
4188
4231
|
const base = this.nullableUnions.fieldBase(shapeId);
|
|
4189
4232
|
let p;
|
|
4190
4233
|
if (this.shapeHost.recordViews?.targets.has(shapeId) === true) {
|
|
4191
|
-
p = recordViewFieldPtr(this.B, this.sizeType, mangleRecordStruct(shapeId), objName, idx + base, idx, (decl) => this.declare(decl), this.rcMode === undefined);
|
|
4234
|
+
p = recordViewFieldPtr(this.B, this.sizeType, mangleRecordStruct(shapeId), objName, idx + base, idx, (decl) => this.declare(decl), this.rcMode === undefined, (text) => this.cstr(text), this.shapeHost.recordViews?.partialTargets.has(shapeId) === true);
|
|
4192
4235
|
}
|
|
4193
4236
|
else {
|
|
4194
4237
|
p = this.B.tmp();
|
|
@@ -4638,6 +4681,30 @@ export class LlEmitter {
|
|
|
4638
4681
|
* the fiber eagerly to its first suspension and returns the promise);
|
|
4639
4682
|
* generator bodies via theirs (which only ALLOCATES the suspended
|
|
4640
4683
|
* fiber and returns the generator object). */
|
|
4684
|
+
jsEntryClosureList = null;
|
|
4685
|
+
/** The closures with a jsval body (IrFunction.jsEntry), on targets with
|
|
4686
|
+
* jsval words. */
|
|
4687
|
+
jsEntryClosures() {
|
|
4688
|
+
if (this.jsEntryClosureList !== null)
|
|
4689
|
+
return this.jsEntryClosureList;
|
|
4690
|
+
const list = [];
|
|
4691
|
+
if (this.jsEntries && jsImmediates(this))
|
|
4692
|
+
for (const fn of this.fnByName.values()) {
|
|
4693
|
+
const body = fn.jsEntry === undefined ? undefined : this.fnByName.get(fn.jsEntry);
|
|
4694
|
+
if (body === undefined)
|
|
4695
|
+
continue;
|
|
4696
|
+
list.push({
|
|
4697
|
+
closure: this.callTarget(fn.name),
|
|
4698
|
+
params: fn.params.map((p) => p.type),
|
|
4699
|
+
ret: fn.returnType,
|
|
4700
|
+
body: this.callTarget(body.name),
|
|
4701
|
+
bodyParams: body.params.map((p) => p.type),
|
|
4702
|
+
bodyRet: body.returnType,
|
|
4703
|
+
});
|
|
4704
|
+
}
|
|
4705
|
+
this.jsEntryClosureList = list;
|
|
4706
|
+
return list;
|
|
4707
|
+
}
|
|
4641
4708
|
callTarget(fnName) {
|
|
4642
4709
|
const fn = this.fnByName.get(fnName);
|
|
4643
4710
|
if (fn?.generator !== undefined)
|
|
@@ -6503,7 +6570,7 @@ export class LlEmitter {
|
|
|
6503
6570
|
* is produced without a union box where the value is a wrap, and as a
|
|
6504
6571
|
* retained payload of a borrowed box otherwise. Unlink-then-release like
|
|
6505
6572
|
* every field store. */
|
|
6506
|
-
emitNullableFieldStore(obj, className, field, nullable, value) {
|
|
6573
|
+
emitNullableFieldStore(obj, className, field, nullable, value, fresh) {
|
|
6507
6574
|
let next;
|
|
6508
6575
|
if (value.kind === "unionWrap" &&
|
|
6509
6576
|
value.unionId === nullable.unionId &&
|
|
@@ -6529,6 +6596,10 @@ export class LlEmitter {
|
|
|
6529
6596
|
next = this.unionToNullable(this.emitUnionProjection(value).name, nullable);
|
|
6530
6597
|
}
|
|
6531
6598
|
const { ptr } = this.classFieldPtr(obj, className, field, "compressed");
|
|
6599
|
+
if (fresh) {
|
|
6600
|
+
this.storeRef(ptr, next);
|
|
6601
|
+
return;
|
|
6602
|
+
}
|
|
6532
6603
|
const old = this.loadRef(ptr, false);
|
|
6533
6604
|
this.storeRef(ptr, next);
|
|
6534
6605
|
this.releaseHeap(old, nullable.arm);
|
|
@@ -6930,6 +7001,12 @@ export class LlEmitter {
|
|
|
6930
7001
|
fsRenameThunkFor(cbT) {
|
|
6931
7002
|
return fsRenameThunkFor(this, cbT);
|
|
6932
7003
|
}
|
|
7004
|
+
watchNameThunkFor(cbT) {
|
|
7005
|
+
return watchNameThunkFor(this, cbT);
|
|
7006
|
+
}
|
|
7007
|
+
watchErrorThunkFor(cbT) {
|
|
7008
|
+
return watchErrorThunkFor(this, cbT);
|
|
7009
|
+
}
|
|
6933
7010
|
cryptoBytesThunkFor(cbT, arrayBuffer = false, valueMode = "buffer") {
|
|
6934
7011
|
return cryptoBytesThunkFor(this, cbT, arrayBuffer, valueMode);
|
|
6935
7012
|
}
|
|
@@ -7198,6 +7275,8 @@ for (const op of [
|
|
|
7198
7275
|
"dyn.promiseDynAdapterHelper",
|
|
7199
7276
|
"dyn.dynFuncThunkHelper",
|
|
7200
7277
|
"dyn.dynFuncBoxHelper",
|
|
7278
|
+
"dyn.jsEntryThunk",
|
|
7279
|
+
"dyn.unnamedFuncBoxHelper",
|
|
7201
7280
|
"dyn.dynFuncAdapterHelper",
|
|
7202
7281
|
"dyn.dynToStrHelper",
|
|
7203
7282
|
"dyn.dynIterNHelper",
|