@scriptc/compiler 0.2.10 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +7 -38
- package/ambient/scriptc-overrides.d.ts +1 -25
- package/ambient/scriptc.d.ts +1 -9
- package/dist/backend/cycle-analysis.test.js +1 -1
- package/dist/backend/cycle-mutability.d.ts +1 -1
- package/dist/backend/cycle-mutability.js +1 -18
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.d.ts +1 -1
- package/dist/backend/executable-features.js +3 -8
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +1 -1
- package/dist/backend/immutability.js +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +0 -2
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.js +1 -1
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/llvm/bigint-wrap.d.ts +4 -0
- package/dist/backend/llvm/bigint-wrap.js +590 -0
- package/dist/backend/llvm/bigint-wrap.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +2 -0
- package/dist/backend/llvm/blocks.js +4 -0
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.js +15 -4
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +14 -3
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +2 -2
- package/dist/backend/llvm/checked-narrows.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +60 -21
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +11 -11
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +7 -5
- package/dist/backend/llvm/common.js +7 -5
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +1 -1
- package/dist/backend/llvm/constant-callbacks.js +13 -31
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +1 -1
- package/dist/backend/llvm/dense-array-access.js +133 -45
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +54 -2
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +2 -1
- package/dist/backend/llvm/dyn.js +4 -73
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +123 -23
- package/dist/backend/llvm/emitter.js +729 -258
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +17 -10
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +120 -43
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +2 -2
- package/dist/backend/llvm/expr-async.test.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +51 -36
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +72 -3
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +159 -30
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +132 -0
- package/dist/backend/llvm/expr-calls.test.js.map +1 -0
- package/dist/backend/llvm/expr-containers.js +25 -8
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +2 -0
- package/dist/backend/llvm/expr-control.js +4 -107
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dispatch.d.ts +1 -2
- package/dist/backend/llvm/expr-dispatch.js +3 -41
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +1 -1
- package/dist/backend/llvm/expr-dynamic.js +39 -31
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +7 -0
- package/dist/backend/llvm/expr-primitives.js +80 -22
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +97 -7
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +9 -0
- package/dist/backend/llvm/expr-records.js +134 -16
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +80 -1
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +51 -2
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/int32-abi.d.ts +31 -0
- package/dist/backend/llvm/int32-abi.js +62 -0
- package/dist/backend/llvm/int32-abi.js.map +1 -0
- package/dist/backend/llvm/int32-abi.test.js +107 -0
- package/dist/backend/llvm/int32-abi.test.js.map +1 -0
- package/dist/backend/llvm/int32-locals.d.ts +30 -0
- package/dist/backend/llvm/int32-locals.js +95 -0
- package/dist/backend/llvm/int32-locals.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +4 -0
- package/dist/backend/llvm/integer-values.js +30 -1
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/integer-views.d.ts +8 -1
- package/dist/backend/llvm/integer-views.js +47 -2
- package/dist/backend/llvm/integer-views.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.d.ts +16 -0
- package/dist/backend/llvm/lazy-captures.js +88 -2
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lazy-captures.test.js +48 -0
- package/dist/backend/llvm/lazy-captures.test.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +14 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +3 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +7 -8
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +21 -2
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +4 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +3 -3
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +7 -0
- package/dist/backend/llvm/map-number-lookup.js +16 -2
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +7 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +25 -8
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +2 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +3 -0
- package/dist/backend/llvm/reference-writes.js +10 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.d.ts +39 -0
- package/dist/backend/llvm/regex-matchers.js +1649 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.test.js +96 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +36 -1
- package/dist/backend/llvm/shapes.js +128 -16
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +3 -3
- package/dist/backend/llvm/stack-unions.test.js +2 -2
- package/dist/backend/llvm/stack-unions.test.js.map +1 -1
- package/dist/backend/llvm/string-construction.test.js +3 -3
- package/dist/backend/llvm/string-construction.test.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +6 -6
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-literal-equality.d.ts +22 -0
- package/dist/backend/llvm/string-literal-equality.js +78 -0
- package/dist/backend/llvm/string-literal-equality.js.map +1 -0
- package/dist/backend/llvm/switch-dispatch.js +59 -13
- package/dist/backend/llvm/switch-dispatch.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +72 -7
- package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.d.ts +1 -0
- package/dist/backend/llvm/union-retype.test.js +229 -0
- package/dist/backend/llvm/union-retype.test.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +17 -0
- package/dist/backend/llvm/wrapping-sums.js +113 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -0
- package/dist/backend/loop-polls.js +1 -0
- package/dist/backend/loop-polls.js.map +1 -1
- package/dist/backend/mangle.d.ts +9 -0
- package/dist/backend/mangle.js +15 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.js +6 -12
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/artifact-stamps.js +0 -2
- package/dist/backend/native/artifact-stamps.js.map +1 -1
- package/dist/backend/native/cache-warm.d.ts +1 -1
- package/dist/backend/native/cache-warm.js +2 -3
- package/dist/backend/native/cache-warm.js.map +1 -1
- package/dist/backend/native/compiler-fingerprint.d.ts +1 -1
- package/dist/backend/native/compiler-fingerprint.js +4 -7
- package/dist/backend/native/compiler-fingerprint.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +3 -28
- package/dist/backend/native/driver.js +1 -3
- package/dist/backend/native/driver.js.map +1 -1
- package/dist/backend/native/executable.d.ts +0 -15
- package/dist/backend/native/executable.js +17 -172
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/tool-identity.js +0 -1
- package/dist/backend/native/tool-identity.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-link-info-core.d.ts +0 -2
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +23 -33
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/publication.test.js +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 +1 -2
- package/dist/backend/runtime-pack-core.js +5 -14
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +3 -8
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +22 -19
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.d.ts +0 -5
- package/dist/backend/target-diagnostics.js +1 -11
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/vendor-archives.d.ts +1 -7
- package/dist/backend/vendor-archives.js +9 -189
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +0 -1
- package/dist/backend/vendor-inputs.js +0 -1
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/warm-cache.js +3 -5
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +4 -8
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +1 -1
- package/dist/cli/usage.d.ts +1 -5
- package/dist/cli/usage.js +4 -9
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +2 -2
- package/dist/compat/fetch-profile.js +16 -25
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +2 -17
- package/dist/contracts/check.js +6 -6
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.d.ts +5 -22
- package/dist/coverage/report.js +12 -76
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.d.ts +3 -3
- package/dist/coverage/surface-manifest.js +22 -27
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -3
- package/dist/coverage/verdict-cache.js +2 -7
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +11 -60
- package/dist/diagnostics/diagnostic.js +39 -118
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +3 -4
- package/dist/diagnostics/envelope.js +0 -9
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/envelope.test.js +1 -1
- package/dist/diagnostics/envelope.test.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +0 -3
- package/dist/executable/executable-cache.js +2 -4
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +0 -4
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +5 -2
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +10 -10
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/cjs-syntax.js +0 -88
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +1 -1
- package/dist/frontend/dts-paths.js +1 -1
- package/dist/frontend/lowering/abstract-equality.js +1 -4
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +14 -0
- package/dist/frontend/lowering/array-values.js +33 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.js +0 -13
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +0 -4
- package/dist/frontend/lowering/builtins/crypto.js +0 -4
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +1 -39
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +0 -15
- package/dist/frontend/lowering/builtins/module-resolution.js +5 -44
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +0 -6
- package/dist/frontend/lowering/builtins/numbers.js +6 -57
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +4 -67
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/workers.js +1 -1
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +1 -37
- package/dist/frontend/lowering/call-arguments.js +11 -94
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +1 -6
- package/dist/frontend/lowering/call-signatures.js +16 -68
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +19 -4
- package/dist/frontend/lowering/class-dynamic-dispatch.js +168 -98
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +44 -4
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +0 -2
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +1 -1
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +5 -35
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +0 -1
- package/dist/frontend/lowering/coercions/state.js +0 -1
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -4
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +2 -12
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +0 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +49 -28
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +2 -3
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +10 -54
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.d.ts +54 -0
- package/dist/frontend/lowering/containers/array-pipelines.js +1827 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.js +0 -1
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +2 -10
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +1 -6
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.d.ts +10 -0
- package/dist/frontend/lowering/containers/exec-result-uses.js +88 -0
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.js +0 -2
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +0 -6
- package/dist/frontend/lowering/containers/string-and-regexp.js +17 -17
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.d.ts +2 -1
- package/dist/frontend/lowering/containers/string-replacement.js +32 -136
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +33 -0
- package/dist/frontend/lowering/devirtualize.js +199 -0
- package/dist/frontend/lowering/devirtualize.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +0 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/native-proxy.js +1 -1
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +55 -8
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -8
- package/dist/frontend/lowering/expressions/object-literals.js +8 -35
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +0 -4
- package/dist/frontend/lowering/expressions/optional-chains.js +3 -66
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/function-context.js +0 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.js +0 -1
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/identifier-uses.d.ts +7 -0
- package/dist/frontend/lowering/identifier-uses.js +23 -0
- package/dist/frontend/lowering/identifier-uses.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +51 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +10 -77
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.js +14 -10
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +2 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +2 -3
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +2 -27
- package/dist/frontend/lowering/lower-calls.js +111 -493
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +12 -60
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.js +2 -3
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.d.ts +14 -0
- package/dist/frontend/lowering/lower-console.js +195 -0
- package/dist/frontend/lowering/lower-console.js.map +1 -0
- package/dist/frontend/lowering/lower-enums.js +5 -8
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.js +3 -4
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +3 -5
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +0 -8
- package/dist/frontend/lowering/lower-exprs.js +180 -905
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +9 -8
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +10 -0
- package/dist/frontend/lowering/lower-generators.js +108 -41
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +1 -50
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +0 -43
- package/dist/frontend/lowering/lower-modules.js +29 -329
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +5 -5
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +0 -30
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +98 -0
- package/dist/frontend/lowering/{lower-island.js → lower-stdlib.js} +97 -1160
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -0
- package/dist/frontend/lowering/lower-stmts.d.ts +0 -16
- package/dist/frontend/lowering/lower-stmts.js +58 -1016
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +14 -13
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +42 -155
- package/dist/frontend/lowering/lowerer.js +192 -816
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +4 -51
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +16 -0
- package/dist/frontend/lowering/nan-coded-reads.js +108 -1
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +1 -1
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/optional-arguments.js +0 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-bounds.d.ts +4 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +2 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-bounds.test.js +27 -0
- package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +2 -18
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.js +1 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +6 -45
- package/dist/frontend/lowering/surfaces.js +8 -73
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +6 -1
- package/dist/frontend/lowering/union-retag.js +64 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +46 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/module-syntax.d.ts +0 -3
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-node.d.ts +0 -7
- package/dist/frontend/npm-node.js +0 -7
- package/dist/frontend/npm-node.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +6 -82
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +1 -1
- package/dist/frontend/npm-static.js +6 -71
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +3 -319
- package/dist/frontend/npm.js +6 -1007
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +2 -197
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.js +1 -2
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +3 -11
- package/dist/frontend/pipeline.js +37 -56
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +12 -6
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program.d.ts +0 -34
- package/dist/frontend/program.js +12 -97
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/provenance-core.d.ts +0 -4
- package/dist/frontend/provenance-core.js +4 -37
- package/dist/frontend/provenance-core.js.map +1 -1
- package/dist/frontend/provenance-registry.d.ts +0 -4
- package/dist/frontend/provenance-registry.js +0 -20
- package/dist/frontend/provenance-registry.js.map +1 -1
- package/dist/frontend/resolve.d.ts +0 -12
- package/dist/frontend/resolve.js +0 -34
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/runtime-resolve.js +2 -2
- package/dist/frontend/runtime-resolve.js.map +1 -1
- package/dist/frontend/services-node.js +2 -3
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services.d.ts +1 -8
- package/dist/frontend/services.js +2 -22
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +0 -38
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/tsc-codes.js +0 -11
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +2 -27
- package/dist/frontend/type-mapper.js +58 -156
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +7 -10
- 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/builtin-effects.js +2 -5
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +13 -56
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.d.ts +12 -0
- package/dist/ir/function-references.js +29 -0
- package/dist/ir/function-references.js.map +1 -0
- package/dist/ir/function-references.test.d.ts +1 -0
- package/dist/ir/function-references.test.js +276 -0
- package/dist/ir/function-references.test.js.map +1 -0
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +10 -7
- package/dist/ir/int32-slots.js +219 -68
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +39 -2
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +4 -4
- package/dist/ir/integer-ranges.js +89 -64
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +71 -9
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +1 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +64 -290
- package/dist/ir/ir.js +11 -259
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +2 -7
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +3 -30
- package/dist/ir/runtime-features.js +8 -43
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +3 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +4 -21
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +66 -213
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +31 -13
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/prepare.js +5 -20
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +0 -2
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.test.js +2 -4
- package/dist/native/compiler.test.js.map +1 -1
- package/dist/native/prepare.js +2 -4
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +2 -16
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +0 -3
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/startup-cache.js +0 -2
- package/dist/startup-cache.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +80 -104
- package/dist/backend/llvm/expr-island.d.ts +0 -15
- package/dist/backend/llvm/expr-island.js +0 -709
- package/dist/backend/llvm/expr-island.js.map +0 -1
- package/dist/frontend/lowering/coercions/island.d.ts +0 -37
- package/dist/frontend/lowering/coercions/island.js +0 -350
- package/dist/frontend/lowering/coercions/island.js.map +0 -1
- package/dist/frontend/lowering/lower-island.d.ts +0 -229
- package/dist/frontend/lowering/lower-island.js.map +0 -1
- package/dist/frontend/lowering/lower-island.test.js +0 -56
- package/dist/frontend/lowering/lower-island.test.js.map +0 -1
- package/dist/frontend/npm-fetch-analysis.d.ts +0 -17
- package/dist/frontend/npm-fetch-analysis.js +0 -109
- package/dist/frontend/npm-fetch-analysis.js.map +0 -1
- package/dist/frontend/npm-fetch-analysis.test.js +0 -130
- package/dist/frontend/npm-fetch-analysis.test.js.map +0 -1
- package/dist/frontend/npm-fetch-node.d.ts +0 -2
- package/dist/frontend/npm-fetch-node.js +0 -12
- package/dist/frontend/npm-fetch-node.js.map +0 -1
- package/dist/frontend/npm-fetch-syntax.d.ts +0 -6
- package/dist/frontend/npm-fetch-syntax.js +0 -202
- package/dist/frontend/npm-fetch-syntax.js.map +0 -1
- package/dist/native/runtime-typescript.d.ts +0 -4
- package/dist/native/runtime-typescript.js +0 -74
- package/dist/native/runtime-typescript.js.map +0 -1
- package/dist/native/runtime-typescript.test.js +0 -41
- package/dist/native/runtime-typescript.test.js.map +0 -1
- /package/dist/{frontend/lowering/lower-island.test.d.ts → backend/llvm/expr-calls.test.d.ts} +0 -0
- /package/dist/{frontend/npm-fetch-analysis.test.d.ts → backend/llvm/int32-abi.test.d.ts} +0 -0
- /package/dist/{native/runtime-typescript.test.d.ts → backend/llvm/regex-matchers.test.d.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect, test } from "vitest";
|
|
2
2
|
import { analyzeInt32Slots } from "./int32-slots.js";
|
|
3
|
-
import { DYN, F64, STRING, VOID, } from "./ir.js";
|
|
3
|
+
import { BOOL, DYN, F64, STRING, VOID, } from "./ir.js";
|
|
4
4
|
const loc = { file: "test.ts", start: 0, end: 0 };
|
|
5
5
|
const obj = (className) => ({ kind: "object", className });
|
|
6
6
|
const num = (value) => ({ loc, kind: "numLit", value, type: F64 });
|
|
@@ -18,6 +18,22 @@ const bin = (op, left, right) => ({
|
|
|
18
18
|
right,
|
|
19
19
|
type: F64,
|
|
20
20
|
});
|
|
21
|
+
const cmp = (op, left, right) => ({
|
|
22
|
+
loc,
|
|
23
|
+
kind: "bin",
|
|
24
|
+
op,
|
|
25
|
+
left,
|
|
26
|
+
right,
|
|
27
|
+
type: BOOL,
|
|
28
|
+
});
|
|
29
|
+
const cond = (test, then, else_) => ({
|
|
30
|
+
loc,
|
|
31
|
+
kind: "ternary",
|
|
32
|
+
cond: test,
|
|
33
|
+
then,
|
|
34
|
+
else_,
|
|
35
|
+
type: then.type,
|
|
36
|
+
});
|
|
21
37
|
const get = (target, className, field) => ({
|
|
22
38
|
loc,
|
|
23
39
|
kind: "fieldGet",
|
|
@@ -66,7 +82,7 @@ const newOf = (className, args) => ({
|
|
|
66
82
|
type: obj(className),
|
|
67
83
|
});
|
|
68
84
|
const mod = (classes, functions) => ({
|
|
69
|
-
irVersion:
|
|
85
|
+
irVersion: 16,
|
|
70
86
|
sourceFile: "test.ts",
|
|
71
87
|
entry: "%main",
|
|
72
88
|
classes,
|
|
@@ -246,4 +262,25 @@ test("worker builds specialize int32 fields like ordinary executables", () => {
|
|
|
246
262
|
expect(analyzeInt32Slots(program).isField("T", "x")).toBe(true);
|
|
247
263
|
expect(analyzeInt32Slots({ ...program, workers: true }).isField("T", "x")).toBe(true);
|
|
248
264
|
});
|
|
265
|
+
test("counting-down recursion proves its parameter from the call-site ranges", () => {
|
|
266
|
+
// count(d) = d === 0 ? 0 : count(d - 1): `d - 1` leaves int32 only for
|
|
267
|
+
// the smallest int32, which no call passes.
|
|
268
|
+
const count = fn("count", [{ id: "d" }], [ret(cond(cmp("===", ref("d"), num(0)), num(0), call("count", [bin("-", ref("d"), num(1))])))], F64);
|
|
269
|
+
// even/odd count down through each other.
|
|
270
|
+
const even = fn("even", [{ id: "n" }], [ret(cond(cmp("!==", ref("n"), num(0)), call("odd", [bin("-", ref("n"), num(1))]), num(1)))], F64);
|
|
271
|
+
const odd = fn("odd", [{ id: "n" }], [ret(cond(cmp("!==", ref("n"), num(0)), call("even", [bin("-", ref("n"), num(1))]), num(0)))], F64);
|
|
272
|
+
const user = (args) => fn("user", [], args.flatMap((a) => [stmt(call("count", [num(a)])), stmt(call("even", [num(a)]))]));
|
|
273
|
+
const slots = analyzeInt32Slots(mod([], [count, even, odd, user([18, 3])]));
|
|
274
|
+
// Ranges grow from the calls, then widen down to 0.
|
|
275
|
+
expect(slots.facts("count").params?.get("d")).toEqual({ min: 0, max: 18 });
|
|
276
|
+
expect(slots.facts("even").params?.get("n")).toEqual({ min: 0, max: 18 });
|
|
277
|
+
expect(slots.facts("odd").params?.get("n")).toEqual({ min: 0, max: 17 });
|
|
278
|
+
// A negative start counts down past the smallest int32.
|
|
279
|
+
const negative = analyzeInt32Slots(mod([], [count, even, odd, user([18, -1])]));
|
|
280
|
+
expect(negative.facts("count").params?.has("d") ?? false).toBe(false);
|
|
281
|
+
expect(negative.facts("even").params?.has("n") ?? false).toBe(false);
|
|
282
|
+
// A fraction never reaches the parameter either.
|
|
283
|
+
const fraction = analyzeInt32Slots(mod([], [count, even, odd, user([0.5])]));
|
|
284
|
+
expect(fraction.facts("count").params?.has("d") ?? false).toBe(false);
|
|
285
|
+
});
|
|
249
286
|
//# sourceMappingURL=int32-slots.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int32-slots.test.js","sourceRoot":"","sources":["../../src/ir/int32-slots.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"int32-slots.test.js","sourceRoot":"","sources":["../../src/ir/int32-slots.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,9 +43,9 @@ export interface IntegerSlotFacts {
|
|
|
43
43
|
* but argument expressions can; unknown evaluation forms invalidate all
|
|
44
44
|
* syntactically written slots before their children are inspected. Loops
|
|
45
45
|
* discard loop-carried facts and retain only invariant or induction facts,
|
|
46
|
-
* except
|
|
47
|
-
* and whose every write inside the region is
|
|
48
|
-
* (bitwise results,
|
|
49
|
-
* full int32 range across the region. Suspensions and captured bindings
|
|
46
|
+
* except closed locals: a local whose region-entry value is an int32 (a
|
|
47
|
+
* uint32) and whose every write inside the region is one by construction
|
|
48
|
+
* (bitwise results, `>>>` results for uint32, literals and slots in range,
|
|
49
|
+
* other such locals) remains a full int32 (uint32) range across the region. Suspensions and captured bindings
|
|
50
50
|
* deliberately remain outside the proof. */
|
|
51
51
|
export declare function analyzeIntegerRanges(fn: IrFunction, slots?: IntegerSlotFacts): IntegerRanges;
|
|
@@ -181,10 +181,10 @@ export function bitwiseIdentityOperand(e) {
|
|
|
181
181
|
* but argument expressions can; unknown evaluation forms invalidate all
|
|
182
182
|
* syntactically written slots before their children are inspected. Loops
|
|
183
183
|
* discard loop-carried facts and retain only invariant or induction facts,
|
|
184
|
-
* except
|
|
185
|
-
* and whose every write inside the region is
|
|
186
|
-
* (bitwise results,
|
|
187
|
-
* full int32 range across the region. Suspensions and captured bindings
|
|
184
|
+
* except closed locals: a local whose region-entry value is an int32 (a
|
|
185
|
+
* uint32) and whose every write inside the region is one by construction
|
|
186
|
+
* (bitwise results, `>>>` results for uint32, literals and slots in range,
|
|
187
|
+
* other such locals) remains a full int32 (uint32) range across the region. Suspensions and captured bindings
|
|
188
188
|
* deliberately remain outside the proof. */
|
|
189
189
|
export function analyzeIntegerRanges(fn, slots = {}) {
|
|
190
190
|
const ranges = new Map();
|
|
@@ -253,71 +253,88 @@ export function analyzeIntegerRanges(fn, slots = {}) {
|
|
|
253
253
|
return { values, declared };
|
|
254
254
|
}
|
|
255
255
|
let functionWrites = null;
|
|
256
|
-
/** Locals that hold an int32 everywhere inside and after a
|
|
257
|
-
* control flow this analysis does not follow
|
|
258
|
-
*
|
|
259
|
-
*
|
|
260
|
-
*
|
|
261
|
-
*
|
|
256
|
+
/** Locals that hold an int32 or a uint32 everywhere inside and after a
|
|
257
|
+
* region whose control flow this analysis does not follow, with that
|
|
258
|
+
* range. A candidate either enters with a fact inside the range or is
|
|
259
|
+
* declared inside the region and written only there (definite assignment:
|
|
260
|
+
* every read follows one of those writes). For each range, the greatest
|
|
261
|
+
* fixpoint keeps candidates whose every write lands in it by construction
|
|
262
|
+
* given the other candidates; the two closures are independent, so a local
|
|
263
|
+
* written both ways (`x | 0` and `x >>> 0`) closes under neither. */
|
|
262
264
|
function closedLocals(nodes, entry) {
|
|
263
265
|
const { values, declared } = regionWrites(nodes);
|
|
264
|
-
const
|
|
266
|
+
const result = new Map();
|
|
265
267
|
if (values.size === 0)
|
|
266
|
-
return
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
if (
|
|
268
|
+
return result;
|
|
269
|
+
const within = (bound, range) => !!range && range.min >= bound.min && range.max <= bound.max;
|
|
270
|
+
const closure = (bound) => {
|
|
271
|
+
const signed = bound === SIGNED;
|
|
272
|
+
const closed = new Set();
|
|
273
|
+
for (const [id, list] of values) {
|
|
274
|
+
if (within(bound, entry.get(id)))
|
|
273
275
|
closed.add(id);
|
|
276
|
+
else if (declared.has(id)) {
|
|
277
|
+
functionWrites ??= regionWrites(fn.body).values;
|
|
278
|
+
if (functionWrites.get(id)?.length === list.length)
|
|
279
|
+
closed.add(id);
|
|
280
|
+
}
|
|
274
281
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if (e.type.kind !== "f64")
|
|
278
|
-
return false;
|
|
279
|
-
switch (e.kind) {
|
|
280
|
-
case "numLit":
|
|
281
|
-
return (Number.isInteger(e.value) &&
|
|
282
|
-
withinInt32({ min: e.value, max: e.value }) &&
|
|
283
|
-
!Object.is(e.value, -0));
|
|
284
|
-
case "bin":
|
|
285
|
-
return e.op === "&" || e.op === "|" || e.op === "^" || e.op === "<<" || e.op === ">>";
|
|
286
|
-
case "unary":
|
|
287
|
-
return e.op === "~";
|
|
288
|
-
case "libCall":
|
|
289
|
-
return e.fn === "math.imul" || e.fn === "math.clz32";
|
|
290
|
-
case "ternary":
|
|
291
|
-
return int32(e.then) && int32(e.else_);
|
|
292
|
-
case "logical":
|
|
293
|
-
return int32(e.left) && int32(e.right);
|
|
294
|
-
case "assignExpr":
|
|
295
|
-
return int32(e.value);
|
|
296
|
-
case "seqExpr":
|
|
297
|
-
return int32(e.result);
|
|
298
|
-
case "varRef":
|
|
299
|
-
return (closed.has(e.localId) ||
|
|
300
|
-
(!values.has(e.localId) && withinInt32(entry.get(e.localId))) ||
|
|
301
|
-
withinInt32(boxedRange(e.localId)));
|
|
302
|
-
case "fieldGet":
|
|
303
|
-
case "call":
|
|
304
|
-
return withinInt32(slotRange(e));
|
|
305
|
-
default:
|
|
282
|
+
const member = (e) => {
|
|
283
|
+
if (e.type.kind !== "f64")
|
|
306
284
|
return false;
|
|
285
|
+
switch (e.kind) {
|
|
286
|
+
case "numLit":
|
|
287
|
+
return (Number.isInteger(e.value) &&
|
|
288
|
+
within(bound, { min: e.value, max: e.value }) &&
|
|
289
|
+
!Object.is(e.value, -0));
|
|
290
|
+
case "bin":
|
|
291
|
+
return signed
|
|
292
|
+
? e.op === "&" || e.op === "|" || e.op === "^" || e.op === "<<" || e.op === ">>"
|
|
293
|
+
: e.op === ">>>";
|
|
294
|
+
case "unary":
|
|
295
|
+
return signed && e.op === "~";
|
|
296
|
+
case "libCall":
|
|
297
|
+
return (signed && e.fn === "math.imul") || e.fn === "math.clz32";
|
|
298
|
+
case "ternary":
|
|
299
|
+
return member(e.then) && member(e.else_);
|
|
300
|
+
case "logical":
|
|
301
|
+
return member(e.left) && member(e.right);
|
|
302
|
+
case "assignExpr":
|
|
303
|
+
return member(e.value);
|
|
304
|
+
case "seqExpr":
|
|
305
|
+
return member(e.result);
|
|
306
|
+
case "varRef":
|
|
307
|
+
return (closed.has(e.localId) ||
|
|
308
|
+
(!values.has(e.localId) && within(bound, entry.get(e.localId))) ||
|
|
309
|
+
within(bound, boxedRange(e.localId)));
|
|
310
|
+
case "fieldGet":
|
|
311
|
+
case "call":
|
|
312
|
+
return within(bound, slotRange(e));
|
|
313
|
+
default:
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
for (let changed = true; changed;) {
|
|
318
|
+
changed = false;
|
|
319
|
+
for (const id of closed)
|
|
320
|
+
if (values.get(id).some((value) => value === null || !member(value))) {
|
|
321
|
+
closed.delete(id);
|
|
322
|
+
changed = true;
|
|
323
|
+
}
|
|
307
324
|
}
|
|
325
|
+
return closed;
|
|
308
326
|
};
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
327
|
+
const int32 = closure(SIGNED), uint32 = closure(UNSIGNED);
|
|
328
|
+
for (const id of entry.keys()) {
|
|
329
|
+
const signed = int32.has(id), unsigned = uint32.has(id);
|
|
330
|
+
if (signed && unsigned)
|
|
331
|
+
result.set(id, { min: 0, max: SIGNED.max });
|
|
332
|
+
else if (signed)
|
|
333
|
+
result.set(id, SIGNED);
|
|
334
|
+
else if (unsigned)
|
|
335
|
+
result.set(id, UNSIGNED);
|
|
316
336
|
}
|
|
317
|
-
|
|
318
|
-
if (!entry.has(id))
|
|
319
|
-
closed.delete(id);
|
|
320
|
-
return closed;
|
|
337
|
+
return result;
|
|
321
338
|
}
|
|
322
339
|
function remember(e, range) {
|
|
323
340
|
// Shared IR objects have to satisfy the proof at every occurrence.
|
|
@@ -358,13 +375,14 @@ export function analyzeIntegerRanges(fn, slots = {}) {
|
|
|
358
375
|
for (const id of writes(node))
|
|
359
376
|
facts.delete(id);
|
|
360
377
|
}
|
|
361
|
-
/** Invalidate the region's writes, keeping int32-
|
|
362
|
-
* `entry` is the state before any of the
|
|
378
|
+
/** Invalidate the region's writes, keeping int32- and uint32-closed
|
|
379
|
+
* locals at their closed range. `entry` is the state before any of the
|
|
380
|
+
* region's writes can run. */
|
|
363
381
|
function havoc(facts, nodes, entry) {
|
|
364
382
|
const closed = closedLocals(nodes, entry);
|
|
365
383
|
invalidate(facts, nodes);
|
|
366
|
-
for (const id of closed)
|
|
367
|
-
facts.set(id,
|
|
384
|
+
for (const [id, range] of closed)
|
|
385
|
+
facts.set(id, range);
|
|
368
386
|
}
|
|
369
387
|
function refine(condition, truth, facts) {
|
|
370
388
|
// A comparison constrains operand snapshots. If evaluating it writes a
|
|
@@ -420,6 +438,13 @@ export function analyzeIntegerRanges(fn, slots = {}) {
|
|
|
420
438
|
min = Math.max(min, boundRange.min);
|
|
421
439
|
max = Math.min(max, boundRange.max);
|
|
422
440
|
}
|
|
441
|
+
else if (op === "!==" && boundRange.min === boundRange.max) {
|
|
442
|
+
// Excluding one value narrows a range that ends at it.
|
|
443
|
+
if (min === boundRange.min)
|
|
444
|
+
min += 1;
|
|
445
|
+
else if (max === boundRange.max)
|
|
446
|
+
max -= 1;
|
|
447
|
+
}
|
|
423
448
|
if (min <= max && Number.isInteger(min) && Number.isInteger(max))
|
|
424
449
|
facts.set(ref.localId, { min, max });
|
|
425
450
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integer-ranges.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integer-ranges.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,6 +95,8 @@ test("shared expression objects never inherit a proof from another occurrence",
|
|
|
95
95
|
const condition = (op, left, right) => ({ loc, kind: "bin", op, left, right, type: BOOL });
|
|
96
96
|
const observe = (value) => ({ loc, kind: "exprStmt", expr: value });
|
|
97
97
|
const INT32 = { min: -2147483648, max: 2147483647 };
|
|
98
|
+
const UINT32 = { min: 0, max: 4294967295 };
|
|
99
|
+
const INT32_AND_UINT32 = { min: 0, max: 2147483647 };
|
|
98
100
|
test("joins branch assignments and refines signed masks on guarded paths", () => {
|
|
99
101
|
const inside = ref(), joined = ref();
|
|
100
102
|
const ranges = analyzeIntegerRanges(fn([
|
|
@@ -188,11 +190,12 @@ test("labeled exits and do-while conditions cannot lend facts to skipped paths",
|
|
|
188
190
|
body: [observe(firstBody)],
|
|
189
191
|
},
|
|
190
192
|
]));
|
|
191
|
-
// The break skips `x = 1`; both writes are int32 literals,
|
|
192
|
-
// keeps only the
|
|
193
|
-
|
|
193
|
+
// The break skips `x = 1`; both writes are non-negative int32 literals,
|
|
194
|
+
// so the join keeps only the closed range (int32 and uint32 at once),
|
|
195
|
+
// never the skipped path's fact.
|
|
196
|
+
expect(ranges.get(afterBlock)).toEqual(INT32_AND_UINT32);
|
|
194
197
|
// Likewise the condition's `x = 0` does not reach the first iteration.
|
|
195
|
-
expect(ranges.get(firstBody)).toEqual(
|
|
198
|
+
expect(ranges.get(firstBody)).toEqual(INT32_AND_UINT32);
|
|
196
199
|
});
|
|
197
200
|
test("unit induction is exact but loop-carried assignments remain unknown", () => {
|
|
198
201
|
const counter = ref(), carried = ref("state"), after = ref();
|
|
@@ -316,11 +319,9 @@ test("int32-closed locals keep the int32 range across loops and switches", () =>
|
|
|
316
319
|
const closedRanges = analyzeIntegerRanges(closed.f);
|
|
317
320
|
expect(closedRanges.get(closed.inside)).toEqual(INT32);
|
|
318
321
|
expect(closedRanges.get(closed.after)).toEqual(INT32);
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
bin(">>>", ref(), num(0)),
|
|
323
|
-
]) {
|
|
322
|
+
const unsigned = loop(bin(">>>", ref(), num(0)));
|
|
323
|
+
expect(analyzeIntegerRanges(unsigned.f).get(unsigned.after)).toEqual(UINT32);
|
|
324
|
+
for (const write of [bin("+", ref(), num(1)), bin("/", ref(), num(2))]) {
|
|
324
325
|
const open = loop(write);
|
|
325
326
|
expect(analyzeIntegerRanges(open.f).get(open.after), write.kind).toBeNull();
|
|
326
327
|
}
|
|
@@ -340,6 +341,67 @@ test("int32-closed locals keep the int32 range across loops and switches", () =>
|
|
|
340
341
|
]));
|
|
341
342
|
expect(switched.get(afterSwitch)).toEqual(INT32);
|
|
342
343
|
});
|
|
344
|
+
test("uint32-closed locals keep the uint32 range across loop back edges", () => {
|
|
345
|
+
// for (let i = 0; i < n; i++) { v = unknown >>> 0; acc = (acc + v) >>> 0; ... }
|
|
346
|
+
const loop = (start, writes) => {
|
|
347
|
+
const inside = ref("acc"), sum = bin("+", inside, ref("v")), after = ref("acc");
|
|
348
|
+
const set = (localId, value) => ({
|
|
349
|
+
loc,
|
|
350
|
+
kind: "assign",
|
|
351
|
+
localId,
|
|
352
|
+
value,
|
|
353
|
+
});
|
|
354
|
+
const f = fn([
|
|
355
|
+
...(start ? [set("acc", start)] : []),
|
|
356
|
+
{
|
|
357
|
+
loc,
|
|
358
|
+
kind: "for",
|
|
359
|
+
init: { loc, kind: "varDecl", localId: "i", init: num(0) },
|
|
360
|
+
cond: condition("<", ref("i"), ref("n")),
|
|
361
|
+
update: set("i", bin("+", ref("i"), num(1))),
|
|
362
|
+
body: [
|
|
363
|
+
set("v", bin(">>>", ref("unknown"), num(0))),
|
|
364
|
+
set("acc", bin(">>>", sum, num(0))),
|
|
365
|
+
...writes.map((value) => set("acc", value)),
|
|
366
|
+
],
|
|
367
|
+
},
|
|
368
|
+
observe(after),
|
|
369
|
+
]);
|
|
370
|
+
for (const id of ["acc", "i", "v", "n"])
|
|
371
|
+
f.locals.push({ id, name: id, type: F64, mutable: true });
|
|
372
|
+
return { inside, sum, after, ranges: analyzeIntegerRanges(f) };
|
|
373
|
+
};
|
|
374
|
+
const closed = loop(num(0), []);
|
|
375
|
+
expect(closed.ranges.get(closed.inside)).toEqual(UINT32);
|
|
376
|
+
// The add before `>>> 0` stays exact: it can exceed 2^32.
|
|
377
|
+
expect(closed.ranges.get(closed.sum)).toEqual({ min: 0, max: 2 * 4294967295 });
|
|
378
|
+
expect(closed.ranges.get(closed.after)).toEqual(UINT32);
|
|
379
|
+
// A uint32 literal above 2^31 and a `>>>` chain through the closed local
|
|
380
|
+
// keep the closure.
|
|
381
|
+
for (const write of [num(4294967295), bin(">>>", ref("acc"), num(1))]) {
|
|
382
|
+
const kept = loop(num(2147483648), [write]);
|
|
383
|
+
expect(kept.ranges.get(kept.inside)).toEqual(UINT32);
|
|
384
|
+
expect(kept.ranges.get(kept.after)).toEqual(UINT32);
|
|
385
|
+
}
|
|
386
|
+
// Mixing signed and unsigned writes, any other write, an entry outside
|
|
387
|
+
// uint32 or an unknown entry leaves the local unknown at the loop head.
|
|
388
|
+
const open = [
|
|
389
|
+
[num(0), bin("|", ref("acc"), num(0))],
|
|
390
|
+
[num(0), num(-1)],
|
|
391
|
+
[num(0), num(4294967296)],
|
|
392
|
+
[num(0), num(-0)],
|
|
393
|
+
[num(0), num(0.5)],
|
|
394
|
+
[num(0), bin("+", ref("acc"), num(1))],
|
|
395
|
+
[num(-1), null],
|
|
396
|
+
[num(4294967296), null],
|
|
397
|
+
[null, null],
|
|
398
|
+
];
|
|
399
|
+
for (const [start, write] of open) {
|
|
400
|
+
const result = loop(start, write ? [write] : []);
|
|
401
|
+
expect(result.ranges.get(result.inside)).toBeNull();
|
|
402
|
+
expect(result.ranges.get(result.after)).toBeNull();
|
|
403
|
+
}
|
|
404
|
+
});
|
|
343
405
|
test("whole-program slot facts seed parameters, field reads and call results", () => {
|
|
344
406
|
const field = {
|
|
345
407
|
loc,
|