@scriptc/compiler 0.3.5 → 0.4.0

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 (1243) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +960 -82
  2. package/ambient/scriptc.d.ts +134 -0
  3. package/dist/backend/cycle-analysis.d.ts +1 -1
  4. package/dist/backend/cycle-analysis.js +1 -0
  5. package/dist/backend/cycle-analysis.js.map +1 -1
  6. package/dist/backend/cycle-analysis.test.js +13 -1
  7. package/dist/backend/cycle-analysis.test.js.map +1 -1
  8. package/dist/backend/cycle-mutability.js +16 -5
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/executable-features.js +13 -0
  11. package/dist/backend/executable-features.js.map +1 -1
  12. package/dist/backend/immutability.test.js +1 -1
  13. package/dist/backend/library-pack.js +6 -0
  14. package/dist/backend/library-pack.js.map +1 -1
  15. package/dist/backend/llvm/alloc.d.ts +41 -4
  16. package/dist/backend/llvm/alloc.js +138 -7
  17. package/dist/backend/llvm/alloc.js.map +1 -1
  18. package/dist/backend/llvm/alloc.test.js +30 -1
  19. package/dist/backend/llvm/alloc.test.js.map +1 -1
  20. package/dist/backend/llvm/appended-array-literals.test.js +1 -1
  21. package/dist/backend/llvm/array-search.test.js +1 -1
  22. package/dist/backend/llvm/blocks.d.ts +8 -0
  23. package/dist/backend/llvm/blocks.js +43 -1
  24. package/dist/backend/llvm/blocks.js.map +1 -1
  25. package/dist/backend/llvm/blocks.test.js +22 -1
  26. package/dist/backend/llvm/blocks.test.js.map +1 -1
  27. package/dist/backend/llvm/byte-numbers.js +15 -5
  28. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  29. package/dist/backend/llvm/bytes-alias.d.ts +14 -0
  30. package/dist/backend/llvm/bytes-alias.js +20 -0
  31. package/dist/backend/llvm/bytes-alias.js.map +1 -0
  32. package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
  33. package/dist/backend/llvm/bytes-loop-versions.js +506 -0
  34. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
  35. package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
  36. package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
  37. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
  38. package/dist/backend/llvm/call-lifetimes.js +50 -1
  39. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  40. package/dist/backend/llvm/call-lifetimes.test.js +34 -0
  41. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  42. package/dist/backend/llvm/checked-narrows.test.js +1 -1
  43. package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
  44. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  45. package/dist/backend/llvm/classes.d.ts +11 -0
  46. package/dist/backend/llvm/classes.js +71 -14
  47. package/dist/backend/llvm/classes.js.map +1 -1
  48. package/dist/backend/llvm/classes.test.js +58 -8
  49. package/dist/backend/llvm/classes.test.js.map +1 -1
  50. package/dist/backend/llvm/common.js +1 -0
  51. package/dist/backend/llvm/common.js.map +1 -1
  52. package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
  53. package/dist/backend/llvm/constant-callbacks.js +55 -12
  54. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  55. package/dist/backend/llvm/constant-callbacks.test.js +88 -1
  56. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  57. package/dist/backend/llvm/counted-loops.d.ts +4 -0
  58. package/dist/backend/llvm/counted-loops.js +37 -0
  59. package/dist/backend/llvm/counted-loops.js.map +1 -1
  60. package/dist/backend/llvm/dense-array-access.d.ts +12 -3
  61. package/dist/backend/llvm/dense-array-access.js +72 -14
  62. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  63. package/dist/backend/llvm/dense-array-access.test.js +59 -3
  64. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  65. package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
  66. package/dist/backend/llvm/dense-array-loops.js +162 -0
  67. package/dist/backend/llvm/dense-array-loops.js.map +1 -0
  68. package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
  69. package/dist/backend/llvm/dense-array-loops.test.js +128 -0
  70. package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
  71. package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
  72. package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
  73. package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
  74. package/dist/backend/llvm/dyn.d.ts +28 -4
  75. package/dist/backend/llvm/dyn.js +324 -179
  76. package/dist/backend/llvm/dyn.js.map +1 -1
  77. package/dist/backend/llvm/emit-function.d.ts +64 -0
  78. package/dist/backend/llvm/emit-function.js +1190 -0
  79. package/dist/backend/llvm/emit-function.js.map +1 -0
  80. package/dist/backend/llvm/emit-module.d.ts +24 -0
  81. package/dist/backend/llvm/emit-module.js +1535 -0
  82. package/dist/backend/llvm/emit-module.js.map +1 -0
  83. package/dist/backend/llvm/emit-statements.d.ts +58 -0
  84. package/dist/backend/llvm/emit-statements.js +1964 -0
  85. package/dist/backend/llvm/emit-statements.js.map +1 -0
  86. package/dist/backend/llvm/emitter.d.ts +576 -268
  87. package/dist/backend/llvm/emitter.js +801 -4447
  88. package/dist/backend/llvm/emitter.js.map +1 -1
  89. package/dist/backend/llvm/emitter.test.js +57 -3
  90. package/dist/backend/llvm/emitter.test.js.map +1 -1
  91. package/dist/backend/llvm/expr-async.js +73 -46
  92. package/dist/backend/llvm/expr-async.js.map +1 -1
  93. package/dist/backend/llvm/expr-async.test.js +1 -1
  94. package/dist/backend/llvm/expr-bytes.d.ts +2 -0
  95. package/dist/backend/llvm/expr-bytes.js +76 -29
  96. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  97. package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
  98. package/dist/backend/llvm/expr-callbacks.js +48 -11
  99. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  100. package/dist/backend/llvm/expr-calls.d.ts +1 -1
  101. package/dist/backend/llvm/expr-calls.js +71 -53
  102. package/dist/backend/llvm/expr-calls.js.map +1 -1
  103. package/dist/backend/llvm/expr-calls.test.js +1 -1
  104. package/dist/backend/llvm/expr-containers.js +39 -15
  105. package/dist/backend/llvm/expr-containers.js.map +1 -1
  106. package/dist/backend/llvm/expr-control.js +16 -16
  107. package/dist/backend/llvm/expr-control.js.map +1 -1
  108. package/dist/backend/llvm/expr-dispatch.js +1 -0
  109. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  110. package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
  111. package/dist/backend/llvm/expr-dynamic.js +92 -63
  112. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  113. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  114. package/dist/backend/llvm/expr-primitives.js +132 -25
  115. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  116. package/dist/backend/llvm/expr-primitives.test.js +2 -2
  117. package/dist/backend/llvm/expr-records.d.ts +1 -1
  118. package/dist/backend/llvm/expr-records.js +32 -11
  119. package/dist/backend/llvm/expr-records.js.map +1 -1
  120. package/dist/backend/llvm/expr-stream-bridges.js +54 -12
  121. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  122. package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
  123. package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
  124. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  125. package/dist/backend/llvm/int32-abi.test.js +2 -2
  126. package/dist/backend/llvm/integer-clones.test.js +3 -3
  127. package/dist/backend/llvm/integer-remainder.d.ts +34 -13
  128. package/dist/backend/llvm/integer-remainder.js +156 -22
  129. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  130. package/dist/backend/llvm/intern-tables.test.js +1 -1
  131. package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
  132. package/dist/backend/llvm/jsval-encoding.js +20 -0
  133. package/dist/backend/llvm/jsval-encoding.js.map +1 -0
  134. package/dist/backend/llvm/jsval.d.ts +12 -0
  135. package/dist/backend/llvm/jsval.js +488 -0
  136. package/dist/backend/llvm/jsval.js.map +1 -0
  137. package/dist/backend/llvm/lazy-captures.d.ts +12 -2
  138. package/dist/backend/llvm/lazy-captures.js +39 -17
  139. package/dist/backend/llvm/lazy-captures.js.map +1 -1
  140. package/dist/backend/llvm/lib-abi.js +1 -1
  141. package/dist/backend/llvm/lib-abi.js.map +1 -1
  142. package/dist/backend/llvm/lib-connect.js +1 -1
  143. package/dist/backend/llvm/lib-connect.js.map +1 -1
  144. package/dist/backend/llvm/lib-datagram.js +14 -8
  145. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  146. package/dist/backend/llvm/lib-dispatch.js +217 -24
  147. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  148. package/dist/backend/llvm/lib-filesystem.js +102 -13
  149. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  150. package/dist/backend/llvm/lib-http2.js +3 -3
  151. package/dist/backend/llvm/lib-http2.js.map +1 -1
  152. package/dist/backend/llvm/lib-lookup.js +2 -2
  153. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  154. package/dist/backend/llvm/lib-network.js +77 -25
  155. package/dist/backend/llvm/lib-network.js.map +1 -1
  156. package/dist/backend/llvm/lib-process.js +100 -50
  157. package/dist/backend/llvm/lib-process.js.map +1 -1
  158. package/dist/backend/llvm/lib-shared.d.ts +12 -0
  159. package/dist/backend/llvm/lib-shared.js +229 -5
  160. package/dist/backend/llvm/lib-shared.js.map +1 -1
  161. package/dist/backend/llvm/lib-stream.js +46 -16
  162. package/dist/backend/llvm/lib-stream.js.map +1 -1
  163. package/dist/backend/llvm/lib-test.js +57 -8
  164. package/dist/backend/llvm/lib-test.js.map +1 -1
  165. package/dist/backend/llvm/lib-tls.js +4 -9
  166. package/dist/backend/llvm/lib-tls.js.map +1 -1
  167. package/dist/backend/llvm/local-array-reads.js +2 -2
  168. package/dist/backend/llvm/local-array-reads.test.js +1 -1
  169. package/dist/backend/llvm/local-extents.d.ts +19 -0
  170. package/dist/backend/llvm/local-extents.js +169 -0
  171. package/dist/backend/llvm/local-extents.js.map +1 -0
  172. package/dist/backend/llvm/local-extents.test.d.ts +1 -0
  173. package/dist/backend/llvm/local-extents.test.js +92 -0
  174. package/dist/backend/llvm/local-extents.test.js.map +1 -0
  175. package/dist/backend/llvm/local-union-storage.js +7 -7
  176. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  177. package/dist/backend/llvm/local-union-storage.test.js +2 -2
  178. package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
  179. package/dist/backend/llvm/map-number-lookup.js +2 -2
  180. package/dist/backend/llvm/map-number-lookup.test.js +2 -2
  181. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  182. package/dist/backend/llvm/narrow-guards.d.ts +38 -0
  183. package/dist/backend/llvm/narrow-guards.js +151 -0
  184. package/dist/backend/llvm/narrow-guards.js.map +1 -0
  185. package/dist/backend/llvm/nullable-unions.d.ts +70 -9
  186. package/dist/backend/llvm/nullable-unions.js +105 -6
  187. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  188. package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
  189. package/dist/backend/llvm/nullable-unions.test.js +65 -0
  190. package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
  191. package/dist/backend/llvm/publish.d.ts +4 -0
  192. package/dist/backend/llvm/publish.js +14 -2
  193. package/dist/backend/llvm/publish.js.map +1 -1
  194. package/dist/backend/llvm/publish.test.js +1 -1
  195. package/dist/backend/llvm/receivers.d.ts +31 -0
  196. package/dist/backend/llvm/receivers.js +395 -0
  197. package/dist/backend/llvm/receivers.js.map +1 -0
  198. package/dist/backend/llvm/record-results.d.ts +13 -2
  199. package/dist/backend/llvm/record-results.js +66 -6
  200. package/dist/backend/llvm/record-results.js.map +1 -1
  201. package/dist/backend/llvm/reference-effects.js +9 -0
  202. package/dist/backend/llvm/reference-effects.js.map +1 -1
  203. package/dist/backend/llvm/reference-writes.d.ts +4 -0
  204. package/dist/backend/llvm/reference-writes.js +143 -6
  205. package/dist/backend/llvm/reference-writes.js.map +1 -1
  206. package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
  207. package/dist/backend/llvm/reference-writes.test.js +88 -0
  208. package/dist/backend/llvm/reference-writes.test.js.map +1 -0
  209. package/dist/backend/llvm/regex-matchers.d.ts +8 -0
  210. package/dist/backend/llvm/regex-matchers.js +33 -0
  211. package/dist/backend/llvm/regex-matchers.js.map +1 -1
  212. package/dist/backend/llvm/regex-matchers.test.js +23 -1
  213. package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
  214. package/dist/backend/llvm/regions.d.ts +1 -1
  215. package/dist/backend/llvm/regions.js +9 -6
  216. package/dist/backend/llvm/regions.js.map +1 -1
  217. package/dist/backend/llvm/regions.test.js +1 -1
  218. package/dist/backend/llvm/shapes.d.ts +69 -43
  219. package/dist/backend/llvm/shapes.js +285 -21
  220. package/dist/backend/llvm/shapes.js.map +1 -1
  221. package/dist/backend/llvm/shapes.test.js +37 -3
  222. package/dist/backend/llvm/shapes.test.js.map +1 -1
  223. package/dist/backend/llvm/speculative-integers.d.ts +74 -0
  224. package/dist/backend/llvm/speculative-integers.js +571 -0
  225. package/dist/backend/llvm/speculative-integers.js.map +1 -0
  226. package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
  227. package/dist/backend/llvm/speculative-integers.test.js +148 -0
  228. package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
  229. package/dist/backend/llvm/split-loops.js +2 -2
  230. package/dist/backend/llvm/split-loops.js.map +1 -1
  231. package/dist/backend/llvm/stack-objects.d.ts +26 -6
  232. package/dist/backend/llvm/stack-objects.js +133 -10
  233. package/dist/backend/llvm/stack-objects.js.map +1 -1
  234. package/dist/backend/llvm/stack-objects.test.js +55 -1
  235. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  236. package/dist/backend/llvm/stack-unions.test.js +1 -1
  237. package/dist/backend/llvm/string-construction.test.js +1 -1
  238. package/dist/backend/llvm/string-lifetimes.test.js +15 -14
  239. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  240. package/dist/backend/llvm/string-slices.d.ts +25 -0
  241. package/dist/backend/llvm/string-slices.js +207 -1
  242. package/dist/backend/llvm/string-slices.js.map +1 -1
  243. package/dist/backend/llvm/string-slices.test.js +139 -2
  244. package/dist/backend/llvm/string-slices.test.js.map +1 -1
  245. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  246. package/dist/backend/llvm/thread-slots.d.ts +5 -0
  247. package/dist/backend/llvm/thread-slots.js +142 -0
  248. package/dist/backend/llvm/thread-slots.js.map +1 -0
  249. package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
  250. package/dist/backend/llvm/thread-slots.test.js +110 -0
  251. package/dist/backend/llvm/thread-slots.test.js.map +1 -0
  252. package/dist/backend/llvm/union-repr.d.ts +7 -7
  253. package/dist/backend/llvm/union-repr.js +18 -2
  254. package/dist/backend/llvm/union-repr.js.map +1 -1
  255. package/dist/backend/llvm/union-retype.test.js +17 -3
  256. package/dist/backend/llvm/union-retype.test.js.map +1 -1
  257. package/dist/backend/llvm/walkers.d.ts +2 -2
  258. package/dist/backend/llvm/walkers.js +51 -26
  259. package/dist/backend/llvm/walkers.js.map +1 -1
  260. package/dist/backend/llvm/wasm-modules.d.ts +16 -0
  261. package/dist/backend/llvm/wasm-modules.js +66 -0
  262. package/dist/backend/llvm/wasm-modules.js.map +1 -0
  263. package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
  264. package/dist/backend/llvm/wrapping-sums.js +11 -3
  265. package/dist/backend/llvm/wrapping-sums.js.map +1 -1
  266. package/dist/backend/mangle.d.ts +7 -0
  267. package/dist/backend/mangle.js +11 -0
  268. package/dist/backend/mangle.js.map +1 -1
  269. package/dist/backend/may-throw.d.ts +3 -0
  270. package/dist/backend/may-throw.js +6 -2
  271. package/dist/backend/may-throw.js.map +1 -1
  272. package/dist/backend/may-throw.test.js +1 -1
  273. package/dist/backend/native/contracts.d.ts +37 -0
  274. package/dist/backend/native/executable.js +192 -134
  275. package/dist/backend/native/executable.js.map +1 -1
  276. package/dist/backend/native/library.js +1 -0
  277. package/dist/backend/native/library.js.map +1 -1
  278. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  279. package/dist/backend/native/runtime-inputs.js +2 -0
  280. package/dist/backend/native/runtime-inputs.js.map +1 -1
  281. package/dist/backend/native-link-info-core.d.ts +30 -0
  282. package/dist/backend/native-link-info-core.js.map +1 -1
  283. package/dist/backend/publication.test.js +1 -1
  284. package/dist/backend/runtime-pack-core.d.ts +9 -1
  285. package/dist/backend/runtime-pack-core.js +10 -1
  286. package/dist/backend/runtime-pack-core.js.map +1 -1
  287. package/dist/backend/runtime-pack-native.js +1 -1
  288. package/dist/backend/runtime-pack-native.js.map +1 -1
  289. package/dist/backend/runtime-pack-native.test.d.ts +1 -0
  290. package/dist/backend/runtime-pack-native.test.js +31 -0
  291. package/dist/backend/runtime-pack-native.test.js.map +1 -0
  292. package/dist/backend/runtime-pack-targets.test.js +5 -0
  293. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  294. package/dist/backend/runtime-pack.d.ts +7 -3
  295. package/dist/backend/runtime-pack.js +12 -6
  296. package/dist/backend/runtime-pack.js.map +1 -1
  297. package/dist/backend/runtime-pack.test.js +20 -6
  298. package/dist/backend/runtime-pack.test.js.map +1 -1
  299. package/dist/backend/stack-observations.d.ts +22 -0
  300. package/dist/backend/stack-observations.js +382 -0
  301. package/dist/backend/stack-observations.js.map +1 -0
  302. package/dist/backend/stack-observations.test.d.ts +1 -0
  303. package/dist/backend/stack-observations.test.js +233 -0
  304. package/dist/backend/stack-observations.test.js.map +1 -0
  305. package/dist/backend/target-diagnostics.js +8 -0
  306. package/dist/backend/target-diagnostics.js.map +1 -1
  307. package/dist/backend/target-diagnostics.test.js +1 -1
  308. package/dist/backend/warm-cache.js +5 -0
  309. package/dist/backend/warm-cache.js.map +1 -1
  310. package/dist/backend/young-nursery.d.ts +7 -0
  311. package/dist/backend/young-nursery.js +10 -0
  312. package/dist/backend/young-nursery.js.map +1 -0
  313. package/dist/cli/command.js +44 -4
  314. package/dist/cli/command.js.map +1 -1
  315. package/dist/cli/usage.d.ts +11 -1
  316. package/dist/cli/usage.js +20 -1
  317. package/dist/cli/usage.js.map +1 -1
  318. package/dist/compat/fetch-profile.js +10 -1
  319. package/dist/compat/fetch-profile.js.map +1 -1
  320. package/dist/compile-types.d.ts +13 -0
  321. package/dist/contracts/check.js +25 -6
  322. package/dist/contracts/check.js.map +1 -1
  323. package/dist/contracts/int32-elements.d.ts +115 -0
  324. package/dist/contracts/int32-elements.js +1179 -0
  325. package/dist/contracts/int32-elements.js.map +1 -0
  326. package/dist/coverage/report.d.ts +16 -0
  327. package/dist/coverage/report.js +182 -1
  328. package/dist/coverage/report.js.map +1 -1
  329. package/dist/coverage/surface-manifest.js +19 -6
  330. package/dist/coverage/surface-manifest.js.map +1 -1
  331. package/dist/coverage/verdict-cache.d.ts +2 -0
  332. package/dist/coverage/verdict-cache.js +12 -0
  333. package/dist/coverage/verdict-cache.js.map +1 -1
  334. package/dist/coverage/verdict-cache.test.js +2 -1
  335. package/dist/coverage/verdict-cache.test.js.map +1 -1
  336. package/dist/diagnostics/diagnostic.d.ts +11 -7
  337. package/dist/diagnostics/diagnostic.js +35 -23
  338. package/dist/diagnostics/diagnostic.js.map +1 -1
  339. package/dist/diagnostics/envelope.d.ts +39 -2
  340. package/dist/diagnostics/envelope.js.map +1 -1
  341. package/dist/diagnostics/render.d.ts +7 -0
  342. package/dist/diagnostics/render.js +50 -13
  343. package/dist/diagnostics/render.js.map +1 -1
  344. package/dist/diagnostics/render.test.d.ts +1 -0
  345. package/dist/diagnostics/render.test.js +49 -0
  346. package/dist/diagnostics/render.test.js.map +1 -0
  347. package/dist/executable/executable-cache.d.ts +17 -0
  348. package/dist/executable/executable-cache.js +13 -1
  349. package/dist/executable/executable-cache.js.map +1 -1
  350. package/dist/executable/executable-cache.test.js +7 -1
  351. package/dist/executable/executable-cache.test.js.map +1 -1
  352. package/dist/executable/prepare.js +2 -1
  353. package/dist/executable/prepare.js.map +1 -1
  354. package/dist/frontend/analysis.js +6 -1
  355. package/dist/frontend/analysis.js.map +1 -1
  356. package/dist/frontend/builtin-modules.d.ts +16 -2
  357. package/dist/frontend/builtin-modules.js +40 -7
  358. package/dist/frontend/builtin-modules.js.map +1 -1
  359. package/dist/frontend/cjs-syntax.js +52 -51
  360. package/dist/frontend/cjs-syntax.js.map +1 -1
  361. package/dist/frontend/contract-types.d.ts +3 -0
  362. package/dist/frontend/contract-types.js +36 -7
  363. package/dist/frontend/contract-types.js.map +1 -1
  364. package/dist/frontend/experimental-import.d.ts +5 -1
  365. package/dist/frontend/experimental-import.js +26 -7
  366. package/dist/frontend/experimental-import.js.map +1 -1
  367. package/dist/frontend/fork-target.js +20 -22
  368. package/dist/frontend/fork-target.js.map +1 -1
  369. package/dist/frontend/fork-target.test.js +2 -1
  370. package/dist/frontend/fork-target.test.js.map +1 -1
  371. package/dist/frontend/function-completion.js +6 -6
  372. package/dist/frontend/function-completion.js.map +1 -1
  373. package/dist/frontend/helper-tokens.js +15 -3
  374. package/dist/frontend/helper-tokens.js.map +1 -1
  375. package/dist/frontend/helper-tokens.test.js +7 -1
  376. package/dist/frontend/helper-tokens.test.js.map +1 -1
  377. package/dist/frontend/inferred-js-diagnostics.js +14 -17
  378. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  379. package/dist/frontend/input-tracker.d.ts +3 -0
  380. package/dist/frontend/input-tracker.js +32 -3
  381. package/dist/frontend/input-tracker.js.map +1 -1
  382. package/dist/frontend/lib-contract.js +36 -32
  383. package/dist/frontend/lib-contract.js.map +1 -1
  384. package/dist/frontend/lib-exports.js +3 -3
  385. package/dist/frontend/lib-exports.js.map +1 -1
  386. package/dist/frontend/lowering/array-values.d.ts +8 -3
  387. package/dist/frontend/lowering/array-values.js +60 -11
  388. package/dist/frontend/lowering/array-values.js.map +1 -1
  389. package/dist/frontend/lowering/assert-instances.js +4 -4
  390. package/dist/frontend/lowering/assert-instances.js.map +1 -1
  391. package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
  392. package/dist/frontend/lowering/assertion-identity.js +70 -0
  393. package/dist/frontend/lowering/assertion-identity.js.map +1 -0
  394. package/dist/frontend/lowering/assertion-members.d.ts +28 -0
  395. package/dist/frontend/lowering/assertion-members.js +185 -0
  396. package/dist/frontend/lowering/assertion-members.js.map +1 -0
  397. package/dist/frontend/lowering/binding-analysis.js +27 -20
  398. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  399. package/dist/frontend/lowering/builtin-calls.js +72 -4
  400. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  401. package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
  402. package/dist/frontend/lowering/builtin-function-fences.js +42 -0
  403. package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
  404. package/dist/frontend/lowering/builtins/arguments.js +1 -1
  405. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  406. package/dist/frontend/lowering/builtins/async-context.js +53 -52
  407. package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
  408. package/dist/frontend/lowering/builtins/atomics.js +6 -6
  409. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  410. package/dist/frontend/lowering/builtins/blob.js +8 -6
  411. package/dist/frontend/lowering/builtins/blob.js.map +1 -1
  412. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +23 -0
  413. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +156 -0
  414. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
  415. package/dist/frontend/lowering/builtins/callable-aliases.js +45 -6
  416. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  417. package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
  418. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  419. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
  420. package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
  421. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  422. package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
  423. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  424. package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
  425. package/dist/frontend/lowering/builtins/child-process.js +85 -61
  426. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  427. package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
  428. package/dist/frontend/lowering/builtins/class-values.js +226 -0
  429. package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
  430. package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
  431. package/dist/frontend/lowering/builtins/compression.js +230 -52
  432. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  433. package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
  434. package/dist/frontend/lowering/builtins/constants.js +28 -7
  435. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  436. package/dist/frontend/lowering/builtins/crypto.d.ts +19 -0
  437. package/dist/frontend/lowering/builtins/crypto.js +223 -38
  438. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  439. package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
  440. package/dist/frontend/lowering/builtins/dates.js +92 -16
  441. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  442. package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
  443. package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
  444. package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
  445. package/dist/frontend/lowering/builtins/environment.js +3 -3
  446. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  447. package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
  448. package/dist/frontend/lowering/builtins/errors.js +174 -6
  449. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  450. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
  451. package/dist/frontend/lowering/builtins/filesystem-calls.js +136 -113
  452. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  453. package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
  454. package/dist/frontend/lowering/builtins/filesystem.js +213 -76
  455. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  456. package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
  457. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
  458. package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
  459. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
  460. package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
  461. package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
  462. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
  463. package/dist/frontend/lowering/builtins/ipc.js +45 -8
  464. package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
  465. package/dist/frontend/lowering/builtins/json.js +232 -24
  466. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  467. package/dist/frontend/lowering/builtins/key-object.js +4 -4
  468. package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
  469. package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
  470. package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
  471. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  472. package/dist/frontend/lowering/builtins/module-calls.js +67 -46
  473. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  474. package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
  475. package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
  476. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  477. package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
  478. package/dist/frontend/lowering/builtins/navigator.js +40 -0
  479. package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
  480. package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
  481. package/dist/frontend/lowering/builtins/net-address.js +156 -0
  482. package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
  483. package/dist/frontend/lowering/builtins/numbers.js +25 -9
  484. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  485. package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
  486. package/dist/frontend/lowering/builtins/operating-system.js +25 -12
  487. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  488. package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
  489. package/dist/frontend/lowering/builtins/performance.js +259 -8
  490. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  491. package/dist/frontend/lowering/builtins/process.d.ts +32 -1
  492. package/dist/frontend/lowering/builtins/process.js +468 -99
  493. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  494. package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
  495. package/dist/frontend/lowering/builtins/promises.js +326 -43
  496. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  497. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +37 -0
  498. package/dist/frontend/lowering/builtins/promisify-callback.js +320 -0
  499. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
  500. package/dist/frontend/lowering/builtins/properties.js +37 -1
  501. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  502. package/dist/frontend/lowering/builtins/querystring.js +14 -14
  503. package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
  504. package/dist/frontend/lowering/builtins/readline.d.ts +55 -13
  505. package/dist/frontend/lowering/builtins/readline.js +931 -69
  506. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  507. package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
  508. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
  509. package/dist/frontend/lowering/builtins/reflection.js +16 -14
  510. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  511. package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
  512. package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
  513. package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
  514. package/dist/frontend/lowering/builtins/strings.js +101 -12
  515. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  516. package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
  517. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  518. package/dist/frontend/lowering/builtins/timers.js +75 -30
  519. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  520. package/dist/frontend/lowering/builtins/url.d.ts +3 -0
  521. package/dist/frontend/lowering/builtins/url.js +120 -17
  522. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  523. package/dist/frontend/lowering/builtins/util-types.js +20 -4
  524. package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
  525. package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
  526. package/dist/frontend/lowering/builtins/v8.js +105 -0
  527. package/dist/frontend/lowering/builtins/v8.js.map +1 -0
  528. package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
  529. package/dist/frontend/lowering/builtins/webassembly.js +388 -0
  530. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
  531. package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
  532. package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
  533. package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
  534. package/dist/frontend/lowering/builtins/workers.d.ts +16 -0
  535. package/dist/frontend/lowering/builtins/workers.js +246 -3
  536. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  537. package/dist/frontend/lowering/call-arguments.js +69 -14
  538. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  539. package/dist/frontend/lowering/call-signatures.d.ts +19 -1
  540. package/dist/frontend/lowering/call-signatures.js +254 -47
  541. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  542. package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
  543. package/dist/frontend/lowering/checked-promise-all.js +1 -1
  544. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  545. package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
  546. package/dist/frontend/lowering/cjs-exports-object.js +528 -0
  547. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
  548. package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
  549. package/dist/frontend/lowering/cjs-inline-require.js +314 -0
  550. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
  551. package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
  552. package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
  553. package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
  554. package/dist/frontend/lowering/class-attributes.d.ts +19 -0
  555. package/dist/frontend/lowering/class-attributes.js +378 -0
  556. package/dist/frontend/lowering/class-attributes.js.map +1 -0
  557. package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
  558. package/dist/frontend/lowering/class-callbacks.js +21 -10
  559. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  560. package/dist/frontend/lowering/class-construction.js +49 -4
  561. package/dist/frontend/lowering/class-construction.js.map +1 -1
  562. package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
  563. package/dist/frontend/lowering/class-descriptors.js +8 -8
  564. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  565. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
  566. package/dist/frontend/lowering/class-dynamic-dispatch.js +1115 -89
  567. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  568. package/dist/frontend/lowering/class-instance-constructor.js +1 -1
  569. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  570. package/dist/frontend/lowering/class-iterables.d.ts +11 -0
  571. package/dist/frontend/lowering/class-iterables.js +31 -0
  572. package/dist/frontend/lowering/class-iterables.js.map +1 -0
  573. package/dist/frontend/lowering/class-method-mutations.js +73 -35
  574. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  575. package/dist/frontend/lowering/class-method-values.js +56 -10
  576. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  577. package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
  578. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
  579. package/dist/frontend/lowering/class-protocols.d.ts +55 -0
  580. package/dist/frontend/lowering/class-protocols.js +738 -22
  581. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  582. package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
  583. package/dist/frontend/lowering/class-prototypes.js +80 -18
  584. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  585. package/dist/frontend/lowering/class-runtime-statics.js +1 -1
  586. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  587. package/dist/frontend/lowering/class-static-data.js +2 -2
  588. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  589. package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
  590. package/dist/frontend/lowering/class-to-primitive.js +261 -0
  591. package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
  592. package/dist/frontend/lowering/class-unions.d.ts +25 -0
  593. package/dist/frontend/lowering/class-unions.js +102 -1
  594. package/dist/frontend/lowering/class-unions.js.map +1 -1
  595. package/dist/frontend/lowering/code-generation.d.ts +14 -0
  596. package/dist/frontend/lowering/code-generation.js +127 -0
  597. package/dist/frontend/lowering/code-generation.js.map +1 -0
  598. package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
  599. package/dist/frontend/lowering/coercions/function-adapters.js +145 -3
  600. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  601. package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
  602. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  603. package/dist/frontend/lowering/coercions/structural.js +35 -3
  604. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  605. package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
  606. package/dist/frontend/lowering/coercions/unions.js +57 -1
  607. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  608. package/dist/frontend/lowering/collection-ingestion.js +2 -2
  609. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  610. package/dist/frontend/lowering/collection-narrowing.js +2 -4
  611. package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
  612. package/dist/frontend/lowering/construction-escapes.js +8 -8
  613. package/dist/frontend/lowering/construction-escapes.js.map +1 -1
  614. package/dist/frontend/lowering/construction-escapes.test.js +4 -4
  615. package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
  616. package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
  617. package/dist/frontend/lowering/constructor-returns.js +477 -0
  618. package/dist/frontend/lowering/constructor-returns.js.map +1 -0
  619. package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
  620. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
  621. package/dist/frontend/lowering/containers/array-callbacks.d.ts +9 -0
  622. package/dist/frontend/lowering/containers/array-callbacks.js +266 -100
  623. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  624. package/dist/frontend/lowering/containers/array-concat.js +1 -1
  625. package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
  626. package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
  627. package/dist/frontend/lowering/containers/array-construction.js +51 -13
  628. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  629. package/dist/frontend/lowering/containers/array-from-async.d.ts +19 -0
  630. package/dist/frontend/lowering/containers/array-from-async.js +427 -0
  631. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
  632. package/dist/frontend/lowering/containers/array-methods.js +89 -77
  633. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  634. package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
  635. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  636. package/dist/frontend/lowering/containers/bytes.js +161 -101
  637. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  638. package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
  639. package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
  640. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  641. package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
  642. package/dist/frontend/lowering/containers/collection-grouping.js +219 -27
  643. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  644. package/dist/frontend/lowering/containers/collection-methods.js +81 -48
  645. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  646. package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
  647. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
  648. package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
  649. package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
  650. package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
  651. package/dist/frontend/lowering/containers/for-of.js +19 -19
  652. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  653. package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
  654. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  655. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
  656. package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
  657. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  658. package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
  659. package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
  660. package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
  661. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
  662. package/dist/frontend/lowering/containers/string-and-regexp.js +419 -30
  663. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  664. package/dist/frontend/lowering/containers/string-replacement.js +1 -1
  665. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  666. package/dist/frontend/lowering/cycle-initialization.d.ts +4 -0
  667. package/dist/frontend/lowering/cycle-initialization.js +39 -0
  668. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  669. package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
  670. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  671. package/dist/frontend/lowering/devirtualize.d.ts +1 -1
  672. package/dist/frontend/lowering/devirtualize.js +27 -7
  673. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  674. package/dist/frontend/lowering/divergences.d.ts +0 -5
  675. package/dist/frontend/lowering/divergences.js +238 -128
  676. package/dist/frontend/lowering/divergences.js.map +1 -1
  677. package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
  678. package/dist/frontend/lowering/dyn-streams.js +257 -0
  679. package/dist/frontend/lowering/dyn-streams.js.map +1 -0
  680. package/dist/frontend/lowering/error-methods.js +4 -1
  681. package/dist/frontend/lowering/error-methods.js.map +1 -1
  682. package/dist/frontend/lowering/error-name-order.d.ts +19 -0
  683. package/dist/frontend/lowering/error-name-order.js +93 -0
  684. package/dist/frontend/lowering/error-name-order.js.map +1 -0
  685. package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
  686. package/dist/frontend/lowering/expressions/array-literals.js +703 -0
  687. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
  688. package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
  689. package/dist/frontend/lowering/expressions/binary.js +2483 -0
  690. package/dist/frontend/lowering/expressions/binary.js.map +1 -0
  691. package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
  692. package/dist/frontend/lowering/expressions/element-access.js +1797 -0
  693. package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
  694. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
  695. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  696. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
  697. package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
  698. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
  699. package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
  700. package/dist/frontend/lowering/expressions/identifiers.js +830 -0
  701. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
  702. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +40 -0
  703. package/dist/frontend/lowering/expressions/keyed-field-targets.js +226 -0
  704. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
  705. package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
  706. package/dist/frontend/lowering/expressions/narrowing.js +1322 -0
  707. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
  708. package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
  709. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  710. package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
  711. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  712. package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
  713. package/dist/frontend/lowering/expressions/object-literals.js +253 -85
  714. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  715. package/dist/frontend/lowering/expressions/optional-chains.d.ts +2 -1
  716. package/dist/frontend/lowering/expressions/optional-chains.js +91 -14
  717. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  718. package/dist/frontend/lowering/expressions/property-access.d.ts +110 -0
  719. package/dist/frontend/lowering/expressions/property-access.js +3544 -0
  720. package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
  721. package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
  722. package/dist/frontend/lowering/expressions/relational.js +1679 -0
  723. package/dist/frontend/lowering/expressions/relational.js.map +1 -0
  724. package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
  725. package/dist/frontend/lowering/expressions/typeof.js +538 -0
  726. package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
  727. package/dist/frontend/lowering/expressions/union-fields.js +1 -1
  728. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  729. package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
  730. package/dist/frontend/lowering/expressions/updates.js +780 -0
  731. package/dist/frontend/lowering/expressions/updates.js.map +1 -0
  732. package/dist/frontend/lowering/function-context.d.ts +10 -0
  733. package/dist/frontend/lowering/function-context.js +11 -1
  734. package/dist/frontend/lowering/function-context.js.map +1 -1
  735. package/dist/frontend/lowering/function-returns.js +52 -28
  736. package/dist/frontend/lowering/function-returns.js.map +1 -1
  737. package/dist/frontend/lowering/general-streams.d.ts +25 -0
  738. package/dist/frontend/lowering/general-streams.js +108 -0
  739. package/dist/frontend/lowering/general-streams.js.map +1 -0
  740. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
  741. package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
  742. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  743. package/dist/frontend/lowering/generic-functions.d.ts +39 -0
  744. package/dist/frontend/lowering/generic-functions.js +393 -75
  745. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  746. package/dist/frontend/lowering/import-meta.js +2 -2
  747. package/dist/frontend/lowering/import-meta.js.map +1 -1
  748. package/dist/frontend/lowering/intern-tables.js +10 -9
  749. package/dist/frontend/lowering/intern-tables.js.map +1 -1
  750. package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
  751. package/dist/frontend/lowering/iterator-adapters.js +331 -3
  752. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  753. package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
  754. package/dist/frontend/lowering/js-class-fields.js +170 -0
  755. package/dist/frontend/lowering/js-class-fields.js.map +1 -0
  756. package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
  757. package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
  758. package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
  759. package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
  760. package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
  761. package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
  762. package/dist/frontend/lowering/json-require.d.ts +22 -0
  763. package/dist/frontend/lowering/json-require.js +131 -0
  764. package/dist/frontend/lowering/json-require.js.map +1 -0
  765. package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
  766. package/dist/frontend/lowering/key-order-witness.js +641 -0
  767. package/dist/frontend/lowering/key-order-witness.js.map +1 -0
  768. package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
  769. package/dist/frontend/lowering/key-order-witness.test.js +239 -0
  770. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
  771. package/dist/frontend/lowering/lifetime-regions.js +7 -7
  772. package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
  773. package/dist/frontend/lowering/lower-assert.js +61 -60
  774. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  775. package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
  776. package/dist/frontend/lowering/lower-async-iteration.js +34 -6
  777. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  778. package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
  779. package/dist/frontend/lowering/lower-builtin-values.js +32 -3
  780. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  781. package/dist/frontend/lowering/lower-calls.js +1298 -452
  782. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  783. package/dist/frontend/lowering/lower-classes.d.ts +50 -3
  784. package/dist/frontend/lowering/lower-classes.js +1499 -456
  785. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  786. package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
  787. package/dist/frontend/lowering/lower-comptime.js +111 -13
  788. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  789. package/dist/frontend/lowering/lower-console.js +13 -11
  790. package/dist/frontend/lowering/lower-console.js.map +1 -1
  791. package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
  792. package/dist/frontend/lowering/lower-dgram.js +179 -8
  793. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  794. package/dist/frontend/lowering/lower-enums.js +113 -14
  795. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  796. package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
  797. package/dist/frontend/lowering/lower-event-emitter.js +268 -71
  798. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  799. package/dist/frontend/lowering/lower-event-target.js +2 -2
  800. package/dist/frontend/lowering/lower-event-target.js.map +1 -1
  801. package/dist/frontend/lowering/lower-expando.js +17 -13
  802. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  803. package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
  804. package/dist/frontend/lowering/lower-exprs.js +1493 -12407
  805. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  806. package/dist/frontend/lowering/lower-functions.js +68 -22
  807. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  808. package/dist/frontend/lowering/lower-generators.d.ts +6 -0
  809. package/dist/frontend/lowering/lower-generators.js +29 -16
  810. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  811. package/dist/frontend/lowering/lower-global-value.js +5 -1
  812. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  813. package/dist/frontend/lowering/lower-inspect.js +354 -99
  814. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  815. package/dist/frontend/lowering/lower-mixins.js +23 -20
  816. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  817. package/dist/frontend/lowering/lower-mock.d.ts +19 -2
  818. package/dist/frontend/lowering/lower-mock.js +557 -74
  819. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  820. package/dist/frontend/lowering/lower-modules.js +268 -61
  821. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  822. package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
  823. package/dist/frontend/lowering/lower-namespaces.js +45 -33
  824. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  825. package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
  826. package/dist/frontend/lowering/lower-node-module.js +147 -14
  827. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  828. package/dist/frontend/lowering/lower-server.d.ts +6 -6
  829. package/dist/frontend/lowering/lower-server.js +638 -105
  830. package/dist/frontend/lowering/lower-server.js.map +1 -1
  831. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  832. package/dist/frontend/lowering/lower-stdlib.js +151 -109
  833. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  834. package/dist/frontend/lowering/lower-stmts.d.ts +28 -2
  835. package/dist/frontend/lowering/lower-stmts.js +1589 -398
  836. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  837. package/dist/frontend/lowering/lower-stream.d.ts +4 -3
  838. package/dist/frontend/lowering/lower-stream.js +714 -75
  839. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  840. package/dist/frontend/lowering/lower-test.d.ts +3 -0
  841. package/dist/frontend/lowering/lower-test.js +574 -100
  842. package/dist/frontend/lowering/lower-test.js.map +1 -1
  843. package/dist/frontend/lowering/lower-timers.js +80 -32
  844. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  845. package/dist/frontend/lowering/lower-url.js +1 -1
  846. package/dist/frontend/lowering/lower-url.js.map +1 -1
  847. package/dist/frontend/lowering/lowerer.d.ts +409 -26
  848. package/dist/frontend/lowering/lowerer.js +1918 -305
  849. package/dist/frontend/lowering/lowerer.js.map +1 -1
  850. package/dist/frontend/lowering/lowerer.test.js +10 -4
  851. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  852. package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
  853. package/dist/frontend/lowering/maybe-promise.js +249 -0
  854. package/dist/frontend/lowering/maybe-promise.js.map +1 -0
  855. package/dist/frontend/lowering/module-member-this.d.ts +3 -0
  856. package/dist/frontend/lowering/module-member-this.js +262 -0
  857. package/dist/frontend/lowering/module-member-this.js.map +1 -0
  858. package/dist/frontend/lowering/module-namespace-elements.js +1 -1
  859. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  860. package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
  861. package/dist/frontend/lowering/nan-coded-reads.js +45 -32
  862. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  863. package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
  864. package/dist/frontend/lowering/narrowing-stability.js +104 -32
  865. package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
  866. package/dist/frontend/lowering/native-ffi.js +11 -11
  867. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  868. package/dist/frontend/lowering/null-prototype.d.ts +13 -0
  869. package/dist/frontend/lowering/null-prototype.js +33 -0
  870. package/dist/frontend/lowering/null-prototype.js.map +1 -0
  871. package/dist/frontend/lowering/object-factory-new.js +6 -8
  872. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  873. package/dist/frontend/lowering/private-brands.d.ts +46 -0
  874. package/dist/frontend/lowering/private-brands.js +265 -0
  875. package/dist/frontend/lowering/private-brands.js.map +1 -0
  876. package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
  877. package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
  878. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
  879. package/dist/frontend/lowering/require-initialization.d.ts +32 -0
  880. package/dist/frontend/lowering/require-initialization.js +246 -0
  881. package/dist/frontend/lowering/require-initialization.js.map +1 -0
  882. package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
  883. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  884. package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
  885. package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
  886. package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
  887. package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
  888. package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
  889. package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
  890. package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
  891. package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
  892. package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
  893. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  894. package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
  895. package/dist/frontend/lowering/runtime-optional-records.js +205 -32
  896. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
  897. package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
  898. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
  899. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  900. package/dist/frontend/lowering/split-consumers.js +4 -4
  901. package/dist/frontend/lowering/split-consumers.js.map +1 -1
  902. package/dist/frontend/lowering/static-function-names.d.ts +28 -0
  903. package/dist/frontend/lowering/static-function-names.js +212 -0
  904. package/dist/frontend/lowering/static-function-names.js.map +1 -0
  905. package/dist/frontend/lowering/static-this.js +6 -6
  906. package/dist/frontend/lowering/static-this.js.map +1 -1
  907. package/dist/frontend/lowering/strict-mode.d.ts +5 -0
  908. package/dist/frontend/lowering/strict-mode.js +31 -0
  909. package/dist/frontend/lowering/strict-mode.js.map +1 -0
  910. package/dist/frontend/lowering/string-index-bounds.js +10 -10
  911. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  912. package/dist/frontend/lowering/string-index.d.ts +12 -0
  913. package/dist/frontend/lowering/string-index.js +72 -1
  914. package/dist/frontend/lowering/string-index.js.map +1 -1
  915. package/dist/frontend/lowering/surfaces.d.ts +15 -6
  916. package/dist/frontend/lowering/surfaces.js +278 -45
  917. package/dist/frontend/lowering/surfaces.js.map +1 -1
  918. package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
  919. package/dist/frontend/lowering/symbol-fields.js +204 -36
  920. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  921. package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
  922. package/dist/frontend/lowering/symbol-methods.js +24 -6
  923. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  924. package/dist/frontend/lowering/thread-slots.d.ts +13 -0
  925. package/dist/frontend/lowering/thread-slots.js +208 -0
  926. package/dist/frontend/lowering/thread-slots.js.map +1 -0
  927. package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
  928. package/dist/frontend/lowering/typed-arguments.js +472 -0
  929. package/dist/frontend/lowering/typed-arguments.js.map +1 -0
  930. package/dist/frontend/lowering/union-retag.d.ts +8 -0
  931. package/dist/frontend/lowering/union-retag.js +27 -0
  932. package/dist/frontend/lowering/union-retag.js.map +1 -1
  933. package/dist/frontend/lowering/union-retag.test.js +24 -1
  934. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  935. package/dist/frontend/lowering/var-hoisting.js +6 -6
  936. package/dist/frontend/lowering/var-hoisting.js.map +1 -1
  937. package/dist/frontend/lowering/width-lift.d.ts +4 -0
  938. package/dist/frontend/mock-shapes.d.ts +5 -0
  939. package/dist/frontend/mock-shapes.js +39 -7
  940. package/dist/frontend/mock-shapes.js.map +1 -1
  941. package/dist/frontend/module-source-candidates.js +1 -1
  942. package/dist/frontend/module-source-candidates.js.map +1 -1
  943. package/dist/frontend/module-source-candidates.test.js +2 -1
  944. package/dist/frontend/module-source-candidates.test.js.map +1 -1
  945. package/dist/frontend/module-syntax.js +8 -8
  946. package/dist/frontend/module-syntax.js.map +1 -1
  947. package/dist/frontend/npm-static-bundled-chunks.d.ts +51 -0
  948. package/dist/frontend/npm-static-bundled-chunks.js +810 -0
  949. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
  950. package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
  951. package/dist/frontend/npm-static-bundled-chunks.test.js +287 -0
  952. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
  953. package/dist/frontend/npm-static-bundled-cjs.js +24 -23
  954. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  955. package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
  956. package/dist/frontend/npm-static-bundled-esm.js +768 -0
  957. package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
  958. package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
  959. package/dist/frontend/npm-static-bundled-esm.test.js +207 -0
  960. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
  961. package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
  962. package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
  963. package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
  964. package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
  965. package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
  966. package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
  967. package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
  968. package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
  969. package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
  970. package/dist/frontend/npm-static-declaration-syntax.js +102 -101
  971. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  972. package/dist/frontend/npm-static-prune.js +36 -24
  973. package/dist/frontend/npm-static-prune.js.map +1 -1
  974. package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
  975. package/dist/frontend/npm-static-rewrite-host.js +14 -3
  976. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  977. package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
  978. package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
  979. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  980. package/dist/frontend/npm-static-subtyping.js +7 -9
  981. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  982. package/dist/frontend/npm-static.d.ts +17 -1
  983. package/dist/frontend/npm-static.js +167 -16
  984. package/dist/frontend/npm-static.js.map +1 -1
  985. package/dist/frontend/npm-static.test.js +22 -1
  986. package/dist/frontend/npm-static.test.js.map +1 -1
  987. package/dist/frontend/pipeline.js +164 -26
  988. package/dist/frontend/pipeline.js.map +1 -1
  989. package/dist/frontend/pipeline.test.js +22 -1
  990. package/dist/frontend/pipeline.test.js.map +1 -1
  991. package/dist/frontend/program-analysis.d.ts +6 -1
  992. package/dist/frontend/program-analysis.js +7 -0
  993. package/dist/frontend/program-analysis.js.map +1 -1
  994. package/dist/frontend/program.d.ts +92 -2
  995. package/dist/frontend/program.js +1557 -254
  996. package/dist/frontend/program.js.map +1 -1
  997. package/dist/frontend/program.test.js +76 -6
  998. package/dist/frontend/program.test.js.map +1 -1
  999. package/dist/frontend/resolve.js +36 -2
  1000. package/dist/frontend/resolve.js.map +1 -1
  1001. package/dist/frontend/resolve.test.js +49 -0
  1002. package/dist/frontend/resolve.test.js.map +1 -1
  1003. package/dist/frontend/services.d.ts +20 -1
  1004. package/dist/frontend/services.js +40 -3
  1005. package/dist/frontend/services.js.map +1 -1
  1006. package/dist/frontend/services.test.js +2 -1
  1007. package/dist/frontend/services.test.js.map +1 -1
  1008. package/dist/frontend/threads-import.js +1 -1
  1009. package/dist/frontend/threads-import.js.map +1 -1
  1010. package/dist/frontend/tier-analysis.d.ts +71 -0
  1011. package/dist/frontend/tier-analysis.js +522 -0
  1012. package/dist/frontend/tier-analysis.js.map +1 -0
  1013. package/dist/frontend/ts7/api-conformance.d.ts +234 -0
  1014. package/dist/frontend/ts7/api-conformance.js +7 -0
  1015. package/dist/frontend/ts7/api-conformance.js.map +1 -0
  1016. package/dist/frontend/ts7/ast-guards.generated.js +2 -1
  1017. package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
  1018. package/dist/frontend/ts7/ast-node.d.ts +47 -25
  1019. package/dist/frontend/ts7/ast-node.js +64 -18
  1020. package/dist/frontend/ts7/ast-node.js.map +1 -1
  1021. package/dist/frontend/ts7/ast-node.test.js +36 -12
  1022. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  1023. package/dist/frontend/ts7/ast-types.d.ts +10 -3
  1024. package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
  1025. package/dist/frontend/ts7/ast.d.ts +1 -0
  1026. package/dist/frontend/ts7/ast.js +3 -2
  1027. package/dist/frontend/ts7/ast.js.map +1 -1
  1028. package/dist/frontend/ts7/checker-backend.d.ts +23 -0
  1029. package/dist/frontend/ts7/checker-backend.js +88 -0
  1030. package/dist/frontend/ts7/checker-backend.js.map +1 -0
  1031. package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
  1032. package/dist/frontend/ts7/checker-backend.test.js +63 -0
  1033. package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
  1034. package/dist/frontend/ts7/checker-cache.d.ts +0 -3
  1035. package/dist/frontend/ts7/checker-cache.js +0 -6
  1036. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  1037. package/dist/frontend/ts7/checker.d.ts +18 -11
  1038. package/dist/frontend/ts7/checker.js +42 -55
  1039. package/dist/frontend/ts7/checker.js.map +1 -1
  1040. package/dist/frontend/ts7/checker.test.js +10 -7
  1041. package/dist/frontend/ts7/checker.test.js.map +1 -1
  1042. package/dist/frontend/ts7/diagnostic.d.ts +19 -0
  1043. package/dist/frontend/ts7/diagnostic.js +22 -0
  1044. package/dist/frontend/ts7/diagnostic.js.map +1 -0
  1045. package/dist/frontend/ts7/node-functions.d.ts +8 -0
  1046. package/dist/frontend/ts7/node-functions.js +18 -0
  1047. package/dist/frontend/ts7/node-functions.js.map +1 -0
  1048. package/dist/frontend/ts7/program-host.d.ts +5 -1
  1049. package/dist/frontend/ts7/program-host.js +12 -0
  1050. package/dist/frontend/ts7/program-host.js.map +1 -1
  1051. package/dist/frontend/ts7/rpc-api.d.ts +5 -1
  1052. package/dist/frontend/ts7/rpc-api.js +8 -1
  1053. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  1054. package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
  1055. package/dist/frontend/ts7/semantic-checker.js +26 -8
  1056. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  1057. package/dist/frontend/ts7/semantic-checker.test.js +12 -9
  1058. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  1059. package/dist/frontend/ts7/semantic-model.d.ts +54 -24
  1060. package/dist/frontend/ts7/semantic-model.js +88 -16
  1061. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  1062. package/dist/frontend/ts7/semantic-model.test.js +4 -4
  1063. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  1064. package/dist/frontend/ts7/semantic-types.d.ts +7 -3
  1065. package/dist/frontend/ts7/semantic-types.js +1 -1
  1066. package/dist/frontend/ts7/semantic-types.js.map +1 -1
  1067. package/dist/frontend/ts7/session.d.ts +11 -11
  1068. package/dist/frontend/ts7/session.js +8 -5
  1069. package/dist/frontend/ts7/session.js.map +1 -1
  1070. package/dist/frontend/ts7/session.test.js +9 -5
  1071. package/dist/frontend/ts7/session.test.js.map +1 -1
  1072. package/dist/frontend/ts7/source-parser.d.ts +6 -2
  1073. package/dist/frontend/ts7/source-parser.js +24 -3
  1074. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1075. package/dist/frontend/ts7/source-parser.test.js +38 -17
  1076. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1077. package/dist/frontend/type-mapper.d.ts +122 -2
  1078. package/dist/frontend/type-mapper.js +2612 -695
  1079. package/dist/frontend/type-mapper.js.map +1 -1
  1080. package/dist/frontend/type-only-imports.d.ts +28 -0
  1081. package/dist/frontend/type-only-imports.js +122 -0
  1082. package/dist/frontend/type-only-imports.js.map +1 -0
  1083. package/dist/frontend/worker-target.js +8 -8
  1084. package/dist/frontend/worker-target.js.map +1 -1
  1085. package/dist/index.d.ts +3 -1
  1086. package/dist/index.js +47 -10
  1087. package/dist/index.js.map +1 -1
  1088. package/dist/ir/analysis.js +4 -2
  1089. package/dist/ir/analysis.js.map +1 -1
  1090. package/dist/ir/api.d.ts +1 -1
  1091. package/dist/ir/api.js +1 -1
  1092. package/dist/ir/api.js.map +1 -1
  1093. package/dist/ir/array-length-stability.d.ts +30 -0
  1094. package/dist/ir/array-length-stability.js +236 -0
  1095. package/dist/ir/array-length-stability.js.map +1 -0
  1096. package/dist/ir/array-length-stability.test.d.ts +1 -0
  1097. package/dist/ir/array-length-stability.test.js +113 -0
  1098. package/dist/ir/array-length-stability.test.js.map +1 -0
  1099. package/dist/ir/build.d.ts +2 -2
  1100. package/dist/ir/build.js +1 -1
  1101. package/dist/ir/build.js.map +1 -1
  1102. package/dist/ir/builtin-effects.js +139 -0
  1103. package/dist/ir/builtin-effects.js.map +1 -1
  1104. package/dist/ir/builtin-signatures.d.ts +1 -1
  1105. package/dist/ir/builtin-signatures.js +655 -25
  1106. package/dist/ir/builtin-signatures.js.map +1 -1
  1107. package/dist/ir/byte-numbers.js +3 -0
  1108. package/dist/ir/byte-numbers.js.map +1 -1
  1109. package/dist/ir/callback-specialization.d.ts +37 -0
  1110. package/dist/ir/callback-specialization.js +459 -0
  1111. package/dist/ir/callback-specialization.js.map +1 -0
  1112. package/dist/ir/callback-specialization.test.d.ts +1 -0
  1113. package/dist/ir/callback-specialization.test.js +208 -0
  1114. package/dist/ir/callback-specialization.test.js.map +1 -0
  1115. package/dist/ir/capture-values.d.ts +0 -1
  1116. package/dist/ir/capture-values.js +51 -40
  1117. package/dist/ir/capture-values.js.map +1 -1
  1118. package/dist/ir/constant-globals.test.js +1 -1
  1119. package/dist/ir/constant-tables.test.js +1 -1
  1120. package/dist/ir/field-values.test.js +1 -1
  1121. package/dist/ir/final-fields.test.js +1 -1
  1122. package/dist/ir/function-references.test.js +10 -1
  1123. package/dist/ir/function-references.test.js.map +1 -1
  1124. package/dist/ir/init-only-globals.test.js +1 -1
  1125. package/dist/ir/initializer-bindings.test.js +1 -1
  1126. package/dist/ir/int32-slots.d.ts +14 -0
  1127. package/dist/ir/int32-slots.js +119 -14
  1128. package/dist/ir/int32-slots.js.map +1 -1
  1129. package/dist/ir/int32-slots.test.js +29 -1
  1130. package/dist/ir/int32-slots.test.js.map +1 -1
  1131. package/dist/ir/integer-loop-facts.d.ts +16 -6
  1132. package/dist/ir/integer-loop-facts.js +143 -38
  1133. package/dist/ir/integer-loop-facts.js.map +1 -1
  1134. package/dist/ir/integer-loops.d.ts +1 -1
  1135. package/dist/ir/integer-loops.js +39 -9
  1136. package/dist/ir/integer-loops.js.map +1 -1
  1137. package/dist/ir/integer-loops.test.js +104 -0
  1138. package/dist/ir/integer-loops.test.js.map +1 -1
  1139. package/dist/ir/integer-ranges.d.ts +3 -0
  1140. package/dist/ir/integer-ranges.js +4 -6
  1141. package/dist/ir/integer-ranges.js.map +1 -1
  1142. package/dist/ir/integer-ranges.test.js +142 -1
  1143. package/dist/ir/integer-ranges.test.js.map +1 -1
  1144. package/dist/ir/intrinsic-signatures.js +6 -0
  1145. package/dist/ir/intrinsic-signatures.js.map +1 -1
  1146. package/dist/ir/ir.d.ts +234 -58
  1147. package/dist/ir/ir.js +123 -12
  1148. package/dist/ir/ir.js.map +1 -1
  1149. package/dist/ir/ir.test.js +10 -0
  1150. package/dist/ir/ir.test.js.map +1 -1
  1151. package/dist/ir/jsval.d.ts +8 -0
  1152. package/dist/ir/jsval.js +365 -0
  1153. package/dist/ir/jsval.js.map +1 -0
  1154. package/dist/ir/jsval.test.d.ts +1 -0
  1155. package/dist/ir/jsval.test.js +239 -0
  1156. package/dist/ir/jsval.test.js.map +1 -0
  1157. package/dist/ir/runtime-features.d.ts +150 -33
  1158. package/dist/ir/runtime-features.js +672 -339
  1159. package/dist/ir/runtime-features.js.map +1 -1
  1160. package/dist/ir/runtime-features.test.js +62 -0
  1161. package/dist/ir/runtime-features.test.js.map +1 -1
  1162. package/dist/ir/scalar-records.test.js +1 -1
  1163. package/dist/ir/self-captures.d.ts +33 -0
  1164. package/dist/ir/self-captures.js +245 -0
  1165. package/dist/ir/self-captures.js.map +1 -0
  1166. package/dist/ir/self-captures.test.d.ts +1 -0
  1167. package/dist/ir/self-captures.test.js +135 -0
  1168. package/dist/ir/self-captures.test.js.map +1 -0
  1169. package/dist/ir/serialize.d.ts +1 -1
  1170. package/dist/ir/serialize.js +7 -4
  1171. package/dist/ir/serialize.js.map +1 -1
  1172. package/dist/ir/tiers.d.ts +26 -0
  1173. package/dist/ir/tiers.js +101 -0
  1174. package/dist/ir/tiers.js.map +1 -0
  1175. package/dist/ir/tiers.test.d.ts +1 -0
  1176. package/dist/ir/tiers.test.js +140 -0
  1177. package/dist/ir/tiers.test.js.map +1 -0
  1178. package/dist/ir/traverse.js +107 -94
  1179. package/dist/ir/traverse.js.map +1 -1
  1180. package/dist/ir/traverse.test.js +33 -30
  1181. package/dist/ir/traverse.test.js.map +1 -1
  1182. package/dist/ir/unshare.js +65 -3
  1183. package/dist/ir/unshare.js.map +1 -1
  1184. package/dist/ir/unshare.test.js +1 -1
  1185. package/dist/ir/validate.js +220 -71
  1186. package/dist/ir/validate.js.map +1 -1
  1187. package/dist/ir/validate.test.js +64 -9
  1188. package/dist/ir/validate.test.js.map +1 -1
  1189. package/dist/library/fence-eval.test.js +1 -1
  1190. package/dist/library/int-infer.test.js +4 -4
  1191. package/dist/library/ir-policy.js +18 -0
  1192. package/dist/library/ir-policy.js.map +1 -1
  1193. package/dist/library/library-cache.d.ts +1 -0
  1194. package/dist/library/library-cache.js.map +1 -1
  1195. package/dist/library/library-cache.test.js +5 -5
  1196. package/dist/library/library-profile.d.ts +4 -4
  1197. package/dist/library/library-profile.js +35 -7
  1198. package/dist/library/library-profile.js.map +1 -1
  1199. package/dist/library/prepare.js +13 -1
  1200. package/dist/library/prepare.js.map +1 -1
  1201. package/dist/native/cli.js +5 -0
  1202. package/dist/native/cli.js.map +1 -1
  1203. package/dist/native/compiler.js +2 -2
  1204. package/dist/native/compiler.js.map +1 -1
  1205. package/dist/native/compiler.test.js +2 -2
  1206. package/dist/native/prepare.js +7 -0
  1207. package/dist/native/prepare.js.map +1 -1
  1208. package/dist/native/sanitizer.test.js +12 -0
  1209. package/dist/native/sanitizer.test.js.map +1 -1
  1210. package/dist/native/toolchain.d.ts +2 -0
  1211. package/dist/native/toolchain.js +10 -1
  1212. package/dist/native/toolchain.js.map +1 -1
  1213. package/dist/native/toolchain.test.js +39 -1
  1214. package/dist/native/toolchain.test.js.map +1 -1
  1215. package/dist/startup-cache.d.ts +1 -0
  1216. package/dist/startup-cache.js +1 -0
  1217. package/dist/startup-cache.js.map +1 -1
  1218. package/dist/wasm/base64.d.ts +5 -0
  1219. package/dist/wasm/base64.js +62 -0
  1220. package/dist/wasm/base64.js.map +1 -0
  1221. package/dist/wasm/binary.d.ts +36 -0
  1222. package/dist/wasm/binary.js +1976 -0
  1223. package/dist/wasm/binary.js.map +1 -0
  1224. package/dist/wasm/binary.test.d.ts +1 -0
  1225. package/dist/wasm/binary.test.js +190 -0
  1226. package/dist/wasm/binary.test.js.map +1 -0
  1227. package/dist/wasm/discover.d.ts +38 -0
  1228. package/dist/wasm/discover.js +377 -0
  1229. package/dist/wasm/discover.js.map +1 -0
  1230. package/dist/wasm/discover.test.d.ts +1 -0
  1231. package/dist/wasm/discover.test.js +24 -0
  1232. package/dist/wasm/discover.test.js.map +1 -0
  1233. package/dist/wasm/module.d.ts +151 -0
  1234. package/dist/wasm/module.js +575 -0
  1235. package/dist/wasm/module.js.map +1 -0
  1236. package/dist/wasm/translate.d.ts +48 -0
  1237. package/dist/wasm/translate.js +2129 -0
  1238. package/dist/wasm/translate.js.map +1 -0
  1239. package/dist/wasm/translate.test.d.ts +1 -0
  1240. package/dist/wasm/translate.test.js +207 -0
  1241. package/dist/wasm/translate.test.js.map +1 -0
  1242. package/package.json +21 -20
  1243. package/surface-manifest.json +332 -36
