@scriptc/compiler 0.3.2 → 0.3.4
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 +1202 -64
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.js +24 -10
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +47 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +8 -0
- package/dist/backend/llvm/array-search.js +52 -0
- package/dist/backend/llvm/array-search.js.map +1 -0
- package/dist/backend/llvm/array-search.test.d.ts +1 -0
- package/dist/backend/llvm/array-search.test.js +72 -0
- package/dist/backend/llvm/array-search.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +12 -1
- package/dist/backend/llvm/call-lifetimes.js +41 -11
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +85 -1
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +87 -36
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +6 -1
- package/dist/backend/llvm/common.js +8 -1
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +3 -3
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +44 -1
- package/dist/backend/llvm/dyn.js +251 -36
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +77 -14
- package/dist/backend/llvm/emitter.js +461 -108
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +26 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +52 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +169 -63
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +16 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +57 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +57 -19
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +19 -8
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +28 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +8 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +35 -32
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/inline-unions.d.ts +48 -0
- package/dist/backend/llvm/inline-unions.js +134 -0
- package/dist/backend/llvm/inline-unions.js.map +1 -0
- package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
- package/dist/backend/llvm/inline-unions.test.js +124 -0
- package/dist/backend/llvm/inline-unions.test.js.map +1 -0
- package/dist/backend/llvm/integer-remainder.d.ts +28 -5
- package/dist/backend/llvm/integer-remainder.js +80 -9
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +10 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +255 -29
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +176 -7
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +25 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +2 -2
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +212 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +184 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +7 -3
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +6 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +2 -0
- package/dist/backend/llvm/local-union-storage.js +5 -0
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
- package/dist/backend/llvm/loop-array-borrows.js +93 -13
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +24 -0
- package/dist/backend/llvm/map-number-lookup.js +88 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
- package/dist/backend/llvm/map-number-lookup.test.js +158 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
- package/dist/backend/llvm/map-read-lifetimes.js +90 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +9 -0
- package/dist/backend/llvm/publish.js +25 -4
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +8 -5
- package/dist/backend/llvm/record-results.js +20 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +13 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +19 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +5 -1
- package/dist/backend/llvm/regions.js +24 -10
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +56 -10
- package/dist/backend/llvm/shapes.js +178 -39
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +61 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.js +16 -4
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +11 -0
- package/dist/backend/llvm/walkers.js +106 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +13 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -2
- package/dist/backend/native/executable.js +27 -8
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +1 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/publication.js +3 -1
- 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-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +11 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +4 -1
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.js +4 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +2 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +1 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +6 -5
- package/dist/diagnostics/diagnostic.js +7 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/comptime-node.js +2 -2
- package/dist/frontend/comptime-node.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +8 -4
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
- package/dist/frontend/lowering/builtins/blob.js +167 -0
- package/dist/frontend/lowering/builtins/blob.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +178 -4
- 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/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +526 -121
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
- package/dist/frontend/lowering/builtins/filesystem.js +97 -15
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
- package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
- package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
- package/dist/frontend/lowering/builtins/key-object.js +56 -0
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +44 -11
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
- package/dist/frontend/lowering/builtins/performance.js +340 -5
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +107 -14
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
- package/dist/frontend/lowering/builtins/properties.js +39 -11
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
- package/dist/frontend/lowering/builtins/readline.js +266 -90
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +8 -0
- package/dist/frontend/lowering/builtins/url.js +36 -0
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +1 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +26 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +171 -13
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +3 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.js +6 -5
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
- package/dist/frontend/lowering/containers/array-methods.js +43 -2
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +38 -26
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
- package/dist/frontend/lowering/containers/for-of.js +5 -1
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +77 -12
- package/dist/frontend/lowering/crypto-tables.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +16 -12
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +2 -2
- package/dist/frontend/lowering/generic-functions.js +2 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
- package/dist/frontend/lowering/lower-array-sort.js +561 -191
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +702 -63
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +259 -4
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +118 -12
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +11 -2
- package/dist/frontend/lowering/lower-classes.js +76 -9
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +4 -4
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +77 -52
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
- package/dist/frontend/lowering/lower-event-target.js +362 -0
- package/dist/frontend/lowering/lower-event-target.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.js +2 -2
- package/dist/frontend/lowering/lower-exprs.js +124 -22
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +240 -49
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +14 -3
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
- package/dist/frontend/lowering/lower-namespaces.js +2 -2
- package/dist/frontend/lowering/lower-server.d.ts +3 -0
- package/dist/frontend/lowering/lower-server.js +419 -44
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
- package/dist/frontend/lowering/lower-stdlib.js +10 -3
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
- package/dist/frontend/lowering/lower-stmts.js +69 -14
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +1020 -49
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +45 -5
- package/dist/frontend/lowering/lowerer.js +317 -48
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +2 -2
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
- package/dist/frontend/lowering/runtime-optional-records.js +715 -0
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +11 -3
- package/dist/frontend/lowering/surfaces.js +334 -37
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +1 -1
- package/dist/frontend/npm-static-prune.js +1 -1
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/pipeline.js +6 -4
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +3 -3
- package/dist/frontend/program.js +25 -18
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +15 -1
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/ts7/adapter.js +1 -1
- package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
- package/dist/frontend/ts7/ast-bytes.js +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +1 -1
- package/dist/frontend/ts7/semantic-json.js +1 -1
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/world-check.js +1 -1
- package/dist/frontend/tsc-codes.js +3 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +21 -1
- package/dist/frontend/type-mapper.js +245 -27
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +12 -6
- package/dist/ir/analysis.js +26 -10
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -3
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +115 -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 +438 -46
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +1 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +84 -17
- package/dist/ir/ir.js +54 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +111 -7
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +1 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +295 -14
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +60 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.d.ts +1 -1
- package/dist/library/fence-eval.js +5 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +11 -4
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-profile.js +13 -13
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +1 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/library/sidecar.js +3 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +4 -2
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +1279 -221
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as ts from "../../ts7/adapter.js";
|
|
2
2
|
import {} from "../lowerer.js";
|
|
3
3
|
import { locOf } from "../../program.js";
|
|
4
|
-
import {
|
|
4
|
+
import { numLit, varRef } from "../../../ir/build.js";
|
|
5
|
+
import { BOOL, DYN, F64, STRING, VOID, funcOf, typeKey, } from "../../../ir/ir.js";
|
|
6
|
+
import { PERF_ENTRY_FIELDS, PERF_ENTRY_MARKER, perfEntryJsonShape } from "../../type-mapper.js";
|
|
5
7
|
import { builtinImportOf } from "./module-bindings.js";
|
|
8
|
+
import { checkedIterableSpread } from "../checked-iterable-spread.js";
|
|
6
9
|
/** True for any spelling of node:perf_hooks' `performance` object — the
|
|
7
10
|
* named import binding, a namespace/default-import member, the require
|
|
8
11
|
* twins (all through the shared builtin tables), or the GLOBAL Node
|
|
@@ -23,13 +26,24 @@ function isPerfHooksPerformanceExpr(lowerer, node) {
|
|
|
23
26
|
}
|
|
24
27
|
return false;
|
|
25
28
|
}
|
|
29
|
+
/** The user-timing members of the performance object: the runtime entry
|
|
30
|
+
* point and, for the getters, the getEntries selector. */
|
|
31
|
+
const PERF_TIMELINE_CALLS = new Map([
|
|
32
|
+
["mark", { fn: "perf.mark" }],
|
|
33
|
+
["measure", { fn: "perf.measure" }],
|
|
34
|
+
["getEntries", { fn: "perf.entries", which: 0 }],
|
|
35
|
+
["getEntriesByName", { fn: "perf.entries", which: 1 }],
|
|
36
|
+
["getEntriesByType", { fn: "perf.entries", which: 2 }],
|
|
37
|
+
["clearMarks", { fn: "perf.clearMarks" }],
|
|
38
|
+
["clearMeasures", { fn: "perf.clearMeasures" }],
|
|
39
|
+
]);
|
|
26
40
|
/** Presence probes do not extract an unbound Performance method value. */
|
|
27
41
|
export function lowerPerfHooksTypeof(lowerer, expression) {
|
|
28
42
|
const value = isPerfHooksPerformanceExpr(lowerer, expression)
|
|
29
43
|
? "object"
|
|
30
44
|
: ts.isPropertyAccessExpression(expression) &&
|
|
31
45
|
!expression.questionDotToken &&
|
|
32
|
-
expression.name.text === "now" &&
|
|
46
|
+
(expression.name.text === "now" || PERF_TIMELINE_CALLS.has(expression.name.text)) &&
|
|
33
47
|
isPerfHooksPerformanceExpr(lowerer, expression.expression)
|
|
34
48
|
? "function"
|
|
35
49
|
: null;
|
|
@@ -40,8 +54,11 @@ export function lowerPerfHooksTypeof(lowerer, expression) {
|
|
|
40
54
|
* compiled program, fractional milliseconds — and
|
|
41
55
|
* `performance.now.bind(performance)` (the mockable-clock idiom's
|
|
42
56
|
* getTimestamp) is the same clock as a plain () => number function
|
|
43
|
-
* value.
|
|
44
|
-
*
|
|
57
|
+
* value. mark/measure, the getEntries family and the clears run over the
|
|
58
|
+
* runtime's performance timeline (lowerPerfTimelineCall), and an entry's
|
|
59
|
+
* toJSON() answers its plain object. Other members on the performance
|
|
60
|
+
* object fence by name; null for non-perf_hooks callees (the call chain
|
|
61
|
+
* keeps trying). */
|
|
45
62
|
export function lowerPerfHooksCall(lowerer, expr, access) {
|
|
46
63
|
if (access.questionDotToken)
|
|
47
64
|
return null;
|
|
@@ -68,8 +85,27 @@ export function lowerPerfHooksCall(lowerer, expr, access) {
|
|
|
68
85
|
loc,
|
|
69
86
|
};
|
|
70
87
|
}
|
|
88
|
+
if (access.name.text === "toJSON" &&
|
|
89
|
+
isPerfEntryType(lowerer, lowerer.mapTypeOf(lowerer.typeOf(access.expression)))) {
|
|
90
|
+
if (expr.arguments.length !== 0) {
|
|
91
|
+
lowerer.noLowering("PerformanceEntry toJSON with arguments", expr);
|
|
92
|
+
}
|
|
93
|
+
const entry = lowerer.lowerExpr(access.expression);
|
|
94
|
+
if (entry.type.kind !== "record")
|
|
95
|
+
lowerer.badType(access.expression, lowerer.typeOf(access.expression));
|
|
96
|
+
return {
|
|
97
|
+
kind: "dynFrom",
|
|
98
|
+
value: perfEntryJson(lowerer, entry, entry.type, loc),
|
|
99
|
+
type: DYN,
|
|
100
|
+
loc,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const timeline = PERF_TIMELINE_CALLS.get(access.name.text);
|
|
104
|
+
if (timeline && isPerfHooksPerformanceExpr(lowerer, access.expression)) {
|
|
105
|
+
return lowerPerfTimelineCall(lowerer, expr, access.name.text, timeline, loc);
|
|
106
|
+
}
|
|
71
107
|
if (isPerfHooksPerformanceExpr(lowerer, access.expression)) {
|
|
72
|
-
lowerer.noLowering(`perf_hooks performance.${access.name.text}`, expr, "performance.now()
|
|
108
|
+
lowerer.noLowering(`perf_hooks performance.${access.name.text}`, expr, "performance.now() (and its .bind(performance) function value), mark, measure, the getEntries family, clearMarks and clearMeasures are the lowered surface");
|
|
73
109
|
}
|
|
74
110
|
return null;
|
|
75
111
|
}
|
|
@@ -97,4 +133,303 @@ function perfNowFnValueOf(lowerer) {
|
|
|
97
133
|
}
|
|
98
134
|
return name;
|
|
99
135
|
}
|
|
136
|
+
/** True when `t` is the PerformanceEntry record (type-mapper's
|
|
137
|
+
* perfEntryShape). */
|
|
138
|
+
export function isPerfEntryType(lowerer, t) {
|
|
139
|
+
if (t?.kind !== "record")
|
|
140
|
+
return false;
|
|
141
|
+
return lowerer.shapes.get(t.shapeId)?.fields.some((f) => f.name === PERF_ENTRY_MARKER) === true;
|
|
142
|
+
}
|
|
143
|
+
/** An entry's toJSON() object: { name, entryType, startTime, duration,
|
|
144
|
+
* detail } read off the entry record. */
|
|
145
|
+
export function perfEntryJson(lowerer, entry, entryT, loc) {
|
|
146
|
+
const shape = lowerer.shapes.get(entryT.shapeId);
|
|
147
|
+
const read = (name) => ({
|
|
148
|
+
kind: "recordGet",
|
|
149
|
+
obj: entry,
|
|
150
|
+
shapeId: entryT.shapeId,
|
|
151
|
+
field: name,
|
|
152
|
+
type: shape.fields.find((f) => f.name === name).type,
|
|
153
|
+
loc,
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
kind: "recordLit",
|
|
157
|
+
fields: [...PERF_ENTRY_FIELDS].sort().map((name) => ({ name, value: read(name) })),
|
|
158
|
+
type: { kind: "record", shapeId: perfEntryJsonShape(lowerer.shapes) },
|
|
159
|
+
loc,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/** One timeline entry of the runtime's last answer, as the entry record. */
|
|
163
|
+
function perfEntryRecord(lowerer, t, index, loc) {
|
|
164
|
+
const marker = lowerer.shapes.get(t.shapeId).fields.find((f) => f.name === PERF_ENTRY_MARKER);
|
|
165
|
+
const read = (fn, type) => ({
|
|
166
|
+
kind: "libCall",
|
|
167
|
+
fn,
|
|
168
|
+
args: [index],
|
|
169
|
+
type,
|
|
170
|
+
loc,
|
|
171
|
+
});
|
|
172
|
+
const values = {
|
|
173
|
+
[PERF_ENTRY_MARKER]: lowerer.absentFieldValue(marker.type, loc),
|
|
174
|
+
detail: read("perf.entryDetail", DYN),
|
|
175
|
+
duration: read("perf.entryDuration", F64),
|
|
176
|
+
entryType: read("perf.entryType", STRING),
|
|
177
|
+
name: read("perf.entryName", STRING),
|
|
178
|
+
startTime: read("perf.entryStart", F64),
|
|
179
|
+
};
|
|
180
|
+
return {
|
|
181
|
+
kind: "recordLit",
|
|
182
|
+
fields: Object.keys(values)
|
|
183
|
+
.sort()
|
|
184
|
+
.map((name) => ({ name, value: values[name] })),
|
|
185
|
+
type: t,
|
|
186
|
+
loc,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/** The call's arguments as one dyn array, in source order. Spread
|
|
190
|
+
* arguments expand with JavaScript's iterable semantics (strings into
|
|
191
|
+
* characters, Sets, generators and other iterators through the iterator
|
|
192
|
+
* protocol), and a non-iterable spread throws V8's TypeError, so the
|
|
193
|
+
* runtime always receives an array. */
|
|
194
|
+
function lowerPerfArguments(lowerer, call, loc) {
|
|
195
|
+
if (!call.arguments.some(ts.isSpreadElement)) {
|
|
196
|
+
return {
|
|
197
|
+
kind: "dynArrLit",
|
|
198
|
+
elems: call.arguments.map((a) => lowerer.lowerExprExpecting(a, DYN)),
|
|
199
|
+
type: DYN,
|
|
200
|
+
loc,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const pack = lowerer.declareHiddenLocal("%perfArgs", DYN);
|
|
204
|
+
const ref = () => ({ kind: "varRef", localId: pack.id, type: DYN, loc });
|
|
205
|
+
const stmts = [
|
|
206
|
+
{
|
|
207
|
+
kind: "varDecl",
|
|
208
|
+
localId: pack.id,
|
|
209
|
+
init: { kind: "dynArrLit", elems: [], type: DYN, loc },
|
|
210
|
+
loc,
|
|
211
|
+
},
|
|
212
|
+
];
|
|
213
|
+
for (const arg of call.arguments) {
|
|
214
|
+
if (!ts.isSpreadElement(arg)) {
|
|
215
|
+
const value = lowerer.lowerExprExpecting(arg, DYN);
|
|
216
|
+
stmts.push({
|
|
217
|
+
kind: "exprStmt",
|
|
218
|
+
expr: {
|
|
219
|
+
kind: "libCall",
|
|
220
|
+
fn: "dyn.packPush",
|
|
221
|
+
args: [ref(), value],
|
|
222
|
+
type: VOID,
|
|
223
|
+
loc: value.loc,
|
|
224
|
+
},
|
|
225
|
+
loc: value.loc,
|
|
226
|
+
});
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const spelling = arg.expression.getText();
|
|
230
|
+
const items = checkedIterableSpread(lowerer, lowerer.lowerExpr(arg.expression), spelling, loc);
|
|
231
|
+
stmts.push({
|
|
232
|
+
kind: "exprStmt",
|
|
233
|
+
expr: {
|
|
234
|
+
kind: "libCall",
|
|
235
|
+
fn: "dyn.packPushSpread",
|
|
236
|
+
args: [ref(), items, { kind: "strLit", value: spelling, type: STRING, loc }],
|
|
237
|
+
type: VOID,
|
|
238
|
+
loc,
|
|
239
|
+
},
|
|
240
|
+
loc,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
return { kind: "seqExpr", stmts, result: ref(), type: DYN, loc };
|
|
244
|
+
}
|
|
245
|
+
/** performance.mark/measure, getEntries/getEntriesByName/getEntriesByType
|
|
246
|
+
* and clearMarks/clearMeasures. The arguments cross as one dyn vector so
|
|
247
|
+
* the runtime applies Node's validation in Node's order; the producing
|
|
248
|
+
* calls go through a lifted helper per result type that runs the call and
|
|
249
|
+
* builds the entry record(s) from the runtime's answer. */
|
|
250
|
+
function lowerPerfTimelineCall(lowerer, call, member, timeline, loc) {
|
|
251
|
+
const args = lowerPerfArguments(lowerer, call, loc);
|
|
252
|
+
if (timeline.fn === "perf.clearMarks" || timeline.fn === "perf.clearMeasures") {
|
|
253
|
+
return { kind: "libCall", fn: timeline.fn, args: [args], type: VOID, loc };
|
|
254
|
+
}
|
|
255
|
+
const result = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
256
|
+
const many = timeline.which !== undefined;
|
|
257
|
+
const entryT = many ? (result?.kind === "array" ? result.elem : undefined) : result;
|
|
258
|
+
if (!isPerfEntryType(lowerer, entryT) || entryT?.kind !== "record" || result == null) {
|
|
259
|
+
lowerer.noLowering(`performance.${member} where the result is not a PerformanceEntry${many ? " array" : ""}`, call);
|
|
260
|
+
}
|
|
261
|
+
const key = `perf.${many ? "entries" : timeline.fn}:${typeKey(result)}`;
|
|
262
|
+
let helper = lowerer.valueHelpers.get(key);
|
|
263
|
+
if (!helper) {
|
|
264
|
+
helper = `%perf.${many ? "entries" : member}.${lowerer.valueHelpers.size}`;
|
|
265
|
+
lowerer.valueHelpers.set(key, helper);
|
|
266
|
+
const argsRef = varRef("a.0", DYN, loc);
|
|
267
|
+
const whichRef = varRef("w.0", F64, loc);
|
|
268
|
+
const locals = [
|
|
269
|
+
{ id: "a.0", name: "a", type: DYN, mutable: false },
|
|
270
|
+
];
|
|
271
|
+
let body;
|
|
272
|
+
if (!many) {
|
|
273
|
+
// The new entry's record goes back to the runtime by reference, so
|
|
274
|
+
// later getEntries calls answer this same object.
|
|
275
|
+
locals.push({ id: "e.0", name: "e", type: entryT, mutable: false });
|
|
276
|
+
const entry = varRef("e.0", entryT, loc);
|
|
277
|
+
body = [
|
|
278
|
+
{
|
|
279
|
+
kind: "exprStmt",
|
|
280
|
+
expr: { kind: "libCall", fn: timeline.fn, args: [argsRef], type: F64, loc },
|
|
281
|
+
loc,
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
kind: "varDecl",
|
|
285
|
+
localId: "e.0",
|
|
286
|
+
init: perfEntryRecord(lowerer, entryT, numLit(0, loc), loc),
|
|
287
|
+
loc,
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
kind: "exprStmt",
|
|
291
|
+
expr: {
|
|
292
|
+
kind: "libCall",
|
|
293
|
+
fn: "perf.entryKeep",
|
|
294
|
+
args: [{ kind: "dynFrom", value: entry, liveRef: true, type: DYN, loc }],
|
|
295
|
+
type: VOID,
|
|
296
|
+
loc,
|
|
297
|
+
},
|
|
298
|
+
loc,
|
|
299
|
+
},
|
|
300
|
+
{ kind: "return", value: entry, loc },
|
|
301
|
+
];
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
locals.push({ id: "w.0", name: "w", type: F64, mutable: false }, { id: "n.0", name: "n", type: F64, mutable: false }, { id: "out.0", name: "out", type: result, mutable: false }, { id: "i.0", name: "i", type: F64, mutable: true });
|
|
305
|
+
const index = varRef("i.0", F64, loc);
|
|
306
|
+
const count = varRef("n.0", F64, loc);
|
|
307
|
+
const out = varRef("out.0", result, loc);
|
|
308
|
+
body = [
|
|
309
|
+
{
|
|
310
|
+
kind: "varDecl",
|
|
311
|
+
localId: "n.0",
|
|
312
|
+
init: { kind: "libCall", fn: "perf.entries", args: [argsRef, whichRef], type: F64, loc },
|
|
313
|
+
loc,
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
kind: "varDecl",
|
|
317
|
+
localId: "out.0",
|
|
318
|
+
init: { kind: "arrayLit", elems: [], type: result, loc },
|
|
319
|
+
loc,
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
kind: "for",
|
|
323
|
+
init: { kind: "varDecl", localId: "i.0", init: numLit(0, loc), loc },
|
|
324
|
+
cond: { kind: "bin", op: "<", left: index, right: count, type: BOOL, loc },
|
|
325
|
+
update: {
|
|
326
|
+
kind: "assign",
|
|
327
|
+
localId: "i.0",
|
|
328
|
+
value: { kind: "bin", op: "+", left: index, right: numLit(1, loc), type: F64, loc },
|
|
329
|
+
loc,
|
|
330
|
+
},
|
|
331
|
+
body: [
|
|
332
|
+
{
|
|
333
|
+
kind: "exprStmt",
|
|
334
|
+
expr: {
|
|
335
|
+
kind: "arrIntrinsic",
|
|
336
|
+
method: "push",
|
|
337
|
+
receiver: out,
|
|
338
|
+
args: [
|
|
339
|
+
{
|
|
340
|
+
kind: "dynCheck",
|
|
341
|
+
value: { kind: "libCall", fn: "perf.entryRef", args: [index], type: DYN, loc },
|
|
342
|
+
preserveRefs: true,
|
|
343
|
+
type: entryT,
|
|
344
|
+
loc,
|
|
345
|
+
},
|
|
346
|
+
],
|
|
347
|
+
type: F64,
|
|
348
|
+
loc,
|
|
349
|
+
},
|
|
350
|
+
loc,
|
|
351
|
+
},
|
|
352
|
+
],
|
|
353
|
+
loc,
|
|
354
|
+
},
|
|
355
|
+
{ kind: "return", value: out, loc },
|
|
356
|
+
];
|
|
357
|
+
}
|
|
358
|
+
lowerer.liftedFns.push({
|
|
359
|
+
name: helper,
|
|
360
|
+
params: [
|
|
361
|
+
{ localId: "a.0", name: "a", type: DYN },
|
|
362
|
+
...(many ? [{ localId: "w.0", name: "w", type: F64 }] : []),
|
|
363
|
+
],
|
|
364
|
+
returnType: result,
|
|
365
|
+
locals,
|
|
366
|
+
body,
|
|
367
|
+
loc,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
return {
|
|
371
|
+
kind: "call",
|
|
372
|
+
callee: helper,
|
|
373
|
+
args: many ? [args, numLit(timeline.which, loc)] : [args],
|
|
374
|
+
type: result,
|
|
375
|
+
loc,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
/** `String(entry)` / `${entry}` / entry.toString(): Object.prototype
|
|
379
|
+
* .toString's tag, "[object PerformanceMark]" or "[object
|
|
380
|
+
* PerformanceMeasure]" (an interned helper, so the entry evaluates once). */
|
|
381
|
+
export function perfEntryTag(lowerer, entry, entryT, loc) {
|
|
382
|
+
const key = `perf.tag:${entryT.shapeId}`;
|
|
383
|
+
let helper = lowerer.valueHelpers.get(key);
|
|
384
|
+
if (!helper) {
|
|
385
|
+
helper = `%perf.tag.${lowerer.valueHelpers.size}`;
|
|
386
|
+
lowerer.valueHelpers.set(key, helper);
|
|
387
|
+
const e = varRef("e.0", entryT, loc);
|
|
388
|
+
lowerer.liftedFns.push({
|
|
389
|
+
name: helper,
|
|
390
|
+
params: [{ localId: "e.0", name: "e", type: entryT }],
|
|
391
|
+
returnType: STRING,
|
|
392
|
+
locals: [{ id: "e.0", name: "e", type: entryT, mutable: false }],
|
|
393
|
+
body: [
|
|
394
|
+
{
|
|
395
|
+
kind: "return",
|
|
396
|
+
value: {
|
|
397
|
+
kind: "ternary",
|
|
398
|
+
cond: {
|
|
399
|
+
kind: "strEq",
|
|
400
|
+
negated: false,
|
|
401
|
+
left: {
|
|
402
|
+
kind: "recordGet",
|
|
403
|
+
obj: e,
|
|
404
|
+
shapeId: entryT.shapeId,
|
|
405
|
+
field: "entryType",
|
|
406
|
+
type: STRING,
|
|
407
|
+
loc,
|
|
408
|
+
},
|
|
409
|
+
right: { kind: "strLit", value: "mark", type: STRING, loc },
|
|
410
|
+
type: BOOL,
|
|
411
|
+
loc,
|
|
412
|
+
},
|
|
413
|
+
then: { kind: "strLit", value: "[object PerformanceMark]", type: STRING, loc },
|
|
414
|
+
else_: { kind: "strLit", value: "[object PerformanceMeasure]", type: STRING, loc },
|
|
415
|
+
type: STRING,
|
|
416
|
+
loc,
|
|
417
|
+
},
|
|
418
|
+
loc,
|
|
419
|
+
},
|
|
420
|
+
],
|
|
421
|
+
loc,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
return { kind: "call", callee: helper, args: [entry], type: STRING, loc };
|
|
425
|
+
}
|
|
426
|
+
/** Node keeps an entry's fields as prototype getters over internal
|
|
427
|
+
* slots, so own-key walks (Object.keys/values/entries, for-in, spread,
|
|
428
|
+
* hasOwnProperty) see none of them. Those walks over an entry record
|
|
429
|
+
* fence instead of listing the fields. */
|
|
430
|
+
export function fencePerfEntryKeyWalk(lowerer, t, node, what) {
|
|
431
|
+
if (!isPerfEntryType(lowerer, t))
|
|
432
|
+
return;
|
|
433
|
+
lowerer.unsupported("SC1090", node, `${what} over performance entries (Node keeps their fields as prototype getters, so own-key walks see none; read the fields or call toJSON())`);
|
|
434
|
+
}
|
|
100
435
|
//# sourceMappingURL=performance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/performance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/performance.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { type Lowerer } from "../lowerer.js";
|
|
|
3
3
|
import { type IrExpr } from "../../../ir/ir.js";
|
|
4
4
|
/** The pinned Node release the runtime reports as process.versions.node
|
|
5
5
|
* (packages/runtime/src/scr_lib.c SCR_NODE_COMPAT_VERSION, kept equal to
|
|
6
|
-
* internal/compatibility/node-v24.json by
|
|
7
|
-
export declare const NODE_COMPAT_VERSION = "24.
|
|
6
|
+
* internal/compatibility/node-v24.json by test/node-pin.test.ts). */
|
|
7
|
+
export declare const NODE_COMPAT_VERSION = "24.22.0";
|
|
8
8
|
/** Method calls on first-class process-stream receivers (procStream —
|
|
9
9
|
* a WritableStream-typed value like prefixStream's `output` param):
|
|
10
10
|
* write(data) with one string and terminal geometry, dispatched onto
|
|
@@ -13,8 +13,8 @@ import { lowerProcessIpcSend, ipcMessageListener, ipcDisconnectListener } from "
|
|
|
13
13
|
import { lowerDiagnosticsSubscriber, lowerTracingArguments } from "./async-context.js";
|
|
14
14
|
/** The pinned Node release the runtime reports as process.versions.node
|
|
15
15
|
* (packages/runtime/src/scr_lib.c SCR_NODE_COMPAT_VERSION, kept equal to
|
|
16
|
-
* internal/compatibility/node-v24.json by
|
|
17
|
-
export const NODE_COMPAT_VERSION = "24.
|
|
16
|
+
* internal/compatibility/node-v24.json by test/node-pin.test.ts). */
|
|
17
|
+
export const NODE_COMPAT_VERSION = "24.22.0";
|
|
18
18
|
/** Method calls on first-class process-stream receivers (procStream —
|
|
19
19
|
* a WritableStream-typed value like prefixStream's `output` param):
|
|
20
20
|
* write(data) with one string and terminal geometry, dispatched onto
|
|
@@ -318,6 +318,22 @@ export function lowerProcessProperty(lowerer, expr) {
|
|
|
318
318
|
if (member === "pid") {
|
|
319
319
|
return { kind: "libCall", fn: "process.pid", args: [], type: F64, loc };
|
|
320
320
|
}
|
|
321
|
+
if (member === "ppid") {
|
|
322
|
+
return { kind: "libCall", fn: "process.ppid", args: [], type: F64, loc };
|
|
323
|
+
}
|
|
324
|
+
// process.title: libuv's process title — argv[0] until a write
|
|
325
|
+
// (lower-stmts' process.title assignment) replaces it.
|
|
326
|
+
if (member === "title") {
|
|
327
|
+
return { kind: "libCall", fn: "process.title", args: [], type: STRING, loc };
|
|
328
|
+
}
|
|
329
|
+
if (member === "argv0") {
|
|
330
|
+
return { kind: "libCall", fn: "process.argv0", args: [], type: STRING, loc };
|
|
331
|
+
}
|
|
332
|
+
// process.release: the compatibility target's release record, one
|
|
333
|
+
// stable object like Node's.
|
|
334
|
+
if (member === "release") {
|
|
335
|
+
return { kind: "libCall", fn: "process.release", args: [], type: DYN, loc };
|
|
336
|
+
}
|
|
321
337
|
// process.execPath: the compiled binary's own resolved absolute path —
|
|
322
338
|
// the honest answer where Node's is the node executable's (SEMANTICS.md
|
|
323
339
|
// divergence 12, the argv[0]/argv[1] precedent).
|
|
@@ -712,6 +728,16 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
712
728
|
};
|
|
713
729
|
}
|
|
714
730
|
}
|
|
731
|
+
// process.memoryUsage.rss(): the resident set alone, read on demand.
|
|
732
|
+
if (access.name.text === "rss" &&
|
|
733
|
+
!access.questionDotToken &&
|
|
734
|
+
ts.isPropertyAccessExpression(access.expression) &&
|
|
735
|
+
lowerer.stdlibGlobalMember(access.expression, "process") === "memoryUsage") {
|
|
736
|
+
if (call.arguments.length !== 0) {
|
|
737
|
+
lowerer.noLowering(`process.memoryUsage.rss with ${call.arguments.length} arguments`, call);
|
|
738
|
+
}
|
|
739
|
+
return { kind: "libCall", fn: "process.rss", args: [], type: F64, loc: locOf(call) };
|
|
740
|
+
}
|
|
715
741
|
const member = lowerer.stdlibGlobalMember(access, "process");
|
|
716
742
|
if (member === null)
|
|
717
743
|
return null;
|
|
@@ -1021,6 +1047,63 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1021
1047
|
}
|
|
1022
1048
|
return { kind: "call", callee: helper, args: [prev], type: t, loc };
|
|
1023
1049
|
}
|
|
1050
|
+
// process.memoryUsage() — rss from the OS, heapTotal/heapUsed from the
|
|
1051
|
+
// runtime heap's own accounting, external and arrayBuffers 0 (byte
|
|
1052
|
+
// storage lives in the same heap). One sample per call: the interned
|
|
1053
|
+
// helper takes it, then the record reads it field by field.
|
|
1054
|
+
if (member === "memoryUsage") {
|
|
1055
|
+
if (call.arguments.length !== 0) {
|
|
1056
|
+
lowerer.noLowering(`process.memoryUsage with ${call.arguments.length} arguments`, call);
|
|
1057
|
+
}
|
|
1058
|
+
const t = lowerer.mapTypeOf(lowerer.typeOf(call));
|
|
1059
|
+
if (t?.kind !== "record")
|
|
1060
|
+
lowerer.badType(call, lowerer.typeOf(call));
|
|
1061
|
+
const shape = lowerer.shapes.get(t.shapeId);
|
|
1062
|
+
if (!shape ||
|
|
1063
|
+
!shape.fields.every((f) => MEMORY_USAGE_FIELDS.includes(f.name) && f.type.kind === "f64")) {
|
|
1064
|
+
lowerer.badType(call, lowerer.typeOf(call));
|
|
1065
|
+
}
|
|
1066
|
+
const key = `process.memoryUsage:${t.shapeId}`;
|
|
1067
|
+
let helper = lowerer.valueHelpers.get(key);
|
|
1068
|
+
if (!helper) {
|
|
1069
|
+
helper = `%process.memoryUsage.${lowerer.valueHelpers.size}`;
|
|
1070
|
+
lowerer.valueHelpers.set(key, helper);
|
|
1071
|
+
lowerer.liftedFns.push({
|
|
1072
|
+
name: helper,
|
|
1073
|
+
params: [],
|
|
1074
|
+
returnType: t,
|
|
1075
|
+
locals: [],
|
|
1076
|
+
body: [
|
|
1077
|
+
{
|
|
1078
|
+
kind: "exprStmt",
|
|
1079
|
+
expr: { kind: "libCall", fn: "process.memoryUsageTake", args: [], type: VOID, loc },
|
|
1080
|
+
loc,
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
kind: "return",
|
|
1084
|
+
value: {
|
|
1085
|
+
kind: "recordLit",
|
|
1086
|
+
fields: shape.fields.map((f) => ({
|
|
1087
|
+
name: f.name,
|
|
1088
|
+
value: {
|
|
1089
|
+
kind: "libCall",
|
|
1090
|
+
fn: "process.memoryUsageField",
|
|
1091
|
+
args: [numLit(MEMORY_USAGE_FIELDS.indexOf(f.name), loc)],
|
|
1092
|
+
type: F64,
|
|
1093
|
+
loc,
|
|
1094
|
+
},
|
|
1095
|
+
})),
|
|
1096
|
+
type: t,
|
|
1097
|
+
loc,
|
|
1098
|
+
},
|
|
1099
|
+
loc,
|
|
1100
|
+
},
|
|
1101
|
+
],
|
|
1102
|
+
loc,
|
|
1103
|
+
});
|
|
1104
|
+
}
|
|
1105
|
+
return { kind: "call", callee: helper, args: [], type: t, loc };
|
|
1106
|
+
}
|
|
1024
1107
|
// process.resourceUsage() — getrusage's 16 fields in Node's names and
|
|
1025
1108
|
// units (CPU times in microseconds, maxRSS in kilobytes).
|
|
1026
1109
|
if (member === "resourceUsage") {
|
|
@@ -1110,17 +1193,11 @@ export function lowerProcessMethodCall(lowerer, call, access) {
|
|
|
1110
1193
|
// the plain-f64 result is honest here even though @types/node declares
|
|
1111
1194
|
// the member optional (that optionality covers Windows). The `?.()`
|
|
1112
1195
|
// spelling routes here through lowerProcessOptionalMethodCall.
|
|
1113
|
-
if (member
|
|
1196
|
+
if (PROCESS_CREDENTIAL_FNS.has(member)) {
|
|
1114
1197
|
if (call.arguments.length !== 0) {
|
|
1115
1198
|
lowerer.noLowering(`process.${member} with ${call.arguments.length} arguments`, call);
|
|
1116
1199
|
}
|
|
1117
|
-
return
|
|
1118
|
-
kind: "libCall",
|
|
1119
|
-
fn: member === "getuid" ? "process.getuid" : "process.getgid",
|
|
1120
|
-
args: [],
|
|
1121
|
-
type: F64,
|
|
1122
|
-
loc,
|
|
1123
|
-
};
|
|
1200
|
+
return processCredentialCall(member, loc);
|
|
1124
1201
|
}
|
|
1125
1202
|
// process.kill(pid, signal?) — Node's semantics exactly: the signal is
|
|
1126
1203
|
// a name string (the runtime resolves Node's signal table; unknown
|
|
@@ -1171,17 +1248,33 @@ export function lowerProcessOptionalMethodCall(lowerer, expr) {
|
|
|
1171
1248
|
const member = lowerer.stdlibGlobalMember(expr.expression, "process");
|
|
1172
1249
|
if (member === "send")
|
|
1173
1250
|
return lowerProcessIpcSend(lowerer, expr);
|
|
1174
|
-
if (member
|
|
1251
|
+
if (member === null || !PROCESS_CREDENTIAL_FNS.has(member))
|
|
1175
1252
|
return null;
|
|
1176
1253
|
if (expr.arguments.length !== 0) {
|
|
1177
1254
|
lowerer.noLowering(`process.${member} with ${expr.arguments.length} arguments`, expr);
|
|
1178
1255
|
}
|
|
1256
|
+
return processCredentialCall(member, locOf(expr));
|
|
1257
|
+
}
|
|
1258
|
+
/** process.memoryUsage()'s fields in Node's order — the runtime's
|
|
1259
|
+
* sample index. */
|
|
1260
|
+
const MEMORY_USAGE_FIELDS = ["rss", "heapTotal", "heapUsed", "external", "arrayBuffers"];
|
|
1261
|
+
/** The POSIX credential readers @types/node declares optional (Windows
|
|
1262
|
+
* has none): getuid(2), getgid(2), geteuid(2), getegid(2), and
|
|
1263
|
+
* getgroups(2). */
|
|
1264
|
+
const PROCESS_CREDENTIAL_FNS = new Map([
|
|
1265
|
+
["getuid", "process.getuid"],
|
|
1266
|
+
["getgid", "process.getgid"],
|
|
1267
|
+
["geteuid", "process.geteuid"],
|
|
1268
|
+
["getegid", "process.getegid"],
|
|
1269
|
+
["getgroups", "process.getgroups"],
|
|
1270
|
+
]);
|
|
1271
|
+
function processCredentialCall(member, loc) {
|
|
1179
1272
|
return {
|
|
1180
1273
|
kind: "libCall",
|
|
1181
|
-
fn: member
|
|
1274
|
+
fn: PROCESS_CREDENTIAL_FNS.get(member),
|
|
1182
1275
|
args: [],
|
|
1183
|
-
type: F64,
|
|
1184
|
-
loc
|
|
1276
|
+
type: member === "getgroups" ? arrayOf(F64) : F64,
|
|
1277
|
+
loc,
|
|
1185
1278
|
};
|
|
1186
1279
|
}
|
|
1187
1280
|
//# sourceMappingURL=process.js.map
|