@scriptc/compiler 0.4.2 → 0.4.3

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.
Files changed (636) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +397 -37
  2. package/dist/backend/cycle-analysis.d.ts +4 -1
  3. package/dist/backend/cycle-analysis.js +6 -4
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-analysis.test.js +55 -0
  6. package/dist/backend/cycle-analysis.test.js.map +1 -1
  7. package/dist/backend/cycle-mutability.d.ts +7 -0
  8. package/dist/backend/cycle-mutability.js +19 -1
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +2 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.d.ts +6 -3
  13. package/dist/backend/immutability.js +33 -29
  14. package/dist/backend/immutability.js.map +1 -1
  15. package/dist/backend/library-pack.js +1 -0
  16. package/dist/backend/library-pack.js.map +1 -1
  17. package/dist/backend/llvm/alloc.d.ts +16 -1
  18. package/dist/backend/llvm/alloc.js +54 -4
  19. package/dist/backend/llvm/alloc.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
  21. package/dist/backend/llvm/appended-array-literals.js +44 -36
  22. package/dist/backend/llvm/appended-array-literals.js.map +1 -1
  23. package/dist/backend/llvm/appended-array-literals.test.js +4 -3
  24. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
  25. package/dist/backend/llvm/array-search.d.ts +4 -3
  26. package/dist/backend/llvm/array-search.js +21 -9
  27. package/dist/backend/llvm/array-search.js.map +1 -1
  28. package/dist/backend/llvm/blocks.d.ts +1 -1
  29. package/dist/backend/llvm/blocks.js +2 -2
  30. package/dist/backend/llvm/blocks.js.map +1 -1
  31. package/dist/backend/llvm/byte-windows.js +2 -0
  32. package/dist/backend/llvm/byte-windows.js.map +1 -1
  33. package/dist/backend/llvm/bytes-alias.d.ts +6 -1
  34. package/dist/backend/llvm/bytes-alias.js +8 -2
  35. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  36. package/dist/backend/llvm/bytes-loop-versions.d.ts +47 -5
  37. package/dist/backend/llvm/bytes-loop-versions.js +473 -32
  38. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  39. package/dist/backend/llvm/bytes-loop-versions.test.js +258 -2
  40. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  41. package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
  42. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  43. package/dist/backend/llvm/classes.d.ts +7 -5
  44. package/dist/backend/llvm/classes.js +44 -20
  45. package/dist/backend/llvm/classes.js.map +1 -1
  46. package/dist/backend/llvm/classes.test.js +167 -7
  47. package/dist/backend/llvm/classes.test.js.map +1 -1
  48. package/dist/backend/llvm/common.d.ts +9 -3
  49. package/dist/backend/llvm/common.js +9 -3
  50. package/dist/backend/llvm/common.js.map +1 -1
  51. package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
  52. package/dist/backend/llvm/constant-callbacks.js +83 -52
  53. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  54. package/dist/backend/llvm/counted-loops.d.ts +7 -0
  55. package/dist/backend/llvm/counted-loops.js +18 -0
  56. package/dist/backend/llvm/counted-loops.js.map +1 -1
  57. package/dist/backend/llvm/dense-array-access.d.ts +39 -8
  58. package/dist/backend/llvm/dense-array-access.js +222 -52
  59. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  60. package/dist/backend/llvm/dense-array-access.test.js +36 -0
  61. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  62. package/dist/backend/llvm/dense-array-loops.d.ts +17 -1
  63. package/dist/backend/llvm/dense-array-loops.js +194 -5
  64. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  65. package/dist/backend/llvm/dense-array-loops.test.js +90 -1
  66. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
  67. package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
  68. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
  69. package/dist/backend/llvm/dyn.d.ts +26 -0
  70. package/dist/backend/llvm/dyn.js +352 -61
  71. package/dist/backend/llvm/dyn.js.map +1 -1
  72. package/dist/backend/llvm/emit-function.js +11 -20
  73. package/dist/backend/llvm/emit-function.js.map +1 -1
  74. package/dist/backend/llvm/emit-journal.d.ts +93 -0
  75. package/dist/backend/llvm/emit-journal.js +170 -0
  76. package/dist/backend/llvm/emit-journal.js.map +1 -0
  77. package/dist/backend/llvm/emit-module.js +195 -27
  78. package/dist/backend/llvm/emit-module.js.map +1 -1
  79. package/dist/backend/llvm/emit-statements.d.ts +0 -4
  80. package/dist/backend/llvm/emit-statements.js +268 -84
  81. package/dist/backend/llvm/emit-statements.js.map +1 -1
  82. package/dist/backend/llvm/emitter-state.d.ts +7 -0
  83. package/dist/backend/llvm/emitter-state.js +14 -0
  84. package/dist/backend/llvm/emitter-state.js.map +1 -0
  85. package/dist/backend/llvm/emitter.d.ts +176 -37
  86. package/dist/backend/llvm/emitter.js +724 -85
  87. package/dist/backend/llvm/emitter.js.map +1 -1
  88. package/dist/backend/llvm/emitter.test.js +54 -5
  89. package/dist/backend/llvm/emitter.test.js.map +1 -1
  90. package/dist/backend/llvm/expr-bytes.js +34 -12
  91. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  92. package/dist/backend/llvm/expr-callbacks.js +47 -0
  93. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  94. package/dist/backend/llvm/expr-calls.js +28 -14
  95. package/dist/backend/llvm/expr-calls.js.map +1 -1
  96. package/dist/backend/llvm/expr-containers.d.ts +14 -2
  97. package/dist/backend/llvm/expr-containers.js +129 -37
  98. package/dist/backend/llvm/expr-containers.js.map +1 -1
  99. package/dist/backend/llvm/expr-context.d.ts +14 -0
  100. package/dist/backend/llvm/expr-dynamic.js +18 -11
  101. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  102. package/dist/backend/llvm/expr-primitives.js +100 -28
  103. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  104. package/dist/backend/llvm/expr-primitives.test.js +11 -6
  105. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  106. package/dist/backend/llvm/expr-records.d.ts +12 -0
  107. package/dist/backend/llvm/expr-records.js +106 -0
  108. package/dist/backend/llvm/expr-records.js.map +1 -1
  109. package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
  110. package/dist/backend/llvm/expr-stream-bridges.js +194 -65
  111. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  112. package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
  113. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  114. package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
  115. package/dist/backend/llvm/expr-stream-callbacks.js +74 -20
  116. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  117. package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
  118. package/dist/backend/llvm/int32-kind-loops.js +106 -0
  119. package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
  120. package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
  121. package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
  122. package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
  123. package/dist/backend/llvm/integer-values.d.ts +20 -1
  124. package/dist/backend/llvm/integer-values.js +71 -0
  125. package/dist/backend/llvm/integer-values.js.map +1 -1
  126. package/dist/backend/llvm/js-ic.d.ts +1 -1
  127. package/dist/backend/llvm/js-ic.js +1 -1
  128. package/dist/backend/llvm/js-ic.js.map +1 -1
  129. package/dist/backend/llvm/key-orders.d.ts +7 -0
  130. package/dist/backend/llvm/key-orders.js +33 -0
  131. package/dist/backend/llvm/key-orders.js.map +1 -0
  132. package/dist/backend/llvm/lib-connect.js +4 -0
  133. package/dist/backend/llvm/lib-connect.js.map +1 -1
  134. package/dist/backend/llvm/lib-datagram.js +11 -0
  135. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  136. package/dist/backend/llvm/lib-dispatch.js +80 -2
  137. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  138. package/dist/backend/llvm/lib-filesystem.js +4 -4
  139. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  140. package/dist/backend/llvm/lib-http2.js +4 -0
  141. package/dist/backend/llvm/lib-http2.js.map +1 -1
  142. package/dist/backend/llvm/lib-lookup.js +16 -6
  143. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  144. package/dist/backend/llvm/lib-shared.js +73 -2
  145. package/dist/backend/llvm/lib-shared.js.map +1 -1
  146. package/dist/backend/llvm/lib-stream.js +35 -5
  147. package/dist/backend/llvm/lib-stream.js.map +1 -1
  148. package/dist/backend/llvm/local-array-reads.js +115 -19
  149. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  150. package/dist/backend/llvm/local-array-reads.test.js +14 -0
  151. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  152. package/dist/backend/llvm/loop-state.d.ts +33 -0
  153. package/dist/backend/llvm/loop-state.js +42 -0
  154. package/dist/backend/llvm/loop-state.js.map +1 -0
  155. package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
  156. package/dist/backend/llvm/map-number-lookup.js +91 -31
  157. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  158. package/dist/backend/llvm/map-number-lookup.test.js +55 -0
  159. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  160. package/dist/backend/llvm/map-read-lifetimes.js +4 -2
  161. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  162. package/dist/backend/llvm/nullable-unions.d.ts +2 -1
  163. package/dist/backend/llvm/nullable-unions.js +15 -3
  164. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  165. package/dist/backend/llvm/publish.d.ts +10 -0
  166. package/dist/backend/llvm/publish.js +12 -0
  167. package/dist/backend/llvm/publish.js.map +1 -1
  168. package/dist/backend/llvm/receivers.js +6 -1
  169. package/dist/backend/llvm/receivers.js.map +1 -1
  170. package/dist/backend/llvm/record-results.d.ts +1 -9
  171. package/dist/backend/llvm/record-results.js +2 -11
  172. package/dist/backend/llvm/record-results.js.map +1 -1
  173. package/dist/backend/llvm/reference-writes.d.ts +7 -2
  174. package/dist/backend/llvm/reference-writes.js +89 -72
  175. package/dist/backend/llvm/reference-writes.js.map +1 -1
  176. package/dist/backend/llvm/running-extrema.d.ts +11 -0
  177. package/dist/backend/llvm/running-extrema.js +115 -0
  178. package/dist/backend/llvm/running-extrema.js.map +1 -0
  179. package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
  180. package/dist/backend/llvm/running-extrema.test.js +89 -0
  181. package/dist/backend/llvm/running-extrema.test.js.map +1 -0
  182. package/dist/backend/llvm/shapes.d.ts +71 -15
  183. package/dist/backend/llvm/shapes.js +222 -33
  184. package/dist/backend/llvm/shapes.js.map +1 -1
  185. package/dist/backend/llvm/shapes.test.js +53 -7
  186. package/dist/backend/llvm/shapes.test.js.map +1 -1
  187. package/dist/backend/llvm/speculative-integers.d.ts +6 -0
  188. package/dist/backend/llvm/speculative-integers.js +2 -2
  189. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  190. package/dist/backend/llvm/stack-objects.d.ts +3 -2
  191. package/dist/backend/llvm/stack-objects.js +5 -2
  192. package/dist/backend/llvm/stack-objects.js.map +1 -1
  193. package/dist/backend/llvm/string-reads.d.ts +12 -0
  194. package/dist/backend/llvm/string-reads.js +44 -0
  195. package/dist/backend/llvm/string-reads.js.map +1 -1
  196. package/dist/backend/llvm/walk-borrows.d.ts +3 -0
  197. package/dist/backend/llvm/walk-borrows.js +46 -41
  198. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  199. package/dist/backend/llvm/walkers.d.ts +3 -0
  200. package/dist/backend/llvm/walkers.js +88 -65
  201. package/dist/backend/llvm/walkers.js.map +1 -1
  202. package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
  203. package/dist/backend/llvm/wrapping-sums.js +126 -0
  204. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  205. package/dist/backend/may-throw.d.ts +8 -10
  206. package/dist/backend/may-throw.js +14 -10
  207. package/dist/backend/may-throw.js.map +1 -1
  208. package/dist/backend/native/contracts.d.ts +5 -0
  209. package/dist/backend/native/executable.js +7 -0
  210. package/dist/backend/native/executable.js.map +1 -1
  211. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  212. package/dist/backend/native/runtime-inputs.js +1 -0
  213. package/dist/backend/native/runtime-inputs.js.map +1 -1
  214. package/dist/backend/native-link-info-core.d.ts +4 -0
  215. package/dist/backend/native-link-info-core.js.map +1 -1
  216. package/dist/backend/publication.d.ts +12 -1
  217. package/dist/backend/publication.js +37 -14
  218. package/dist/backend/publication.js.map +1 -1
  219. package/dist/backend/publication.test.js +30 -0
  220. package/dist/backend/publication.test.js.map +1 -1
  221. package/dist/backend/result-slots.d.ts +16 -0
  222. package/dist/backend/result-slots.js +23 -0
  223. package/dist/backend/result-slots.js.map +1 -0
  224. package/dist/backend/runtime-abi.d.ts +2 -2
  225. package/dist/backend/runtime-abi.js +2 -2
  226. package/dist/backend/runtime-pack-core.d.ts +1 -0
  227. package/dist/backend/runtime-pack-core.js +1 -0
  228. package/dist/backend/runtime-pack-core.js.map +1 -1
  229. package/dist/backend/runtime-pack-targets.test.js +2 -1
  230. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  231. package/dist/backend/runtime-pack.test.js +2 -1
  232. package/dist/backend/runtime-pack.test.js.map +1 -1
  233. package/dist/backend/stack-observations.d.ts +2 -1
  234. package/dist/backend/stack-observations.js +67 -42
  235. package/dist/backend/stack-observations.js.map +1 -1
  236. package/dist/backend/target-diagnostics.js +5 -3
  237. package/dist/backend/target-diagnostics.js.map +1 -1
  238. package/dist/backend/warm-cache.js +1 -0
  239. package/dist/backend/warm-cache.js.map +1 -1
  240. package/dist/cli/usage.d.ts +1 -1
  241. package/dist/cli/usage.js +3 -3
  242. package/dist/compat/fetch-profile.js +1 -1
  243. package/dist/compat/fetch-profile.js.map +1 -1
  244. package/dist/contracts/check.js +4 -3
  245. package/dist/contracts/check.js.map +1 -1
  246. package/dist/contracts/int32-elements.js +10 -2
  247. package/dist/contracts/int32-elements.js.map +1 -1
  248. package/dist/coverage/report.js +12 -3
  249. package/dist/coverage/report.js.map +1 -1
  250. package/dist/diagnostics/diagnostic.d.ts +4 -0
  251. package/dist/diagnostics/diagnostic.js.map +1 -1
  252. package/dist/diagnostics/envelope.d.ts +3 -0
  253. package/dist/diagnostics/envelope.js +1 -0
  254. package/dist/diagnostics/envelope.js.map +1 -1
  255. package/dist/executable/executable-cache.d.ts +2 -0
  256. package/dist/executable/executable-cache.js +1 -0
  257. package/dist/executable/executable-cache.js.map +1 -1
  258. package/dist/executable/executable-cache.test.js +1 -0
  259. package/dist/executable/executable-cache.test.js.map +1 -1
  260. package/dist/frontend/decl-projection.d.ts +41 -0
  261. package/dist/frontend/decl-projection.js +854 -0
  262. package/dist/frontend/decl-projection.js.map +1 -0
  263. package/dist/frontend/decl-projection.test.d.ts +1 -0
  264. package/dist/frontend/decl-projection.test.js +30 -0
  265. package/dist/frontend/decl-projection.test.js.map +1 -0
  266. package/dist/frontend/dts-paths.d.ts +15 -0
  267. package/dist/frontend/dts-paths.js +25 -0
  268. package/dist/frontend/dts-paths.js.map +1 -1
  269. package/dist/frontend/input-tracker.d.ts +6 -0
  270. package/dist/frontend/input-tracker.js +51 -28
  271. package/dist/frontend/input-tracker.js.map +1 -1
  272. package/dist/frontend/input-tracker.test.js +19 -0
  273. package/dist/frontend/input-tracker.test.js.map +1 -1
  274. package/dist/frontend/lowering/array-values.js +100 -2
  275. package/dist/frontend/lowering/array-values.js.map +1 -1
  276. package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
  277. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  278. package/dist/frontend/lowering/builtins/child-process.js +13 -2
  279. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  280. package/dist/frontend/lowering/builtins/crypto.js +84 -9
  281. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  282. package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
  283. package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
  284. package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
  285. package/dist/frontend/lowering/builtins/numbers.js +9 -1
  286. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  287. package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
  288. package/dist/frontend/lowering/builtins/promises.js +88 -2
  289. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  290. package/dist/frontend/lowering/builtins/readline.d.ts +5 -1
  291. package/dist/frontend/lowering/builtins/readline.js +35 -3
  292. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  293. package/dist/frontend/lowering/builtins/url.js +24 -1
  294. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  295. package/dist/frontend/lowering/builtins/webassembly.js +6 -3
  296. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  297. package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
  298. package/dist/frontend/lowering/class-callbacks.js +82 -12
  299. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  300. package/dist/frontend/lowering/class-construction.d.ts +4 -1
  301. package/dist/frontend/lowering/class-construction.js +17 -3
  302. package/dist/frontend/lowering/class-construction.js.map +1 -1
  303. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +39 -2
  304. package/dist/frontend/lowering/class-dynamic-dispatch.js +766 -108
  305. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  306. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +47 -0
  307. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  308. package/dist/frontend/lowering/class-iterables.d.ts +2 -1
  309. package/dist/frontend/lowering/class-iterables.js +9 -1
  310. package/dist/frontend/lowering/class-iterables.js.map +1 -1
  311. package/dist/frontend/lowering/class-method-mutations.js +32 -9
  312. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  313. package/dist/frontend/lowering/class-prototypes.js +31 -2
  314. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  315. package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
  316. package/dist/frontend/lowering/class-runtime-statics.js +29 -4
  317. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  318. package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
  319. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  320. package/dist/frontend/lowering/coercions/structural.js +91 -1
  321. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  322. package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
  323. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  324. package/dist/frontend/lowering/containers/array-callbacks.js +338 -18
  325. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  326. package/dist/frontend/lowering/containers/array-concat.js +10 -0
  327. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  328. package/dist/frontend/lowering/containers/array-methods.js +15 -0
  329. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  330. package/dist/frontend/lowering/containers/array-pipelines.js +19 -8
  331. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  332. package/dist/frontend/lowering/containers/bytes.js +2 -1
  333. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  334. package/dist/frontend/lowering/containers/callback-arguments.js +3 -0
  335. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  336. package/dist/frontend/lowering/containers/collection-methods.js +7 -2
  337. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  338. package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
  339. package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
  340. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
  341. package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
  342. package/dist/frontend/lowering/containers/indexed-objects.js +46 -7
  343. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  344. package/dist/frontend/lowering/containers/string-and-regexp.js +55 -9
  345. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  346. package/dist/frontend/lowering/containers/string-replacement.js +43 -19
  347. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  348. package/dist/frontend/lowering/dispatch-sites.js +15 -1
  349. package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
  350. package/dist/frontend/lowering/divergences.js +9 -1
  351. package/dist/frontend/lowering/divergences.js.map +1 -1
  352. package/dist/frontend/lowering/error-methods.js +47 -2
  353. package/dist/frontend/lowering/error-methods.js.map +1 -1
  354. package/dist/frontend/lowering/expressions/array-literals.js +47 -0
  355. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  356. package/dist/frontend/lowering/expressions/binary.js +36 -2
  357. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  358. package/dist/frontend/lowering/expressions/element-access.js +90 -13
  359. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  360. package/dist/frontend/lowering/expressions/identifiers.js +33 -4
  361. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  362. package/dist/frontend/lowering/expressions/narrowing.js +95 -1
  363. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  364. package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
  365. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  366. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  367. package/dist/frontend/lowering/expressions/object-literals.js +138 -51
  368. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  369. package/dist/frontend/lowering/expressions/optional-chains.js +12 -0
  370. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  371. package/dist/frontend/lowering/expressions/property-access.js +113 -11
  372. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  373. package/dist/frontend/lowering/expressions/relational.js +212 -33
  374. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  375. package/dist/frontend/lowering/expressions/union-fields.js +4 -0
  376. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  377. package/dist/frontend/lowering/expressions/updates.js +22 -3
  378. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  379. package/dist/frontend/lowering/frozen-records.d.ts +28 -0
  380. package/dist/frontend/lowering/frozen-records.js +322 -0
  381. package/dist/frontend/lowering/frozen-records.js.map +1 -0
  382. package/dist/frontend/lowering/function-returns.js +49 -0
  383. package/dist/frontend/lowering/function-returns.js.map +1 -1
  384. package/dist/frontend/lowering/generic-functions.js +7 -2
  385. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  386. package/dist/frontend/lowering/iterable-values.d.ts +49 -0
  387. package/dist/frontend/lowering/iterable-values.js +297 -0
  388. package/dist/frontend/lowering/iterable-values.js.map +1 -0
  389. package/dist/frontend/lowering/iterator-adapters.js +186 -1
  390. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  391. package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
  392. package/dist/frontend/lowering/js-class-fields.js +45 -10
  393. package/dist/frontend/lowering/js-class-fields.js.map +1 -1
  394. package/dist/frontend/lowering/key-order-witness.d.ts +18 -3
  395. package/dist/frontend/lowering/key-order-witness.js +770 -22
  396. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  397. package/dist/frontend/lowering/key-order-witness.test.js +428 -8
  398. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  399. package/dist/frontend/lowering/lower-async-iteration.js +4 -1
  400. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  401. package/dist/frontend/lowering/lower-calls.d.ts +7 -0
  402. package/dist/frontend/lowering/lower-calls.js +443 -41
  403. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  404. package/dist/frontend/lowering/lower-classes.d.ts +11 -2
  405. package/dist/frontend/lowering/lower-classes.js +302 -22
  406. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  407. package/dist/frontend/lowering/lower-dgram.js +3 -1
  408. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  409. package/dist/frontend/lowering/lower-exprs.js +10 -2
  410. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  411. package/dist/frontend/lowering/lower-functions.d.ts +11 -0
  412. package/dist/frontend/lowering/lower-functions.js +83 -0
  413. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  414. package/dist/frontend/lowering/lower-generators.js +41 -31
  415. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  416. package/dist/frontend/lowering/lower-global-value.js +6 -3
  417. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  418. package/dist/frontend/lowering/lower-inspect.js +18 -6
  419. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  420. package/dist/frontend/lowering/lower-modules.js +32 -0
  421. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  422. package/dist/frontend/lowering/lower-namespaces.js +5 -1
  423. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  424. package/dist/frontend/lowering/lower-server.js +2 -2
  425. package/dist/frontend/lowering/lower-server.js.map +1 -1
  426. package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
  427. package/dist/frontend/lowering/lower-stdlib.js +30 -0
  428. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  429. package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
  430. package/dist/frontend/lowering/lower-stmts.js +454 -48
  431. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  432. package/dist/frontend/lowering/lower-stream.d.ts +20 -2
  433. package/dist/frontend/lowering/lower-stream.js +1483 -156
  434. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  435. package/dist/frontend/lowering/lowerer.d.ts +77 -6
  436. package/dist/frontend/lowering/lowerer.js +313 -29
  437. package/dist/frontend/lowering/lowerer.js.map +1 -1
  438. package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
  439. package/dist/frontend/lowering/module-namespace-elements.js +82 -5
  440. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  441. package/dist/frontend/lowering/new-target.d.ts +12 -0
  442. package/dist/frontend/lowering/new-target.js +280 -0
  443. package/dist/frontend/lowering/new-target.js.map +1 -0
  444. package/dist/frontend/lowering/surfaces.d.ts +3 -0
  445. package/dist/frontend/lowering/surfaces.js +18 -6
  446. package/dist/frontend/lowering/surfaces.js.map +1 -1
  447. package/dist/frontend/lowering/undefined-index.d.ts +27 -0
  448. package/dist/frontend/lowering/undefined-index.js +82 -0
  449. package/dist/frontend/lowering/undefined-index.js.map +1 -0
  450. package/dist/frontend/lowering/var-hoisting.js +29 -13
  451. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  452. package/dist/frontend/lowering/width-lift.d.ts +18 -0
  453. package/dist/frontend/npm-static-bundled-chunks.js +9 -11
  454. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  455. package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
  456. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  457. package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
  458. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  459. package/dist/frontend/npm-static.js +4 -20
  460. package/dist/frontend/npm-static.js.map +1 -1
  461. package/dist/frontend/package-shims.d.ts +3 -0
  462. package/dist/frontend/package-shims.js +71 -8
  463. package/dist/frontend/package-shims.js.map +1 -1
  464. package/dist/frontend/pipeline.js +18 -10
  465. package/dist/frontend/pipeline.js.map +1 -1
  466. package/dist/frontend/process-fork.d.ts +25 -0
  467. package/dist/frontend/process-fork.js +2 -0
  468. package/dist/frontend/process-fork.js.map +1 -0
  469. package/dist/frontend/program.d.ts +8 -1
  470. package/dist/frontend/program.js +484 -69
  471. package/dist/frontend/program.js.map +1 -1
  472. package/dist/frontend/program.test.js +43 -3
  473. package/dist/frontend/program.test.js.map +1 -1
  474. package/dist/frontend/token-equivalence.d.ts +3 -0
  475. package/dist/frontend/token-equivalence.js +409 -0
  476. package/dist/frontend/token-equivalence.js.map +1 -0
  477. package/dist/frontend/token-equivalence.test.d.ts +1 -0
  478. package/dist/frontend/token-equivalence.test.js +67 -0
  479. package/dist/frontend/token-equivalence.test.js.map +1 -0
  480. package/dist/frontend/ts7/ast-node.d.ts +22 -0
  481. package/dist/frontend/ts7/ast-node.js +1048 -103
  482. package/dist/frontend/ts7/ast-node.js.map +1 -1
  483. package/dist/frontend/ts7/ast-node.test.js +24 -0
  484. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  485. package/dist/frontend/ts7/ast-wire.d.ts +4 -3
  486. package/dist/frontend/ts7/ast-wire.js +34 -24
  487. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  488. package/dist/frontend/ts7/ast-wire.test.js +23 -0
  489. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  490. package/dist/frontend/ts7/checker-backend.d.ts +3 -4
  491. package/dist/frontend/ts7/checker-backend.js +2 -2
  492. package/dist/frontend/ts7/checker-backend.js.map +1 -1
  493. package/dist/frontend/ts7/checker-backend.test.js +5 -9
  494. package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
  495. package/dist/frontend/ts7/checker.d.ts +4 -0
  496. package/dist/frontend/ts7/checker.js +7 -0
  497. package/dist/frontend/ts7/checker.js.map +1 -1
  498. package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
  499. package/dist/frontend/ts7/lib-diagnostics.js +307 -0
  500. package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
  501. package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
  502. package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
  503. package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
  504. package/dist/frontend/ts7/program-host.d.ts +7 -0
  505. package/dist/frontend/ts7/program-host.js +25 -2
  506. package/dist/frontend/ts7/program-host.js.map +1 -1
  507. package/dist/frontend/ts7/session.d.ts +14 -1
  508. package/dist/frontend/ts7/session.js +22 -0
  509. package/dist/frontend/ts7/session.js.map +1 -1
  510. package/dist/frontend/type-mapper.d.ts +13 -1
  511. package/dist/frontend/type-mapper.js +191 -11
  512. package/dist/frontend/type-mapper.js.map +1 -1
  513. package/dist/index.d.ts +0 -5
  514. package/dist/index.js +34 -4
  515. package/dist/index.js.map +1 -1
  516. package/dist/ir/analysis.js +5 -3
  517. package/dist/ir/analysis.js.map +1 -1
  518. package/dist/ir/array-length-stability.d.ts +4 -0
  519. package/dist/ir/array-length-stability.js +19 -6
  520. package/dist/ir/array-length-stability.js.map +1 -1
  521. package/dist/ir/array-length-stability.test.js +24 -0
  522. package/dist/ir/array-length-stability.test.js.map +1 -1
  523. package/dist/ir/builtin-effects.d.ts +7 -0
  524. package/dist/ir/builtin-effects.js +52 -0
  525. package/dist/ir/builtin-effects.js.map +1 -1
  526. package/dist/ir/builtin-signatures.d.ts +6 -4
  527. package/dist/ir/builtin-signatures.js +166 -13
  528. package/dist/ir/builtin-signatures.js.map +1 -1
  529. package/dist/ir/callback-specialization.d.ts +2 -1
  530. package/dist/ir/callback-specialization.js +23 -18
  531. package/dist/ir/callback-specialization.js.map +1 -1
  532. package/dist/ir/char-unit-locals.d.ts +19 -0
  533. package/dist/ir/char-unit-locals.js +185 -0
  534. package/dist/ir/char-unit-locals.js.map +1 -0
  535. package/dist/ir/char-unit-locals.test.d.ts +1 -0
  536. package/dist/ir/char-unit-locals.test.js +94 -0
  537. package/dist/ir/char-unit-locals.test.js.map +1 -0
  538. package/dist/ir/final-fields.d.ts +2 -1
  539. package/dist/ir/final-fields.js +14 -16
  540. package/dist/ir/final-fields.js.map +1 -1
  541. package/dist/ir/function-references.d.ts +2 -0
  542. package/dist/ir/function-references.js +2 -0
  543. package/dist/ir/function-references.js.map +1 -1
  544. package/dist/ir/function-references.test.js +3 -0
  545. package/dist/ir/function-references.test.js.map +1 -1
  546. package/dist/ir/initializer-bindings.d.ts +2 -1
  547. package/dist/ir/initializer-bindings.js +27 -20
  548. package/dist/ir/initializer-bindings.js.map +1 -1
  549. package/dist/ir/int32-arrays.d.ts +108 -0
  550. package/dist/ir/int32-arrays.js +831 -0
  551. package/dist/ir/int32-arrays.js.map +1 -0
  552. package/dist/ir/int32-slots.d.ts +24 -2
  553. package/dist/ir/int32-slots.js +259 -57
  554. package/dist/ir/int32-slots.js.map +1 -1
  555. package/dist/ir/integer-loops.d.ts +3 -3
  556. package/dist/ir/integer-loops.js +14 -6
  557. package/dist/ir/integer-loops.js.map +1 -1
  558. package/dist/ir/integer-loops.test.js +10 -0
  559. package/dist/ir/integer-loops.test.js.map +1 -1
  560. package/dist/ir/integer-ranges.d.ts +5 -0
  561. package/dist/ir/integer-ranges.js +125 -12
  562. package/dist/ir/integer-ranges.js.map +1 -1
  563. package/dist/ir/integer-ranges.test.js +30 -0
  564. package/dist/ir/integer-ranges.test.js.map +1 -1
  565. package/dist/ir/ir.d.ts +70 -7
  566. package/dist/ir/ir.js +58 -1
  567. package/dist/ir/ir.js.map +1 -1
  568. package/dist/ir/ir.test.js +21 -1
  569. package/dist/ir/ir.test.js.map +1 -1
  570. package/dist/ir/js-ic.d.ts +19 -2
  571. package/dist/ir/js-ic.js +95 -11
  572. package/dist/ir/js-ic.js.map +1 -1
  573. package/dist/ir/js-ic.test.js +188 -0
  574. package/dist/ir/js-ic.test.js.map +1 -1
  575. package/dist/ir/node-index.d.ts +57 -0
  576. package/dist/ir/node-index.js +215 -0
  577. package/dist/ir/node-index.js.map +1 -0
  578. package/dist/ir/paired-while-loops.d.ts +25 -0
  579. package/dist/ir/paired-while-loops.js +335 -0
  580. package/dist/ir/paired-while-loops.js.map +1 -0
  581. package/dist/ir/paired-while-loops.test.d.ts +1 -0
  582. package/dist/ir/paired-while-loops.test.js +163 -0
  583. package/dist/ir/paired-while-loops.test.js.map +1 -0
  584. package/dist/ir/parameter-versions.d.ts +25 -0
  585. package/dist/ir/parameter-versions.js +300 -0
  586. package/dist/ir/parameter-versions.js.map +1 -0
  587. package/dist/ir/runtime-features.d.ts +34 -13
  588. package/dist/ir/runtime-features.js +152 -38
  589. package/dist/ir/runtime-features.js.map +1 -1
  590. package/dist/ir/serialize.d.ts +12 -2
  591. package/dist/ir/serialize.js +16 -3
  592. package/dist/ir/serialize.js.map +1 -1
  593. package/dist/ir/serialize.test.js +17 -0
  594. package/dist/ir/serialize.test.js.map +1 -1
  595. package/dist/ir/traverse.js +18 -6
  596. package/dist/ir/traverse.js.map +1 -1
  597. package/dist/ir/validate.js +122 -36
  598. package/dist/ir/validate.js.map +1 -1
  599. package/dist/library/ir-policy.js +2 -0
  600. package/dist/library/ir-policy.js.map +1 -1
  601. package/dist/native/cache.d.ts +6 -1
  602. package/dist/native/cache.js +28 -5
  603. package/dist/native/cache.js.map +1 -1
  604. package/dist/native/cache.test.js +16 -2
  605. package/dist/native/cache.test.js.map +1 -1
  606. package/dist/native/cli.js +21 -1
  607. package/dist/native/cli.js.map +1 -1
  608. package/dist/native/compiler.js +8 -6
  609. package/dist/native/compiler.js.map +1 -1
  610. package/dist/native/executable-cache.d.ts +1 -1
  611. package/dist/native/executable-cache.js +2 -2
  612. package/dist/native/executable-cache.js.map +1 -1
  613. package/dist/native/prepare.d.ts +3 -1
  614. package/dist/native/prepare.js +119 -31
  615. package/dist/native/prepare.js.map +1 -1
  616. package/dist/native/prepare.test.js +78 -18
  617. package/dist/native/prepare.test.js.map +1 -1
  618. package/dist/native/sanitizer.test.js +2 -0
  619. package/dist/native/sanitizer.test.js.map +1 -1
  620. package/dist/native/text-file.d.ts +13 -3
  621. package/dist/native/text-file.js +63 -9
  622. package/dist/native/text-file.js.map +1 -1
  623. package/dist/native/text-file.test.d.ts +1 -0
  624. package/dist/native/text-file.test.js +49 -0
  625. package/dist/native/text-file.test.js.map +1 -0
  626. package/dist/native/toolchain.js +4 -4
  627. package/dist/native/toolchain.js.map +1 -1
  628. package/dist/native/toolchain.test.js +3 -3
  629. package/dist/native/toolchain.test.js.map +1 -1
  630. package/package.json +21 -21
  631. package/shims/chalk/v5.ts +688 -0
  632. package/shims/hono-node-server/v2.ts +645 -0
  633. package/shims/hot-shots/client.ts +1126 -0
  634. package/shims/hot-shots/v8-unix-dgram.ts +8 -0
  635. package/shims/hot-shots/v8.ts +8 -0
  636. package/surface-manifest.json +26 -4