@@ -1,15 +1,22 @@
1
1
  import { type ArraySearchKind } from "./array-search.js";
2
- import type { IrBytesElem, IrExpr, IrFfiImport, IrFunction, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
3
- import { type SplitSpan } from "./split-loops.js";
2
+ import type { IrBytesElem, IrExpr, IrFfiCallbackParam, IrFfiImport, IrFunction, IrGlobal, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
3
+ import { type DenseArrayLoop } from "./dense-array-loops.js";
4
+ import { findInitializedByteLoopBindings } from "./byte-windows.js";
5
+ import { matchBytesLoopVersion } from "./bytes-loop-versions.js";
6
+ import type { IntegerCountedForLoop } from "../../ir/integer-loops.js";
7
+ import { type SplitSpan, type StoredSplitSnapshot } from "./split-loops.js";
4
8
  import { type IntegerRange, type IntegerRanges } from "../../ir/integer-ranges.js";
5
9
  import { type Int32Slots } from "../../ir/int32-slots.js";
10
+ import { type FinalFields } from "../../ir/final-fields.js";
6
11
  import { type Int32Abi } from "./int32-abi.js";
7
12
  import { type Int32Local } from "./int32-locals.js";
8
13
  import { type IntegerClones } from "./integer-clones.js";
14
+ import { findInitializerBindings } from "../../ir/initializer-bindings.js";
9
15
  import { type ConstantNumericTable } from "../../ir/constant-tables.js";
10
16
  import { type FfiCallbackAdapter } from "../ffi-callbacks.js";
11
17
  import { type CallLifetimes } from "./call-lifetimes.js";
12
- import { type UnionSources } from "./local-union-storage.js";
18
+ import { type StackObjectField } from "./stack-objects.js";
19
+ import { type LocalUnionStorageProof, type LocalUnionStorage, type UnionSources } from "./local-union-storage.js";
13
20
  import { BlockBuilder } from "./blocks.js";
14
21
  import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
15
22
  import { InlineUnionFields } from "./inline-unions.js";
@@ -17,20 +24,45 @@ import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js"
17
24
  import { CheckedNarrows } from "./checked-narrows.js";
18
25
  import { type MapReadLifetimes } from "./map-read-lifetimes.js";
19
26
  import { type MapEntryFusion } from "./map-entry-fusion.js";
27
+ import { type WalkBorrowHost } from "./walk-borrows.js";
20
28
  import { ReferenceEffects } from "./reference-effects.js";
21
29
  import { ReferenceWrites, type Writes } from "./reference-writes.js";
30
+ import { LlvmDebugInfo } from "./debug-info.js";
22
31
  import { StackCallbacks } from "./stack-callbacks.js";
23
32
  import { AmbientReceiverReaders } from "./constant-callbacks.js";
24
- import { type StringSliceSnapshot } from "./string-slices.js";
33
+ import { type LentStringParameters, type StringSliceSnapshot } from "./string-slices.js";
34
+ import { LazyCaptures } from "./lazy-captures.js";
35
+ import { StackCaptures } from "./stack-captures.js";
36
+ import { PublishWalkers } from "./publish.js";
25
37
  import { type PublishedTypes } from "../publication.js";
26
38
  import { type BytesThunkValue } from "./expr-stream-callbacks.js";
27
39
  import { type LlClassMeta } from "./classes.js";
40
+ import { LifetimeRegions } from "./regions.js";
28
41
  import { LlDyn, type DynHost } from "./dyn.js";
29
42
  import { LlWalkers } from "./walkers.js";
30
43
  import { NullableUnions } from "./nullable-unions.js";
31
44
  import { type InlineRcMode, type MapKeyAccess } from "./shapes.js";
32
45
  import type { ExprOf, LibCallExpr, LlStreamTypedRefAdapter, LlValue } from "./expr-context.js";
33
46
  export { LlvmUnsupportedError } from "./unsupported.js";
47
+ export interface LlArgPackAndTrampolinePrologue {
48
+ definitions: string[];
49
+ pack: string;
50
+ lifted: boolean;
51
+ fieldTys: string[];
52
+ ret: IrType;
53
+ tr: string[];
54
+ spawnParams: string[];
55
+ argPackLines: string[];
56
+ }
57
+ export declare function ffiCallbackDummyLl(callback: IrFfiCallbackParam["callback"]): string;
58
+ export interface LlScopeEntry {
59
+ slot: string;
60
+ type: IrType;
61
+ boxed?: boolean;
62
+ /** A lazily created box: the slot stays null on paths that build no
63
+ * environment, which skip the release call. */
64
+ lazy?: boolean;
65
+ }
34
66
  export interface LlvmTargetOptions {
35
67
  /** C ABI target; omitted direct emission uses the host ABI. */
36
68
  targetTriple?: string;
@@ -62,26 +94,118 @@ export interface LlvmTargetOptions {
62
94
  * teardown after `process.exit` to a helper process (`--detached-exit`).
63
95
  * Executables only; the runtime's weak default keeps it off. */
64
96
  detachedExit?: boolean;
97
+ /** Translated WebAssembly memories check bounds explicitly instead of
98
+ * relying on guard pages (wasm-modules.ts wasmBoundsChecks). */
99
+ wasmBoundsChecks?: boolean;
65
100
  }
66
101
  export declare function emitLlvmModule(input: IrModule, options?: LlvmTargetOptions): string;
67
102
  /** Keep large translation units below the host's single-string limit. */
68
103
  export declare function emitLlvmModuleSource(input: IrModule, options?: LlvmTargetOptions): string | readonly string[];
104
+ export declare function llStrBytes(text: string): string;
105
+ /** Runtime entry points (and await-call entries) that may park the running
106
+ * execution context, as they appear in emitted function text. */
107
+ export declare const SUSPENDS: RegExp;
108
+ /** Captured bindings (boxes a body declares or receives) from which a
109
+ * function compiles without LLVM optimization (see boxSlotCount). */
110
+ export declare const UNOPTIMIZED_BOX_SLOTS = 512;
111
+ /** The capture boxes `fn` holds: its boxed bindings and the bindings its
112
+ * environment brings in. Each box pointer is a value from its binding (or
113
+ * function entry) to its last use, and every one of them crosses the calls
114
+ * in between. With thousands of them in one body, as in a factory whose
115
+ * returned methods share a large environment, LLVM's inliner, instruction
116
+ * selection and register allocation grow quadratically and take minutes.
117
+ * Past UNOPTIMIZED_BOX_SLOTS, which ordinary functions stay far below, the
118
+ * body is compiled `optnone` (nothing inlines into it and code generation
119
+ * takes its fast paths) and its box slots are accessed volatile, so no
120
+ * pass promotes them to values even where a pipeline runs IR passes over
121
+ * optnone bodies, as the native helper's does. Each use reloads its box
122
+ * pointer and code generation stays linear. Semantics, boxes and
123
+ * environments are unchanged; only that body's machine code is slower. */
124
+ export declare function boxSlotCount(fn: IrFunction): number;
125
+ /** Whether any node of `e` names the local (reads, writes, declarations,
126
+ * captures). */
127
+ /** Typed-array loop versions nest at most this deep (each doubles a body). */
128
+ export declare const MAX_BYTES_LOOP_VERSION_DEPTH = 3;
69
129
  export declare class LlEmitter {
70
130
  readonly mod: IrModule;
71
131
  localArrayReads: Map<string, LocalArrayRead>;
72
- private loopArrayBorrows;
73
- private scalarStringSlices;
132
+ loopArrayBorrows: ReadonlySet<IrStmt>;
133
+ scalarStringSlices: Map<string, {
134
+ kind: "strIntrinsic";
135
+ method: import("../../ir/ir.js").IrStrIntrinsicMethod;
136
+ receiver: IrExpr;
137
+ args: IrExpr[];
138
+ type: IrType;
139
+ loc: SrcLoc;
140
+ } & {
141
+ kind: "strIntrinsic";
142
+ }>;
74
143
  readonly stringSlices: Map<string, StringSliceSnapshot>;
75
- private localStackUnions;
76
- private localStackObjects;
77
- private reassignedStackObjects;
144
+ /** Slices written into stack buffers (findScratchStringSlices). */
145
+ scratchStringSlices: ReadonlySet<IrExpr>;
146
+ /** String parameters a caller may lend scratch slices to. */
147
+ lentStringParameters: LentStringParameters;
148
+ localStackUnions: Map<string, {
149
+ kind: "unionWrap";
150
+ unionId: string;
151
+ tag: number;
152
+ value: IrExpr;
153
+ type: IrType;
154
+ loc: SrcLoc;
155
+ } & {
156
+ kind: "unionWrap";
157
+ }>;
158
+ localStackObjects: Map<string, ({
159
+ kind: "call";
160
+ callee: string;
161
+ args: IrExpr[];
162
+ type: IrType;
163
+ loc: SrcLoc;
164
+ } & {
165
+ kind: "recordLit" | "recordClone" | "new" | "call";
166
+ }) | ({
167
+ kind: "new";
168
+ className: string;
169
+ args: IrExpr[];
170
+ type: IrType;
171
+ loc: SrcLoc;
172
+ } & {
173
+ kind: "recordLit" | "recordClone" | "new" | "call";
174
+ }) | ({
175
+ kind: "recordLit";
176
+ fields: {
177
+ name: string;
178
+ value: IrExpr;
179
+ overflow?: true;
180
+ }[];
181
+ nullProto?: true;
182
+ type: IrType;
183
+ loc: SrcLoc;
184
+ } & {
185
+ kind: "recordLit" | "recordClone" | "new" | "call";
186
+ }) | ({
187
+ kind: "recordClone";
188
+ source: IrExpr;
189
+ overrides: {
190
+ name: string;
191
+ value: IrExpr;
192
+ }[];
193
+ type: IrType;
194
+ loc: SrcLoc;
195
+ } & {
196
+ kind: "recordLit" | "recordClone" | "new" | "call";
197
+ })>;
198
+ reassignedStackObjects: Set<string>;
78
199
  /** The binding slot of each reassigned stack-object local. */
79
- private stackObjectSlots;
80
- private localUnionStorageProofs;
81
- private localUnionStorage;
200
+ stackObjectSlots: Map<string, string>;
201
+ /** Entry-block pointers to the reference fields of each frame object
202
+ * slot (stack-objects.ts stackObjectFields). */
203
+ stackObjectFieldPtrs: Map<string, readonly StackObjectField[]>;
204
+ localUnionStorageProofs: Map<string, LocalUnionStorageProof>;
205
+ localUnionStorage: Map<string, LocalUnionStorage>;
82
206
  integerArrayBindings: Set<string>;
83
- private readonly fieldAliasTags;
84
- private readonly fieldPointerTags;
207
+ readonly fieldAliasTags: Map<string, number>;
208
+ readonly fieldPointerTags: Map<string, number>;
85
209
  /** Native class fields with different property names cannot occupy the
86
210
  * same slot of one object. Inherited views of the same property share a
87
211
  * tag. Array storage has its own disjoint categories; untagged runtime
@@ -95,12 +219,16 @@ export declare class LlEmitter {
95
219
  * 2^32 - 1 (the runtime's SCR_ARR_MAX_LENGTH), so conversions to double
96
220
  * and back fold. 32-bit targets load the full range anyway. */
97
221
  get arrayLengthRange(): string;
222
+ /** Whether an element access at `index` of `arr` lies in the hole-free
223
+ * prefix: the counter of a dense array loop's fast copy indexing one of
224
+ * the arrays its entry test covered. */
225
+ provenDenseIndex(arr: IrExpr, index: IrExpr): boolean;
98
226
  fieldAliasAttachment(ptr: string): string;
99
- private fieldAliasMetadata;
100
- private readonly debug;
227
+ fieldAliasMetadata(): string[];
228
+ readonly debug: LlvmDebugInfo | null;
101
229
  /** Projection-only scalar objects may live in frame storage (stack-objects.ts). */
102
230
  readonly stackObjects: boolean;
103
- private debugScope;
231
+ debugScope: string | null;
104
232
  readonly sizeType: "i32" | "i64";
105
233
  readonly ffiExtendNarrowIntegers: boolean;
106
234
  readonly cycleBufOffset: number;
@@ -114,47 +242,60 @@ export declare class LlEmitter {
114
242
  * generator stacks) and so do debug builds (the debugger reads locals
115
243
  * from the native frame). */
116
244
  private stacklessGenerators;
245
+ /** Async bodies that suspend only at their own awaits compile to the same
246
+ * switched coroutines on native targets (selectStacklessAsync), under the
247
+ * generators' conditions; library and Windows builds keep fibers. */
248
+ private stacklessAsyncAllowed;
249
+ /** The async functions selectStacklessAsync lowered as coroutines. */
250
+ readonly stacklessAsync: Set<string>;
117
251
  /** Some function in the module is lowered as a coroutine. */
118
- private usesCoroutines;
252
+ usesCoroutines: boolean;
119
253
  /** The target lacks a rounding instruction at its baseline CPU (x86-64
120
254
  * before SSE4.1), so `llvm.trunc` would lower to a libm call: emit
121
255
  * truncation inline through an integer round trip instead. */
122
256
  readonly inlineTrunc: boolean;
123
257
  /** ELF worker executables give thread-locals the executable TLS models. */
124
- private readonly executableTls;
258
+ readonly executableTls: boolean;
125
259
  /** Source loops enclosing the statement being emitted in the current
126
260
  * function body. */
127
- private loopDepth;
261
+ loopDepth: number;
128
262
  /** Darwin worker executables read the stack guard from a pthread
129
263
  * thread-specific-data slot off the thread pointer (scr_runtime.h's
130
264
  * SCR_STACK_GUARD_TSD): the architecture names the access sequence. */
131
265
  private readonly stackGuardTsd;
132
- private readonly emitLibraryIdentity;
133
- private readonly runtimeAbiMarker;
134
- private readonly detachedExit;
266
+ readonly emitLibraryIdentity: boolean;
267
+ readonly runtimeAbiMarker: boolean;
268
+ readonly detachedExit: boolean;
269
+ readonly wasmBoundsChecks: boolean;
135
270
  /** Interned string literals: UTF-8 text → { symbol, byte length } —
136
271
  * first-use order, the runtime ABI’s determinism discipline. */
137
- private readonly literals;
272
+ readonly literals: Map<string, {
273
+ sym: string;
274
+ len: number;
275
+ }>;
138
276
  /** Literal equality helpers: literal text → helper symbol (literalEquals). */
139
- private readonly literalEqualities;
277
+ readonly literalEqualities: Map<string, string>;
140
278
  /** Interned bigint literals: hex magnitude with sign → { symbol, value }. */
141
- private readonly bigintLiterals;
279
+ readonly bigintLiterals: Map<string, {
280
+ sym: string;
281
+ value: bigint;
282
+ }>;
142
283
  /** Symbols of interned constant data, named by content (contentSymbol). */
143
284
  private readonly contentSymbols;
144
285
  /** Interned unit-armed union instances: "unionId:tag" → symbol — one
145
286
  * immortal (rc == SIZE_MAX) static per (union, unit tag).
146
287
  * RC entry points and the collector skip immortals. */
147
- private readonly unitInstances;
288
+ readonly unitInstances: Map<string, string>;
148
289
  /** unionId → symbol of the union's immortal ABSENT field-slot instance. */
149
- private readonly absentInstances;
290
+ readonly absentInstances: Map<string, string>;
150
291
  /** The zeroed box an inline store reads for a NULL union dummy. */
151
- private needsUnionNone;
292
+ needsUnionNone: boolean;
152
293
  /** unionId → symbol of a flag set once a checked-dynamic cast caches one
153
294
  * of the union's boxes. A cached box is refreshed in place, possibly with
154
295
  * a tag that another union numbers apart, so it is never shared. */
155
- private readonly retypeGuards;
296
+ readonly retypeGuards: Map<string, string>;
156
297
  /** The nullable-union ABSENT sentinel was referenced (absentInstanceRef). */
157
- private needsNullableAbsent;
298
+ needsNullableAbsent: boolean;
158
299
  private readonly immortalValues;
159
300
  /** Regex literal templates: "<flags>/<pattern>" → { symbol, interned
160
301
  * source/flags literal refs } — one immortal ScrRegex template per distinct
@@ -178,9 +319,12 @@ export declare class LlEmitter {
178
319
  }>;
179
320
  /** Interned NUL-terminated C-string constants (scr_jb_puts labels, the
180
321
  * stringify indent text): UTF-8 text → { symbol, byte length }. */
181
- private readonly cstrs;
322
+ readonly cstrs: Map<string, {
323
+ sym: string;
324
+ len: number;
325
+ }>;
182
326
  /** Interned ScrMapOps descriptors (scr_map.h): initializer → symbol. */
183
- private readonly mapOpsConsts;
327
+ readonly mapOpsConsts: Map<string, string>;
184
328
  /** Type-directed walker functions (JSON serializers, the indent
185
329
  * rewriter, union ToString/join) — interned per typeKey/unionId, defs
186
330
  * flushed with the shape helpers. */
@@ -191,17 +335,17 @@ export declare class LlEmitter {
191
335
  /** Explicit callback boundary for standalone layout and walker stages. */
192
336
  readonly shapeHost: DynHost;
193
337
  /** External declarations, in first-use order. */
194
- private readonly decls;
338
+ readonly decls: Set<string>;
195
339
  /** Declared functions referenced as values: each needs an env-signature
196
340
  * wrapper + an interned immortal closure (so `f === f` holds). */
197
341
  readonly fnValues: Set<string>;
198
- private needsOom;
342
+ needsOom: boolean;
199
343
  needsBadTag: boolean;
200
344
  needsBadKey: boolean;
201
- private needsRetainBox;
345
+ needsRetainBox: boolean;
202
346
  /** Inline RC fast-path helpers requested by call sites (shapes.ts); null
203
347
  * when inline RC is off. */
204
- private readonly rcHelpers;
348
+ readonly rcHelpers: Set<string> | null;
205
349
  private readonly rcMode;
206
350
  private readonly rcHelpersNoinline;
207
351
  readonly fnByName: Map<string, IrFunction>;
@@ -209,11 +353,11 @@ export declare class LlEmitter {
209
353
  appendedArrayLiterals: ReadonlySet<IrExpr>;
210
354
  /** Emitted LLVM text of every IR function body, by function name: the
211
355
  * fiberless-async analysis scans it for suspension entry points. */
212
- private readonly fnDefText;
356
+ readonly fnDefText: Map<string, string>;
213
357
  readonly referenceEffects: ReferenceEffects;
214
358
  /** Field-sensitive reference writes (null in debug builds). */
215
359
  referenceWrites: ReferenceWrites | null;
216
- private readonly borrowedReturnKeyCache;
360
+ readonly borrowedReturnKeyCache: Map<string, string[]>;
217
361
  /** The statement list being emitted and the current index, for blocks
218
362
  * whose bindings end with the list (emitBlock and function bodies). */
219
363
  private stmtCursor;
@@ -231,58 +375,63 @@ export declare class LlEmitter {
231
375
  currentConstantCallbacks: ReadonlyMap<string, string>;
232
376
  readonly stackCallbacks: StackCallbacks;
233
377
  readonly receiverReaders: AmbientReceiverReaders;
234
- private readonly stackCaptures;
235
- private readonly lazyCaptures;
378
+ readonly stackCaptures: StackCaptures;
379
+ readonly lazyCaptures: LazyCaptures;
236
380
  /** Unchanged captured parameters of the current function: each maps to
237
381
  * the slot caching its box, NULL until the first closure needs it. */
238
- private readonly lazyCaptureBoxes;
239
- private readonly lazyStackBoxes;
240
- private borrowedParameters;
382
+ readonly lazyCaptureBoxes: Map<string, string>;
383
+ readonly lazyStackBoxes: Map<string, string>;
384
+ borrowedParameters: Set<string>;
241
385
  /** Captures of the current closure body that its environment holds
242
386
  * unchanged for the closure's whole life (LazyCaptures.stableCaptures). */
243
- private stableCaptureIds;
387
+ stableCaptureIds: ReadonlySet<string>;
244
388
  /** Parameters proven projection-only: callers may pass stack boxes. */
245
- private projectedParameters;
246
- private stableCallBindings;
389
+ projectedParameters: Set<string>;
390
+ stableCallBindings: ReadonlySet<string>;
247
391
  /** Locals and rebound parameters holding borrowed pointers for their
248
392
  * whole lifetime (walk-borrows.ts), per function and for the current one. */
249
- private readonly walkBorrowsByFunction;
250
- private walkBorrows;
393
+ readonly walkBorrowsByFunction: Map<string, ReadonlySet<string>>;
394
+ walkBorrows: ReadonlySet<string>;
251
395
  /** Functions whose borrowing body returns its result without a reference
252
396
  * (analyzeBorrowedReturns), and whether the current body is one. */
253
397
  readonly borrowedReturns: Set<string>;
254
398
  /** Rebound parameters that keep the borrowed convention with an owner
255
399
  * slot (rebound-parameters.ts), per function, and the current owner slots. */
256
- private readonly reboundByFunction;
257
- private readonly reboundOwnerSlots;
258
- private currentBorrowedReturn;
400
+ readonly reboundByFunction: Map<string, ReadonlySet<string>>;
401
+ readonly reboundOwnerSlots: Map<string, string>;
402
+ currentBorrowedReturn: boolean;
259
403
  /** Manifest-bound native imports, used by ffiCall emission. */
260
404
  readonly ffiByName: Map<string, IrFfiImport>;
261
405
  /** C-ABI callback trampolines and (for raw/no-userdata callbacks) their
262
406
  * distinct call-scoped TLS closure slots. */
263
- private readonly ffiCallbackAdapters;
407
+ readonly ffiCallbackAdapters: Map<string, FfiCallbackAdapter>;
264
408
  /** Module-level constant consulted per ffiCall: with a retained
265
409
  * descriptor anywhere in the manifest, every native call is a
266
410
  * pending-exception checkpoint (may-throw derives the same fact from
267
411
  * the same helper). */
268
412
  readonly ffiHasRetainedCallback: boolean;
269
- private readonly ffiHasForeignCallback;
413
+ readonly ffiHasForeignCallback: boolean;
270
414
  private readonly globalTypes;
271
415
  /** Module constants that keep one value once initialized
272
416
  * (immutability.ts stableGlobals). */
273
- private stableGlobals;
417
+ stableGlobals: ReadonlySet<string>;
274
418
  private readonly tdzGlobals;
275
419
  readonly constantNumericTables: ReadonlyMap<string, ConstantNumericTable>;
420
+ /** Constant-key reads on checked-dynamic objects, each with its own
421
+ * zero-initialized ScrDynReadIc (scr_runtime.h). */
422
+ dynReadIcSites: number;
423
+ /** ThreadSlots blocks by family name (thread-slots.ts). */
424
+ readonly threadSlotsBlocks: Map<string, string>;
276
425
  /** May-throw analysis (computeMayThrow): pending
277
426
  * checks are emitted only after calls that can actually raise. */
278
427
  readonly mayThrow: Set<string>;
279
428
  readonly indirectMayThrow: boolean;
280
429
  /** Worker programs: the functions that poll for termination on entry
281
430
  * (workerTerminationPolls); null outside worker programs. */
282
- private readonly workerEntryPolls;
431
+ readonly workerEntryPolls: ReadonlySet<string> | null;
283
432
  /** Functions that check the native stack guard on entry
284
433
  * (stackCheckedFunctions); null where the runtime has no guard. */
285
- private readonly stackChecks;
434
+ readonly stackChecks: ReadonlySet<string> | null;
286
435
  /** Static types whose values can be published (@scriptc/threads): their
287
436
  * stores carry the frozen-object guard. Null without publish calls. */
288
437
  readonly publishedTypes: PublishedTypes | null;
@@ -291,8 +440,8 @@ export declare class LlEmitter {
291
440
  private readonly immutableFields;
292
441
  /** Constructor function names: their bodies may still write their own
293
442
  * `this`'s construction-only fields. */
294
- private readonly constructorFunctions;
295
- private inConstructor;
443
+ readonly constructorFunctions: ReadonlySet<string>;
444
+ inConstructor: boolean;
296
445
  /** Method names with at least one may-throw implementation — the
297
446
  * virtualCall pending check's key. */
298
447
  readonly mayThrowMethods: Set<string>;
@@ -302,6 +451,12 @@ export declare class LlEmitter {
302
451
  /** Async functions returned directly at some `return f(...)` site of an
303
452
  * async function; each gets an adopting entry (emitAsyncAwaitCall). */
304
453
  readonly adoptCallees: Set<string>;
454
+ /** Fiberless async functions a stackless coroutine body awaits directly;
455
+ * each gets an inline await entry (emitCoroInlineAwait). */
456
+ readonly inlineAwaitCallees: Set<string>;
457
+ /** The async functions whose bodies never suspend and that a direct
458
+ * await may enter in place (selectStacklessAsync). */
459
+ private inlineAwaitable;
305
460
  /** The promise a `return` emitted past its finally regions already
306
461
  * produced for its adopting await (borrowed from the return's parked
307
462
  * slot); that await takes it instead of evaluating its operand. */
@@ -310,6 +465,13 @@ export declare class LlEmitter {
310
465
  /** setTimeout and friends appeared somewhere: main must run the event
311
466
  * loop even in programs with no async functions. */
312
467
  usesTimers: boolean;
468
+ /** The program calls mock.timers members (moduleUsesMockTimers): timer
469
+ * calls emit scr_test.c's mock-aware entry points. */
470
+ readonly mockTimers: boolean;
471
+ private schedulesInContextValue;
472
+ /** Whether timer and tick scheduling goes through the *_als entry
473
+ * points (RuntimeFeatures asyncContext). */
474
+ get schedulesInContext(): boolean;
313
475
  /** Emitted ref-kind resolve thunks for new Promise, interned per inner
314
476
  * typeKey → thunk symbol. */
315
477
  readonly resolveThunks: Map<string, string>;
@@ -324,6 +486,9 @@ export declare class LlEmitter {
324
486
  /** Identity-preserving static→dyn capsules for program classes and Web
325
487
  * APIs whose values remain directly observable. */
326
488
  readonly liveDynRefAdapters: Map<string, LlStreamTypedRefAdapter>;
489
+ private dynBuiltinStreamUse;
490
+ /** See moduleUsesDynBuiltinStream. */
491
+ get usesDynBuiltinStream(): boolean;
327
492
  /** Runtime-arm dispatchers for live union values. */
328
493
  readonly liveDynUnionRefAdapters: Map<string, string>;
329
494
  readonly dynPromiseAdapters: Map<string, string>;
@@ -346,28 +511,47 @@ export declare class LlEmitter {
346
511
  /** Class objects (classes as first-class values): className → the
347
512
  * interned .name literal ref — registered during body emission, the
348
513
  * statics and construct thunks assemble around the bodies. */
349
- private readonly classObjs;
514
+ readonly classObjs: Map<string, {
515
+ nameSym: string;
516
+ }>;
350
517
  private readonly unionFieldReadGroups;
351
518
  /** Preorder intervals of the runtime error classes under THIS module's
352
519
  * class-forest numbering (main() stamps scr_error_vts with them, exactly
353
520
  * like the runtime ABI’s errorVtStampLines). */
354
- private readonly errorIntervals;
521
+ readonly errorIntervals: {
522
+ kind: number;
523
+ pre: number;
524
+ post: number;
525
+ lib: string;
526
+ }[];
355
527
  /** The runtime emitter vtable's preorder interval, when the program
356
528
  * touches node:events (the class def rides the module exactly then) —
357
529
  * main() stamps scr_emitter_vt with it (emitterVtStampLines, ported). */
358
- private emitterInterval;
530
+ emitterInterval: {
531
+ pre: number;
532
+ post: number;
533
+ } | null;
359
534
  /** The runtime stream vtables' preorder intervals (streamVtStampLines,
360
535
  * ported): the defs ride every emitter-touching module (the frontend
361
536
  * collects the whole emitter-rooted tree), and scr_stream.c links on
362
537
  * the same predicate, so the stamps always have their globals. */
363
- private readonly streamIntervals;
538
+ readonly streamIntervals: {
539
+ vt: string;
540
+ pre: number;
541
+ post: number;
542
+ lib: string;
543
+ }[];
364
544
  B: BlockBuilder;
365
545
  frames: LlValue[][];
366
- private scopes;
546
+ scopes: LlScopeEntry[][];
367
547
  /** Scope slots dominate every throw site. Share their exceptional cleanup
368
548
  * for identical live bindings and handlers; statement temporaries stay at
369
549
  * their own throw sites because their SSA values are path-dependent. */
370
- private readonly unwindCleanups;
550
+ readonly unwindCleanups: Map<string, {
551
+ label: string;
552
+ entries: LlScopeEntry[];
553
+ terminator: string;
554
+ }>;
371
555
  /** Enclosing break/continue targets. `kind` separates loops from
372
556
  * switches and labeled blocks: an unlabeled break binds to the innermost
373
557
  * NON-BLOCK entry (loop or switch — blocks only enter the stack when
@@ -375,13 +559,30 @@ export declare class LlEmitter {
375
559
  * continue binds to the innermost LOOP; a labeled jump binds to the
376
560
  * entry whose `labels` contains its label. `contLabel` is null exactly
377
561
  * for blocks and switches. */
378
- private jumpTargets;
379
- private currentLocals;
380
- private privateSplitLocals;
562
+ jumpTargets: {
563
+ kind: "loop" | "block" | "switch";
564
+ brkLabel: string;
565
+ contLabel: string | null;
566
+ labels?: string[] | undefined;
567
+ frameDepth: number;
568
+ scopeDepth: number;
569
+ finallyDepth: number;
570
+ }[];
571
+ currentLocals: Map<string, IrLocal>;
572
+ privateSplitLocals: Map<string, {
573
+ kind: "strIntrinsic";
574
+ method: import("../../ir/ir.js").IrStrIntrinsicMethod;
575
+ receiver: IrExpr;
576
+ args: IrExpr[];
577
+ type: IrType;
578
+ loc: SrcLoc;
579
+ } & {
580
+ kind: "strIntrinsic";
581
+ }>;
381
582
  readonly splitSpans: Map<string, SplitSpan>;
382
- private storedSplits;
383
- private streamingSplitsEnabled;
384
- private readonly initializerBindings;
583
+ storedSplits: Map<string, StoredSplitSnapshot>;
584
+ streamingSplitsEnabled: boolean;
585
+ readonly initializerBindings: ReturnType<typeof findInitializerBindings>;
385
586
  /** Whole-program int32 storage and parameter/result facts. */
386
587
  readonly int32Slots: Int32Slots;
387
588
  /** The program has no runtime store into a checked-dynamic value
@@ -402,8 +603,16 @@ export declare class LlEmitter {
402
603
  /** ProgramLifetime hierarchy roots (contract types): their instances are
403
604
  * immortal from construction (classes.ts programLifetimeClass). */
404
605
  readonly programLifetime: ReadonlySet<string>;
405
- private numericLocals;
406
- private captureIds;
606
+ numericLocals: Map<string, IrLocal>;
607
+ /** Local arrays of the current function that no other binding can hold
608
+ * (ir/array-length-stability.ts). */
609
+ unaliasedArrays: ReadonlySet<string>;
610
+ /** Dense array loops (dense-array-loops.ts) run in this function. */
611
+ denseLoopsEnabled: boolean;
612
+ denseLoopEntries: ReturnType<typeof findInitializedByteLoopBindings>;
613
+ /** The fast copy of a dense array loop being emitted. */
614
+ denseLoop: DenseArrayLoop | null;
615
+ captureIds: Set<string>;
407
616
  /** Active induction bindings retain their width independently of size_t. */
408
617
  integerLoopBindings: Map<string, {
409
618
  slot: string;
@@ -414,22 +623,55 @@ export declare class LlEmitter {
414
623
  max: number;
415
624
  };
416
625
  }>;
417
- private countedLoopsEnabled;
626
+ countedLoopsEnabled: boolean;
627
+ /** Speculative integer loops (speculative-integers.ts) run in this function. */
628
+ speculativeLoopsEnabled: boolean;
629
+ /** The fast copy of a speculative integer loop being emitted: its
630
+ * integer-computed writes and where each resumes in the ordinary copy. */
631
+ speculation: {
632
+ writes: Set<IrStmt>;
633
+ resume: Map<IrStmt, string>;
634
+ /** Globals whose double is written back only when the copy is left. */
635
+ deferred: Set<string>;
636
+ } | null;
637
+ /** The ordinary copy being emitted: resume labels still to place. */
638
+ speculationResume: Map<IrStmt, {
639
+ label: string;
640
+ placed: boolean;
641
+ }> | null;
642
+ /** The function being emitted, for speculative globals. */
643
+ speculativeFunction: string;
644
+ /** Every function that writes each number global (computed on demand). */
645
+ private globalWriters;
418
646
  /** Whole-program final reference fields (ir/final-fields.ts). */
419
- private finalFields;
647
+ finalFields: FinalFields;
420
648
  /** The current function may borrow final fields of borrowable objects:
421
649
  * not a constructor (where they change), not async or a generator. */
422
- private finalFieldBorrows;
650
+ finalFieldBorrows: boolean;
423
651
  integerRanges: IntegerRanges;
652
+ /** Number arrays of the current function whose every present element is
653
+ * an int32 (Int32[] contracts), or null when the module has none. */
654
+ int32Elements: ((arr: IrExpr) => boolean) | null;
424
655
  /** Sums whose result only feeds 32-bit conversions (wrapping-sums.ts). */
425
656
  wrappingSums: Set<IrExpr>;
426
- private byteWindowsEnabled;
427
- private byteWindowEntries;
657
+ byteWindowsEnabled: boolean;
658
+ byteWindowEntries: ReturnType<typeof findInitializedByteLoopBindings>;
659
+ /** Typed-array loop versioning (bytes-loop-versions.ts) for the current
660
+ * function: off in debug and suspending functions and inside a copy. */
661
+ bytesLoopVersionsEnabled: boolean;
662
+ /** Loops being versioned around the statement being emitted: a loop is
663
+ * never versioned inside its own copies, and versions nest boundedly. */
664
+ readonly bytesLoopVersioning: Set<IrStmt>;
665
+ bytesLoopEntries: ReturnType<typeof findInitializedByteLoopBindings> | null;
666
+ bytesLoopFunction: IrFunction | null;
667
+ /** Counted loops whose integer-form safety test an enclosing version
668
+ * guard already passed. */
669
+ readonly provenCountedGuards: Set<IrStmt>;
428
670
  bytesBounds: ReadonlySet<IrExpr | IrStmt>;
429
671
  integerViews: Map<string, string>;
430
672
  /** Module globals the current function owns outright (initializer
431
673
  * bindings): their function-local slot, which stands in for the global. */
432
- private privateGlobalSlots;
674
+ privateGlobalSlots: Map<string, string>;
433
675
  /** Number locals of the current function stored only as an i32
434
676
  * (int32-locals.ts); their slots are `alloca i32`. */
435
677
  int32Locals: Map<string, Int32Local>;
@@ -444,21 +686,31 @@ export declare class LlEmitter {
444
686
  * (past its own catch), so the copies emit under the truncated stack.
445
687
  * break/continue use the same region snapshots through
446
688
  * emitFinallysForJump. */
447
- private finallyStack;
689
+ finallyStack: {
690
+ frameDepth: number;
691
+ scopeDepth: number;
692
+ tryDepth: number;
693
+ body: IrStmt[];
694
+ }[];
448
695
  /** Enclosing try contexts, innermost last — the compile-time unwind
449
696
  * targets: a pending check or `throw` inside a try
450
697
  * releases frames/scopes down to the recorded depths and branches to
451
698
  * `label` (the catch, or the exception-path finally) instead of
452
699
  * returning out of the function. Entering a try emits no code. */
453
- private tryStack;
700
+ tryStack: {
701
+ label: string;
702
+ used: boolean;
703
+ frameDepth: number;
704
+ scopeDepth: number;
705
+ }[];
454
706
  /** Return type of the function being emitted — the unwind path returns
455
707
  * a dummy of this type (never read: callers check the flag first). */
456
708
  currentReturnType: IrType;
457
709
  /** The current body returns its number result as i32. */
458
- private currentInt32Result;
710
+ currentInt32Result: boolean;
459
711
  /** The function's i32 entry returns its scalar union result as tag and
460
712
  * payload bits (Int32Abi.union). */
461
- private currentUnionResult;
713
+ currentUnionResult: boolean;
462
714
  /** Active only while emitting a body lowered with LLVM's
463
715
  * switched-coroutine intrinsics (wasm32 async bodies and generators,
464
716
  * native synchronous generators; see coroLowered). */
@@ -486,11 +738,13 @@ export declare class LlEmitter {
486
738
  nextT: IrType;
487
739
  } | null;
488
740
  /** The function being emitted is an async generator body. */
489
- private currentAsyncGenerator;
741
+ currentAsyncGenerator: boolean;
490
742
  /** Active optional-chain bind slots, by chain id (chainRecv reads). */
491
743
  readonly chainSlots: Map<string, LlValue>;
492
744
  logArgSlots: number;
493
- private readonly stackTraces;
745
+ readonly stackTraces: boolean;
746
+ /** Stack-trace mode: functions no capture can include (no frame push). */
747
+ readonly unframedFunctions: ReadonlySet<string>;
494
748
  constructor(mod: IrModule, options: LlvmTargetOptions);
495
749
  /** The borrowed parameters of a hierarchy's vtable slot (empty: owned). */
496
750
  virtualSlotBorrowed(rootName: string, slotIndex: number): ReadonlySet<number>;
@@ -498,103 +752,89 @@ export declare class LlEmitter {
498
752
  get optimizing(): boolean;
499
753
  /** The vtable entry for one implementation (VirtualBorrows.entry). */
500
754
  virtualEntry(implFn: string): string;
501
- private implSlotBorrowed;
755
+ implSlotBorrowed(implFn: string): ReadonlySet<number>;
502
756
  abiOffset(native64: number, wasm32: number): number;
503
757
  llType(t: IrType): string;
504
758
  ffiCallbackAdapter(binding: string, id: string): FfiCallbackAdapter;
505
- /** C-callable scalar callback trampolines. A callback with an explicit
506
- * context entry receives the closure at that exact ABI position. A raw
507
- * callback loads it from a call-scoped TLS slot installed around the
508
- * outer native call. */
509
- private emitFfiCallbackDefs;
759
+ emitFfiCallbackDefs(): {
760
+ globals: string[];
761
+ defs: string[];
762
+ };
510
763
  emit(): string;
511
764
  emitParts(): string[];
512
- private emitModuleParts;
513
- /** LIBRARY mode: the profile-declared external definitions — the
514
- * export-map wrappers plus init / sink-registration / reset / collect.
515
- * Plain `define` (not `define internal`) — the exact linkage distinction
516
- * that separates the executable lane's @main from everything else. The
517
- * bodies delegate every runtime half to scr_library.c, mirroring the C
518
- * emission line for line, so the two lanes are identical by
519
- * construction. */
520
- private emitLibDefs;
521
- /** The shared abort helpers (emitted only when referenced): the OOM
522
- * abort of untraced shape allocation and the invalid-union-tag abort —
523
- * both print the runtime ABI’s exact message on fd 2 and abort. */
524
- private helperDefs;
765
+ /** The dispose-observer gates the emitted frees and record writers test
766
+ * (alloc.ts): defined after every helper is emitted, because dynCheck
767
+ * builders, JSON schemas and weak collection constructors are requested
768
+ * lazily. */
769
+ disposeObserverGates(): string[];
770
+ emitModuleParts(): string[];
771
+ emitLibDefs(globals: IrGlobal[], globalReleaseLines: (prefix: string) => string[], stamps: string[]): string[];
772
+ helperDefs(): string[];
525
773
  /** The inline RC helpers every call site requested, emitted last so
526
774
  * requests from main/library epilogues are included. Slow-path
527
775
  * declarations a late request added after the extern block flushed land
528
776
  * here too. */
529
- private inlineRcTail;
777
+ inlineRcTail(flushedDecls: ReadonlySet<string>): string[];
530
778
  /** Env-signature wrappers + interned immortal closures for declared
531
779
  * functions used as values (the runtime ABI’s sc_w_/sc_fc_ pair): every
532
780
  * mention of `f` yields the same pointer, so `f === f` holds. */
533
- private emitFnValueDefs;
534
- /** The argument-pack ABI and trampoline prefix shared by async functions
535
- * and generators. Their promise/generator completion and spawn tails stay
536
- * with the callers below. */
537
- private emitArgPackAndTrampolinePrologue;
781
+ emitFnValueDefs(): string[];
782
+ emitArgPackAndTrampolinePrologue(fn: IrFunction): LlArgPackAndTrampolinePrologue;
538
783
  /** Settles `promise` from a clean async body result `%r` (moved in). */
539
- private asyncFulfillLines;
540
- /** Async functions whose calls can skip the fiber (scr_async_inline_*).
541
- * A body qualifies only when nothing it runs can park its execution
542
- * context: its emitted text, and the text of every module function it
543
- * mentions (transitively), contains no suspension entry point. Such a
544
- * body always completes before the call returns, which is exactly the
545
- * behavior of a fiber that never suspends. Excluded conservatively:
546
- * wasm32 (its coroutine lowering owns async bodies), module-evaluation
547
- * bodies (their promise caches),
548
- * `dyn` results (resolution may adopt a thenable), and every program
549
- * that uses node:test subtests — `t.test()` runs a subtest inline and
550
- * awaits it on the CURRENT fiber even from synchronous code. Worker
551
- * programs keep fibers too: their fiber epilogue owns context
552
- * termination (a stopping worker rejects and observes the promise), which
553
- * the fiberless wrapper does not reproduce. A missed suspension still
554
- * cannot reorder execution undetected: the runtime traps when a context parks while a
555
- * fiberless body is on its stack. */
556
- private fiberlessAsyncFunctions;
784
+ asyncFulfillLines(ret: IrType, promise: string): string[];
785
+ fiberlessAsyncFunctions(): Set<string>;
786
+ /** The async functions `parks` leaves fiberless (fiberlessAsyncFunctions). */
787
+ neverParkingAsync(parks: ReadonlySet<string>): Set<string>;
788
+ parkingFunctions(): Set<string> | null;
789
+ private mangledFunctions;
790
+ /** The module functions whose ordinary or borrowed body `text` mentions. */
791
+ mentionedFunctions(text: string): Generator<string>;
792
+ /** Chooses the native async functions whose bodies compile to switched
793
+ * coroutines instead of running on a fiber: a suspended call then keeps a
794
+ * heap frame of the values live across its awaits rather than a fiber and
795
+ * its stack. A body qualifies when its only suspension points are its own
796
+ * awaits, which the coroutine form suspends itself at (emitCoroAwait), so
797
+ * nothing it runs can park the stack it borrows. It is first emitted as
798
+ * usual: that text may suspend only through await runtime calls and
799
+ * await-call entries, which the coroutine form replaces, and may call no
800
+ * function that parks. The coroutine form is then emitted and must pass
801
+ * the same test with no exceptions (its frame bookkeeping excepted);
802
+ * otherwise the fiber form stays. Bodies that never suspend stay
803
+ * fiberless, and module evaluation bodies and `dyn` results keep fibers
804
+ * as they do there. The runtime traps if a stackless body ever parks. */
805
+ selectStacklessAsync(fnDefs: string[]): void;
557
806
  /** The spawn wrapper of a fiberless async function: runs the body on the
558
807
  * caller's stack between scr_async_inline_enter/leave and settles the
559
808
  * fresh promise from its outcome — the fiber trampoline's epilogue,
560
809
  * without the fiber. */
561
- private emitFiberlessAsyncSpawn;
810
+ emitFiberlessAsyncSpawn(fn: IrFunction, spawnParams: string[]): string[];
562
811
  /** Whether `await f(...)` may enter f through its await-call entry. The
563
812
  * entry's result is the awaited value of f's own body type; direct calls
564
813
  * never carry a lifted environment. */
565
814
  awaitCallEligible(fnName: string): boolean;
566
- /** The await-call entry of an async function (`sc_aw_*`): one direct
567
- * `await f(...)` as a call returning the awaited value, so the call site
568
- * needs no promise of its own. A fiberless body runs on the caller's
569
- * stack as in its spawn wrapper; a clean result then takes the await's
570
- * one microtask turn (scr_await_hop) and is returned without ever
571
- * materializing the promise, which nothing else could observe. A throw
572
- * builds the rejected promise exactly as the spawn wrapper would and
573
- * awaits it, so the rejection reaches the awaiter on the same turn. Other
574
- * bodies pack their arguments as the spawn wrapper does and enter
575
- * scr_async_spawn_await_*, which parks the caller on the promise as soon
576
- * as the body first suspends. The adopting entry (`sc_ad_*`, for
577
- * `return f(...)` in an async function) adds the turn of the then job
578
- * that adopts the returned promise, before the await proper. */
579
- private emitAsyncAwaitCall;
580
- /** Per-async-function machinery — async.ts's scaffolding, .ll
581
- * flavored: an argument-pack struct type, a fiber trampoline (unpacks,
582
- * frees the pack, runs the ordinary compiled body, settles the
583
- * promise — fulfilling on clean return, leaving a pending exception
584
- * for the runtime to reject with), and a spawn wrapper call sites and
585
- * closures enter through (packs the args +1, scr_async_spawn runs the
586
- * fiber eagerly to its first suspension and returns the promise). */
587
- private emitAsyncScaffolding;
815
+ /** Whether a stackless coroutine body's `await f(...)` may run f's body in
816
+ * place (emitCoroInlineAwait): f never suspends, and its direct call is
817
+ * one an await-call entry could take. */
818
+ inlineAwaitEligible(fnName: string): boolean;
819
+ /** The inline await entry of a fiberless async function (`sc_ai_*`): its
820
+ * body on the caller's stack between scr_async_inline_enter/exit, as in
821
+ * its spawn wrapper, returning the result and leaving a throw pending for
822
+ * the awaiting coroutine (emitCoroInlineAwait). */
823
+ emitAsyncInlineAwaitCall(fn: IrFunction): string[];
824
+ /** A stackless coroutine body's `await f(...)` of a fiberless f, the
825
+ * await-call entry's turns without its promise: the body runs in place,
826
+ * then a clean result takes the await's turn, and a throw becomes the
827
+ * rejected promise the await takes its turn on and re-throws, exactly as
828
+ * the spawn wrapper's promise would. An adopting await (`return f(...)`)
829
+ * first takes the adoption's then-job turn either way. */
830
+ emitCoroInlineAwait(call: ExprOf<"call">, adopt: boolean): LlValue;
831
+ emitAsyncAwaitCall(fn: IrFunction, argPackLines: string[] | null, adopt?: boolean): string[];
832
+ emitAsyncScaffolding(): string[];
588
833
  /** Whether `fn`'s body is emitted as an LLVM switched coroutine: every
589
- * wasm32 async or generator body, and native synchronous generators. */
590
- private coroLowered;
591
- /** Per-generator-function machinery — the async scaffolding's lazy
592
- * sibling (async.ts's emitGenScaffolding): the same argument pack,
593
- * a fiber trampoline whose epilogue stores the COMPLETION value (or
594
- * consumes the GENRET sentinel, promoting the parked .return value), a
595
- * spawn wrapper that only ALLOCATES the suspended fiber, and the
596
- * never-started teardown that drops the packed (+1) arguments. */
597
- private emitGenScaffolding;
834
+ * wasm32 async or generator body, native synchronous generators, and the
835
+ * native async bodies selectStacklessAsync chose. */
836
+ coroLowered(fn: IrFunction): boolean;
837
+ emitGenScaffolding(): string[];
598
838
  /** A symbol derived from the constant's text rather than its first-use
599
839
  * index, so an edit that interns one more string leaves every other
600
840
  * constant's symbol, and the code referencing it, unchanged. This lets
@@ -652,25 +892,51 @@ export declare class LlEmitter {
652
892
  /** Registers a SLOT whose current contents the frame owns (conditional
653
893
  * results: optional chains, branch joins that park ownership). */
654
894
  ownSlot(slot: string, type: IrType): void;
655
- /** Strike a refcounted temp from its frame: ownership is being moved. */
656
- moveTemp(v: LlValue): void;
895
+ /** The innermost lexical scope releases a frame object's reference
896
+ * fields when it exits, as it releases its bindings. */
897
+ ownScopeFields(fields: readonly StackObjectField[]): void;
898
+ /** Strike frame-owned slots (ownSlot) from their statement frames: their
899
+ * contents are moving to another owner. */
900
+ disownSlots(slots: readonly {
901
+ ptr: string;
902
+ }[]): void;
903
+ /** Strike a refcounted temp from its frame. */
904
+ private disownTemp;
905
+ /** Ends a temp's frame ownership: its reference moves into heap memory. */
906
+ toHeap(v: LlValue): void;
907
+ /** Ends a temp's frame ownership: its reference moves to another frame
908
+ * owner (a local or parameter slot, a callee's parameter, a return
909
+ * value, a stack object, another temp). */
910
+ toFrame(v: LlValue): void;
657
911
  /** The retained (+1) read of a refcounted value — type-directed through
658
912
  * the `_v` table (immortals skip, exactly the C retain calls). */
659
- retainValue(name: string, type: IrType): string;
913
+ private retainCall;
914
+ /** A +1 of `name` that heap memory keeps. */
915
+ retainHeap(name: string, type: IrType): string;
916
+ /** A +1 of `name` that a frame owns. */
917
+ retainFrame(name: string, type: IrType): string;
660
918
  /** The release call for one owned refcounted value — type-directed like
661
919
  * releaseCallC (all runtime releases are NULL-tolerant). */
662
- releaseValue(name: string, type: IrType): void;
663
- releaseFrame(frame: LlValue[]): void;
664
- private releaseScope;
920
+ private releaseCall;
921
+ /** Releases a reference that heap memory held. */
922
+ releaseHeap(name: string, type: IrType): void;
923
+ /** Releases a reference that a frame owned. */
924
+ releaseFrame(name: string, type: IrType): void;
925
+ /** A +1 that the runtime made with the heap retain (a box, generator or
926
+ * await read) becomes a frame value. Emits nothing; answers `name`. */
927
+ adoptHeap(name: string, _type: IrType): string;
928
+ /** Releases a statement frame's temps and owned slots. */
929
+ releaseTemps(frame: LlValue[]): void;
930
+ releaseScope(scope: LlScopeEntry[]): void;
665
931
  /** THE release-on-jump path (break/continue/return): pending statement
666
932
  * frames and entered scopes down to the given depths, innermost first —
667
933
  * everything whose normal fall-through releases the jump bypasses.
668
934
  * Release every scope crossed by the control-flow edge. */
669
- private releaseForJump;
935
+ releaseForJump(frameDepth: number, scopeDepth: number): void;
670
936
  /** Run the finally regions an abrupt loop/block jump crosses, then
671
937
  * release to the already-resolved target. This is the return path's
672
938
  * completion walk without a parked result value. */
673
- private emitFinallysForJump;
939
+ emitFinallysForJump(finallyDepth: number, frameDepth: number, scopeDepth: number): void;
674
940
  /** THE unwind path at a point where an exception is pending: release
675
941
  * everything between here and the innermost try handler — or the whole
676
942
  * function — and branch to the handler / return a dummy value (never
@@ -680,7 +946,7 @@ export declare class LlEmitter {
680
946
  * result of the function's own return type: with nothing to release, the
681
947
  * unwind returns it as the dummy, so a call in tail position keeps a single
682
948
  * return and stays eligible for tail-call and recursion elimination. */
683
- private emitUnwind;
949
+ emitUnwind(passThrough?: string): void;
684
950
  /** Loads the running thread's exact pending word (ELF worker
685
951
  * executables, scr_exception.c): bit 0 mirrors the active cell, bit 1
686
952
  * requests the context's stop. It lives in the executable's static TLS
@@ -717,17 +983,39 @@ export declare class LlEmitter {
717
983
  emitAlwaysPendingUnwind(): void;
718
984
  /** A recursive function's entry check: below the running stack's guard,
719
985
  * throw Node's RangeError and unwind like any other pending exception. */
720
- private emitStackCheck;
986
+ emitStackCheck(): void;
721
987
  /** Whether the emitter follows this call with a pending test (the
722
988
  * conditions in expr-calls.ts). */
723
989
  private callTestsPending;
724
- private workerLoopBudget;
990
+ workerLoopBudget(loop: Extract<IrStmt, {
991
+ kind: "while" | "doWhile" | "for" | "forOf";
992
+ }>): string | null;
993
+ emitLoopCopies(loop: Extract<IrStmt, {
994
+ kind: "while" | "doWhile" | "for";
995
+ }>, allowed: boolean, exit: string, emitCopy: (exit: string) => void): void;
996
+ writeBackSpeculativeGlobals(deferred: Set<string>): void;
997
+ /** A number local whose only storage is its own double slot, so an i64
998
+ * shadow beside it can stand for it within one loop. */
999
+ speculativeLocal(id: string): boolean;
1000
+ /** A module-level number written only by the file's top-level code that
1001
+ * is emitting this loop. Calls may still read it: the fast copy keeps its
1002
+ * double current. An init function runs once and is never re-entered, so
1003
+ * no call from the loop can write the global behind the shadow. */
1004
+ private speculativeGlobal;
1005
+ /** A module-level number a loop of any function only reads, written by
1006
+ * nothing but top-level code: an init function never runs during a loop
1007
+ * of another function, so the entry value stays its value. */
1008
+ speculativeInvariantGlobal(id: string): boolean;
1009
+ /** The functions writing a number global a shadow may stand for, or null
1010
+ * when the global is not such a number. */
1011
+ private numberGlobalWriters;
1012
+ private emitSpeculativeWrite;
725
1013
  /** The amortized cancellation poll, emitted on the loop's back edge (the
726
1014
  * continue target), after the body. A poll in the header would be a loop
727
1015
  * exit ahead of the body; LLVM then cannot rotate the loop, so loads that
728
1016
  * the body repeats on every iteration (a typed array's length, for one)
729
1017
  * stay in the loop. */
730
- private emitWorkerLoopCheck;
1018
+ emitWorkerLoopCheck(slot: string | null): void;
731
1019
  /** Moves an already-evaluated value into the runtime's exception cell —
732
1020
  * the `throw` statement's kind dispatch (stmts.ts's), shared with
733
1021
  * every synthetic thrower. Ownership of a refcounted payload must have
@@ -802,6 +1090,9 @@ export declare class LlEmitter {
802
1090
  };
803
1091
  /** The overflow map's slot pointer on an index-signature shape. */
804
1092
  recordOvfPtr(objName: string, shapeId: string): string;
1093
+ /** The pointer to ScrMap.flags of an index-signature record's overflow
1094
+ * map (byte offset sizeof(size_t) + 3; SCR_MAP_NULL_PROTO is bit 0). */
1095
+ recordMapFlagsPtr(objName: string, shapeId: string): string;
805
1096
  /** Loads a record field (i8-stored bools trunc to i1). An inline union
806
1097
  * field answers a private stack box with the slot's own bits, ABSENT
807
1098
  * included: it may only be borrowed. */
@@ -828,17 +1119,22 @@ export declare class LlEmitter {
828
1119
  storeInt32Field(ptr: string, value: LlValue, expr: IrExpr): void;
829
1120
  /** A binding's storage: a module global, a plain local slot, or a boxed
830
1121
  * local (the slot holds the capture BOX; access goes through it). */
1122
+ matchBytesLoopVersion(s: IrStmt & {
1123
+ kind: "for";
1124
+ }, counted: IntegerCountedForLoop | null): ReturnType<typeof matchBytesLoopVersion>;
1125
+ /** The alias tag of a whole-slot load of a binding (module globals only). */
1126
+ slotAlias(id: string): string;
831
1127
  binding(id: string): {
832
1128
  kind: "global" | "local" | "boxed";
833
1129
  slot: string;
834
1130
  type: IrType;
835
1131
  local?: IrLocal;
836
1132
  };
837
- private emitDebugLocal;
1133
+ emitDebugLocal(local: IrLocal, slot: string, arg?: number, captured?: boolean): void;
838
1134
  /** Loads a boxed binding's box pointer out of its slot. */
839
1135
  loadBox(slot: string): string;
840
1136
  /** The payload slot of a capture box (ScrBox.slot, field 5). */
841
- private boxSlot;
1137
+ boxSlot(box: string): string;
842
1138
  boxGet(box: string, t: IrType): string;
843
1139
  /** scr_box_set_* — the ref form takes ownership of the passed value. */
844
1140
  boxSet(box: string, t: IrType, value: string): void;
@@ -850,14 +1146,14 @@ export declare class LlEmitter {
850
1146
  /** The initializing write of a scalar TDZ box: mint the one-element
851
1147
  * array cell holding the value and move it into the ARR-kind box
852
1148
  * (set_ref releases nothing — the slot was the empty sentinel). */
853
- private tdzScalarInit;
1149
+ tdzScalarInit(box: string, t: IrType, value: string): void;
854
1150
  /** The payload a TDZ box holds before its declaration runs, when that is
855
1151
  * not NULL. A nullable union's value is its arm pointer with NULL as a
856
1152
  * unit arm (nullable-unions.ts), so a stored `null`/`undefined` would
857
1153
  * read back as the temporal dead zone; such boxes start at the module's
858
1154
  * immortal NULLABLE_ABSENT sentinel instead, which no value of the
859
1155
  * binding can hold and every RC entry point and the collector skip. */
860
- private tdzEmptySentinel;
1156
+ tdzEmptySentinel(t: IrType): string | null;
861
1157
  /** The TDZ-guarded read of a boxed binding: an empty payload slot is
862
1158
  * the temporal dead zone — throw Node's exact catchable ReferenceError
863
1159
  * (exprs.ts's varRef guard). Scalars then peek the one-element
@@ -886,6 +1182,18 @@ export declare class LlEmitter {
886
1182
  * whether the promise waiter list or the ready FIFO owns the continuation;
887
1183
  * LLVM keeps all live locals in the coroutine frame. */
888
1184
  emitWasiSuspend(promise: string | null): void;
1185
+ /** Awaits in the current body suspend its coroutine: every wasm32 async
1186
+ * body, and native stackless async bodies (selectStacklessAsync). */
1187
+ get coroAwait(): boolean;
1188
+ /** Suspends the current coroutine body at an await of `promise` (null: a
1189
+ * single microtask hop, as for a non-promise operand). A native body
1190
+ * suspends unless the runtime continues it in place, where a fiber's
1191
+ * hop would continue without switching (scr_coro_await_prepare). */
1192
+ emitCoroAwait(promise: string | null): void;
1193
+ /** The runtime entry extracting an await's result of `kind`. A native
1194
+ * coroutine has already suspended until the promise settled, so its
1195
+ * extraction takes no further turn. */
1196
+ awaitResultFn(kind: "void" | "f64" | "bool" | "str" | "ref"): string;
889
1197
  /** A native generator's OUT slot (scr_async.c's ScrGen.out, mirrored by
890
1198
  * %ScrGenHead and %ScrGenSlot { kind, f64, b, payload, release_fn }). */
891
1199
  genOutSlot(gen: string): string;
@@ -899,16 +1207,15 @@ export declare class LlEmitter {
899
1207
  /** Suspend after a target-specific runtime helper already queued the
900
1208
  * continuation (used by module awaits, which skip the hop when settled). */
901
1209
  emitCoroSuspendPrepared(): void;
902
- /** Move a clean async return value into the current fiber's promise. */
903
- private emitWasiFulfill;
1210
+ emitWasiFulfill(v: LlValue | null): void;
904
1211
  /** Number locals declared as a copy of a capture or of a lazily boxed
905
1212
  * parameter, at the top of the body. */
906
- private doubleCopies;
907
- private emitFunction;
1213
+ doubleCopies(fn: IrFunction): string[];
1214
+ emitFunction(fn: IrFunction): string;
908
1215
  /** The double-ABI entry of a function with an i32 entry: every caller
909
1216
  * that is not a direct call (closures, dispatch, adapters, the runtime)
910
1217
  * enters here. A pending exception passes through to its caller. */
911
- private emitInt32AbiWrapper;
1218
+ emitInt32AbiWrapper(fn: IrFunction, symbol: string, abi: Int32Abi): string;
912
1219
  /** The SCALAR_UNION_RESULT pair of a `%ScrUnion` box of `type`. */
913
1220
  scalarUnionPair(box: string, type: IrType): string;
914
1221
  /** A private stack box holding a SCALAR_UNION_RESULT pair of `type`. */
@@ -940,15 +1247,11 @@ export declare class LlEmitter {
940
1247
  /** With `kept`, the virtual adapter of a borrowing slot instead: the
941
1248
  * slot's parameters stay borrowed, the body's other borrowed ones are
942
1249
  * released here. */
943
- private emitOwnedCallAdapter;
944
- /** A local stable binding keeps its value alive while later arguments
945
- * and the callee execute. A proven local union box cannot escape or be
946
- * rebound during a call; its independent payload owner keeps it alive.
947
- * Other writable bindings need an owned snapshot. */
1250
+ emitOwnedCallAdapter(fn: IrFunction, borrowed: ReadonlySet<number>, kept?: ReadonlySet<number>): string;
948
1251
  canBorrowCallArgument(value: IrExpr): boolean;
949
1252
  /** A plain-pointer read of a construction-only field outside any
950
1253
  * constructor (ImmutableFields). */
951
- private immutableRead;
1254
+ immutableRead(e: ExprOf<"fieldGet" | "recordGet">): boolean;
952
1255
  /** A projection read whose locations nothing writes while a borrowed
953
1256
  * read of it is in use (ReferenceWrites), given the writes of that
954
1257
  * extent. The root binding itself must stay alive across it too, which
@@ -958,12 +1261,16 @@ export declare class LlEmitter {
958
1261
  * rest of its block (its whole lifetime) writes none of the projection's
959
1262
  * locations: the source edge then keeps the value alive, and uses that
960
1263
  * escape still retain their own copies. */
961
- private unwrittenAlias;
1264
+ unwrittenAlias(s: IrStmt & {
1265
+ kind: "varDecl";
1266
+ }): boolean;
962
1267
  /** An optional element read into a projection-only local can borrow the
963
1268
  * element when the rest of the block writes no array element and none of
964
1269
  * the locations keeping the array alive (which must itself be read
965
1270
  * without a frame owner). */
966
- private unwrittenLocalArrayRead;
1271
+ unwrittenLocalArrayRead(s: IrStmt & {
1272
+ kind: "varDecl";
1273
+ }, read: LocalArrayRead): boolean;
967
1274
  /** An optional element read passed to a projection-only parameter can
968
1275
  * borrow the element when the callee and later arguments (`writes`)
969
1276
  * write no array element and nothing keeping the array alive. */
@@ -975,17 +1282,53 @@ export declare class LlEmitter {
975
1282
  * finally copies, like any pending return value, and the adopting await
976
1283
  * runs afterwards with no handler in scope: a rejection settles the
977
1284
  * function's promise instead of reaching its own catch clauses. */
978
- private emitAdoptingReturn;
1285
+ emitAdoptingReturn(s: IrStmt & {
1286
+ kind: "return";
1287
+ }, adopted: ExprOf<"awaitExpr">): void;
979
1288
  /** An async generator completing without a further turn: its request
980
1289
  * settles as the body returns (scr_async_gen_hop_done). */
981
- private emitAsyncGenSettled;
1290
+ emitAsyncGenSettled(): void;
1291
+ /** Owned-binding reads that take over the binding's reference, by read
1292
+ * node (the binding's slot). */
1293
+ readonly lastUseMoves: Map<IrExpr, string>;
1294
+ /** How often each varRef node object occurs in the current function:
1295
+ * lowering may share one node between several reads, and a move keyed by
1296
+ * node identity must fire for exactly one of them. */
1297
+ varRefCounts: Map<IrExpr, number> | null;
1298
+ currentFunctionBody: IrStmt[];
1299
+ private varRefCount;
1300
+ /** Moves need plain slots that nothing else reads behind the binding's
1301
+ * back: no debugger view, no coroutine frame, no borrowed (+0) return. */
1302
+ /** Whether the program reads event-loop utilization (perf.loopStart /
1303
+ * perf.idleTime): main then marks the loop's start before running it. */
1304
+ private loopMetricsRead;
1305
+ readsLoopMetrics(): boolean;
1306
+ private lastUseMovesAllowed;
1307
+ /** An owned local declared at the statement cursor whose last statement
1308
+ * reads it once (lastUseRead): that read moves the reference. */
1309
+ noteLastUseMove(s: IrStmt & {
1310
+ kind: "varDecl";
1311
+ }, b: ReturnType<LlEmitter["binding"]>): void;
1312
+ /** An owned parameter whose last statement in the body reads it once:
1313
+ * that read moves the reference. Walk locals may borrow from an owned
1314
+ * parameter's slot (they need it until the function returns), so bodies
1315
+ * with walks keep their parameters, and locals rebound from the
1316
+ * parameter count as derived from it. */
1317
+ noteParameterMove(fn: IrFunction, localId: string, slot: string): void;
1318
+ /** Emits the move of a noted last read: the slot is cleared, so scope
1319
+ * exits release nothing and the read's owned temp carries the reference. */
1320
+ takeLastUseMove(e: IrExpr, slot: string, type: IrType): boolean;
982
1321
  /** `return x` of a local whose slot is an owned scope entry of the same
983
1322
  * type: the return can take over the local's reference. */
984
- private movableReturn;
1323
+ movableReturn(value: IrExpr | null): {
1324
+ scope: LlScopeEntry[];
1325
+ entry: LlScopeEntry;
1326
+ index: number;
1327
+ } | null;
985
1328
  /** A walk host for a body that may write the heap: each walk must read
986
1329
  * only locations the whole body (with its callees) never writes;
987
1330
  * rebinding the walk locals themselves releases nothing. */
988
- private unwrittenWalkHost;
1331
+ unwrittenWalkHost(fn: IrFunction, host: WalkBorrowHost): WalkBorrowHost;
989
1332
  /** emitReadReceiver yields a plain pointer for `e` that no statement
990
1333
  * frame owns, so it can outlive the statement (walk-borrows' walks, from
991
1334
  * any unboxed plain-pointer binding, plus element reads). */
@@ -993,52 +1336,26 @@ export declare class LlEmitter {
993
1336
  /** Every location a borrowed-return callee's walks can read (its body's
994
1337
  * field, record and element reads, through nested borrowed returns). */
995
1338
  private borrowedReturnKeys;
996
- private emitStmts;
1339
+ emitStmts(stmts: IrStmt[], scoped?: boolean): void;
997
1340
  /** Emits a block in its own lexical scope (refcounted locals released at
998
1341
  * end). `setup` runs after the
999
1342
  * scope opens, before the statements — the catch-binding hook: it may
1000
1343
  * emit prelude lines and register entries the scope owns (released on
1001
1344
  * every exit, jumps and unwinds included). */
1002
- private emitBlock;
1345
+ emitBlock(stmts: IrStmt[], setup?: (scope: LlScopeEntry[]) => void): void;
1003
1346
  emitStmt(s: IrStmt): void;
1004
1347
  private emitStmtBody;
1005
- /** try/catch/finally via pending-flag unwinding — stmts.ts's
1006
- * emitTryCatch, block-flavored. Entering a try emits NO code: the try
1007
- * context is compile-time state (tryStack) redirecting unwinds inside
1008
- * the region to a label here. Shape:
1009
- *
1010
- * { try body } unwinds inside release frames/scopes down to
1011
- * this statement's depths, then br the handler
1012
- * br after (normal completion skips the handler)
1013
- * try.c: (emitted only when some unwind targets it)
1014
- * binding = scr_exc_take() (or scr_exc_clear() when bindingless)
1015
- * { catch body }
1016
- * after: { finally body } normal path
1017
- * br try.e
1018
- * try.fx: exception path: the pending exception is
1019
- * stash = scr_exc_take() STASHED across the finally body so the
1020
- * { finally body } body's own pending checks answer for
1021
- * scr_rethrow(stash) themselves; a throw inside REPLACES the
1022
- * <unwind> stash (it unwinds through the synthetic
1023
- * try.e: scope entry) — JS's semantics exactly
1024
- *
1025
- * Abrupt completions inside tryBody/catchBody ride the finallyStack:
1026
- * returns inline copies at the return site, while break/continue use the
1027
- * shared region walk before branching to their resolved target. */
1028
- private emitTryCatch;
1029
- /** JS-exact switch: lazily evaluated, arbitrary-expression case tests in
1030
- * source order, bodies falling through in source order until a break —
1031
- * Literal-only tests can use native dispatch; other tests keep a chain
1032
- * of conditional branches. All case bodies
1033
- * share ONE scope; because dispatch can jump PAST a varDecl into a later
1034
- * case, refcounted/boxed case-body locals are NULL-reset up front and
1035
- * the scope-exit releases rely on NULL tolerance. */
1036
- private emitSwitch;
1348
+ emitTryCatch(s: IrStmt & {
1349
+ kind: "tryCatch";
1350
+ }): void;
1351
+ emitSwitch(s: IrStmt & {
1352
+ kind: "switch";
1353
+ }): void;
1037
1354
  /** Evaluates a condition (IR conds are bool-typed) and releases its
1038
1355
  * temps BEFORE the branch — safe because the result is a scalar i1, and
1039
1356
  * required in loop-condition blocks (their temps must not survive into
1040
1357
  * later blocks across the back edge). */
1041
- private emitCondition;
1358
+ emitCondition(cond: IrExpr): string;
1042
1359
  /** Evaluates `expr` in its own statement frame inside an already-open
1043
1360
  * branch and moves the result into `slot`: the chosen value's ownership
1044
1361
  * transfers, every other temp the arm allocated releases inside the
@@ -1061,20 +1378,14 @@ export declare class LlEmitter {
1061
1378
  * throwing call itself) because a borrowed use still evaluates them;
1062
1379
  * skipping those would drop the throw. */
1063
1380
  private discardableRead;
1064
- private emitDiscarded;
1381
+ emitDiscarded(e: IrExpr): void;
1065
1382
  emitControlExpr(e: ExprOf<"dynDestrCheck" | "dynIterN" | "toBool" | "logical" | "ternary" | "optChain" | "chainRecv" | "orDefault" | "nullish">): LlValue;
1066
1383
  emitStringExpr(e: ExprOf<"strConcat" | "strEq" | "strCmp" | "toString" | "strIntrinsic" | "regexLit" | "templateStrings" | "regexIntrinsic">): LlValue;
1067
- /**
1068
- * Lower canonical `target = target + suffix` after evaluating the old
1069
- * left side and suffix in JavaScript order. The snapshot stays owned by
1070
- * the statement frame while the destination relinquishes its CURRENT
1071
- * value, making the snapshot unique unless a real observable alias exists.
1072
- */
1073
1384
  emitStringSelfConcatAssign(localId: string, left: IrExpr, suffix: IrExpr, retainForYield: boolean): LlValue;
1074
1385
  /** The code of a one-argument `String.fromCharCode(c)` suffix, emitted, so
1075
1386
  * `s += String.fromCharCode(c)` appends the character without building
1076
1387
  * the one-character string; null for any other suffix. */
1077
- private emitSingleCharCode;
1388
+ emitSingleCharCode(suffix: IrExpr): LlValue | null;
1078
1389
  /**
1079
1390
  * Lower `recv.f = recv.f + suffix` on a plain string field like
1080
1391
  * emitStringSelfConcatAssign does for locals. The field's old value is
@@ -1084,7 +1395,9 @@ export declare class LlEmitter {
1084
1395
  * copying the whole string on every append. Returns false (emitting
1085
1396
  * nothing) for every other store.
1086
1397
  */
1087
- private emitFieldSelfConcat;
1398
+ emitFieldSelfConcat(s: Extract<IrStmt, {
1399
+ kind: "fieldSet" | "recordSet";
1400
+ }>): boolean;
1088
1401
  /** A snapshot the current statement frames own (+1), or an immortal
1089
1402
  * value: it stays valid after its container releases the same string. */
1090
1403
  private ownsSnapshot;
@@ -1095,21 +1408,25 @@ export declare class LlEmitter {
1095
1408
  * the snapshot, the array lets go of it (emitDenseSlotUnlink) so the
1096
1409
  * concat can append in place, and the result is stored as usual.
1097
1410
  */
1098
- private emitArraySelfConcat;
1411
+ emitArraySelfConcat(s: Extract<IrStmt, {
1412
+ kind: "arraySet";
1413
+ }>): boolean;
1099
1414
  /** `local = local + suffix` when the suffix cannot read or write the
1100
1415
  * local (an unboxed binding is only reachable through this function's own
1101
1416
  * expressions): reading the binding after the suffix gives the value the
1102
1417
  * left side had, so it moves into a consuming concat, and the result takes
1103
1418
  * its place. Null when the general snapshot path is needed. */
1104
- private emitMovedSelfConcat;
1419
+ emitMovedSelfConcat(localId: string, left: IrExpr, suffix: IrExpr, retainForYield: boolean): LlValue | null;
1105
1420
  emitContainerExpr(e: ExprOf<"arrayLit" | "arrayNewLen" | "arrayGet" | "arrayHas" | "arrayState" | "arrIntrinsic" | "bytesNew" | "bytesIntrinsic" | "mapNew" | "mapIntrinsic" | "setIntrinsic" | "setNew">): LlValue;
1106
1421
  emitCallExpr(e: ExprOf<"call" | "ffiCall" | "closure" | "callValue" | "selfRef" | "new" | "classRef" | "newValue" | "instanceOfValue" | "promiseVoidWiden" | "upcast" | "downcast" | "instanceOf" | "virtualCall">): LlValue;
1107
1422
  /** A direct async call an enclosing `await` consumes whole: emitted
1108
1423
  * through the callee's await-call entry, yielding the awaited value. */
1109
1424
  emitAwaitedCall(e: ExprOf<"call">, adopt?: boolean): LlValue;
1110
- emitRecordExpr(e: ExprOf<"fieldGet" | "recordGet" | "recordLit" | "recordClone" | "recordKeyGet" | "recordOvfKeys" | "recordOvfHas" | "recordHas" | "fieldAbsent">): LlValue;
1425
+ emitRecordExpr(e: ExprOf<"fieldGet" | "recordGet" | "recordLit" | "recordClone" | "recordKeyGet" | "recordOvfKeys" | "recordOvfHas" | "recordNullProto" | "recordHas" | "fieldAbsent">): LlValue;
1111
1426
  emitDynamicExpr(e: ExprOf<"dynFrom" | "dynCall" | "dynInvoke" | "dynArrLit" | "dynObjLit" | "unionWrap" | "unionNarrow" | "unionDisc" | "unionKeyGet" | "unionIsTag" | "dynKeyGet" | "dynHasKey" | "dynScalarEq" | "dynTest" | "unionEq" | "unionFuncEq" | "caughtTest" | "caughtCheck" | "caughtNarrow" | "caughtToDyn">): LlValue;
1112
1427
  emitIntrinsicExpr(e: ExprOf<"intrinsic">): LlValue;
1428
+ /** The ScrSlots block of the ThreadSlots family `name`. */
1429
+ threadSlotsBlock(name: string): string;
1113
1430
  /** InternTable's runtime calls (scr_itable.c). Table and entry handles
1114
1431
  * are f64 values carrying pointer bits; entry values are 64-bit slots
1115
1432
  * (double bits, a bool, or a pointer to an immortal value) that the
@@ -1118,13 +1435,13 @@ export declare class LlEmitter {
1118
1435
  private emitInternTableIntrinsic;
1119
1436
  /** Lifetime regions in modules with lifetimeRegions (llvm/regions.ts).
1120
1437
  * Created with the class graph; null elsewhere. */
1121
- private regions;
1438
+ regions: LifetimeRegions | null;
1122
1439
  /** LifetimeRegion's runtime calls: create answers the region id, enter
1123
1440
  * and leave bracket run(), release condemns. */
1124
1441
  private emitRegionIntrinsic;
1125
- private publishWalkersCache;
1442
+ publishWalkersCache: PublishWalkers | null;
1126
1443
  /** Per-type publication walkers, created on the first publish. */
1127
- private get publishWalkers();
1444
+ get publishWalkers(): PublishWalkers;
1128
1445
  /** `publish(value)` (@scriptc/threads): makes the graph immortal and
1129
1446
  * immutable (scr_publish with the static type's walker) and answers the
1130
1447
  * same value. Throws (pending) when a dyn part is unpublishable. */
@@ -1134,10 +1451,12 @@ export declare class LlEmitter {
1134
1451
  private emitPublishedTest;
1135
1452
  private publishedNamesSym;
1136
1453
  /** The class-name table the hierarchy field guards index by preorder. */
1137
- private publishedClassNamesDefs;
1454
+ publishedClassNamesDefs(): string[];
1138
1455
  /** The frozen-object guard of a class field store, unless the store
1139
1456
  * provably targets a still-private `this` (PublishedTypes.privateStores). */
1140
- private emitStoreGuard;
1457
+ emitStoreGuard(obj: string, s: Extract<IrStmt, {
1458
+ kind: "fieldSet";
1459
+ }>): void;
1141
1460
  /** The frozen-object guard of a class field or record field store:
1142
1461
  * Node's "Cannot assign to read only property" TypeError when the target
1143
1462
  * is published. `className` null means a record (`#<Object>`). */
@@ -1149,18 +1468,10 @@ export declare class LlEmitter {
1149
1468
  emitPublishedCollectionGuard(m: string, t: IrType): void;
1150
1469
  emitSerializationExpr(e: ExprOf<"jsonStringify" | "dynCheck">): LlValue;
1151
1470
  emitAsyncExpr(e: ExprOf<"yieldExpr" | "genResume" | "awaitExpr" | "awaitUnionExpr" | "newPromise" | "promiseWithResolvers">): LlValue;
1152
- /** Read a receiver whose value is consumed immediately by a field or tag
1153
- * load. No user code may run between this read and its consumer. Locals
1154
- * and their projections already have an owner; other expressions keep
1155
- * their ordinary statement-frame ownership. The caller must retain any
1156
- * reference result before evaluating another expression. */
1157
1471
  emitReadReceiver(e: IrExpr): LlValue;
1158
1472
  /** The frame slot a reassigned stack-object local keeps for its value. */
1159
- private stackObjectSlot;
1160
- /** A private stack union source with an independently owned payload. */
1473
+ stackObjectSlot(localId: string, type: IrType): string;
1161
1474
  canStackReceiver(e: IrExpr): boolean;
1162
- /** True for union sources that emitReadReceiver can produce as a private
1163
- * stack box with an independently owned payload (no heap union). */
1164
1475
  isStackUnionSource(e: IrExpr): boolean;
1165
1476
  /** A read of a record or class field that stores its scalar union
1166
1477
  * inline. */
@@ -1204,19 +1515,10 @@ export declare class LlEmitter {
1204
1515
  emitExactCapsuleObject(value: IrExpr, type: IrType): LlValue;
1205
1516
  canBorrowReceiver(e: IrExpr): boolean;
1206
1517
  /** A reference held as one plain pointer that emitReadReceiver can read
1207
- * without owning: class instances, records, arrays, strings and
1208
- * nullable-pointer unions. Tagged union boxes, closures and dynamic
1518
+ * without owning: class instances, records, arrays, strings, typed arrays
1519
+ * and nullable-pointer unions. Tagged union boxes, closures and dynamic
1209
1520
  * values keep ordinary ownership. */
1210
1521
  plainReference(type: IrType): boolean;
1211
- /** Functions returning a walk of their borrowed parameters return it
1212
- * without a reference (+0) from their borrowing body; direct callers
1213
- * either consume it as a receiver/walk or retain it at once, and the owned
1214
- * adapter retains before releasing its parameters. Candidates preserve
1215
- * every heap edge (so the result stays reachable from the arguments),
1216
- * borrow every reference parameter and return plain pointers. The set
1217
- * grows to a fixpoint because a call to a borrowed-return function with
1218
- * walk arguments is itself a walk; walk facts are then recomputed with
1219
- * the final set, admitting only parameters whose convention borrows. */
1220
1522
  private analyzeBorrowedReturns;
1221
1523
  /** emitReadReceiver produces this node's pointer without acquiring a
1222
1524
  * reference, given operands (and ternary arms) that do the same: plain
@@ -1232,6 +1534,8 @@ export declare class LlEmitter {
1232
1534
  borrowableNullableWrap(e: IrExpr): "unit" | "ref" | null;
1233
1535
  materializeSplitLocal(localId: string): void;
1234
1536
  emitExpr(e: IrExpr): LlValue;
1537
+ /** A fresh read-site cache for one constant-key dyn read. */
1538
+ dynReadIcSite(): string;
1235
1539
  dynKind(d: string): string;
1236
1540
  raceAdapterFor(from: IrType, to: IrType): string;
1237
1541
  genResultThunkFor(genT: IrType & {
@@ -1251,6 +1555,7 @@ export declare class LlEmitter {
1251
1555
  }): string;
1252
1556
  childExitSignalThunkFor(codeParam: IrType, sigParam: IrType): string;
1253
1557
  childDataThunkFor(param: IrType): string;
1558
+ childDataDynThunkFor(chunk: "bytes" | "str"): string;
1254
1559
  emitterFixedAdapter(cbT: IrType & {
1255
1560
  kind: "func";
1256
1561
  }): {
@@ -1259,7 +1564,7 @@ export declare class LlEmitter {
1259
1564
  };
1260
1565
  emitterOnceAdapter(boxerT: IrType & {
1261
1566
  kind: "func";
1262
- }): {
1567
+ }, fire?: string): {
1263
1568
  fn: string;
1264
1569
  shim: string;
1265
1570
  };
@@ -1325,7 +1630,7 @@ export declare class LlEmitter {
1325
1630
  * as its incoming double, which is the same number. */
1326
1631
  int32LocalValue(localId: string, bits: string, type: IrType): LlValue;
1327
1632
  storeIntegerView(localId: string, value: LlValue, expr?: IrExpr): void;
1328
- private emitBytesSet;
1633
+ emitBytesSet(elem: IrBytesElem, receiver: string, index: LlValue, value: LlValue, indexExpr?: IrExpr, expr?: IrExpr, inBounds?: boolean): void;
1329
1634
  emitBytesIntrinsic(e: IrExpr & {
1330
1635
  kind: "bytesIntrinsic";
1331
1636
  }): LlValue;
@@ -1335,7 +1640,7 @@ export declare class LlEmitter {
1335
1640
  emitRecordKeyGet(e: IrExpr & {
1336
1641
  kind: "recordKeyGet";
1337
1642
  }): LlValue;
1338
- keyedRecordReadInto(slot: string, join: string, objName: string, keyName: string, shapeId: string, resultType: IrType, overflowOnly: boolean, loc?: SrcLoc): void;
1643
+ keyedRecordReadInto(slot: string, join: string, objName: string, keyName: string, shapeId: string, resultType: IrType, overflowOnly: boolean, loc?: SrcLoc, missNaN?: boolean): void;
1339
1644
  dynPromiseAdapter(inner: IrType): string;
1340
1645
  streamTypedRefCommitAdapter(t: IrType, snapshot: string): string;
1341
1646
  liveDynRefAdapter(t: IrType): LlStreamTypedRefAdapter;
@@ -1362,3 +1667,6 @@ export declare class LlEmitter {
1362
1667
  emitGenericLibCall(e: LibCallExpr): LlValue;
1363
1668
  emitLibCall(e: LibCallExpr): LlValue;
1364
1669
  }
1670
+ /** The adopting await a `return` value resolves through, if any: the value
1671
+ * itself or the operand of its conversion into the declared result. */
1672
+ export declare function adoptingAwaitOf(value: IrExpr | null): ExprOf<"awaitExpr"> | null;