@scriptc/compiler 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +832 -55
  2. package/dist/backend/cycle-analysis.js +6 -1
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/executable-features.js +1 -0
  5. package/dist/backend/executable-features.js.map +1 -1
  6. package/dist/backend/literals.d.ts +7 -0
  7. package/dist/backend/literals.js +32 -0
  8. package/dist/backend/literals.js.map +1 -1
  9. package/dist/backend/literals.test.js +17 -1
  10. package/dist/backend/literals.test.js.map +1 -1
  11. package/dist/backend/llvm/alloc.d.ts +15 -4
  12. package/dist/backend/llvm/alloc.js +63 -25
  13. package/dist/backend/llvm/alloc.js.map +1 -1
  14. package/dist/backend/llvm/alloc.test.js +62 -2
  15. package/dist/backend/llvm/alloc.test.js.map +1 -1
  16. package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
  17. package/dist/backend/llvm/appended-array-literals.js +109 -0
  18. package/dist/backend/llvm/appended-array-literals.js.map +1 -0
  19. package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
  20. package/dist/backend/llvm/appended-array-literals.test.js +90 -0
  21. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
  22. package/dist/backend/llvm/array-search.d.ts +8 -0
  23. package/dist/backend/llvm/array-search.js +52 -0
  24. package/dist/backend/llvm/array-search.js.map +1 -0
  25. package/dist/backend/llvm/array-search.test.d.ts +1 -0
  26. package/dist/backend/llvm/array-search.test.js +72 -0
  27. package/dist/backend/llvm/array-search.test.js.map +1 -0
  28. package/dist/backend/llvm/call-lifetimes.d.ts +11 -1
  29. package/dist/backend/llvm/call-lifetimes.js +74 -4
  30. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  31. package/dist/backend/llvm/call-lifetimes.test.js +54 -0
  32. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  33. package/dist/backend/llvm/classes.js +97 -38
  34. package/dist/backend/llvm/classes.js.map +1 -1
  35. package/dist/backend/llvm/classes.test.js +2 -2
  36. package/dist/backend/llvm/common.d.ts +1 -1
  37. package/dist/backend/llvm/common.js +1 -1
  38. package/dist/backend/llvm/dense-array-access.d.ts +5 -0
  39. package/dist/backend/llvm/dense-array-access.js +18 -13
  40. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  41. package/dist/backend/llvm/dense-array-access.test.js +15 -2
  42. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  43. package/dist/backend/llvm/dyn.d.ts +6 -0
  44. package/dist/backend/llvm/dyn.js +84 -11
  45. package/dist/backend/llvm/dyn.js.map +1 -1
  46. package/dist/backend/llvm/emitter.d.ts +108 -16
  47. package/dist/backend/llvm/emitter.js +598 -108
  48. package/dist/backend/llvm/emitter.js.map +1 -1
  49. package/dist/backend/llvm/emitter.test.js +26 -3
  50. package/dist/backend/llvm/emitter.test.js.map +1 -1
  51. package/dist/backend/llvm/expr-async.js +174 -7
  52. package/dist/backend/llvm/expr-async.js.map +1 -1
  53. package/dist/backend/llvm/expr-bytes.js +11 -0
  54. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  55. package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
  56. package/dist/backend/llvm/expr-callbacks.js +96 -2
  57. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  58. package/dist/backend/llvm/expr-calls.d.ts +12 -1
  59. package/dist/backend/llvm/expr-calls.js +133 -54
  60. package/dist/backend/llvm/expr-calls.js.map +1 -1
  61. package/dist/backend/llvm/expr-containers.d.ts +7 -0
  62. package/dist/backend/llvm/expr-containers.js +80 -22
  63. package/dist/backend/llvm/expr-containers.js.map +1 -1
  64. package/dist/backend/llvm/expr-context.d.ts +2 -0
  65. package/dist/backend/llvm/expr-control.d.ts +8 -0
  66. package/dist/backend/llvm/expr-control.js +103 -69
  67. package/dist/backend/llvm/expr-control.js.map +1 -1
  68. package/dist/backend/llvm/expr-dynamic.js +21 -10
  69. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  70. package/dist/backend/llvm/expr-primitives.d.ts +7 -0
  71. package/dist/backend/llvm/expr-primitives.js +53 -51
  72. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  73. package/dist/backend/llvm/expr-records.js +19 -5
  74. package/dist/backend/llvm/expr-records.js.map +1 -1
  75. package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
  76. package/dist/backend/llvm/expr-stream-bridges.js +111 -39
  77. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  78. package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
  79. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  80. package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
  81. package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
  82. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  83. package/dist/backend/llvm/inline-unions.d.ts +48 -0
  84. package/dist/backend/llvm/inline-unions.js +134 -0
  85. package/dist/backend/llvm/inline-unions.js.map +1 -0
  86. package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
  87. package/dist/backend/llvm/inline-unions.test.js +124 -0
  88. package/dist/backend/llvm/inline-unions.test.js.map +1 -0
  89. package/dist/backend/llvm/int32-abi.d.ts +18 -2
  90. package/dist/backend/llvm/int32-abi.js +23 -2
  91. package/dist/backend/llvm/int32-abi.js.map +1 -1
  92. package/dist/backend/llvm/int32-abi.test.js +75 -1
  93. package/dist/backend/llvm/int32-abi.test.js.map +1 -1
  94. package/dist/backend/llvm/integer-remainder.d.ts +28 -5
  95. package/dist/backend/llvm/integer-remainder.js +80 -9
  96. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  97. package/dist/backend/llvm/lib-dispatch.js +170 -28
  98. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  99. package/dist/backend/llvm/lib-filesystem.js +181 -5
  100. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  101. package/dist/backend/llvm/lib-network.js +9 -6
  102. package/dist/backend/llvm/lib-network.js.map +1 -1
  103. package/dist/backend/llvm/lib-process.js +2 -2
  104. package/dist/backend/llvm/lib-process.js.map +1 -1
  105. package/dist/backend/llvm/lib-shared.js +208 -9
  106. package/dist/backend/llvm/lib-shared.js.map +1 -1
  107. package/dist/backend/llvm/lib-stream.js +97 -0
  108. package/dist/backend/llvm/lib-stream.js.map +1 -1
  109. package/dist/backend/llvm/local-array-reads.js +12 -6
  110. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  111. package/dist/backend/llvm/local-array-reads.test.js +6 -3
  112. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  113. package/dist/backend/llvm/local-union-storage.d.ts +26 -2
  114. package/dist/backend/llvm/local-union-storage.js +132 -12
  115. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  116. package/dist/backend/llvm/local-union-storage.test.js +107 -1
  117. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  118. package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
  119. package/dist/backend/llvm/loop-array-borrows.js +93 -13
  120. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  121. package/dist/backend/llvm/map-number-lookup.d.ts +20 -0
  122. package/dist/backend/llvm/map-number-lookup.js +66 -0
  123. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  124. package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
  125. package/dist/backend/llvm/map-number-lookup.test.js +102 -0
  126. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
  127. package/dist/backend/llvm/map-read-lifetimes.js +1 -0
  128. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  129. package/dist/backend/llvm/publish.d.ts +4 -0
  130. package/dist/backend/llvm/publish.js +3 -1
  131. package/dist/backend/llvm/publish.js.map +1 -1
  132. package/dist/backend/llvm/record-results.d.ts +29 -0
  133. package/dist/backend/llvm/record-results.js +260 -0
  134. package/dist/backend/llvm/record-results.js.map +1 -0
  135. package/dist/backend/llvm/reference-effects.js +15 -0
  136. package/dist/backend/llvm/reference-effects.js.map +1 -1
  137. package/dist/backend/llvm/reference-writes.js +29 -9
  138. package/dist/backend/llvm/reference-writes.js.map +1 -1
  139. package/dist/backend/llvm/regions.d.ts +68 -0
  140. package/dist/backend/llvm/regions.js +314 -0
  141. package/dist/backend/llvm/regions.js.map +1 -0
  142. package/dist/backend/llvm/regions.test.d.ts +1 -0
  143. package/dist/backend/llvm/regions.test.js +173 -0
  144. package/dist/backend/llvm/regions.test.js.map +1 -0
  145. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  146. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  147. package/dist/backend/llvm/shapes.d.ts +86 -13
  148. package/dist/backend/llvm/shapes.js +208 -54
  149. package/dist/backend/llvm/shapes.js.map +1 -1
  150. package/dist/backend/llvm/shapes.test.js +68 -9
  151. package/dist/backend/llvm/shapes.test.js.map +1 -1
  152. package/dist/backend/llvm/split-loops.js +1 -1
  153. package/dist/backend/llvm/split-loops.js.map +1 -1
  154. package/dist/backend/llvm/stack-objects.d.ts +29 -0
  155. package/dist/backend/llvm/stack-objects.js +142 -0
  156. package/dist/backend/llvm/stack-objects.js.map +1 -0
  157. package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
  158. package/dist/backend/llvm/stack-objects.test.js +255 -0
  159. package/dist/backend/llvm/stack-objects.test.js.map +1 -0
  160. package/dist/backend/llvm/string-reads.d.ts +4 -1
  161. package/dist/backend/llvm/string-reads.js +89 -9
  162. package/dist/backend/llvm/string-reads.js.map +1 -1
  163. package/dist/backend/llvm/switch-dispatch.js +5 -4
  164. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  165. package/dist/backend/llvm/walkers.d.ts +13 -0
  166. package/dist/backend/llvm/walkers.js +108 -10
  167. package/dist/backend/llvm/walkers.js.map +1 -1
  168. package/dist/backend/may-throw.js +10 -4
  169. package/dist/backend/may-throw.js.map +1 -1
  170. package/dist/backend/native/contracts.d.ts +7 -2
  171. package/dist/backend/native/executable.js +28 -2
  172. package/dist/backend/native/executable.js.map +1 -1
  173. package/dist/backend/native/library.js +1 -1
  174. package/dist/backend/native/library.js.map +1 -1
  175. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  176. package/dist/backend/native/runtime-inputs.js +3 -0
  177. package/dist/backend/native/runtime-inputs.js.map +1 -1
  178. package/dist/backend/native-link-info-core.d.ts +1 -0
  179. package/dist/backend/native-link-info-core.js.map +1 -1
  180. package/dist/backend/native-toolchain.test.js +1 -1
  181. package/dist/backend/native-toolchain.test.js.map +1 -1
  182. package/dist/backend/runtime-abi.d.ts +2 -2
  183. package/dist/backend/runtime-abi.js +2 -2
  184. package/dist/backend/runtime-pack-core.d.ts +1 -0
  185. package/dist/backend/runtime-pack-core.js +1 -0
  186. package/dist/backend/runtime-pack-core.js.map +1 -1
  187. package/dist/backend/runtime-pack-targets.test.js +1 -1
  188. package/dist/backend/runtime-pack.test.js +1 -1
  189. package/dist/backend/target-diagnostics.js +17 -0
  190. package/dist/backend/target-diagnostics.js.map +1 -1
  191. package/dist/backend/target-diagnostics.test.js +16 -0
  192. package/dist/backend/target-diagnostics.test.js.map +1 -1
  193. package/dist/compat/fetch-profile.js +4 -4
  194. package/dist/compat/fetch-profile.js.map +1 -1
  195. package/dist/contracts/check.js +2 -0
  196. package/dist/contracts/check.js.map +1 -1
  197. package/dist/coverage/report.js +1 -1
  198. package/dist/coverage/report.js.map +1 -1
  199. package/dist/diagnostics/diagnostic.d.ts +6 -5
  200. package/dist/diagnostics/diagnostic.js +7 -6
  201. package/dist/diagnostics/diagnostic.js.map +1 -1
  202. package/dist/executable/executable-cache.d.ts +1 -0
  203. package/dist/executable/executable-cache.js.map +1 -1
  204. package/dist/frontend/builtin-modules.d.ts +1 -1
  205. package/dist/frontend/builtin-modules.js +1 -0
  206. package/dist/frontend/builtin-modules.js.map +1 -1
  207. package/dist/frontend/comptime-node.js +2 -2
  208. package/dist/frontend/comptime-node.js.map +1 -1
  209. package/dist/frontend/experimental-import.d.ts +12 -0
  210. package/dist/frontend/experimental-import.js +63 -0
  211. package/dist/frontend/experimental-import.js.map +1 -0
  212. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  213. package/dist/frontend/lowering/binding-analysis.js +1 -1
  214. package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
  215. package/dist/frontend/lowering/builtin-calls.js +36 -0
  216. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  217. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  218. package/dist/frontend/lowering/builtins/arguments.js +8 -4
  219. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  220. package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
  221. package/dist/frontend/lowering/builtins/blob.js +167 -0
  222. package/dist/frontend/lowering/builtins/blob.js.map +1 -0
  223. package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
  224. package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
  225. package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
  226. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  227. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
  228. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  229. package/dist/frontend/lowering/builtins/compression.js +3 -2
  230. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  231. package/dist/frontend/lowering/builtins/console.d.ts +16 -6
  232. package/dist/frontend/lowering/builtins/console.js +33 -9
  233. package/dist/frontend/lowering/builtins/console.js.map +1 -1
  234. package/dist/frontend/lowering/builtins/crypto.js +415 -120
  235. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  236. package/dist/frontend/lowering/builtins/errors.js +20 -0
  237. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  238. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
  239. package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
  240. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  241. package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
  242. package/dist/frontend/lowering/builtins/filesystem.js +97 -15
  243. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  244. package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
  245. package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
  246. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
  247. package/dist/frontend/lowering/builtins/json.d.ts +2 -2
  248. package/dist/frontend/lowering/builtins/json.js +13 -4
  249. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  250. package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
  251. package/dist/frontend/lowering/builtins/key-object.js +56 -0
  252. package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
  253. package/dist/frontend/lowering/builtins/module-calls.js +60 -12
  254. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  255. package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
  256. package/dist/frontend/lowering/builtins/numbers.js +17 -0
  257. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  258. package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
  259. package/dist/frontend/lowering/builtins/operating-system.js +361 -1
  260. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  261. package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
  262. package/dist/frontend/lowering/builtins/performance.js +340 -5
  263. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  264. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  265. package/dist/frontend/lowering/builtins/process.js +122 -17
  266. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  267. package/dist/frontend/lowering/builtins/promises.js +109 -2
  268. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  269. package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
  270. package/dist/frontend/lowering/builtins/properties.js +39 -11
  271. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  272. package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
  273. package/dist/frontend/lowering/builtins/readline.js +266 -90
  274. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  275. package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
  276. package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
  277. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  278. package/dist/frontend/lowering/builtins/url.d.ts +8 -0
  279. package/dist/frontend/lowering/builtins/url.js +36 -0
  280. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  281. package/dist/frontend/lowering/call-arguments.js +1 -1
  282. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  283. package/dist/frontend/lowering/call-signatures.js +20 -2
  284. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  285. package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
  286. package/dist/frontend/lowering/checked-promise-all.js +52 -6
  287. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  288. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +8 -3
  289. package/dist/frontend/lowering/class-dynamic-dispatch.js +159 -32
  290. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  291. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
  292. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  293. package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
  294. package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
  295. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
  296. package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
  297. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  298. package/dist/frontend/lowering/coercions/structural.js +3 -3
  299. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  300. package/dist/frontend/lowering/collation-repertoire.js +6 -5
  301. package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
  302. package/dist/frontend/lowering/containers/array-callbacks.js +33 -6
  303. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  304. package/dist/frontend/lowering/containers/array-construction.js +8 -4
  305. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  306. package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
  307. package/dist/frontend/lowering/containers/array-methods.js +43 -2
  308. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  309. package/dist/frontend/lowering/containers/array-pipelines.js +1 -1
  310. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  311. package/dist/frontend/lowering/containers/bytes.js +38 -26
  312. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  313. package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
  314. package/dist/frontend/lowering/containers/for-of.js +5 -1
  315. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  316. package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
  317. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  318. package/dist/frontend/lowering/containers/string-and-regexp.js +91 -0
  319. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  320. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  321. package/dist/frontend/lowering/crypto-tables.js +77 -12
  322. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  323. package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
  324. package/dist/frontend/lowering/cycle-initialization.js +166 -12
  325. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  326. package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
  327. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  328. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  329. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  330. package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
  331. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  332. package/dist/frontend/lowering/expressions/object-literals.js +21 -68
  333. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  334. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  335. package/dist/frontend/lowering/generator-delegation.js +231 -10
  336. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  337. package/dist/frontend/lowering/generic-functions.d.ts +2 -2
  338. package/dist/frontend/lowering/generic-functions.js +2 -2
  339. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  340. package/dist/frontend/lowering/http2-constants.js +1 -1
  341. package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
  342. package/dist/frontend/lowering/lifetime-regions.js +216 -0
  343. package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
  344. package/dist/frontend/lowering/lower-array-sort.d.ts +40 -3
  345. package/dist/frontend/lowering/lower-array-sort.js +661 -194
  346. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  347. package/dist/frontend/lowering/lower-array-sort.test.js +103 -4
  348. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  349. package/dist/frontend/lowering/lower-assert.js +2 -2
  350. package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
  351. package/dist/frontend/lowering/lower-async-iteration.js +248 -2
  352. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  353. package/dist/frontend/lowering/lower-calls.js +173 -111
  354. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  355. package/dist/frontend/lowering/lower-classes.d.ts +12 -5
  356. package/dist/frontend/lowering/lower-classes.js +156 -11
  357. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  358. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  359. package/dist/frontend/lowering/lower-comptime.js +4 -4
  360. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  361. package/dist/frontend/lowering/lower-console.d.ts +13 -0
  362. package/dist/frontend/lowering/lower-console.js +460 -4
  363. package/dist/frontend/lowering/lower-console.js.map +1 -1
  364. package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
  365. package/dist/frontend/lowering/lower-event-emitter.js +124 -38
  366. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  367. package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
  368. package/dist/frontend/lowering/lower-event-target.js +362 -0
  369. package/dist/frontend/lowering/lower-event-target.js.map +1 -0
  370. package/dist/frontend/lowering/lower-expando.js +2 -2
  371. package/dist/frontend/lowering/lower-exprs.js +247 -42
  372. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  373. package/dist/frontend/lowering/lower-generators.d.ts +15 -7
  374. package/dist/frontend/lowering/lower-generators.js +183 -99
  375. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  376. package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
  377. package/dist/frontend/lowering/lower-inspect.js +247 -28
  378. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  379. package/dist/frontend/lowering/lower-mixins.js +1 -1
  380. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  381. package/dist/frontend/lowering/lower-modules.js +27 -17
  382. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  383. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
  384. package/dist/frontend/lowering/lower-namespaces.js +2 -2
  385. package/dist/frontend/lowering/lower-server.js +39 -14
  386. package/dist/frontend/lowering/lower-server.js.map +1 -1
  387. package/dist/frontend/lowering/lower-stdlib.d.ts +11 -1
  388. package/dist/frontend/lowering/lower-stdlib.js +45 -4
  389. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  390. package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
  391. package/dist/frontend/lowering/lower-stmts.js +112 -23
  392. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  393. package/dist/frontend/lowering/lower-stream.js +234 -22
  394. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  395. package/dist/frontend/lowering/lower-timers.js +1 -1
  396. package/dist/frontend/lowering/lowerer.d.ts +45 -6
  397. package/dist/frontend/lowering/lowerer.js +360 -48
  398. package/dist/frontend/lowering/lowerer.js.map +1 -1
  399. package/dist/frontend/lowering/native-ffi.js +2 -2
  400. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  401. package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
  402. package/dist/frontend/lowering/regex-span-reads.js +164 -0
  403. package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
  404. package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
  405. package/dist/frontend/lowering/runtime-optional-records.js +715 -0
  406. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
  407. package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
  408. package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
  409. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
  410. package/dist/frontend/lowering/surfaces.d.ts +7 -3
  411. package/dist/frontend/lowering/surfaces.js +385 -32
  412. package/dist/frontend/lowering/surfaces.js.map +1 -1
  413. package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
  414. package/dist/frontend/lowering/var-hoisting.js +261 -0
  415. package/dist/frontend/lowering/var-hoisting.js.map +1 -0
  416. package/dist/frontend/module-syntax.d.ts +1 -1
  417. package/dist/frontend/module-syntax.js +1 -1
  418. package/dist/frontend/npm-static-prune.js +1 -1
  419. package/dist/frontend/npm-static-prune.js.map +1 -1
  420. package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
  421. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  422. package/dist/frontend/pipeline.js +6 -4
  423. package/dist/frontend/pipeline.js.map +1 -1
  424. package/dist/frontend/program.d.ts +6 -5
  425. package/dist/frontend/program.js +42 -22
  426. package/dist/frontend/program.js.map +1 -1
  427. package/dist/frontend/program.test.js +13 -0
  428. package/dist/frontend/program.test.js.map +1 -1
  429. package/dist/frontend/resolve.js +1 -1
  430. package/dist/frontend/ts7/adapter.js +1 -1
  431. package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
  432. package/dist/frontend/ts7/ast-bytes.js +1 -1
  433. package/dist/frontend/ts7/semantic-json.d.ts +1 -1
  434. package/dist/frontend/ts7/semantic-json.js +1 -1
  435. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  436. package/dist/frontend/ts7/world-check.js +1 -1
  437. package/dist/frontend/tsc-codes.js +2 -2
  438. package/dist/frontend/tsc-codes.js.map +1 -1
  439. package/dist/frontend/type-mapper.d.ts +28 -1
  440. package/dist/frontend/type-mapper.js +288 -30
  441. package/dist/frontend/type-mapper.js.map +1 -1
  442. package/dist/index.js +6 -4
  443. package/dist/index.js.map +1 -1
  444. package/dist/ir/analysis.d.ts +12 -6
  445. package/dist/ir/analysis.js +26 -10
  446. package/dist/ir/analysis.js.map +1 -1
  447. package/dist/ir/analysis.test.js +15 -3
  448. package/dist/ir/analysis.test.js.map +1 -1
  449. package/dist/ir/builtin-effects.js +108 -2
  450. package/dist/ir/builtin-effects.js.map +1 -1
  451. package/dist/ir/builtin-signatures.d.ts +1 -1
  452. package/dist/ir/builtin-signatures.js +436 -53
  453. package/dist/ir/builtin-signatures.js.map +1 -1
  454. package/dist/ir/function-references.test.js +1 -0
  455. package/dist/ir/function-references.test.js.map +1 -1
  456. package/dist/ir/int32-slots.js +2 -0
  457. package/dist/ir/int32-slots.js.map +1 -1
  458. package/dist/ir/intrinsic-signatures.js +2 -0
  459. package/dist/ir/intrinsic-signatures.js.map +1 -1
  460. package/dist/ir/ir.d.ts +129 -36
  461. package/dist/ir/ir.js +42 -1
  462. package/dist/ir/ir.js.map +1 -1
  463. package/dist/ir/runtime-features.d.ts +1 -0
  464. package/dist/ir/runtime-features.js +116 -5
  465. package/dist/ir/runtime-features.js.map +1 -1
  466. package/dist/ir/scalar-records.js +1 -2
  467. package/dist/ir/scalar-records.js.map +1 -1
  468. package/dist/ir/serialize.js +1 -1
  469. package/dist/ir/serialize.js.map +1 -1
  470. package/dist/ir/traverse.js +1 -0
  471. package/dist/ir/traverse.js.map +1 -1
  472. package/dist/ir/validate.js +250 -34
  473. package/dist/ir/validate.js.map +1 -1
  474. package/dist/ir/validate.test.js +125 -0
  475. package/dist/ir/validate.test.js.map +1 -1
  476. package/dist/library/fence-eval.d.ts +1 -1
  477. package/dist/library/fence-eval.js +5 -4
  478. package/dist/library/fence-eval.js.map +1 -1
  479. package/dist/library/ir-policy.js +11 -4
  480. package/dist/library/ir-policy.js.map +1 -1
  481. package/dist/library/library-profile.js +13 -13
  482. package/dist/library/library-profile.js.map +1 -1
  483. package/dist/library/prepare.js +1 -1
  484. package/dist/library/prepare.js.map +1 -1
  485. package/dist/library/sidecar.js +3 -3
  486. package/dist/library/sidecar.js.map +1 -1
  487. package/dist/native/prepare.js +3 -2
  488. package/dist/native/prepare.js.map +1 -1
  489. package/dist/native/sanitizer.test.js +1 -0
  490. package/dist/native/sanitizer.test.js.map +1 -1
  491. package/package.json +20 -20
  492. package/surface-manifest.json +537 -142