@@ -2,11 +2,10 @@ import { JsIcSites } from "../../ir/js-ic.js";
2
2
  import { type ArraySearchKind } from "./array-search.js";
3
3
  import type { IrBytesElem, IrExpr, IrFfiCallbackParam, IrFfiImport, IrFunction, IrGlobal, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
4
4
  import { type RuntimeFeatures } from "../../ir/runtime-features.js";
5
- import { type DenseArrayLoop } from "./dense-array-loops.js";
6
- import { findInitializedByteLoopBindings } from "./byte-windows.js";
7
5
  import { matchBytesLoopVersion } from "./bytes-loop-versions.js";
8
- import type { IntegerCountedForLoop } from "../../ir/integer-loops.js";
6
+ import type { IntegerCountedForLoop, IntegerPairedForLoop } from "../../ir/integer-loops.js";
9
7
  import { type SplitSpan, type StoredSplitSnapshot } from "./split-loops.js";
8
+ import { type ChunkResult, EmitJournal } from "./emit-journal.js";
10
9
  import { type IntegerRange, type IntegerRanges } from "../../ir/integer-ranges.js";
11
10
  import { type Int32Slots } from "../../ir/int32-slots.js";
12
11
  import { type FinalFields } from "../../ir/final-fields.js";
@@ -24,9 +23,11 @@ import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
24
23
  import { InlineUnionFields } from "./inline-unions.js";
25
24
  import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
26
25
  import { CheckedNarrows } from "./checked-narrows.js";
26
+ import { type ArrayAccess } from "./dense-array-access.js";
27
27
  import { type MapReadLifetimes } from "./map-read-lifetimes.js";
28
28
  import { type MapEntryFusion } from "./map-entry-fusion.js";
29
29
  import { type WalkBorrowHost } from "./walk-borrows.js";
30
+ import { IrNodeIndex } from "../../ir/node-index.js";
30
31
  import { ReferenceEffects } from "./reference-effects.js";
31
32
  import { ReferenceWrites, type Writes } from "./reference-writes.js";
32
33
  import { LlvmDebugInfo } from "./debug-info.js";
@@ -65,9 +66,31 @@ export interface LlScopeEntry {
65
66
  * environment, which skip the release call. */
66
67
  lazy?: boolean;
67
68
  }
69
+ /** Process primitives for forked emission workers. */
70
+ export interface ForkPrimitives {
71
+ /** 0 in the worker, the worker's pid in the parent, -1 on failure. */
72
+ fork(): number;
73
+ /** Ends the worker without running exit handlers. */
74
+ exit(code: number): void;
75
+ /** The worker's exit status, 128 plus a signal number, or -1. */
76
+ wait(pid: number): number;
77
+ }
68
78
  export interface LlvmTargetOptions {
69
79
  /** C ABI target; omitted direct emission uses the host ABI. */
70
80
  targetTriple?: string;
81
+ /** Emit the function bodies in this many contiguous ranges, each by its
82
+ * own emitter, and merge them in function order (emit-journal.ts). The
83
+ * output is the same as one emitter's. Debug builds (`debugSources`)
84
+ * emit in one emitter. */
85
+ functionChunks?: number;
86
+ /** Emit the function bodies of a large module on this many forked worker
87
+ * processes at a time (emit-module.ts), forked with `forkPrimitives`. The
88
+ * output is the same as one emitter's. Debug builds (`debugSources`)
89
+ * emit in one emitter. */
90
+ functionWorkers?: number;
91
+ /** The host's process primitives, where it can fork (the native
92
+ * compiler's). */
93
+ forkPrimitives?: ForkPrimitives | undefined;
71
94
  /** Exact frontend sources for dev-build locations and variable metadata. */
72
95
  debugSources?: ReadonlyMap<string, string>;
73
96
  /** Pointer width of the target C ABI. Native targets are 64-bit today. */
@@ -112,6 +135,9 @@ export interface LlvmTargetOptions {
112
135
  * `wasi`). */
113
136
  export declare function lowRegionTarget(platform: string, sanitize: boolean): boolean;
114
137
  export declare function emitLlvmModule(input: IrModule, options?: LlvmTargetOptions): string;
138
+ /** emitLlvmModule's text as parts that concatenate to it, without the copy
139
+ * that joining them makes: a large program's text is 150 MB. */
140
+ export declare function emitLlvmModuleParts(input: IrModule, options?: LlvmTargetOptions): string[];
115
141
  /** Keep large translation units below the host's single-string limit. */
116
142
  export declare function emitLlvmModuleSource(input: IrModule, options?: LlvmTargetOptions): string | readonly string[];
117
143
  export declare function llStrBytes(text: string): string;
@@ -141,6 +167,8 @@ export declare function boxSlotCount(fn: IrFunction): number;
141
167
  export declare const MAX_BYTES_LOOP_VERSION_DEPTH = 3;
142
168
  export declare class LlEmitter {
143
169
  readonly mod: IrModule;
170
+ /** Per-feature state (emitter-state.ts), indexed by each key's slot. */
171
+ readonly moduleStates: unknown[];
144
172
  localArrayReads: Map<string, LocalArrayRead>;
145
173
  loopArrayBorrows: ReadonlySet<IrStmt>;
146
174
  scalarStringSlices: Map<string, {
@@ -223,9 +251,11 @@ export declare class LlEmitter {
223
251
  * 32-bit references to compact class instances (LlClassMeta.compressed):
224
252
  * loadField/loadRef decode them and storeField/storeRef encode them. */
225
253
  readonly compressedFieldPtrs: Set<string>;
226
- /** Whether a class has compressed fields: main reserves the region before
227
- * compiled code runs (scr_plr_init). */
228
- usesCompactRefs: boolean;
254
+ /** Compact class instances live in the program-lifetime region below
255
+ * 32 GiB (LlvmTargetOptions.lowRegion, and the program has compact
256
+ * classes): main reserves it before compiled code runs (scr_plr_init), and
257
+ * fields and arrays of compactRefType hold 32-bit references. */
258
+ compactRegion: boolean;
229
259
  /** Native class fields with different property names cannot occupy the
230
260
  * same slot of one object. Inherited views of the same property share a
231
261
  * tag. Array storage has its own disjoint categories; untagged runtime
@@ -235,9 +265,64 @@ export declare class LlEmitter {
235
265
  /** The alias tag of a runtime word that emitted code reads and writes
236
266
  * outside every field (the lifetime-region count, owner and cursors). */
237
267
  memoryAliasAttachment(category: string): string;
268
+ /** The current function's int32 array allocations: the array literals
269
+ * its int32 arrays are written with. They construct SCR_ELEM_I32 arrays. */
270
+ int32Allocations: Set<IrExpr>;
271
+ /** The fill temporaries (`new Array(n).fill(v)`) of those allocations:
272
+ * the same arrays, so int32 too. */
273
+ int32ArrayTemps: Set<string>;
274
+ /** The same for the current function's int32 arrays with checked stores,
275
+ * which are only allocated by fills (ir/int32-arrays.ts
276
+ * checkableInt32Allocations): their temporaries' literals, with the fill's
277
+ * length (a literal constructs SCR_ELEM_I32 storage when that length is at
278
+ * least CHECKED_INT32_MIN_LENGTH, SCR_ELEM_F64 otherwise), and their
279
+ * temporaries. */
280
+ checkedAllocations: Map<IrExpr, IrExpr>;
281
+ checkedArrayTemps: Set<string>;
282
+ /** The fill calls (`.fill(v)`) of those allocations: a value that is not
283
+ * an int32 widens the new array first. */
284
+ checkedFills: Set<IrExpr>;
285
+ /** Collect the int32 allocations of `fn`, about to be emitted. */
286
+ findInt32Allocations(fn: IrFunction): void;
287
+ /** Whether `arr` reads one of the int32 arrays (ir/int32-arrays.ts, kept
288
+ * by the int32 slot analysis): a local or parameter of the current
289
+ * function, or a module global. */
290
+ int32Array(arr: IrExpr): boolean;
291
+ /** Whether `arr` is one of the current function's int32 arrays with
292
+ * checked stores: int32 slots until a store widens it to doubles. Every
293
+ * access tests its kind (emitByElementKind), except in the fast copy of
294
+ * an int32 kind loop, which reads and writes it as an int32 array. */
295
+ checkedInt32Array(arr: IrExpr): boolean;
296
+ /** Whether the local `localId` holds one of the current function's int32
297
+ * arrays with checked stores. */
298
+ checkedInt32Local(localId: string): boolean;
299
+ /** Whether `arr` is an int32 array with checked stores that the fast copy
300
+ * of the int32 kind loop being emitted holds as an int32 array. */
301
+ int32KindArray(arr: IrExpr): boolean;
302
+ /** Before a store of `value` (of `expr`) into `arr`, in the fast copy of
303
+ * an int32 kind loop: continue when it is an int32 that is not -0, and
304
+ * otherwise leave for the statement's resume point, where it re-executes
305
+ * with kind tests. Returns the value as an i32 when it is at hand as an
306
+ * integer, or null when the store converts the double itself. */
307
+ emitInt32KindStoreCheck(arr: IrExpr, value: LlValue, expr: IrExpr): string | null;
308
+ /** Emit an access to the checked int32 array `array` once per element
309
+ * kind: `arm("i32", widened)` while it holds int32 slots and
310
+ * `arm("f64", widened)` after it widened, joined after both. `widened` is
311
+ * the label of the double arm, where an int32 arm's store of a value that
312
+ * is not an int32 continues after widening the array. Returns the phi of
313
+ * the arms' results (of LLVM type `ty`), or null when `ty` is null. */
314
+ emitByElementKind(array: string, ty: string | null, arm: (acc: "i32" | "f64", widened: string) => string | null): string | null;
315
+ /** Before storing the double `value` (of `expr`) into an int32 arm
316
+ * (emitByElementKind) of the checked int32 array `array`: continue in this
317
+ * arm when it is an int32 that is not -0, or widen the array and continue
318
+ * at `widened`. A value proven an int32 needs no test. */
319
+ emitCheckedInt32Store(array: string, value: string, expr: IrExpr, widened: string): void;
320
+ /** The access an element operation on `arr` (of element type `elem`)
321
+ * takes: int32 arrays read and write their 4-byte slots. */
322
+ arrayAccess(arr: IrExpr, elem: IrType): ArrayAccess;
238
323
  /** Whether an element access at `index` of `arr` lies in the hole-free
239
- * prefix: the counter of a dense array loop's fast copy indexing one of
240
- * the arrays its entry test covered. */
324
+ * prefix: a counter of a dense array loop's fast copy indexing one of the
325
+ * arrays its entry test covered. */
241
326
  provenDenseIndex(arr: IrExpr, index: IrExpr): boolean;
242
327
  fieldAliasAttachment(ptr: string): string;
243
328
  fieldAliasMetadata(): string[];
@@ -341,6 +426,10 @@ export declare class LlEmitter {
341
426
  }>;
342
427
  /** Interned ScrMapOps descriptors (scr_map.h): initializer → symbol. */
343
428
  readonly mapOpsConsts: Map<string, string>;
429
+ /** Method-id slots of checked-dynamic method calls
430
+ * (scr_dyn_invoke_prepared_id): method name → symbol of an i32 the
431
+ * runtime fills with the name's id on the first call. */
432
+ readonly methodIdSlots: Map<string, string>;
344
433
  /** Type-directed walker functions (JSON serializers, the indent
345
434
  * rewriter, union ToString/join) — interned per typeKey/unionId, defs
346
435
  * flushed with the shape helpers. */
@@ -389,6 +478,9 @@ export declare class LlEmitter {
389
478
  readonly callLifetimes: CallLifetimes;
390
479
  readonly constantCallbacks: Map<string, Map<string, string>>;
391
480
  currentConstantCallbacks: ReadonlyMap<string, string>;
481
+ /** The current function's running maximum and minimum updates, whose
482
+ * branches are weighted as rarely taken (running-extrema.ts). */
483
+ runningExtrema: ReadonlySet<IrStmt>;
392
484
  /** Callback bindings whose closures an enclosing callback loop version
393
485
  * proved to hold their known function: calls take the direct entry with
394
486
  * no fallback (emitCallbackVersionedLoop). */
@@ -437,6 +529,9 @@ export declare class LlEmitter {
437
529
  /** Module constants that keep one value once initialized
438
530
  * (immutability.ts stableGlobals). */
439
531
  stableGlobals: ReadonlySet<string>;
532
+ /** Every function body's nodes in walk order (ir/node-index.ts), for the
533
+ * constructor's analyses. */
534
+ readonly nodeIndex: IrNodeIndex;
440
535
  private readonly tdzGlobals;
441
536
  readonly constantNumericTables: ReadonlyMap<string, ConstantNumericTable>;
442
537
  /** Constant-key reads on checked-dynamic objects, each with its own
@@ -519,6 +614,9 @@ export declare class LlEmitter {
519
614
  readonly liveDynRefAdapters: Map<string, LlStreamTypedRefAdapter>;
520
615
  /** See moduleUsesDynBuiltinStream. */
521
616
  get usesDynBuiltinStream(): boolean;
617
+ /** A checked-dynamic for-await may hold a native stream: the program
618
+ * links the stream unit (and the dyn-async one the loop needs). */
619
+ get dynForAwaitStreams(): boolean;
522
620
  /** Runtime-arm dispatchers for live union values. */
523
621
  readonly liveDynUnionRefAdapters: Map<string, string>;
524
622
  readonly dynPromiseAdapters: Map<string, string>;
@@ -640,14 +738,6 @@ export declare class LlEmitter {
640
738
  * immortal from construction (classes.ts programLifetimeClass). */
641
739
  readonly programLifetime: ReadonlySet<string>;
642
740
  numericLocals: Map<string, IrLocal>;
643
- /** Local arrays of the current function that no other binding can hold
644
- * (ir/array-length-stability.ts). */
645
- unaliasedArrays: ReadonlySet<string>;
646
- /** Dense array loops (dense-array-loops.ts) run in this function. */
647
- denseLoopsEnabled: boolean;
648
- denseLoopEntries: ReturnType<typeof findInitializedByteLoopBindings>;
649
- /** The fast copy of a dense array loop being emitted. */
650
- denseLoop: DenseArrayLoop | null;
651
741
  captureIds: Set<string>;
652
742
  /** Active induction bindings retain their width independently of size_t. */
653
743
  integerLoopBindings: Map<string, {
@@ -672,7 +762,6 @@ export declare class LlEmitter {
672
762
  * async or generator body resumes with its locals in its frame, which
673
763
  * an entry alloca is not part of. */
674
764
  integerTempsEnabled: boolean;
675
- countedLoopsEnabled: boolean;
676
765
  /** Speculative integer loops (speculative-integers.ts) run in this function. */
677
766
  speculativeLoopsEnabled: boolean;
678
767
  /** The fast copy of a speculative integer loop being emitted: its
@@ -699,6 +788,18 @@ export declare class LlEmitter {
699
788
  * (`enterLoopHeader`): records the ordinary copy's header, or sends the
700
789
  * third copy's header there. */
701
790
  speculationHeader: ((header: string) => void) | null;
791
+ /** A copy of an int32 kind loop (int32-kind-loops.ts) being emitted: the
792
+ * int32 arrays with checked stores it reads and writes as int32 arrays
793
+ * (the fast copy) or as double arrays (an ordinary copy entered only
794
+ * after they widened), as `function\0local` keys, and where each of the
795
+ * fast copy's writes resumes in the third copy. */
796
+ int32Kinds: {
797
+ int32: Set<string>;
798
+ wide: Set<string>;
799
+ resume: Map<IrStmt, string>;
800
+ } | null;
801
+ /** The resume label of the fast-copy write being emitted. */
802
+ int32KindResume: string | null;
702
803
  /** The function being emitted, for speculative globals. */
703
804
  speculativeFunction: string;
704
805
  /** Every function that writes each number global (computed on demand). */
@@ -716,20 +817,14 @@ export declare class LlEmitter {
716
817
  int32Elements: ((arr: IrExpr) => boolean) | null;
717
818
  /** Sums whose result only feeds 32-bit conversions (wrapping-sums.ts). */
718
819
  wrappingSums: Set<IrExpr>;
719
- byteWindowsEnabled: boolean;
720
- byteWindowEntries: ReturnType<typeof findInitializedByteLoopBindings>;
721
- /** Typed-array loop versioning (bytes-loop-versions.ts) for the current
722
- * function: off in debug and suspending functions and inside a copy. */
723
- bytesLoopVersionsEnabled: boolean;
724
- /** Loops being versioned around the statement being emitted: a loop is
725
- * never versioned inside its own copies, and versions nest boundedly. */
726
- readonly bytesLoopVersioning: Set<IrStmt>;
727
- bytesLoopEntries: ReturnType<typeof findInitializedByteLoopBindings> | null;
728
- bytesLoopFunction: IrFunction | null;
729
- /** Counted loops whose integer-form safety test an enclosing version
730
- * guard already passed. */
731
- readonly provenCountedGuards: Set<IrStmt>;
820
+ /** Number locals of the current function that hold exact integers or NaN
821
+ * (findIntegerOrNaNLocals in wrapping-sums.ts). */
822
+ integerOrNaNLocals: ReadonlyMap<string, IntegerRange>;
732
823
  bytesBounds: ReadonlySet<IrExpr | IrStmt>;
824
+ /** The charCodeAt reads standing for charAt reads the emitter rewrote
825
+ * (one-unit tests and switches, charAtUnitRead), with the charAt each
826
+ * stands for: a loop version's proof for the charAt covers its read. */
827
+ readonly charAtUnitReads: Map<IrExpr, IrExpr>;
733
828
  /** Worker programs: typed-array accesses whose views an enclosing version
734
829
  * guard proved thread-owned. */
735
830
  bytesOwned: ReadonlySet<IrExpr | IrStmt>;
@@ -808,9 +903,17 @@ export declare class LlEmitter {
808
903
  readonly chainSlots: Map<string, LlValue>;
809
904
  logArgSlots: number;
810
905
  readonly stackTraces: boolean;
906
+ /** The options this emitter was built with (chunk emitters reuse them). */
907
+ readonly targetOptions: LlvmTargetOptions;
908
+ /** Records the module-level effects of emitting a range of functions,
909
+ * which the emitter that merges the range replays (emit-journal.ts). Null
910
+ * when this emitter emits the whole module itself. */
911
+ journal: EmitJournal | null;
912
+ /** The emitter's hosts forward to `journal` (journal set, or workers). */
913
+ private readonly journaled;
811
914
  /** Stack-trace mode: functions no capture can include (no frame push). */
812
915
  readonly unframedFunctions: ReadonlySet<string>;
813
- constructor(mod: IrModule, options: LlvmTargetOptions);
916
+ constructor(mod: IrModule, options: LlvmTargetOptions, journal?: EmitJournal | null);
814
917
  /** The borrowed parameters of a hierarchy's vtable slot (empty: owned). */
815
918
  virtualSlotBorrowed(rootName: string, slotIndex: number): ReadonlySet<number>;
816
919
  /** Optimized emission: no debug-info (dev) posture. */
@@ -966,6 +1069,8 @@ export declare class LlEmitter {
966
1069
  /** Interned NUL-terminated C-string constant (the scr_jb_puts /
967
1070
  * stringify-indent currency) — `@`-ref, first-use order. */
968
1071
  cstr(text: string): string;
1072
+ /** The method-id slot for a constant method name (methodIdSlots). */
1073
+ methodIdSlot(name: string): string;
969
1074
  needBadTag(): void;
970
1075
  /** The ScrMapOps descriptor holding these operands (ShapeHost.mapOps). */
971
1076
  mapOps(operands: readonly string[]): string;
@@ -1184,6 +1289,12 @@ export declare class LlEmitter {
1184
1289
  inline: boolean;
1185
1290
  compressed: boolean;
1186
1291
  };
1292
+ /** Whether values of `t` are NULL or a compact class instance: `C`,
1293
+ * `C | undefined` or `C | null` for a compact class `C`. `C | null |
1294
+ * undefined` is not: its null is a sentinel outside the region. */
1295
+ compactRefType(t: IrType, isCompact?: (className: string) => boolean): boolean;
1296
+ /** Whether arrays of `elem` hold 32-bit references (SCR_ELEM_CREF). */
1297
+ compactArrayElem(elem: IrType): boolean;
1187
1298
  /** Loads the reference a field pointer addresses: a pointer, or the
1188
1299
  * decoded 32-bit reference of a compressed field (compressedFieldPtrs).
1189
1300
  * `tagged`: the load carries the field's alias tags. */
@@ -1244,8 +1355,8 @@ export declare class LlEmitter {
1244
1355
  /** A binding's storage: a module global, a plain local slot, or a boxed
1245
1356
  * local (the slot holds the capture BOX; access goes through it). */
1246
1357
  matchBytesLoopVersion(s: IrStmt & {
1247
- kind: "for";
1248
- }, counted: IntegerCountedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
1358
+ kind: "for" | "while";
1359
+ }, counted: IntegerCountedForLoop | null, paired?: IntegerPairedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
1249
1360
  /** The alias tag of a whole-slot load of a binding (module globals only). */
1250
1361
  slotAlias(id: string): string;
1251
1362
  binding(id: string): {
@@ -1343,6 +1454,26 @@ export declare class LlEmitter {
1343
1454
  * parameter, at the top of the body. */
1344
1455
  doubleCopies(fn: IrFunction): string[];
1345
1456
  emitFunction(fn: IrFunction): string;
1457
+ /** What this range emitter (chunkEmitter) hands the merging emitter, as
1458
+ * plain data a worker process can write: its journal and the sets and
1459
+ * flags its functions set. */
1460
+ chunkResult(): ChunkResult;
1461
+ /** Merges a range emitter's result (chunkResult) into this emitter, in
1462
+ * the range's order, and answers the rename of the range's text to this
1463
+ * emitter's numbered helpers. Ranges merge in function order. */
1464
+ mergeChunk(chunk: ChunkResult): (text: string) => string;
1465
+ /** Adds a content-named constant a chunk interned. Its symbol is this
1466
+ * emitter's own: a digest collision retries in first-use order, which a
1467
+ * chunk alone does not know. */
1468
+ private addContentEntry;
1469
+ /** Applies a chunk's table entry (EmitJournal.entry) at its place in the
1470
+ * chunk's order: a key this emitter lacks is added, numbered after its
1471
+ * own entries where the table numbers them, and the chunk's name for it
1472
+ * is renamed to this emitter's. */
1473
+ applyJournalEntry(table: string, key: string, value: unknown, names: Map<string, string>, tags: Map<number, number>): void;
1474
+ /** An emitter for a range of this module's functions: the same facts,
1475
+ * empty module-level tables, and a journal of what the range adds. */
1476
+ chunkEmitter(): LlEmitter;
1346
1477
  /** The double-ABI entry of a function with an i32 entry: every caller
1347
1478
  * that is not a direct call (closures, dispatch, adapters, the runtime)
1348
1479
  * enters here. A pending exception passes through to its caller. */
@@ -1583,6 +1714,11 @@ export declare class LlEmitter {
1583
1714
  * "compact": classes.ts COMPACT_PUBLISHED); leaves the builder in the cold
1584
1715
  * block and answers the continuation label. */
1585
1716
  private emitPublishedTest;
1717
+ /** Branches on "the array `arr` is frozen" (SCR_ARR_FROZEN in its storage
1718
+ * flags, scr_array.h), or published too when `published`; like
1719
+ * emitPublishedTest, leaves the builder in the cold block and answers the
1720
+ * continuation label. */
1721
+ private emitFrozenArrayTest;
1586
1722
  private publishedNamesSym;
1587
1723
  /** The class-name table the hierarchy field guards index by preorder. */
1588
1724
  publishedClassNamesDefs(): string[];
@@ -1597,7 +1733,7 @@ export declare class LlEmitter {
1597
1733
  emitPublishedFieldGuard(obj: string, className: string | null, field: string): void;
1598
1734
  /** The frozen-array guard (scr_throw_published_array's ops): `index` and
1599
1735
  * `count` are doubles (the written index, the argument count). */
1600
- emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string): void;
1736
+ emitPublishedArrayGuard(arr: string, arrType: IrType, op: number, index?: string, count?: string, third?: string | null): void;
1601
1737
  /** The published Map/Set guard: "Cannot modify a published Map/Set". */
1602
1738
  emitPublishedCollectionGuard(m: string, t: IrType): void;
1603
1739
  emitSerializationExpr(e: ExprOf<"jsonStringify" | "dynCheck">): LlValue;
@@ -1673,6 +1809,9 @@ export declare class LlEmitter {
1673
1809
  jsIcSite(): string;
1674
1810
  /** A fresh read-site cache for one constant-key dyn read. */
1675
1811
  dynReadIcSite(): string;
1812
+ /** A fresh speculative loop site: the global that counts its bailing
1813
+ * entries in a row. */
1814
+ speculativeLoopSite(): string;
1676
1815
  dynKind(d: string): string;
1677
1816
  raceAdapterFor(from: IrType, to: IrType): string;
1678
1817
  genResultThunkFor(genT: IrType & {
@@ -1712,7 +1851,7 @@ export declare class LlEmitter {
1712
1851
  streamDataAdapter(cbT: IrType & {
1713
1852
  kind: "func";
1714
1853
  }): string;
1715
- streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l", doneT: IrType & {
1854
+ streamDoneFnFor(kind: "w" | "f" | "d" | "t" | "l" | "c", doneT: IrType & {
1716
1855
  kind: "func";
1717
1856
  }): string;
1718
1857
  fsRenameThunkFor(cbT: IrType & {
@@ -1727,10 +1866,10 @@ export declare class LlEmitter {
1727
1866
  zlibBytesThunkFor(cbT: IrType & {
1728
1867
  kind: "func";
1729
1868
  }): string;
1730
- streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e", cbT: IrType): string;
1869
+ streamCbThunkFor(kind: "r" | "w" | "f" | "d" | "t" | "l" | "e" | "c" | "v", cbT: IrType): string;
1731
1870
  resolveThunkFor(inner: IrType): string;
1732
1871
  tagInSet(uName: string, unionId: string, tags: number[]): string;
1733
- arrPush(arr: string, acc: "f64" | "bool" | "ref", value: string): string;
1872
+ arrPush(arr: string, acc: ArrayAccess, value: string, element: IrType | null): string;
1734
1873
  emitArrayCopyLoop(dst: string, src: string, acc: "f64" | "bool" | "ref"): void;
1735
1874
  emitStrIntrinsic(e: IrExpr & {
1736
1875
  kind: "strIntrinsic";