@scriptc/compiler 0.4.6 → 0.4.8
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/child_process.d.ts +71 -22
- package/ambient/node-fallback/crypto.d.ts +15 -7
- package/ambient/node-fallback/events.d.ts +29 -6
- package/ambient/node-fallback/fs-promises.d.ts +1 -1
- package/ambient/node-fallback/fs.d.ts +57 -12
- package/ambient/node-fallback/http.d.ts +26 -18
- package/ambient/node-fallback/https.d.ts +5 -2
- package/ambient/node-fallback/net.d.ts +25 -0
- package/ambient/node-fallback/os.d.ts +11 -1
- package/ambient/node-fallback/path-posix.d.ts +6 -0
- package/ambient/node-fallback/path-win32.d.ts +5 -0
- package/ambient/node-fallback/path.d.ts +2 -0
- package/ambient/node-fallback/querystring.d.ts +3 -3
- package/ambient/node-fallback/zlib.d.ts +31 -2
- package/ambient/scriptc-node-fallback.d.ts +95 -20
- package/ambient/scriptc.d.ts +7 -2
- package/dist/backend/executable-features.js +22 -1
- 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.d.ts +6 -0
- package/dist/backend/library-pack.js +18 -5
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/library-pack.test.d.ts +1 -0
- package/dist/backend/library-pack.test.js +28 -0
- package/dist/backend/library-pack.test.js.map +1 -0
- package/dist/backend/linker.d.ts +20 -2
- package/dist/backend/linker.js +221 -35
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +15 -6
- package/dist/backend/lld.js +24 -16
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +13 -5
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -2
- package/dist/backend/llvm/alloc.js +172 -36
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +69 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +17 -4
- package/dist/backend/llvm/arenas.js +105 -10
- package/dist/backend/llvm/arenas.js.map +1 -1
- package/dist/backend/llvm/arenas.test.js +229 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.js +10 -1
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.js +6 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.js +10 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +16 -9
- package/dist/backend/llvm/classes.js +142 -37
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +42 -0
- package/dist/backend/llvm/classes.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.d.ts +15 -5
- package/dist/backend/llvm/cpu-dispatch.js +34 -9
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +64 -3
- package/dist/backend/llvm/dyn.js +251 -15
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +68 -5
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +226 -77
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-module.test.d.ts +1 -0
- package/dist/backend/llvm/emit-module.test.js +52 -0
- package/dist/backend/llvm/emit-module.test.js.map +1 -0
- package/dist/backend/llvm/emit-statements.js +138 -34
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +142 -10
- package/dist/backend/llvm/emitter.js +523 -73
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +31 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +16 -1
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +4 -1
- package/dist/backend/llvm/expr-calls.js +38 -6
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +237 -23
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +123 -12
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +124 -56
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +59 -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-groups.d.ts +21 -0
- package/dist/backend/llvm/js-groups.js +277 -0
- package/dist/backend/llvm/js-groups.js.map +1 -0
- package/dist/backend/llvm/js-ic.d.ts +57 -1
- package/dist/backend/llvm/js-ic.js +389 -22
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +152 -1
- 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-network.js +33 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +180 -27
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +139 -2
- 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/local-union-storage.test.js +32 -0
- package/dist/backend/llvm/local-union-storage.test.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 +26 -3
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
- package/dist/backend/llvm/map-entry-fusion.js +3 -3
- package/dist/backend/llvm/map-entry-fusion.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 +58 -17
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.js +7 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +4 -1
- package/dist/backend/llvm/nullable-unions.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/receivers.js +3 -0
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
- package/dist/backend/llvm/record-entry-fusion.js +217 -0
- package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +5 -2
- package/dist/backend/llvm/record-results.js +13 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-views.d.ts +22 -2
- package/dist/backend/llvm/record-views.js +147 -12
- 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-effects.js +1 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +4 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/region-ir.js +1 -0
- package/dist/backend/llvm/region-ir.js.map +1 -1
- package/dist/backend/llvm/region-sites.d.ts +18 -0
- package/dist/backend/llvm/region-sites.js +79 -1
- package/dist/backend/llvm/region-sites.js.map +1 -1
- package/dist/backend/llvm/runtime-registries.test.js +53 -6
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +36 -3
- package/dist/backend/llvm/shapes.js +201 -16
- 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/stack-objects.d.ts +1 -2
- package/dist/backend/llvm/stack-objects.js +8 -5
- package/dist/backend/llvm/stack-objects.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.d.ts +12 -0
- package/dist/backend/llvm/walkers.js +47 -3
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +12 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +13 -0
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +94 -0
- package/dist/backend/native/executable.js +134 -10
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/helper-identity-record.d.ts +11 -0
- package/dist/backend/native/helper-identity-record.js +76 -0
- package/dist/backend/native/helper-identity-record.js.map +1 -0
- package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
- package/dist/backend/native/helper-identity-record.test.js +101 -0
- package/dist/backend/native/helper-identity-record.test.js.map +1 -0
- package/dist/backend/native/library.js +10 -2
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +8 -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-core.d.ts +13 -10
- package/dist/backend/native-codegen-core.js +26 -13
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +30 -8
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +110 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +72 -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 +46 -7
- package/dist/backend/runtime-pack-core.js +37 -2
- 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 +213 -12
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/tree-classes.d.ts +42 -0
- package/dist/backend/tree-classes.js +723 -0
- package/dist/backend/tree-classes.js.map +1 -0
- package/dist/backend/tree-classes.test.d.ts +1 -0
- package/dist/backend/tree-classes.test.js +338 -0
- package/dist/backend/tree-classes.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +8 -1
- package/dist/backend/vendor-archives.js +313 -8
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +60 -3
- package/dist/backend/vendor-inputs.js +109 -3
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +62 -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 +25 -12
- 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/report.js +47 -0
- package/dist/coverage/report.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 +14 -0
- package/dist/diagnostics/codes.js +14 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +68 -0
- package/dist/diagnostics/diagnostic.js +186 -6
- 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/diagnostics/envelope.d.ts +18 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +48 -0
- package/dist/executable/executable-cache.js +38 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +127 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +13 -3
- package/dist/executable/prepare.js +438 -234
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +200 -18
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +4 -0
- package/dist/frontend/builtin-modules.js +10 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +24 -0
- package/dist/frontend/early-errors.js +836 -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 +207 -0
- package/dist/frontend/early-errors.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +88 -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/jsx-opinion-sites.test.d.ts +1 -0
- package/dist/frontend/jsx-opinion-sites.test.js +86 -0
- package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
- package/dist/frontend/lib-exports.d.ts +23 -4
- package/dist/frontend/lib-exports.js +98 -26
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +2 -1
- package/dist/frontend/lowering/binding-analysis.js +86 -4
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/buffers.d.ts +8 -0
- package/dist/frontend/lowering/buffers.js +43 -0
- package/dist/frontend/lowering/buffers.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +13 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
- package/dist/frontend/lowering/builtin-namespaces.js +41 -3
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
- package/dist/frontend/lowering/builtin-statics.js +407 -0
- package/dist/frontend/lowering/builtin-statics.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +12 -0
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
- package/dist/frontend/lowering/builtins/atomics.js +87 -1
- package/dist/frontend/lowering/builtins/atomics.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 +52 -12
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
- package/dist/frontend/lowering/builtins/child-process.js +565 -28
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
- package/dist/frontend/lowering/builtins/compression.js +41 -21
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.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.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +75 -18
- 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/json.js +4 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +42 -3
- 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/numbers.d.ts +4 -1
- package/dist/frontend/lowering/builtins/numbers.js +10 -2
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +9 -5
- package/dist/frontend/lowering/builtins/operating-system.js +101 -20
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +18 -2
- package/dist/frontend/lowering/builtins/process.js +386 -25
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +169 -8
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +6 -2
- package/dist/frontend/lowering/builtins/properties.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.d.ts +6 -4
- package/dist/frontend/lowering/builtins/readline.js +200 -38
- 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 +55 -13
- 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/builtins/webassembly.js +2 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +10 -0
- package/dist/frontend/lowering/call-arguments.js +37 -2
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +10 -0
- package/dist/frontend/lowering/call-signatures.js +180 -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-construction.d.ts +14 -2
- package/dist/frontend/lowering/class-construction.js +99 -5
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +14 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1376 -1009
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.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-prototypes.js +20 -15
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +35 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +21 -4
- package/dist/frontend/lowering/class-unions.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 +63 -10
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +15 -0
- package/dist/frontend/lowering/coercions/state.js +24 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +75 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +39 -2
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
- package/dist/frontend/lowering/coercions/unions.js +54 -10
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
- package/dist/frontend/lowering/constructor-returns.js +284 -58
- package/dist/frontend/lowering/constructor-returns.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +288 -90
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +37 -8
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.js +139 -3
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
- package/dist/frontend/lowering/containers/array-iteration.js +24 -7
- package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +30 -11
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
- package/dist/frontend/lowering/containers/bytes.js +450 -86
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +16 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +74 -12
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +52 -17
- package/dist/frontend/lowering/containers/collection-methods.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/containers/iterator-helpers.d.ts +23 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +5 -5
- package/dist/frontend/lowering/dispatch-sites.js +3 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +40 -0
- package/dist/frontend/lowering/divergences.js +239 -20
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/effect-free.d.ts +12 -0
- package/dist/frontend/lowering/effect-free.js +44 -0
- package/dist/frontend/lowering/effect-free.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +24 -0
- package/dist/frontend/lowering/expressions/array-literals.js +88 -10
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +216 -14
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +272 -11
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +173 -4
- 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.d.ts +3 -0
- package/dist/frontend/lowering/expressions/narrowing.js +195 -18
- 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 +951 -240
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +71 -21
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +39 -0
- package/dist/frontend/lowering/expressions/property-access.js +1141 -87
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +262 -4
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +25 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
- package/dist/frontend/lowering/expressions/union-fields.js +103 -13
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +156 -22
- 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 +42 -13
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.js +5 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
- package/dist/frontend/lowering/generator-delegation.js +301 -118
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +75 -0
- package/dist/frontend/lowering/generic-functions.js +790 -18
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-function-values.d.ts +25 -0
- package/dist/frontend/lowering/global-function-values.js +193 -0
- package/dist/frontend/lowering/global-function-values.js.map +1 -0
- package/dist/frontend/lowering/global-values.d.ts +15 -4
- package/dist/frontend/lowering/global-values.js +67 -9
- 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/host-global-values.d.ts +31 -0
- package/dist/frontend/lowering/host-global-values.js +121 -0
- package/dist/frontend/lowering/host-global-values.js.map +1 -0
- package/dist/frontend/lowering/host-globals.d.ts +74 -0
- package/dist/frontend/lowering/host-globals.js +344 -0
- package/dist/frontend/lowering/host-globals.js.map +1 -0
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +46 -17
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
- package/dist/frontend/lowering/iterator-prototype.js +160 -0
- package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +54 -0
- package/dist/frontend/lowering/key-order-witness.js +571 -9
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +25 -3
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +140 -16
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
- package/dist/frontend/lowering/lower-async-iteration.js +15 -0
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +36 -6
- package/dist/frontend/lowering/lower-builtin-values.js +342 -58
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +47 -1
- package/dist/frontend/lowering/lower-calls.js +1354 -273
- 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 +121 -0
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -0
- package/dist/frontend/lowering/lower-classes.d.ts +36 -5
- package/dist/frontend/lowering/lower-classes.js +630 -89
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +15 -2
- package/dist/frontend/lowering/lower-event-emitter.js +610 -98
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +15 -1
- package/dist/frontend/lowering/lower-exprs.js +96 -20
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +27 -6
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +57 -10
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
- package/dist/frontend/lowering/lower-global-value.js +14 -5
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +713 -92
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +135 -27
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +18 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.d.ts +35 -4
- package/dist/frontend/lowering/lower-node-island.js +472 -67
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +463 -96
- 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 +77 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +24 -4
- package/dist/frontend/lowering/lower-stmts.js +831 -136
- 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 +243 -48
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +6 -3
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +363 -21
- package/dist/frontend/lowering/lowerer.js +1224 -129
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +19 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
- package/dist/frontend/lowering/lowering-facts.js +323 -0
- package/dist/frontend/lowering/lowering-facts.js.map +1 -0
- package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
- package/dist/frontend/lowering/lowering-facts.test.js +100 -0
- package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
- 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/nan-coded-reads.d.ts +27 -4
- package/dist/frontend/lowering/nan-coded-reads.js +112 -9
- package/dist/frontend/lowering/nan-coded-reads.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/optional-arguments.d.ts +4 -0
- package/dist/frontend/lowering/optional-arguments.js +26 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/partial-assertions.d.ts +36 -0
- package/dist/frontend/lowering/partial-assertions.js +189 -0
- package/dist/frontend/lowering/partial-assertions.js.map +1 -0
- package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
- package/dist/frontend/lowering/primitive-throws.js +241 -0
- package/dist/frontend/lowering/primitive-throws.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.d.ts +34 -0
- package/dist/frontend/lowering/primitive-wrappers.js +221 -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-inherited.d.ts +17 -1
- package/dist/frontend/lowering/record-inherited.js +16 -2
- package/dist/frontend/lowering/record-inherited.js.map +1 -1
- package/dist/frontend/lowering/record-links.d.ts +73 -0
- package/dist/frontend/lowering/record-links.js +797 -0
- package/dist/frontend/lowering/record-links.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/runtime-optional-provenance.d.ts +27 -7
- package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
- package/dist/frontend/lowering/runtime-optional-report.js +300 -0
- package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +3 -1
- package/dist/frontend/lowering/static-typeof.js +6 -1
- package/dist/frontend/lowering/static-typeof.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/strict-mode.d.ts +1 -5
- package/dist/frontend/lowering/strict-mode.js +4 -30
- package/dist/frontend/lowering/strict-mode.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +7 -0
- package/dist/frontend/lowering/structural-instances.js +23 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +42 -1
- package/dist/frontend/lowering/surfaces.js +212 -71
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +13 -1
- package/dist/frontend/lowering/union-retag.js +55 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +51 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +136 -17
- package/dist/frontend/lowering/unit-journal.js +324 -53
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +126 -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/lowering/zlib-constants.js +3 -2
- package/dist/frontend/lowering/zlib-constants.js.map +1 -1
- 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 +95 -11
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +95 -2
- package/dist/frontend/npm-static.test.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 +9 -4
- package/dist/frontend/pipeline.js +162 -38
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +68 -11
- package/dist/frontend/pipeline.test.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 +71 -2
- package/dist/frontend/program.js +836 -411
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +37 -1
- package/dist/frontend/program.test.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-node.d.ts +7 -0
- package/dist/frontend/services-node.js +32 -1
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services-node.test.js +51 -0
- package/dist/frontend/services-node.test.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 +184 -4
- 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/tier-analysis.d.ts +9 -0
- package/dist/frontend/tier-analysis.js +1 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- 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.d.ts +57 -3
- package/dist/frontend/tsc-codes.js +956 -101
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/tsc-codes.test.js +221 -12
- package/dist/frontend/tsc-codes.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +98 -11
- package/dist/frontend/type-mapper.js +770 -182
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +224 -15
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +60 -0
- package/dist/index.test.js.map +1 -0
- 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 +96 -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 +453 -26
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +3 -2
- package/dist/ir/callback-specialization.js +35 -25
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +8 -4
- package/dist/ir/capture-values.js +9 -6
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +6 -2
- package/dist/ir/char-unit-locals.js +11 -2
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/class-key-index.d.ts +18 -0
- package/dist/ir/class-key-index.js +29 -0
- package/dist/ir/class-key-index.js.map +1 -0
- package/dist/ir/class-key-index.test.d.ts +1 -0
- package/dist/ir/class-key-index.test.js +25 -0
- package/dist/ir/class-key-index.test.js.map +1 -0
- package/dist/ir/codec.d.ts +82 -0
- package/dist/ir/codec.generated.d.ts +13 -0
- package/dist/ir/codec.generated.js +5350 -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/constant-globals.d.ts +5 -2
- package/dist/ir/constant-globals.js +25 -27
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +4 -2
- package/dist/ir/expression-inlining.js +8 -2
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/field-values.d.ts +5 -2
- package/dist/ir/field-values.js +32 -21
- package/dist/ir/field-values.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +29 -10
- package/dist/ir/fields.generated.js +1039 -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/final-fields.js +1 -1
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +6 -4
- package/dist/ir/function-references.js +11 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +14 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +4 -2
- package/dist/ir/init-only-globals.js +17 -18
- package/dist/ir/init-only-globals.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 +945 -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/int32-slots.js +7 -0
- package/dist/ir/int32-slots.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 +130 -44
- package/dist/ir/ir.js +7 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-groups.d.ts +51 -0
- package/dist/ir/js-groups.js +394 -0
- package/dist/ir/js-groups.js.map +1 -0
- package/dist/ir/js-groups.test.d.ts +1 -0
- package/dist/ir/js-groups.test.js +555 -0
- package/dist/ir/js-groups.test.js.map +1 -0
- package/dist/ir/js-ic.d.ts +10 -9
- package/dist/ir/js-ic.js +58 -25
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +37 -3
- 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/node-index.d.ts +23 -6
- package/dist/ir/node-index.js +126 -49
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +4 -2
- package/dist/ir/numeric-call-specialization.js +40 -26
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.d.ts +4 -2
- package/dist/ir/paired-while-loops.js +8 -2
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +13 -3
- package/dist/ir/parameter-versions.js +63 -40
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/property-bags.d.ts +4 -2
- package/dist/ir/property-bags.js +22 -17
- package/dist/ir/property-bags.js.map +1 -1
- package/dist/ir/receiver-readers.js +58 -2
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +4 -2
- package/dist/ir/row-pairs.js +12 -11
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +139 -5
- package/dist/ir/runtime-features.js +397 -19
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +135 -1
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/runtime-jam-loops.d.ts +35 -0
- package/dist/ir/runtime-jam-loops.js +604 -0
- package/dist/ir/runtime-jam-loops.js.map +1 -0
- package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
- package/dist/ir/runtime-jam-loops.test.js +565 -0
- package/dist/ir/runtime-jam-loops.test.js.map +1 -0
- package/dist/ir/saturating-loop-jams.d.ts +11 -2
- package/dist/ir/saturating-loop-jams.js +56 -16
- 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/scalar-records.d.ts +5 -2
- package/dist/ir/scalar-records.js +12 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.d.ts +4 -2
- package/dist/ir/self-captures.js +40 -28
- 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 +8 -2
- package/dist/ir/serialize.js +92 -24
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/typed-argument-clones.d.ts +30 -0
- package/dist/ir/typed-argument-clones.js +789 -0
- package/dist/ir/typed-argument-clones.js.map +1 -0
- package/dist/ir/union-arm-loops.d.ts +3 -0
- package/dist/ir/union-arm-loops.js +373 -0
- package/dist/ir/union-arm-loops.js.map +1 -0
- package/dist/ir/union-arm-loops.test.d.ts +1 -0
- package/dist/ir/union-arm-loops.test.js +230 -0
- package/dist/ir/union-arm-loops.test.js.map +1 -0
- package/dist/ir/validate.js +170 -22
- 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/compiler-self-identity.d.ts +8 -2
- package/dist/library/compiler-self-identity.js +92 -18
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.js +150 -3
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +5 -0
- package/dist/library/int-infer.js +15 -3
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +4 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +4 -0
- package/dist/library/library-cache.js +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +26 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/prepare.js +99 -31
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +7 -0
- package/dist/native/cache.js +49 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +13 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +2 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +26 -5
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache-open.test.js +31 -5
- package/dist/native/executable-cache-open.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +6 -1
- package/dist/native/executable-cache.js +7 -1
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -0
- package/dist/native/prepare.js +74 -28
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +25 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.js +63 -4
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +93 -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 +37 -1
- package/dist/node-islands/boundary.js +65 -7
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/boundary.test.d.ts +1 -0
- package/dist/node-islands/boundary.test.js +76 -0
- package/dist/node-islands/boundary.test.js.map +1 -0
- package/dist/node-islands/detect.d.ts +27 -1
- package/dist/node-islands/detect.js +475 -40
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +175 -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/graph-islands.d.ts +40 -0
- package/dist/node-islands/graph-islands.js +128 -0
- package/dist/node-islands/graph-islands.js.map +1 -0
- package/dist/node-islands/growth.d.ts +57 -0
- package/dist/node-islands/growth.js +205 -0
- package/dist/node-islands/growth.js.map +1 -0
- 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.d.ts +12 -0
- package/dist/node-islands/report.js +28 -0
- package/dist/node-islands/report.js.map +1 -1
- package/dist/node-islands/report.test.js +4 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +9 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +16 -1
- package/dist/node-islands/scan.js +110 -9
- 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/dist/wasm/translate.js +11 -5
- package/dist/wasm/translate.js.map +1 -1
- package/dist/wasm/translate.test.js +35 -0
- package/dist/wasm/translate.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +221 -122
|
@@ -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);
|
|
@@ -106,6 +143,12 @@ export function flagScalar(name, get, set) {
|
|
|
106
143
|
/** The events of the unit being recorded (Lowerer.unitEvents). */
|
|
107
144
|
export class UnitEvents {
|
|
108
145
|
events = [];
|
|
146
|
+
/** Entries the unit changes in place, which its IR cannot show: a table
|
|
147
|
+
* only grows by addition, so a write to an entry another unit added is not
|
|
148
|
+
* in the unit's function. recordUnit merges these into the names it reads
|
|
149
|
+
* from the unit's IR, so the unit is counted as changing what it wrote and
|
|
150
|
+
* the held content follows (HeldTables). */
|
|
151
|
+
touched = new Set();
|
|
109
152
|
/** Calls into reachability nest (an edge can fire virtual edges). Only
|
|
110
153
|
* the outermost call is recorded, because making it again makes the
|
|
111
154
|
* nested ones. */
|
|
@@ -114,6 +157,10 @@ export class UnitEvents {
|
|
|
114
157
|
if (this.depth === 0)
|
|
115
158
|
this.events.push({ kind, name, detail, index });
|
|
116
159
|
}
|
|
160
|
+
/** Notes that the unit writes `name`, an entry it did not add. */
|
|
161
|
+
touch(name) {
|
|
162
|
+
this.touched.add(name);
|
|
163
|
+
}
|
|
117
164
|
}
|
|
118
165
|
/** Whether reachable emit records its units (SCRIPTC_LOWER_JOURNAL=serial,
|
|
119
166
|
* or a SCRIPTC_LOWER_JOURNAL_DUMP directory). */
|
|
@@ -133,10 +180,25 @@ export function writeRecords(dir, lines) {
|
|
|
133
180
|
if (lines.length === 0)
|
|
134
181
|
return;
|
|
135
182
|
mkdirSync(dir, { recursive: true });
|
|
136
|
-
|
|
183
|
+
const path = join(dir, "records.jsonl");
|
|
184
|
+
appendFileSync(path, `${lines.join("\n")}\n`);
|
|
185
|
+
invalidateTrackedPath(path);
|
|
137
186
|
}
|
|
138
187
|
export function waveStats() {
|
|
139
|
-
return {
|
|
188
|
+
return {
|
|
189
|
+
waves: 0,
|
|
190
|
+
units: 0,
|
|
191
|
+
recorded: 0,
|
|
192
|
+
unrecorded: 0,
|
|
193
|
+
reasons: {},
|
|
194
|
+
applied: 0,
|
|
195
|
+
holdMs: 0,
|
|
196
|
+
storedMs: 0,
|
|
197
|
+
applyMs: 0,
|
|
198
|
+
recordMs: 0,
|
|
199
|
+
lowerMs: 0,
|
|
200
|
+
replaceMs: 0,
|
|
201
|
+
};
|
|
140
202
|
}
|
|
141
203
|
/** Lowers `name` with its events recording, and makes its record. The unit
|
|
142
204
|
* has a record when every table that grew is appendable and holds the
|
|
@@ -153,7 +215,9 @@ export function recordUnit(host, name, contents = null) {
|
|
|
153
215
|
const marks = host.scalars.map((scalar) => scalar.mark());
|
|
154
216
|
const counts = host.statementCounts();
|
|
155
217
|
const recorder = new UnitEvents();
|
|
218
|
+
const lowering = performance.now();
|
|
156
219
|
const { fn, poisoned } = host.lowerRecorded(name, recorder);
|
|
220
|
+
const lowerMs = performance.now() - lowering;
|
|
157
221
|
const reasons = [];
|
|
158
222
|
const grown = [];
|
|
159
223
|
tables.forEach((table, index) => {
|
|
@@ -187,8 +251,8 @@ export function recordUnit(host, name, contents = null) {
|
|
|
187
251
|
reasons.push("statements");
|
|
188
252
|
if (now.other !== counts.other)
|
|
189
253
|
reasons.push("diagnostics");
|
|
190
|
-
const
|
|
191
|
-
if (fn !== null &&
|
|
254
|
+
const encoded = fn === null ? null : encodeRecordFunction(fn);
|
|
255
|
+
if (fn !== null && encoded === null)
|
|
192
256
|
reasons.push("encoding");
|
|
193
257
|
const added = {};
|
|
194
258
|
if (reasons.length === 0)
|
|
@@ -203,8 +267,8 @@ export function recordUnit(host, name, contents = null) {
|
|
|
203
267
|
// A unit uses the entries its IR and new entries name: it reads them, and
|
|
204
268
|
// a unit that changes one in place changes one it names.
|
|
205
269
|
const texts = [];
|
|
206
|
-
if (
|
|
207
|
-
texts.push(
|
|
270
|
+
if (typeof encoded?.fn === "string")
|
|
271
|
+
texts.push(encoded.fn);
|
|
208
272
|
for (const index of grown) {
|
|
209
273
|
const table = tables[index];
|
|
210
274
|
const entries = added[table.name] ?? table.entries(before[index]);
|
|
@@ -212,7 +276,13 @@ export function recordUnit(host, name, contents = null) {
|
|
|
212
276
|
for (const entry of entries)
|
|
213
277
|
texts.push(entry);
|
|
214
278
|
}
|
|
279
|
+
// A unit names every entry it writes: the ones its function shows, and the
|
|
280
|
+
// ones it changed in place (UnitEvents.touch), which a function cannot.
|
|
215
281
|
const names = quotedStrings(texts);
|
|
282
|
+
if (encoded?.strings != null)
|
|
283
|
+
namedStrings(encoded.strings, names);
|
|
284
|
+
for (const touched of recorder.touched)
|
|
285
|
+
names.add(touched);
|
|
216
286
|
if (own !== null) {
|
|
217
287
|
if (reasons.length === 0)
|
|
218
288
|
tables.forEach((table, index) => {
|
|
@@ -249,30 +319,66 @@ export function recordUnit(host, name, contents = null) {
|
|
|
249
319
|
reads[table.name] = read;
|
|
250
320
|
});
|
|
251
321
|
if (reasons.length > 0)
|
|
252
|
-
return { record: null, reasons, fn, before };
|
|
322
|
+
return { record: null, reasons, fn, before, lowerMs, files: null };
|
|
253
323
|
return {
|
|
254
|
-
record: { name, fn:
|
|
324
|
+
record: { name, fn: encoded?.fn ?? null, poisoned, events, tables: added, reads },
|
|
255
325
|
reasons,
|
|
256
326
|
fn,
|
|
257
327
|
before,
|
|
328
|
+
lowerMs,
|
|
329
|
+
files: encoded?.files ?? null,
|
|
258
330
|
};
|
|
259
331
|
}
|
|
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.
|
|
332
|
+
/** Lowers `wave` with every unit recorded. Without `reuse`, a unit with a
|
|
333
|
+
* record keeps the results its record carries: the entries it added are
|
|
334
|
+
* taken out of their tables and added again from the record, and its
|
|
335
|
+
* function is the one decoded from the record. Otherwise, and for a unit
|
|
336
|
+
* without a record, a unit keeps what lowering made.
|
|
264
337
|
* Throws an InternalCompilerError when a unit changed the content of an
|
|
265
338
|
* entry a table held when the unit started (JournalTable.contents), which
|
|
266
339
|
* no record carries.
|
|
267
|
-
* `lines`, when given, receives each unit's record as a JSON line.
|
|
268
|
-
|
|
340
|
+
* `lines`, when given, receives each unit's record as a JSON line. A unit
|
|
341
|
+
* whose stored record `reuse` gives applies it, and lowers when it does not
|
|
342
|
+
* apply. With `held`, the wave continues the content the waves before it
|
|
343
|
+
* left (HeldTables), and the check waits for HeldTables.check. */
|
|
344
|
+
export function lowerWaveRecorded(host, wave, stats, lines = null, reuse = null, held = null) {
|
|
269
345
|
stats.waves++;
|
|
270
346
|
const tables = host.tables;
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const contents = tables.map((table) => (table.contents === undefined ? null : table.contents()));
|
|
347
|
+
const contents = held ?? new HeldTables(tables, stats);
|
|
348
|
+
let started = 0;
|
|
274
349
|
for (const name of wave) {
|
|
275
|
-
|
|
350
|
+
started = performance.now();
|
|
351
|
+
let stored = reuse?.stored(name) ?? null;
|
|
352
|
+
stats.storedMs += performance.now() - started;
|
|
353
|
+
let pending = {};
|
|
354
|
+
if (stored !== null && reuse.verify) {
|
|
355
|
+
// Verify mode lowers the units whose stored record would apply and
|
|
356
|
+
// checks the record they lower to.
|
|
357
|
+
if (recordApplies(host, stored.record).length === 0)
|
|
358
|
+
pending = pendingEntries(host, stored.record);
|
|
359
|
+
else
|
|
360
|
+
stored = null;
|
|
361
|
+
}
|
|
362
|
+
else if (stored !== null) {
|
|
363
|
+
started = performance.now();
|
|
364
|
+
const reasons = applyRecord(host, stored.record, stored.fn);
|
|
365
|
+
stats.applyMs += performance.now() - started;
|
|
366
|
+
if (reasons.length === 0) {
|
|
367
|
+
stats.units++;
|
|
368
|
+
stats.recorded++;
|
|
369
|
+
stats.applied++;
|
|
370
|
+
contents.extendTaken();
|
|
371
|
+
lines?.push(recordLine(stored.record, true));
|
|
372
|
+
reuse.note(name, stored.record, true, null);
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
for (const reason of reasons)
|
|
376
|
+
stats.reasons[`stored:${reason}`] = (stats.reasons[`stored:${reason}`] ?? 0) + 1;
|
|
377
|
+
}
|
|
378
|
+
started = performance.now();
|
|
379
|
+
const unit = recordUnit(host, name, contents.take());
|
|
380
|
+
stats.recordMs += performance.now() - started;
|
|
381
|
+
stats.lowerMs += unit.lowerMs;
|
|
276
382
|
stats.units++;
|
|
277
383
|
const record = unit.record;
|
|
278
384
|
if (record === null) {
|
|
@@ -281,36 +387,170 @@ export function lowerWaveRecorded(host, wave, stats, lines = null) {
|
|
|
281
387
|
for (const reason of unit.reasons)
|
|
282
388
|
stats.reasons[reason] = (stats.reasons[reason] ?? 0) + 1;
|
|
283
389
|
host.store(name, unit.fn);
|
|
390
|
+
if (stored !== null && reuse.verify)
|
|
391
|
+
reuse.check(name, stored, pending, unit);
|
|
392
|
+
reuse?.note(name, null, false, null);
|
|
284
393
|
continue;
|
|
285
394
|
}
|
|
286
|
-
lines?.push(
|
|
395
|
+
lines?.push(recordLine(record));
|
|
287
396
|
stats.recorded++;
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
397
|
+
// The serial mode replaces a unit's results by its record's, so that the
|
|
398
|
+
// build's output is what applying the records gives. Reuse keeps what
|
|
399
|
+
// lowering made: its records apply in later builds, which verify mode
|
|
400
|
+
// and the edit-sequence tests check.
|
|
401
|
+
let fn = unit.fn;
|
|
402
|
+
if (reuse === null) {
|
|
403
|
+
const replacing = performance.now();
|
|
404
|
+
tables.forEach((table, index) => {
|
|
405
|
+
const entries = record.tables[table.name];
|
|
406
|
+
if (entries === undefined)
|
|
407
|
+
return;
|
|
408
|
+
table.truncate(unit.before[index]);
|
|
409
|
+
table.apply(entries);
|
|
410
|
+
});
|
|
411
|
+
fn = record.fn === null ? null : decodeRecordFunction(record.fn);
|
|
412
|
+
stats.replaceMs += performance.now() - replacing;
|
|
413
|
+
}
|
|
414
|
+
host.store(name, fn);
|
|
415
|
+
if (stored !== null && reuse.verify)
|
|
416
|
+
reuse.check(name, stored, pending, unit);
|
|
417
|
+
reuse?.note(name, record, false, unit.files);
|
|
418
|
+
}
|
|
419
|
+
if (held === null)
|
|
420
|
+
contents.check();
|
|
421
|
+
}
|
|
422
|
+
/** The content of the tables' entries that recorded units start from
|
|
423
|
+
* (JournalTable.contents): units keep the content of the entries the
|
|
424
|
+
* tables held when they started, since a record carries a unit's new
|
|
425
|
+
* entries, not changes to others. Applying a stored record only adds
|
|
426
|
+
* entries, so the content is taken when the first unit lowers, and not at
|
|
427
|
+
* all when none does. Consecutive waves with nothing but checker prefetches
|
|
428
|
+
* between them share one: the content a wave leaves, as the check finds it,
|
|
429
|
+
* is the content the next one starts with. */
|
|
430
|
+
export class HeldTables {
|
|
431
|
+
tables;
|
|
432
|
+
stats;
|
|
433
|
+
contents = null;
|
|
434
|
+
constructor(tables, stats) {
|
|
435
|
+
this.tables = tables;
|
|
436
|
+
this.stats = stats;
|
|
437
|
+
}
|
|
438
|
+
/** The held content, taken now when it was not yet. */
|
|
439
|
+
take() {
|
|
440
|
+
if (this.contents === null) {
|
|
441
|
+
const taken = performance.now();
|
|
442
|
+
this.contents = this.tables.map((table) => table.contents === undefined ? null : table.contents());
|
|
443
|
+
this.stats.holdMs += performance.now() - taken;
|
|
444
|
+
}
|
|
445
|
+
return this.contents;
|
|
446
|
+
}
|
|
447
|
+
/** Adds the entries past the held ones, when the content is taken. */
|
|
448
|
+
extendTaken() {
|
|
449
|
+
if (this.contents !== null)
|
|
450
|
+
for (const entry of this.contents)
|
|
451
|
+
entry?.extend();
|
|
452
|
+
}
|
|
453
|
+
/** Throws an InternalCompilerError when an entry a table held changed in
|
|
454
|
+
* place since the content was taken, other than by the units that keep
|
|
455
|
+
* their changes (HeldContents.refresh). */
|
|
456
|
+
check() {
|
|
457
|
+
const contents = this.contents;
|
|
458
|
+
if (contents === null)
|
|
459
|
+
return;
|
|
460
|
+
const started = performance.now();
|
|
461
|
+
this.tables.forEach((table, index) => {
|
|
462
|
+
const key = contents[index]?.changed() ?? null;
|
|
463
|
+
if (key !== null)
|
|
464
|
+
throw new InternalCompilerError(`a unit changed ${table.name} entry ${key} in place without naming it, which no unit record carries`);
|
|
294
465
|
});
|
|
295
|
-
|
|
466
|
+
this.stats.holdMs += performance.now() - started;
|
|
296
467
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
468
|
+
}
|
|
469
|
+
/** Applies `record` in place of lowering its unit, at the unit's turn, or
|
|
470
|
+
* returns why the unit has to lower instead. A record applies when every
|
|
471
|
+
* entry it adds agrees with what the tables hold, it names only known
|
|
472
|
+
* tables, every event resolves and every entry it reads is held with the
|
|
473
|
+
* same content. Applying adds its entries, keeps its function (`stored`'s,
|
|
474
|
+
* when the store keeps it apart from the record) and makes its events
|
|
475
|
+
* again. */
|
|
476
|
+
export function applyRecord(host, record, stored) {
|
|
477
|
+
const reasons = recordApplies(host, record);
|
|
478
|
+
if (reasons.length > 0)
|
|
479
|
+
return reasons;
|
|
480
|
+
for (const table of host.tables) {
|
|
481
|
+
const entries = record.tables[table.name];
|
|
482
|
+
if (entries !== undefined)
|
|
483
|
+
table.apply(entries);
|
|
484
|
+
}
|
|
485
|
+
const fn = record.poisoned
|
|
486
|
+
? null
|
|
487
|
+
: stored !== undefined
|
|
488
|
+
? stored()
|
|
489
|
+
: record.fn === null
|
|
490
|
+
? null
|
|
491
|
+
: decodeRecordFunction(record.fn);
|
|
492
|
+
host.keep(record.name, fn, record.events);
|
|
493
|
+
return [];
|
|
494
|
+
}
|
|
495
|
+
/** The entries `record` adds that the tables do not hold yet, by table
|
|
496
|
+
* name: what applying it would add at its unit's turn. */
|
|
497
|
+
export function pendingEntries(host, record) {
|
|
498
|
+
const out = {};
|
|
499
|
+
for (const table of host.tables) {
|
|
500
|
+
const entries = record.tables[table.name];
|
|
501
|
+
if (entries === undefined)
|
|
502
|
+
continue;
|
|
503
|
+
const pending = entries.filter((entry) => table.holds?.(entry) !== true);
|
|
504
|
+
if (pending.length > 0)
|
|
505
|
+
out[table.name] = pending;
|
|
506
|
+
}
|
|
507
|
+
return out;
|
|
508
|
+
}
|
|
509
|
+
/** Why `record` does not apply at its unit's turn (applyRecord), or no
|
|
510
|
+
* reasons when it does. */
|
|
511
|
+
export function recordApplies(host, record) {
|
|
512
|
+
const tables = host.tables;
|
|
513
|
+
for (const table of tables) {
|
|
514
|
+
const entries = record.tables[table.name];
|
|
515
|
+
if (entries === undefined)
|
|
516
|
+
continue;
|
|
517
|
+
if (table.agrees === undefined || table.apply === undefined || !table.agrees(entries))
|
|
518
|
+
return [`disagrees:${table.name}`];
|
|
519
|
+
}
|
|
520
|
+
for (const table of Object.keys(record.tables))
|
|
521
|
+
if (!tables.some((held) => held.name === table))
|
|
522
|
+
return [`unknown table:${table}`];
|
|
523
|
+
for (const event of record.events)
|
|
524
|
+
if (!host.resolves(event))
|
|
525
|
+
return [`event:${event.kind}`];
|
|
526
|
+
for (const table of tables) {
|
|
527
|
+
const reads = record.reads[table.name];
|
|
528
|
+
if (reads === undefined)
|
|
529
|
+
continue;
|
|
530
|
+
if (table.digest === undefined)
|
|
531
|
+
return [`unknown read:${table.name}`];
|
|
532
|
+
const size = table.size();
|
|
533
|
+
for (const [key, digest] of reads)
|
|
534
|
+
if (table.digest(key, size) !== digest)
|
|
535
|
+
return [`read:${table.name}`];
|
|
536
|
+
}
|
|
537
|
+
for (const table of Object.keys(record.reads))
|
|
538
|
+
if (!tables.some((held) => held.name === table))
|
|
539
|
+
return [`unknown read:${table}`];
|
|
540
|
+
return [];
|
|
302
541
|
}
|
|
303
542
|
/** The content of a keyed table's entries (JournalTable.contents): each
|
|
304
|
-
* entry's encoded value,
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
543
|
+
* entry's content (`text`: its encoded value, or the value itself when it
|
|
544
|
+
* is a string or a number), and the order of the keys, since a table only
|
|
545
|
+
* adds entries at the end. An entry is found by its key, or by the name its
|
|
546
|
+
* value holds (`valueName`): a unit names the helper it got, not the key it
|
|
547
|
+
* was looked up by. `text` answers undefined for a key the table does not
|
|
308
548
|
* hold. */
|
|
309
549
|
function keyedContents(size, keys, text, valueName) {
|
|
310
550
|
const texts = new Map();
|
|
311
551
|
let order = [];
|
|
312
552
|
const byName = new Map();
|
|
313
|
-
const differs = (key) => text(key)
|
|
553
|
+
const differs = (key) => !Object.is(text(key), texts.get(key));
|
|
314
554
|
const keyOf = (name) => (texts.has(name) ? name : byName.get(name));
|
|
315
555
|
const held = {
|
|
316
556
|
extend: () => {
|
|
@@ -371,11 +611,11 @@ function keyedContents(size, keys, text, valueName) {
|
|
|
371
611
|
/** An appendable table over a Map from strings to strings, such as helper
|
|
372
612
|
* names by key. */
|
|
373
613
|
export function mapTable(name, map) {
|
|
374
|
-
return codecTable(name, map, (value) => JSON.stringify(value), (text) => JSON.parse(text), (value) => value);
|
|
614
|
+
return codecTable(name, map, (value) => JSON.stringify(value), (text) => JSON.parse(text), (value) => value, (value) => value);
|
|
375
615
|
}
|
|
376
616
|
/** An appendable table over a Map from strings to numbers. */
|
|
377
617
|
export function countTable(name, map) {
|
|
378
|
-
return codecTable(name, map, (value) => String(value), (text) => Number(text));
|
|
618
|
+
return codecTable(name, map, (value) => String(value), (text) => Number(text), null, (value) => value);
|
|
379
619
|
}
|
|
380
620
|
/** An appendable table over a Map from strings to IR data, encoded as
|
|
381
621
|
* JSON. JSON writes a number that is not finite as null, so a value whose
|
|
@@ -389,8 +629,11 @@ export function irDataTable(name, map) {
|
|
|
389
629
|
/** An appendable table over a Map from strings to values that `encode`
|
|
390
630
|
* writes, or answers null for, and `decode` reads back. An entry is its key
|
|
391
631
|
* 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
|
-
|
|
632
|
+
* break. A value that does not encode leaves its unit without a record.
|
|
633
|
+
* `content` is what held contents compare (JournalTable.contents): the
|
|
634
|
+
* encoding, or the value itself for a table of strings or numbers, which
|
|
635
|
+
* only change by being replaced. */
|
|
636
|
+
export function codecTable(name, map, encode, decode, nameOf = null, content = encode) {
|
|
394
637
|
return {
|
|
395
638
|
name,
|
|
396
639
|
size: () => map.size,
|
|
@@ -407,6 +650,12 @@ export function codecTable(name, map, encode, decode, nameOf = null) {
|
|
|
407
650
|
}
|
|
408
651
|
return out;
|
|
409
652
|
},
|
|
653
|
+
agrees: (entries) => entries.every((entry) => {
|
|
654
|
+
const split = entry.indexOf("\n");
|
|
655
|
+
const held = map.get(JSON.parse(entry.slice(0, split)));
|
|
656
|
+
return held === undefined || encode(held) === entry.slice(split + 1);
|
|
657
|
+
}),
|
|
658
|
+
holds: (entry) => map.has(JSON.parse(entry.slice(0, entry.indexOf("\n")))),
|
|
410
659
|
apply: (entries) => {
|
|
411
660
|
for (const entry of entries) {
|
|
412
661
|
const split = entry.indexOf("\n");
|
|
@@ -422,7 +671,7 @@ export function codecTable(name, map, encode, decode, nameOf = null) {
|
|
|
422
671
|
},
|
|
423
672
|
contents: () => keyedContents(() => map.size, () => map.keys(), (key) => {
|
|
424
673
|
const value = map.get(key);
|
|
425
|
-
return value === undefined ? undefined :
|
|
674
|
+
return value === undefined ? undefined : content(value);
|
|
426
675
|
}, (key) => {
|
|
427
676
|
const value = map.get(key);
|
|
428
677
|
return value === undefined || nameOf === null ? null : nameOf(value);
|
|
@@ -435,6 +684,8 @@ export function setTable(name, set) {
|
|
|
435
684
|
name,
|
|
436
685
|
size: () => set.size,
|
|
437
686
|
entries: (from) => [...set].slice(from),
|
|
687
|
+
agrees: () => true,
|
|
688
|
+
holds: (entry) => set.has(entry),
|
|
438
689
|
apply: (entries) => {
|
|
439
690
|
for (const entry of entries)
|
|
440
691
|
set.add(entry);
|
|
@@ -497,6 +748,14 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
497
748
|
}
|
|
498
749
|
return out;
|
|
499
750
|
},
|
|
751
|
+
agrees: (entries) => entries.every((entry) => {
|
|
752
|
+
const fn = decodeUnitFunction(entry);
|
|
753
|
+
if (!has(fn.name))
|
|
754
|
+
return true;
|
|
755
|
+
const index = indexOf(fn.name);
|
|
756
|
+
return index !== undefined && encodeUnitFunction(functions[index]) === entry;
|
|
757
|
+
}),
|
|
758
|
+
holds: (entry) => has(decodeUnitFunction(entry).name),
|
|
500
759
|
apply: (entries) => {
|
|
501
760
|
for (const entry of entries) {
|
|
502
761
|
const fn = decodeUnitFunction(entry);
|
|
@@ -510,15 +769,16 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
510
769
|
functions.pop();
|
|
511
770
|
changed();
|
|
512
771
|
},
|
|
772
|
+
// Held functions are their content digests (heldFunction).
|
|
513
773
|
contents: () => {
|
|
514
774
|
const texts = [];
|
|
515
775
|
const indexes = new Map();
|
|
516
|
-
const differs = (index) => index < functions.length &&
|
|
776
|
+
const differs = (index) => index < functions.length && heldFunction(functions[index]) !== texts[index];
|
|
517
777
|
const held = {
|
|
518
778
|
extend: () => {
|
|
519
779
|
for (let index = texts.length; index < functions.length; index++) {
|
|
520
780
|
const fn = functions[index];
|
|
521
|
-
texts.push(
|
|
781
|
+
texts.push(heldFunction(fn));
|
|
522
782
|
indexes.set(fn.name, index);
|
|
523
783
|
}
|
|
524
784
|
},
|
|
@@ -540,7 +800,7 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
540
800
|
for (const key of keys) {
|
|
541
801
|
const index = indexes.get(key);
|
|
542
802
|
if (index !== undefined && index < functions.length)
|
|
543
|
-
texts[index] =
|
|
803
|
+
texts[index] = heldFunction(functions[index]);
|
|
544
804
|
}
|
|
545
805
|
},
|
|
546
806
|
};
|
|
@@ -549,6 +809,17 @@ export function functionTable(name, functions, has, changed = () => { }) {
|
|
|
549
809
|
},
|
|
550
810
|
};
|
|
551
811
|
}
|
|
812
|
+
/** The content a function table holds of `fn` (HeldContents): its digest
|
|
813
|
+
* (functionDigest), or its entry encoding when the binary encoder cannot
|
|
814
|
+
* write it. */
|
|
815
|
+
function heldFunction(fn) {
|
|
816
|
+
try {
|
|
817
|
+
return functionDigest(fn);
|
|
818
|
+
}
|
|
819
|
+
catch {
|
|
820
|
+
return encodeUnitFunction(fn);
|
|
821
|
+
}
|
|
822
|
+
}
|
|
552
823
|
/** A table whose growth leaves the unit without a record. */
|
|
553
824
|
export function checkedTable(name, size) {
|
|
554
825
|
return { name, size };
|