@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
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* unit's lowering reached: the unit's IR, the entries it added to the
|
|
5
5
|
* tables that collect lowering results (Lowerer.journalTables), and the
|
|
6
6
|
* calls it made into reachability, generic demand and statement counting
|
|
7
|
-
* (JournalEvent). Records hold only
|
|
8
|
-
* be written to a file and read by
|
|
7
|
+
* (JournalEvent). Records hold only the function's bytes (or its JSON),
|
|
8
|
+
* strings, numbers and names, so they can be written to a file and read by
|
|
9
|
+
* another process or another build.
|
|
9
10
|
*
|
|
10
11
|
* A unit has no record when its lowering changed state that no record
|
|
11
12
|
* carries: a table that is not appendable grew, a field changed, an entry
|
|
@@ -23,16 +24,42 @@
|
|
|
23
24
|
import { appendFileSync, mkdirSync } from "node:fs";
|
|
24
25
|
import { join } from "node:path";
|
|
25
26
|
import { InternalCompilerError } from "../../errors.js";
|
|
27
|
+
import { decodeFunctionBinary, encodeFunctionStrings, functionDigest } from "../../ir/codec.js";
|
|
26
28
|
import { deserializeFunction, encodeFunction } from "../../ir/serialize.js";
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
import { invalidateTrackedPath } from "../input-tracker.js";
|
|
30
|
+
/** A function as table entries hold it, or null when it does not encode.
|
|
31
|
+
* Every function an entry holds goes through this pair. */
|
|
29
32
|
export function encodeUnitFunction(fn) {
|
|
30
33
|
return encodeFunction(fn) ?? null;
|
|
31
34
|
}
|
|
32
|
-
/** A function from its
|
|
35
|
+
/** A function from its entry encoding (encodeUnitFunction). */
|
|
33
36
|
export function decodeUnitFunction(text) {
|
|
34
37
|
return deserializeFunction(text);
|
|
35
38
|
}
|
|
39
|
+
/** `fn` as a record holds it, or null when it does not encode. A binary
|
|
40
|
+
* encoding comes with its strings and the files its fields named `file`
|
|
41
|
+
* hold (encodeFunctionStrings). */
|
|
42
|
+
export function encodeRecordFunction(fn) {
|
|
43
|
+
const binary = encodeFunctionStrings(fn);
|
|
44
|
+
if (binary !== null)
|
|
45
|
+
return { fn: binary.bytes, strings: binary.strings, files: binary.files };
|
|
46
|
+
const text = encodeUnitFunction(fn);
|
|
47
|
+
return text === null ? null : { fn: text, strings: null, files: null };
|
|
48
|
+
}
|
|
49
|
+
/** A function from its record encoding (encodeRecordFunction). */
|
|
50
|
+
export function decodeRecordFunction(fn) {
|
|
51
|
+
return typeof fn === "string"
|
|
52
|
+
? decodeUnitFunction(fn)
|
|
53
|
+
: decodeFunctionBinary(Buffer.from(fn.buffer, fn.byteOffset, fn.byteLength));
|
|
54
|
+
}
|
|
55
|
+
/** `record` as a JSON line, with a binary function in base64, marked when
|
|
56
|
+
* it was `applied` from an earlier build's store. */
|
|
57
|
+
export function recordLine(record, applied = false) {
|
|
58
|
+
const fn = record.fn === null || typeof record.fn === "string"
|
|
59
|
+
? record.fn
|
|
60
|
+
: Buffer.from(record.fn.buffer, record.fn.byteOffset, record.fn.byteLength).toString("base64");
|
|
61
|
+
return JSON.stringify(applied ? { ...record, fn, applied: true } : { ...record, fn });
|
|
62
|
+
}
|
|
36
63
|
/** A digest of `text`: its length and two 32-bit FNV-1a hashes. */
|
|
37
64
|
export function contentDigest(text) {
|
|
38
65
|
let a = 0x811c9dc5;
|
|
@@ -44,10 +71,20 @@ export function contentDigest(text) {
|
|
|
44
71
|
}
|
|
45
72
|
return `${text.length}:${(a >>> 0).toString(16)}${(b >>> 0).toString(16)}`;
|
|
46
73
|
}
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
|
|
74
|
+
/** Adds to `out` the names among `strings`: the strings that start with `%`
|
|
75
|
+
* (helper, lifted and IR data names) and union ids (`u` and 12 hex digits),
|
|
76
|
+
* which the tables a unit reads and changes are keyed by. */
|
|
77
|
+
export function namedStrings(strings, out) {
|
|
78
|
+
for (const text of strings) {
|
|
79
|
+
const first = text.charCodeAt(0);
|
|
80
|
+
if (first === 37 /* % */)
|
|
81
|
+
out.add(text);
|
|
82
|
+
else if (first === 117 /* u */ && text.length === 13 && /^u[0-9a-f]{12}$/.test(text))
|
|
83
|
+
out.add(text);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** The names (namedStrings) quoted in JSON `texts`, unescaped only as far
|
|
87
|
+
* as their delimiting quotes. */
|
|
51
88
|
export function quotedStrings(texts) {
|
|
52
89
|
const out = new Set();
|
|
53
90
|
const hex = (char) => (char >= 48 && char <= 57) || (char >= 97 && char <= 102);
|
|
@@ -133,10 +170,25 @@ export function writeRecords(dir, lines) {
|
|
|
133
170
|
if (lines.length === 0)
|
|
134
171
|
return;
|
|
135
172
|
mkdirSync(dir, { recursive: true });
|
|
136
|
-
|
|
173
|
+
const path = join(dir, "records.jsonl");
|
|
174
|
+
appendFileSync(path, `${lines.join("\n")}\n`);
|
|
175
|
+
invalidateTrackedPath(path);
|
|
137
176
|
}
|
|
138
177
|
export function waveStats() {
|
|
139
|
-
return {
|
|
178
|
+
return {
|
|
179
|
+
waves: 0,
|
|
180
|
+
units: 0,
|
|
181
|
+
recorded: 0,
|
|
182
|
+
unrecorded: 0,
|
|
183
|
+
reasons: {},
|
|
184
|
+
applied: 0,
|
|
185
|
+
holdMs: 0,
|
|
186
|
+
storedMs: 0,
|
|
187
|
+
applyMs: 0,
|
|
188
|
+
recordMs: 0,
|
|
189
|
+
lowerMs: 0,
|
|
190
|
+
replaceMs: 0,
|
|
191
|
+
};
|
|
140
192
|
}
|
|
141
193
|
/** Lowers `name` with its events recording, and makes its record. The unit
|
|
142
194
|
* has a record when every table that grew is appendable and holds the
|
|
@@ -153,7 +205,9 @@ export function recordUnit(host, name, contents = null) {
|
|
|
153
205
|
const marks = host.scalars.map((scalar) => scalar.mark());
|
|
154
206
|
const counts = host.statementCounts();
|
|
155
207
|
const recorder = new UnitEvents();
|
|
208
|
+
const lowering = performance.now();
|
|
156
209
|
const { fn, poisoned } = host.lowerRecorded(name, recorder);
|
|
210
|
+
const lowerMs = performance.now() - lowering;
|
|
157
211
|
const reasons = [];
|
|
158
212
|
const grown = [];
|
|
159
213
|
tables.forEach((table, index) => {
|
|
@@ -187,8 +241,8 @@ export function recordUnit(host, name, contents = null) {
|
|
|
187
241
|
reasons.push("statements");
|
|
188
242
|
if (now.other !== counts.other)
|
|
189
243
|
reasons.push("diagnostics");
|
|
190
|
-
const
|
|
191
|
-
if (fn !== null &&
|
|
244
|
+
const encoded = fn === null ? null : encodeRecordFunction(fn);
|
|
245
|
+
if (fn !== null && encoded === null)
|
|
192
246
|
reasons.push("encoding");
|
|
193
247
|
const added = {};
|
|
194
248
|
if (reasons.length === 0)
|
|
@@ -203,8 +257,8 @@ export function recordUnit(host, name, contents = null) {
|
|
|
203
257
|
// A unit uses the entries its IR and new entries name: it reads them, and
|
|
204
258
|
// a unit that changes one in place changes one it names.
|
|
205
259
|
const texts = [];
|
|
206
|
-
if (
|
|
207
|
-
texts.push(
|
|
260
|
+
if (typeof encoded?.fn === "string")
|
|
261
|
+
texts.push(encoded.fn);
|
|
208
262
|
for (const index of grown) {
|
|
209
263
|
const table = tables[index];
|
|
210
264
|
const entries = added[table.name] ?? table.entries(before[index]);
|
|
@@ -213,6 +267,8 @@ export function recordUnit(host, name, contents = null) {
|
|
|
213
267
|
texts.push(entry);
|
|
214
268
|
}
|
|
215
269
|
const names = quotedStrings(texts);
|
|
270
|
+
if (encoded?.strings != null)
|
|
271
|
+
namedStrings(encoded.strings, names);
|
|
216
272
|
if (own !== null) {
|
|
217
273
|
if (reasons.length === 0)
|
|
218
274
|
tables.forEach((table, index) => {
|
|
@@ -249,30 +305,66 @@ export function recordUnit(host, name, contents = null) {
|
|
|
249
305
|
reads[table.name] = read;
|
|
250
306
|
});
|
|
251
307
|
if (reasons.length > 0)
|
|
252
|
-
return { record: null, reasons, fn, before };
|
|
308
|
+
return { record: null, reasons, fn, before, lowerMs, files: null };
|
|
253
309
|
return {
|
|
254
|
-
record: { name, fn:
|
|
310
|
+
record: { name, fn: encoded?.fn ?? null, poisoned, events, tables: added, reads },
|
|
255
311
|
reasons,
|
|
256
312
|
fn,
|
|
257
313
|
before,
|
|
314
|
+
lowerMs,
|
|
315
|
+
files: encoded?.files ?? null,
|
|
258
316
|
};
|
|
259
317
|
}
|
|
260
|
-
/** Lowers `wave` with every unit recorded.
|
|
261
|
-
* results its record carries: the entries it added are
|
|
262
|
-
* tables and added again from the record, and its
|
|
263
|
-
* decoded from the record.
|
|
318
|
+
/** Lowers `wave` with every unit recorded. Without `reuse`, a unit with a
|
|
319
|
+
* record keeps the results its record carries: the entries it added are
|
|
320
|
+
* taken out of their tables and added again from the record, and its
|
|
321
|
+
* function is the one decoded from the record. Otherwise, and for a unit
|
|
322
|
+
* without a record, a unit keeps what lowering made.
|
|
264
323
|
* Throws an InternalCompilerError when a unit changed the content of an
|
|
265
324
|
* entry a table held when the unit started (JournalTable.contents), which
|
|
266
325
|
* no record carries.
|
|
267
|
-
* `lines`, when given, receives each unit's record as a JSON line.
|
|
268
|
-
|
|
326
|
+
* `lines`, when given, receives each unit's record as a JSON line. A unit
|
|
327
|
+
* whose stored record `reuse` gives applies it, and lowers when it does not
|
|
328
|
+
* apply. With `held`, the wave continues the content the waves before it
|
|
329
|
+
* left (HeldTables), and the check waits for HeldTables.check. */
|
|
330
|
+
export function lowerWaveRecorded(host, wave, stats, lines = null, reuse = null, held = null) {
|
|
269
331
|
stats.waves++;
|
|
270
332
|
const tables = host.tables;
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const contents = tables.map((table) => (table.contents === undefined ? null : table.contents()));
|
|
333
|
+
const contents = held ?? new HeldTables(tables, stats);
|
|
334
|
+
let started = 0;
|
|
274
335
|
for (const name of wave) {
|
|
275
|
-
|
|
336
|
+
started = performance.now();
|
|
337
|
+
let stored = reuse?.stored(name) ?? null;
|
|
338
|
+
stats.storedMs += performance.now() - started;
|
|
339
|
+
let pending = {};
|
|
340
|
+
if (stored !== null && reuse.verify) {
|
|
341
|
+
// Verify mode lowers the units whose stored record would apply and
|
|
342
|
+
// checks the record they lower to.
|
|
343
|
+
if (recordApplies(host, stored.record).length === 0)
|
|
344
|
+
pending = pendingEntries(host, stored.record);
|
|
345
|
+
else
|
|
346
|
+
stored = null;
|
|
347
|
+
}
|
|
348
|
+
else if (stored !== null) {
|
|
349
|
+
started = performance.now();
|
|
350
|
+
const reasons = applyRecord(host, stored.record, stored.fn);
|
|
351
|
+
stats.applyMs += performance.now() - started;
|
|
352
|
+
if (reasons.length === 0) {
|
|
353
|
+
stats.units++;
|
|
354
|
+
stats.recorded++;
|
|
355
|
+
stats.applied++;
|
|
356
|
+
contents.extendTaken();
|
|
357
|
+
lines?.push(recordLine(stored.record, true));
|
|
358
|
+
reuse.note(name, stored.record, true, null);
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
for (const reason of reasons)
|
|
362
|
+
stats.reasons[`stored:${reason}`] = (stats.reasons[`stored:${reason}`] ?? 0) + 1;
|
|
363
|
+
}
|
|
364
|
+
started = performance.now();
|
|
365
|
+
const unit = recordUnit(host, name, contents.take());
|
|
366
|
+
stats.recordMs += performance.now() - started;
|
|
367
|
+
stats.lowerMs += unit.lowerMs;
|
|
276
368
|
stats.units++;
|
|
277
369
|
const record = unit.record;
|
|
278
370
|
if (record === null) {
|
|
@@ -281,36 +373,170 @@ export function lowerWaveRecorded(host, wave, stats, lines = null) {
|
|
|
281
373
|
for (const reason of unit.reasons)
|
|
282
374
|
stats.reasons[reason] = (stats.reasons[reason] ?? 0) + 1;
|
|
283
375
|
host.store(name, unit.fn);
|
|
376
|
+
if (stored !== null && reuse.verify)
|
|
377
|
+
reuse.check(name, stored, pending, unit);
|
|
378
|
+
reuse?.note(name, null, false, null);
|
|
284
379
|
continue;
|
|
285
380
|
}
|
|
286
|
-
lines?.push(
|
|
381
|
+
lines?.push(recordLine(record));
|
|
287
382
|
stats.recorded++;
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
383
|
+
// The serial mode replaces a unit's results by its record's, so that the
|
|
384
|
+
// build's output is what applying the records gives. Reuse keeps what
|
|
385
|
+
// lowering made: its records apply in later builds, which verify mode
|
|
386
|
+
// and the edit-sequence tests check.
|
|
387
|
+
let fn = unit.fn;
|
|
388
|
+
if (reuse === null) {
|
|
389
|
+
const replacing = performance.now();
|
|
390
|
+
tables.forEach((table, index) => {
|
|
391
|
+
const entries = record.tables[table.name];
|
|
392
|
+
if (entries === undefined)
|
|
393
|
+
return;
|
|
394
|
+
table.truncate(unit.before[index]);
|
|
395
|
+
table.apply(entries);
|
|
396
|
+
});
|
|
397
|
+
fn = record.fn === null ? null : decodeRecordFunction(record.fn);
|
|
398
|
+
stats.replaceMs += performance.now() - replacing;
|
|
399
|
+
}
|
|
400
|
+
host.store(name, fn);
|
|
401
|
+
if (stored !== null && reuse.verify)
|
|
402
|
+
reuse.check(name, stored, pending, unit);
|
|
403
|
+
reuse?.note(name, record, false, unit.files);
|
|
404
|
+
}
|
|
405
|
+
if (held === null)
|
|
406
|
+
contents.check();
|
|
407
|
+
}
|
|
408
|
+
/** The content of the tables' entries that recorded units start from
|
|
409
|
+
* (JournalTable.contents): units keep the content of the entries the
|
|
410
|
+
* tables held when they started, since a record carries a unit's new
|
|
411
|
+
* entries, not changes to others. Applying a stored record only adds
|
|
412
|
+
* entries, so the content is taken when the first unit lowers, and not at
|
|
413
|
+
* all when none does. Consecutive waves with nothing but checker prefetches
|
|
414
|
+
* between them share one: the content a wave leaves, as the check finds it,
|
|
415
|
+
* is the content the next one starts with. */
|
|
416
|
+
export class HeldTables {
|
|
417
|
+
tables;
|
|
418
|
+
stats;
|
|
419
|
+
contents = null;
|
|
420
|
+
constructor(tables, stats) {
|
|
421
|
+
this.tables = tables;
|
|
422
|
+
this.stats = stats;
|
|
423
|
+
}
|
|
424
|
+
/** The held content, taken now when it was not yet. */
|
|
425
|
+
take() {
|
|
426
|
+
if (this.contents === null) {
|
|
427
|
+
const taken = performance.now();
|
|
428
|
+
this.contents = this.tables.map((table) => table.contents === undefined ? null : table.contents());
|
|
429
|
+
this.stats.holdMs += performance.now() - taken;
|
|
430
|
+
}
|
|
431
|
+
return this.contents;
|
|
432
|
+
}
|
|
433
|
+
/** Adds the entries past the held ones, when the content is taken. */
|
|
434
|
+
extendTaken() {
|
|
435
|
+
if (this.contents !== null)
|
|
436
|
+
for (const entry of this.contents)
|
|
437
|
+
entry?.extend();
|
|
438
|
+
}
|
|
439
|
+
/** Throws an InternalCompilerError when an entry a table held changed in
|
|
440
|
+
* place since the content was taken, other than by the units that keep
|
|
441
|
+
* their changes (HeldContents.refresh). */
|
|
442
|
+
check() {
|
|
443
|
+
const contents = this.contents;
|
|
444
|
+
if (contents === null)
|
|
445
|
+
return;
|
|
446
|
+
const started = performance.now();
|
|
447
|
+
this.tables.forEach((table, index) => {
|
|
448
|
+
const key = contents[index]?.changed() ?? null;
|
|
449
|
+
if (key !== null)
|
|
450
|
+
throw new InternalCompilerError(`a unit changed ${table.name} entry ${key} in place without naming it, which no unit record carries`);
|
|
294
451
|
});
|
|
295
|
-
|
|
452
|
+
this.stats.holdMs += performance.now() - started;
|
|
296
453
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
454
|
+
}
|
|
455
|
+
/** Applies `record` in place of lowering its unit, at the unit's turn, or
|
|
456
|
+
* returns why the unit has to lower instead. A record applies when every
|
|
457
|
+
* entry it adds agrees with what the tables hold, it names only known
|
|
458
|
+
* tables, every event resolves and every entry it reads is held with the
|
|
459
|
+
* same content. Applying adds its entries, keeps its function (`stored`'s,
|
|
460
|
+
* when the store keeps it apart from the record) and makes its events
|
|
461
|
+
* again. */
|
|
462
|
+
export function applyRecord(host, record, stored) {
|
|
463
|
+
const reasons = recordApplies(host, record);
|
|
464
|
+
if (reasons.length > 0)
|
|
465
|
+
return reasons;
|
|
466
|
+
for (const table of host.tables) {
|
|
467
|
+
const entries = record.tables[table.name];
|
|
468
|
+
if (entries !== undefined)
|
|
469
|
+
table.apply(entries);
|
|
470
|
+
}
|
|
471
|
+
const fn = record.poisoned
|
|
472
|
+
? null
|
|
473
|
+
: stored !== undefined
|
|
474
|
+
? stored()
|
|
475
|
+
: record.fn === null
|
|
476
|
+
? null
|
|
477
|
+
: decodeRecordFunction(record.fn);
|
|
478
|
+
host.keep(record.name, fn, record.events);
|
|
479
|
+
return [];
|
|
480
|
+
}
|
|
481
|
+
/** The entries `record` adds that the tables do not hold yet, by table
|
|
482
|
+
* name: what applying it would add at its unit's turn. */
|
|
483
|
+
export function pendingEntries(host, record) {
|
|
484
|
+
const out = {};
|
|
485
|
+
for (const table of host.tables) {
|
|
486
|
+
const entries = record.tables[table.name];
|
|
487
|
+
if (entries === undefined)
|
|
488
|
+
continue;
|
|
489
|
+
const pending = entries.filter((entry) => table.holds?.(entry) !== true);
|
|
490
|
+
if (pending.length > 0)
|
|
491
|
+
out[table.name] = pending;
|
|
492
|
+
}
|
|
493
|
+
return out;
|
|
494
|
+
}
|
|
495
|
+
/** Why `record` does not apply at its unit's turn (applyRecord), or no
|
|
496
|
+
* reasons when it does. */
|
|
497
|
+
export function recordApplies(host, record) {
|
|
498
|
+
const tables = host.tables;
|
|
499
|
+
for (const table of tables) {
|
|
500
|
+
const entries = record.tables[table.name];
|
|
501
|
+
if (entries === undefined)
|
|
502
|
+
continue;
|
|
503
|
+
if (table.agrees === undefined || table.apply === undefined || !table.agrees(entries))
|
|
504
|
+
return [`disagrees:${table.name}`];
|
|
505
|
+
}
|
|
506
|
+
for (const table of Object.keys(record.tables))
|
|
507
|
+
if (!tables.some((held) => held.name === table))
|
|
508
|
+
return [`unknown table:${table}`];
|
|
509
|
+
for (const event of record.events)
|
|
510
|
+
if (!host.resolves(event))
|
|
511
|
+
return [`event:${event.kind}`];
|
|
512
|
+
for (const table of tables) {
|
|
513
|
+
const reads = record.reads[table.name];
|
|
514
|
+
if (reads === undefined)
|
|
515
|
+
continue;
|
|
516
|
+
if (table.digest === undefined)
|
|
517
|
+
return [`unknown read:${table.name}`];
|
|
518
|
+
const size = table.size();
|
|
519
|
+
for (const [key, digest] of reads)
|
|
520
|
+
if (table.digest(key, size) !== digest)
|
|
521
|
+
return [`read:${table.name}`];
|
|
522
|
+
}
|
|
523
|
+
for (const table of Object.keys(record.reads))
|
|
524
|
+
if (!tables.some((held) => held.name === table))
|
|
525
|
+
return [`unknown read:${table}`];
|
|
526
|
+
return [];
|
|
302
527
|
}
|
|
303
528
|
/** The content of a keyed table's entries (JournalTable.contents): each
|
|
304
|
-
* entry's encoded value,
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
529
|
+
* entry's content (`text`: its encoded value, or the value itself when it
|
|
530
|
+
* is a string or a number), and the order of the keys, since a table only
|
|
531
|
+
* adds entries at the end. An entry is found by its key, or by the name its
|
|
532
|
+
* value holds (`valueName`): a unit names the helper it got, not the key it
|
|
533
|
+
* was looked up by. `text` answers undefined for a key the table does not
|
|
308
534
|
* hold. */
|
|
309
535
|
function keyedContents(size, keys, text, valueName) {
|
|
310
536
|
const texts = new Map();
|
|
311
537
|
let order = [];
|
|
312
538
|
const byName = new Map();
|
|
313
|
-
const differs = (key) => text(key)
|
|
539
|
+
const differs = (key) => !Object.is(text(key), texts.get(key));
|
|
314
540
|
const keyOf = (name) => (texts.has(name) ? name : byName.get(name));
|
|
315
541
|
const held = {
|
|
316
542
|
extend: () => {
|
|
@@ -371,11 +597,11 @@ function keyedContents(size, keys, text, valueName) {
|
|
|
371
597
|
/** An appendable table over a Map from strings to strings, such as helper
|
|
372
598
|
* names by key. */
|
|
373
599
|
export function mapTable(name, map) {
|
|
374
|
-
return codecTable(name, map, (value) => JSON.stringify(value), (text) => JSON.parse(text), (value) => value);
|
|
600
|
+
return codecTable(name, map, (value) => JSON.stringify(value), (text) => JSON.parse(text), (value) => value, (value) => value);
|
|
375
601
|
}
|
|
376
602
|
/** An appendable table over a Map from strings to numbers. */
|
|
377
603
|
export function countTable(name, map) {
|
|
378
|
-
return codecTable(name, map, (value) => String(value), (text) => Number(text));
|
|
604
|
+
return codecTable(name, map, (value) => String(value), (text) => Number(text), null, (value) => value);
|
|
379
605
|
}
|
|
380
606
|
/** An appendable table over a Map from strings to IR data, encoded as
|
|
381
607
|
* JSON. JSON writes a number that is not finite as null, so a value whose
|
|
@@ -389,8 +615,11 @@ export function irDataTable(name, map) {
|
|
|
389
615
|
/** An appendable table over a Map from strings to values that `encode`
|
|
390
616
|
* writes, or answers null for, and `decode` reads back. An entry is its key
|
|
391
617
|
* as a JSON string, a line break and its value: a JSON string holds no line
|
|
392
|
-
* break. A value that does not encode leaves its unit without a record.
|
|
393
|
-
|
|
618
|
+
* break. A value that does not encode leaves its unit without a record.
|
|
619
|
+
* `content` is what held contents compare (JournalTable.contents): the
|
|
620
|
+
* encoding, or the value itself for a table of strings or numbers, which
|
|
621
|
+
* only change by being replaced. */
|
|
622
|
+
export function codecTable(name, map, encode, decode, nameOf = null, content = encode) {
|
|
394
623
|
return {
|
|
395
624
|
name,
|
|
396
625
|
size: () => map.size,
|
|
@@ -407,6 +636,12 @@ export function codecTable(name, map, encode, decode, nameOf = null) {
|
|
|
407
636
|
}
|
|
408
637
|
return out;
|
|
409
638
|
},
|
|
639
|
+
agrees: (entries) => entries.every((entry) => {
|
|
640
|
+
const split = entry.indexOf("\n");
|
|
641
|
+
const held = map.get(JSON.parse(entry.slice(0, split)));
|
|
642
|
+
return held === undefined || encode(held) === entry.slice(split + 1);
|
|
643
|
+
}),
|
|
644
|
+
holds: (entry) => map.has(JSON.parse(entry.slice(0, entry.indexOf("\n")))),
|
|
410
645
|
apply: (entries) => {
|
|
411
646
|
for (const entry of entries) {
|
|
412
647
|
const split = entry.indexOf("\n");
|
|
@@ -422,7 +657,7 @@ export function codecTable(name, map, encode, decode, nameOf = null) {
|
|
|
422
657
|
},
|
|
423
658
|
contents: () => keyedContents(() => map.size, () => map.keys(), (key) => {
|
|
424
659
|
const value = map.get(key);
|
|
425
|
-
return value === undefined ? undefined :
|
|
660
|
+
return value === undefined ? undefined : content(value);
|
|
426
661
|
}, (key) => {
|
|
427
662
|
const value = map.get(key);
|
|
428
663
|
return value === undefined || nameOf === null ? null : nameOf(value);
|
|
@@ -435,6 +670,8 @@ export function setTable(name, set) {
|
|
|
435
670
|
name,
|
|
436
671
|
size: () => set.size,
|
|
437
672
|
entries: (from) => [...set].slice(from),
|
|
673
|
+
agrees: () => true,
|
|
674
|
+
holds: (entry) => set.has(entry),
|
|
438
675
|
apply: (entries) => {
|
|
439
676
|
for (const entry of entries)
|
|
440
677
|
set.add(entry);
|
|
@@ -497,6 +734,14 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
497
734
|
}
|
|
498
735
|
return out;
|
|
499
736
|
},
|
|
737
|
+
agrees: (entries) => entries.every((entry) => {
|
|
738
|
+
const fn = decodeUnitFunction(entry);
|
|
739
|
+
if (!has(fn.name))
|
|
740
|
+
return true;
|
|
741
|
+
const index = indexOf(fn.name);
|
|
742
|
+
return index !== undefined && encodeUnitFunction(functions[index]) === entry;
|
|
743
|
+
}),
|
|
744
|
+
holds: (entry) => has(decodeUnitFunction(entry).name),
|
|
500
745
|
apply: (entries) => {
|
|
501
746
|
for (const entry of entries) {
|
|
502
747
|
const fn = decodeUnitFunction(entry);
|
|
@@ -510,15 +755,16 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
510
755
|
functions.pop();
|
|
511
756
|
changed();
|
|
512
757
|
},
|
|
758
|
+
// Held functions are their content digests (heldFunction).
|
|
513
759
|
contents: () => {
|
|
514
760
|
const texts = [];
|
|
515
761
|
const indexes = new Map();
|
|
516
|
-
const differs = (index) => index < functions.length &&
|
|
762
|
+
const differs = (index) => index < functions.length && heldFunction(functions[index]) !== texts[index];
|
|
517
763
|
const held = {
|
|
518
764
|
extend: () => {
|
|
519
765
|
for (let index = texts.length; index < functions.length; index++) {
|
|
520
766
|
const fn = functions[index];
|
|
521
|
-
texts.push(
|
|
767
|
+
texts.push(heldFunction(fn));
|
|
522
768
|
indexes.set(fn.name, index);
|
|
523
769
|
}
|
|
524
770
|
},
|
|
@@ -540,7 +786,7 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
540
786
|
for (const key of keys) {
|
|
541
787
|
const index = indexes.get(key);
|
|
542
788
|
if (index !== undefined && index < functions.length)
|
|
543
|
-
texts[index] =
|
|
789
|
+
texts[index] = heldFunction(functions[index]);
|
|
544
790
|
}
|
|
545
791
|
},
|
|
546
792
|
};
|
|
@@ -549,6 +795,17 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
549
795
|
},
|
|
550
796
|
};
|
|
551
797
|
}
|
|
798
|
+
/** The content a function table holds of `fn` (HeldContents): its digest
|
|
799
|
+
* (functionDigest), or its entry encoding when the binary encoder cannot
|
|
800
|
+
* write it. */
|
|
801
|
+
function heldFunction(fn) {
|
|
802
|
+
try {
|
|
803
|
+
return functionDigest(fn);
|
|
804
|
+
}
|
|
805
|
+
catch {
|
|
806
|
+
return encodeUnitFunction(fn);
|
|
807
|
+
}
|
|
808
|
+
}
|
|
552
809
|
/** A table whose growth leaves the unit without a record. */
|
|
553
810
|
export function checkedTable(name, size) {
|
|
554
811
|
return { name, size };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-journal.js","sourceRoot":"","sources":["../../../src/frontend/lowering/unit-journal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unit-journal.js","sourceRoot":"","sources":["../../../src/frontend/lowering/unit-journal.ts"],"names":[],"mappings":"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"}
|