@@ -1,3 +1,4 @@
1
+ import { type ArraySearchKind } from "./array-search.js";
1
2
  import type { IrBytesElem, IrExpr, IrFfiImport, IrFunction, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
2
3
  import { type SplitSpan } from "./split-loops.js";
3
4
  import { type IntegerRanges } from "../../ir/integer-ranges.js";
@@ -7,8 +8,10 @@ import { type Int32Local } from "./int32-locals.js";
7
8
  import { type ConstantNumericTable } from "../../ir/constant-tables.js";
8
9
  import { type FfiCallbackAdapter } from "../ffi-callbacks.js";
9
10
  import { type CallLifetimes } from "./call-lifetimes.js";
11
+ import { type UnionSources } from "./local-union-storage.js";
10
12
  import { BlockBuilder } from "./blocks.js";
11
13
  import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
14
+ import { InlineUnionFields } from "./inline-unions.js";
12
15
  import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
13
16
  import { CheckedNarrows } from "./checked-narrows.js";
14
17
  import { type MapReadLifetimes } from "./map-read-lifetimes.js";
@@ -18,11 +21,12 @@ import { StackCallbacks } from "./stack-callbacks.js";
18
21
  import { AmbientReceiverReaders } from "./constant-callbacks.js";
19
22
  import { type StringSliceSnapshot } from "./string-slices.js";
20
23
  import { type PublishedTypes } from "../publication.js";
24
+ import { type BytesThunkValue } from "./expr-stream-callbacks.js";
21
25
  import { type LlClassMeta } from "./classes.js";
22
26
  import { LlDyn, type DynHost } from "./dyn.js";
23
27
  import { LlWalkers } from "./walkers.js";
24
28
  import { NullableUnions } from "./nullable-unions.js";
25
- import { type MapKeyAccess } from "./shapes.js";
29
+ import { type InlineRcMode, type MapKeyAccess } from "./shapes.js";
26
30
  import type { ExprOf, LibCallExpr, LlStreamTypedRefAdapter, LlValue } from "./expr-context.js";
27
31
  export { LlvmUnsupportedError } from "./unsupported.js";
28
32
  export interface LlvmTargetOptions {
@@ -38,16 +42,20 @@ export interface LlvmTargetOptions {
38
42
  * separate translation unit. Public/direct emission keeps them by default. */
39
43
  emitLibraryIdentity?: boolean;
40
44
  /** Program objects carry a strong reference to the matching runtime ABI
41
- * marker so manual links against an incompatible runtime fail loudly. */
45
+ * marker so a manual link against an incompatible runtime fails. */
42
46
  runtimeAbiMarker?: boolean;
43
47
  /** Emit live-object audit notes in emitted new/free helpers. Only the
44
48
  * sanitized lane's SCR_RC_AUDIT runtime counts them; production plain
45
49
  * builds pass false so release/dev objects carry no empty calls.
46
50
  * Defaults to true for direct emission. */
47
51
  objectAudit?: boolean;
48
- /** Emit retain/release fast paths inline (the `speed` posture). Off, every
49
- * retain and release is a runtime call. */
50
- inlineRc?: boolean;
52
+ /** Emit retain/release fast paths inline: `speed` for every family with a
53
+ * fast path, `release` for the string retain and the dyn retain and
54
+ * release (shapes.ts InlineRcMode). Off, every retain and release is a
55
+ * runtime call. */
56
+ inlineRc?: InlineRcMode;
57
+ /** Define the inline RC fast-path helpers `noinline` (sanitized builds). */
58
+ rcHelpersNoinline?: boolean;
51
59
  /** Define `scr_detached_exit` so the Linux runtime hands the address-space
52
60
  * teardown after `process.exit` to a helper process (`--detached-exit`).
53
61
  * Executables only; the runtime's weak default keeps it off. */
@@ -63,6 +71,10 @@ export declare class LlEmitter {
63
71
  private scalarStringSlices;
64
72
  readonly stringSlices: Map<string, StringSliceSnapshot>;
65
73
  private localStackUnions;
74
+ private localStackObjects;
75
+ private reassignedStackObjects;
76
+ /** The binding slot of each reassigned stack-object local. */
77
+ private stackObjectSlots;
66
78
  private localUnionStorageProofs;
67
79
  private localUnionStorage;
68
80
  integerArrayBindings: Set<string>;
@@ -74,13 +86,18 @@ export declare class LlEmitter {
74
86
  * operations and record views conservatively alias all of them. */
75
87
  private markFieldPointer;
76
88
  markMemoryPointer(ptr: string, field: string): void;
89
+ /** The alias tag of a runtime word that emitted code reads and writes
90
+ * outside every field (the lifetime-region count, owner and cursors). */
91
+ memoryAliasAttachment(category: string): string;
77
92
  fieldAliasAttachment(ptr: string): string;
78
93
  private fieldAliasMetadata;
79
94
  private readonly debug;
95
+ /** Projection-only scalar objects may live in frame storage (stack-objects.ts). */
96
+ readonly stackObjects: boolean;
80
97
  private debugScope;
81
98
  readonly sizeType: "i32" | "i64";
82
99
  readonly ffiExtendNarrowIntegers: boolean;
83
- readonly cycleBufferedOffset: number;
100
+ readonly cycleBufOffset: number;
84
101
  /** Emitted ScrCycType descriptors so far (their collector statistics
85
102
  * indices; see ShapeHost.nextCycKind). */
86
103
  private cycKinds;
@@ -124,6 +141,8 @@ export declare class LlEmitter {
124
141
  private readonly unitInstances;
125
142
  /** unionId → symbol of the union's immortal ABSENT field-slot instance. */
126
143
  private readonly absentInstances;
144
+ /** The zeroed box an inline store reads for a NULL union dummy. */
145
+ private needsUnionNone;
127
146
  /** unionId → symbol of a flag set once a checked-dynamic cast caches one
128
147
  * of the union's boxes. A cached box is refreshed in place, possibly with
129
148
  * a tag that another union numbers apart, so it is never shared. */
@@ -175,7 +194,11 @@ export declare class LlEmitter {
175
194
  /** Inline RC fast-path helpers requested by call sites (shapes.ts); null
176
195
  * when inline RC is off. */
177
196
  private readonly rcHelpers;
197
+ private readonly rcMode;
198
+ private readonly rcHelpersNoinline;
178
199
  readonly fnByName: Map<string, IrFunction>;
200
+ /** Empty literals that construct with inline slots (appended-array-literals.ts). */
201
+ appendedArrayLiterals: ReadonlySet<IrExpr>;
179
202
  /** Emitted LLVM text of every IR function body, by function name: the
180
203
  * fiberless-async analysis scans it for suspension entry points. */
181
204
  private readonly fnDefText;
@@ -187,6 +210,8 @@ export declare class LlEmitter {
187
210
  * whose bindings end with the list (emitBlock and function bodies). */
188
211
  private stmtCursor;
189
212
  readonly optionalArrayReads: OptionalArrayReads;
213
+ /** Union sources a binding or projection can hold in a stack box. */
214
+ readonly unionSources: UnionSources;
190
215
  readonly checkedNarrows: CheckedNarrows;
191
216
  callArrayReads: Map<IrExpr, LocalArrayRead>;
192
217
  mapReadLifetimes: MapReadLifetimes;
@@ -278,6 +303,10 @@ export declare class LlEmitter {
278
303
  * typeKey → thunk symbol. */
279
304
  readonly resolveThunks: Map<string, string>;
280
305
  readonly resolveThunkDefs: string[];
306
+ /** Inline array searches used by the module (array-search.ts). */
307
+ readonly arraySearchKinds: Set<ArraySearchKind>;
308
+ /** Typed-ref recipe constants by type key (lazy receivers). */
309
+ readonly typedRefRecipes: Map<string, string>;
281
310
  /** ReadableStream.from adapters keep typed arrays by reference and box
282
311
  * one current element per pull. */
283
312
  readonly streamFromArrayAdapters: Map<string, string>;
@@ -289,6 +318,7 @@ export declare class LlEmitter {
289
318
  readonly dynPromiseAdapters: Map<string, string>;
290
319
  readonly unionsById: Map<string, IrUnionDef>;
291
320
  readonly nullableFields: NullableRefFields;
321
+ readonly inlineUnions: InlineUnionFields;
292
322
  /** Unions whose values are nullable arm pointers (nullable-unions.ts). */
293
323
  readonly nullableUnions: NullableUnions;
294
324
  /** The union table without nullable unions: the stack-box analyses. */
@@ -399,9 +429,12 @@ export declare class LlEmitter {
399
429
  private tryStack;
400
430
  /** Return type of the function being emitted — the unwind path returns
401
431
  * a dummy of this type (never read: callers check the flag first). */
402
- private currentReturnType;
432
+ currentReturnType: IrType;
403
433
  /** The current body returns its number result as i32. */
404
434
  private currentInt32Result;
435
+ /** The function's i32 entry returns its scalar union result as tag and
436
+ * payload bits (Int32Abi.union). */
437
+ private currentUnionResult;
405
438
  /** Active only while emitting a body lowered with LLVM's
406
439
  * switched-coroutine intrinsics (wasm32 async bodies and generators,
407
440
  * native synchronous generators; see coroLowered). */
@@ -421,6 +454,8 @@ export declare class LlEmitter {
421
454
  yieldT: IrType;
422
455
  nextT: IrType;
423
456
  } | null;
457
+ /** The function being emitted is an async generator body. */
458
+ private currentAsyncGenerator;
424
459
  /** Active optional-chain bind slots, by chain id (chainRecv reads). */
425
460
  readonly chainSlots: Map<string, LlValue>;
426
461
  logArgSlots: number;
@@ -483,7 +518,7 @@ export declare class LlEmitter {
483
518
  * programs keep fibers too: their fiber epilogue owns context
484
519
  * termination (a stopping worker rejects and observes the promise), which
485
520
  * the fiberless wrapper does not reproduce. A missed suspension still
486
- * cannot reorder silently: the runtime traps when a context parks while a
521
+ * cannot reorder execution undetected: the runtime traps when a context parks while a
487
522
  * fiberless body is on its stack. */
488
523
  private fiberlessAsyncFunctions;
489
524
  /** The spawn wrapper of a fiberless async function: runs the body on the
@@ -567,7 +602,7 @@ export declare class LlEmitter {
567
602
  * holding the ABSENT state surfaces as the ordinary undefined arm, so
568
603
  * absence never travels beyond its slot (a later `{ f: r.f }` is an
569
604
  * explicit, present property). */
570
- loadRecordField(ptr: string, t: IrType): string;
605
+ loadRecordField(ptr: string, t: IrType, inline: boolean): string;
571
606
  declare(decl: string): void;
572
607
  needOom(): void;
573
608
  private currentFrame;
@@ -671,7 +706,7 @@ export declare class LlEmitter {
671
706
  unionTag(uName: string, unionId: string): string;
672
707
  /** Guard for helpers that build or read a union's `%ScrUnion` box
673
708
  * directly (library-shaped unions with fixed arms): a nullable union
674
- * reaching one is an emitter bug, never a silent miscompile. */
709
+ * reaching one is an emitter bug and throws InternalCompilerError. */
675
710
  requireBoxedUnion(unionId: string): void;
676
711
  /** The BORROWED payload pointer of a ref arm (scr_union_peek inlined —
677
712
  * the runtime's is a static inline); a nullable union is its payload. */
@@ -702,6 +737,7 @@ export declare class LlEmitter {
702
737
  classFieldPtr(objName: string, className: string, field: string): {
703
738
  ptr: string;
704
739
  type: IrType;
740
+ inline: boolean;
705
741
  };
706
742
  /** `o->vt->pre` — the dynamic class's preorder number (borrowed object;
707
743
  * the static class names which struct spelling carries the vt word). */
@@ -715,17 +751,35 @@ export declare class LlEmitter {
715
751
  * same offset on every target. Share one field-read block per matching
716
752
  * prefix; class variants retain their own concrete layout dispatch. */
717
753
  unionFieldGroups(def: IrUnionDef, field: string): number[][];
718
- /** The field-slot pointer of a record member (rc header at index 0). */
754
+ /** The zeroed `%ScrUnion` constant (inline-unions.ts unionBoxBits). */
755
+ unionNoneRef(): string;
756
+ /** The field-slot pointer of a record member (rc header at index 0).
757
+ * `inline`: the slot stores a scalar union's tag and bits. */
719
758
  recordFieldPtr(objName: string, shapeId: string, field: string): {
720
759
  ptr: string;
721
760
  type: IrType;
761
+ inline: boolean;
722
762
  };
723
763
  /** The overflow map's slot pointer on an index-signature shape. */
724
764
  recordOvfPtr(objName: string, shapeId: string): string;
725
- /** Loads a record field (i8-stored bools trunc to i1). */
726
- loadField(ptr: string, t: IrType): string;
727
- /** Stores a record field (i1 zext to the i8 storage). */
728
- storeField(ptr: string, t: IrType, value: string): void;
765
+ /** Loads a record field (i8-stored bools trunc to i1). An inline union
766
+ * field answers a private stack box with the slot's own bits, ABSENT
767
+ * included: it may only be borrowed. */
768
+ loadField(ptr: string, t: IrType, inline: boolean): string;
769
+ /** A record field of this shape stores its scalar union inline. */
770
+ recordFieldInline(shapeId: string, field: string): boolean;
771
+ /** The value a field store writes: an inline union slot copies the tag
772
+ * and bits of a borrowed projection, so no box is built for it. */
773
+ emitFieldValue(value: IrExpr, inline: boolean): LlValue;
774
+ /** Overwrites a field with `v` (from emitFieldValue). A reference moves
775
+ * in, and the old value is released AFTER the field is overwritten. */
776
+ replaceField(ptr: string, type: IrType, inline: boolean, v: LlValue): void;
777
+ /** Stores `v` (from emitFieldValue) into a fresh field slot. */
778
+ initField(ptr: string, type: IrType, inline: boolean, v: LlValue): void;
779
+ /** Stores a record field (i1 zext to the i8 storage). An inline union
780
+ * field copies the tag and bits of the union value, which its owner
781
+ * keeps. */
782
+ storeField(ptr: string, t: IrType, value: string, inline: boolean): void;
729
783
  /** Reads an int32-specialized class field: the i32 slot is the value,
730
784
  * and its widening is the exact double every program observation sees. */
731
785
  loadInt32Field(ptr: string, type: IrType): LlValue;
@@ -802,6 +856,21 @@ export declare class LlEmitter {
802
856
  * that is not a direct call (closures, dispatch, adapters, the runtime)
803
857
  * enters here. A pending exception passes through to its caller. */
804
858
  private emitInt32AbiWrapper;
859
+ /** The SCALAR_UNION_RESULT pair of a `%ScrUnion` box of `type`. */
860
+ scalarUnionPair(box: string, type: IrType): string;
861
+ /** A private stack box holding a SCALAR_UNION_RESULT pair of `type`. */
862
+ stackScalarUnion(pair: string, type: IrType): LlValue;
863
+ /** A direct call whose i32 entry returns its scalar union in registers. */
864
+ scalarResultCall(e: IrExpr): boolean;
865
+ /** A fresh heap box (+1) for a SCALAR_UNION_RESULT pair of `type`; the
866
+ * exception dummy (tag -1) answers NULL. */
867
+ boxScalarUnion(pair: string, type: IrType): string;
868
+ /** A fresh heap box (+1) for an inline union field's value; the ABSENT
869
+ * state reads as the undefined arm. */
870
+ inlineFieldUnion(ptr: string, type: IrType): string;
871
+ /** boxScalarUnion over a separate tag and payload bits. Unit arms answer
872
+ * their immortal instances whatever the bits. */
873
+ boxScalarUnionBits(tag: string, bits: string, type: IrType): string;
805
874
  /** The i32 bits of a number proven an int32 (a direct call's i32
806
875
  * argument or an i32 result): its exact integer when the value carries
807
876
  * one, else the conversion the proof makes exact. */
@@ -854,6 +923,9 @@ export declare class LlEmitter {
854
923
  * runs afterwards with no handler in scope: a rejection settles the
855
924
  * function's promise instead of reaching its own catch clauses. */
856
925
  private emitAdoptingReturn;
926
+ /** An async generator completing without a further turn: its request
927
+ * settles as the body returns (scr_async_gen_hop_done). */
928
+ private emitAsyncGenSettled;
857
929
  /** `return x` of a local whose slot is an owned scope entry of the same
858
930
  * type: the return can take over the local's reference. */
859
931
  private movableReturn;
@@ -946,6 +1018,10 @@ export declare class LlEmitter {
946
1018
  * value, making the snapshot unique unless a real observable alias exists.
947
1019
  */
948
1020
  emitStringSelfConcatAssign(localId: string, left: IrExpr, suffix: IrExpr, retainForYield: boolean): LlValue;
1021
+ /** The code of a one-argument `String.fromCharCode(c)` suffix, emitted, so
1022
+ * `s += String.fromCharCode(c)` appends the character without building
1023
+ * the one-character string; null for any other suffix. */
1024
+ private emitSingleCharCode;
949
1025
  /** `local = local + suffix` when the suffix cannot read or write the
950
1026
  * local (an unboxed binding is only reachable through this function's own
951
1027
  * expressions): reading the binding after the suffix gives the value the
@@ -960,6 +1036,12 @@ export declare class LlEmitter {
960
1036
  emitRecordExpr(e: ExprOf<"fieldGet" | "recordGet" | "recordLit" | "recordClone" | "recordKeyGet" | "recordOvfKeys" | "recordOvfHas" | "recordHas" | "fieldAbsent">): LlValue;
961
1037
  emitDynamicExpr(e: ExprOf<"dynFrom" | "dynCall" | "dynInvoke" | "dynArrLit" | "dynObjLit" | "unionWrap" | "unionNarrow" | "unionDisc" | "unionKeyGet" | "unionIsTag" | "dynKeyGet" | "dynHasKey" | "dynScalarEq" | "dynTest" | "unionEq" | "unionFuncEq" | "caughtTest" | "caughtCheck" | "caughtNarrow" | "caughtToDyn">): LlValue;
962
1038
  emitIntrinsicExpr(e: ExprOf<"intrinsic">): LlValue;
1039
+ /** Lifetime regions in modules with lifetimeRegions (llvm/regions.ts).
1040
+ * Created with the class graph; null elsewhere. */
1041
+ private regions;
1042
+ /** LifetimeRegion's runtime calls: create answers the region id, enter
1043
+ * and leave bracket run(), release condemns. */
1044
+ private emitRegionIntrinsic;
963
1045
  private publishWalkersCache;
964
1046
  /** Per-type publication walkers, created on the first publish. */
965
1047
  private get publishWalkers();
@@ -993,11 +1075,16 @@ export declare class LlEmitter {
993
1075
  * their ordinary statement-frame ownership. The caller must retain any
994
1076
  * reference result before evaluating another expression. */
995
1077
  emitReadReceiver(e: IrExpr): LlValue;
1078
+ /** The frame slot a reassigned stack-object local keeps for its value. */
1079
+ private stackObjectSlot;
996
1080
  /** A private stack union source with an independently owned payload. */
997
1081
  canStackReceiver(e: IrExpr): boolean;
998
1082
  /** True for union sources that emitReadReceiver can produce as a private
999
1083
  * stack box with an independently owned payload (no heap union). */
1000
1084
  isStackUnionSource(e: IrExpr): boolean;
1085
+ /** A read of a record or class field that stores its scalar union
1086
+ * inline. */
1087
+ inlineFieldGet(e: IrExpr): boolean;
1001
1088
  /** The nullable-pointer representation behind a union-typed class field
1002
1089
  * read, or null for every other expression. */
1003
1090
  nullableFieldGet(e: IrExpr): NullableRefField | null;
@@ -1033,6 +1120,8 @@ export declare class LlEmitter {
1033
1120
  * and projection-only parameters (callers may pass stack boxes). Such a
1034
1121
  * box must only be projected: never retained, released, or stored. */
1035
1122
  isStackUnionLocal(localId: string): boolean;
1123
+ /** The instance of a capsule known to hold exactly this class (borrowed). */
1124
+ emitExactCapsuleObject(value: IrExpr, type: IrType): LlValue;
1036
1125
  canBorrowReceiver(e: IrExpr): boolean;
1037
1126
  /** A reference held as one plain pointer that emitReadReceiver can read
1038
1127
  * without owning: class instances, records, arrays, strings and
@@ -1103,7 +1192,10 @@ export declare class LlEmitter {
1103
1192
  }): string;
1104
1193
  cryptoBytesThunkFor(cbT: IrType & {
1105
1194
  kind: "func";
1106
- }, arrayBuffer?: boolean): string;
1195
+ }, arrayBuffer?: boolean, valueMode?: BytesThunkValue): string;
1196
+ cryptoIntThunkFor(cbT: IrType & {
1197
+ kind: "func";
1198
+ }): string;
1107
1199
  zlibBytesThunkFor(cbT: IrType & {
1108
1200
  kind: "func";
1109
1201
  }): string;