@scriptc/compiler 0.0.34 → 0.0.36

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 (424) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +7 -6
  2. package/dist/backend/build-cache.d.ts +44 -0
  3. package/dist/backend/build-cache.js +241 -0
  4. package/dist/backend/build-cache.js.map +1 -0
  5. package/dist/backend/{emission/emit-async.d.ts → c/async.d.ts} +21 -30
  6. package/dist/backend/{emission/emit-async.js → c/async.js} +270 -286
  7. package/dist/backend/c/async.js.map +1 -0
  8. package/dist/backend/{emission/emitter.d.ts → c/c-emitter.d.ts} +6 -23
  9. package/dist/backend/{emission/emitter.js → c/c-emitter.js} +53 -107
  10. package/dist/backend/c/c-emitter.js.map +1 -0
  11. package/dist/backend/c/exprs.d.ts +8 -0
  12. package/dist/backend/c/exprs.js +7913 -0
  13. package/dist/backend/c/exprs.js.map +1 -0
  14. package/dist/backend/{emission/emit-island.d.ts → c/island.d.ts} +5 -5
  15. package/dist/backend/{emission/emit-island.js → c/island.js} +24 -22
  16. package/dist/backend/c/island.js.map +1 -0
  17. package/dist/backend/{emission → c}/may-throw.d.ts +1 -1
  18. package/dist/backend/{emission → c}/may-throw.js +1 -1
  19. package/dist/backend/c/may-throw.js.map +1 -0
  20. package/dist/backend/{emission/emit-shapes.d.ts → c/shapes.d.ts} +19 -19
  21. package/dist/backend/{emission/emit-shapes.js → c/shapes.js} +78 -87
  22. package/dist/backend/c/shapes.js.map +1 -0
  23. package/dist/backend/{emission/emit-stmts.d.ts → c/stmts.d.ts} +12 -12
  24. package/dist/backend/{emission/emit-stmts.js → c/stmts.js} +377 -343
  25. package/dist/backend/c/stmts.js.map +1 -0
  26. package/dist/backend/{emission/emit-types.d.ts → c/types.d.ts} +1 -1
  27. package/dist/backend/{emission/emit-types.js → c/types.js} +42 -286
  28. package/dist/backend/c/types.js.map +1 -0
  29. package/dist/backend/c/types.test.js +25 -0
  30. package/dist/backend/c/types.test.js.map +1 -0
  31. package/dist/backend/{emission/emit-walkers.d.ts → c/walkers.d.ts} +19 -41
  32. package/dist/backend/{emission/emit-walkers.js → c/walkers.js} +238 -298
  33. package/dist/backend/c/walkers.js.map +1 -0
  34. package/dist/backend/ffi-callbacks.d.ts +1 -1
  35. package/dist/backend/ffi-callbacks.js +4 -3
  36. package/dist/backend/ffi-callbacks.js.map +1 -1
  37. package/dist/backend/{library-identity.d.ts → library-identity-markers.d.ts} +0 -4
  38. package/dist/backend/{library-identity.js → library-identity-markers.js} +10 -9
  39. package/dist/backend/library-identity-markers.js.map +1 -0
  40. package/dist/backend/llvm/blocks.d.ts +4 -0
  41. package/dist/backend/llvm/blocks.js +29 -0
  42. package/dist/backend/llvm/blocks.js.map +1 -1
  43. package/dist/backend/llvm/classes.d.ts +2 -19
  44. package/dist/backend/llvm/classes.js +20 -52
  45. package/dist/backend/llvm/classes.js.map +1 -1
  46. package/dist/backend/llvm/common.d.ts +4 -0
  47. package/dist/backend/llvm/common.js +27 -0
  48. package/dist/backend/llvm/common.js.map +1 -0
  49. package/dist/backend/llvm/dyn.d.ts +3 -8
  50. package/dist/backend/llvm/dyn.js +152 -224
  51. package/dist/backend/llvm/dyn.js.map +1 -1
  52. package/dist/backend/llvm/emitter.d.ts +4 -1
  53. package/dist/backend/llvm/emitter.js +514 -9981
  54. package/dist/backend/llvm/emitter.js.map +1 -1
  55. package/dist/backend/llvm/expr-async.d.ts +4 -0
  56. package/dist/backend/llvm/expr-async.js +726 -0
  57. package/dist/backend/llvm/expr-async.js.map +1 -0
  58. package/dist/backend/llvm/expr-bytes.d.ts +13 -0
  59. package/dist/backend/llvm/expr-bytes.js +456 -0
  60. package/dist/backend/llvm/expr-bytes.js.map +1 -0
  61. package/dist/backend/llvm/expr-callbacks.d.ts +22 -0
  62. package/dist/backend/llvm/expr-callbacks.js +520 -0
  63. package/dist/backend/llvm/expr-callbacks.js.map +1 -0
  64. package/dist/backend/llvm/expr-calls.d.ts +2 -0
  65. package/dist/backend/llvm/expr-calls.js +618 -0
  66. package/dist/backend/llvm/expr-calls.js.map +1 -0
  67. package/dist/backend/llvm/expr-containers.d.ts +25 -0
  68. package/dist/backend/llvm/expr-containers.js +623 -0
  69. package/dist/backend/llvm/expr-containers.js.map +1 -0
  70. package/dist/backend/llvm/expr-context.d.ts +255 -0
  71. package/dist/backend/llvm/expr-context.js +2 -0
  72. package/dist/backend/llvm/expr-context.js.map +1 -0
  73. package/dist/backend/llvm/expr-control.d.ts +2 -0
  74. package/dist/backend/llvm/expr-control.js +473 -0
  75. package/dist/backend/llvm/expr-control.js.map +1 -0
  76. package/dist/backend/llvm/expr-dispatch.d.ts +4 -0
  77. package/dist/backend/llvm/expr-dispatch.js +151 -0
  78. package/dist/backend/llvm/expr-dispatch.js.map +1 -0
  79. package/dist/backend/llvm/expr-dynamic.d.ts +2 -0
  80. package/dist/backend/llvm/expr-dynamic.js +810 -0
  81. package/dist/backend/llvm/expr-dynamic.js.map +1 -0
  82. package/dist/backend/llvm/expr-island.d.ts +15 -0
  83. package/dist/backend/llvm/expr-island.js +690 -0
  84. package/dist/backend/llvm/expr-island.js.map +1 -0
  85. package/dist/backend/llvm/expr-primitives.d.ts +6 -0
  86. package/dist/backend/llvm/expr-primitives.js +622 -0
  87. package/dist/backend/llvm/expr-primitives.js.map +1 -0
  88. package/dist/backend/llvm/expr-records.d.ts +9 -0
  89. package/dist/backend/llvm/expr-records.js +299 -0
  90. package/dist/backend/llvm/expr-records.js.map +1 -0
  91. package/dist/backend/llvm/expr-stream-bridges.d.ts +13 -0
  92. package/dist/backend/llvm/expr-stream-bridges.js +396 -0
  93. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -0
  94. package/dist/backend/llvm/expr-stream-callbacks.d.ts +12 -0
  95. package/dist/backend/llvm/expr-stream-callbacks.js +360 -0
  96. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -0
  97. package/dist/backend/llvm/lib-dispatch.d.ts +5 -0
  98. package/dist/backend/llvm/lib-dispatch.js +267 -0
  99. package/dist/backend/llvm/lib-dispatch.js.map +1 -0
  100. package/dist/backend/llvm/lib-filesystem.d.ts +6 -0
  101. package/dist/backend/llvm/lib-filesystem.js +594 -0
  102. package/dist/backend/llvm/lib-filesystem.js.map +1 -0
  103. package/dist/backend/llvm/lib-network.d.ts +2 -0
  104. package/dist/backend/llvm/lib-network.js +429 -0
  105. package/dist/backend/llvm/lib-network.js.map +1 -0
  106. package/dist/backend/llvm/lib-process.d.ts +5 -0
  107. package/dist/backend/llvm/lib-process.js +585 -0
  108. package/dist/backend/llvm/lib-process.js.map +1 -0
  109. package/dist/backend/llvm/lib-shared.d.ts +6 -0
  110. package/dist/backend/llvm/lib-shared.js +687 -0
  111. package/dist/backend/llvm/lib-shared.js.map +1 -0
  112. package/dist/backend/llvm/lib-stream.d.ts +2 -0
  113. package/dist/backend/llvm/lib-stream.js +470 -0
  114. package/dist/backend/llvm/lib-stream.js.map +1 -0
  115. package/dist/backend/llvm/shapes.d.ts +12 -2
  116. package/dist/backend/llvm/shapes.js +66 -307
  117. package/dist/backend/llvm/shapes.js.map +1 -1
  118. package/dist/backend/llvm/shapes.test.js +52 -0
  119. package/dist/backend/llvm/shapes.test.js.map +1 -0
  120. package/dist/backend/llvm/split.d.ts +43 -0
  121. package/dist/backend/llvm/split.js +227 -0
  122. package/dist/backend/llvm/split.js.map +1 -0
  123. package/dist/backend/llvm/split.test.d.ts +1 -0
  124. package/dist/backend/llvm/split.test.js +102 -0
  125. package/dist/backend/llvm/split.test.js.map +1 -0
  126. package/dist/backend/llvm/unsupported.d.ts +1 -1
  127. package/dist/backend/llvm/walkers.d.ts +2 -3
  128. package/dist/backend/llvm/walkers.js +164 -218
  129. package/dist/backend/llvm/walkers.js.map +1 -1
  130. package/dist/backend/native-codegen.d.ts +38 -0
  131. package/dist/backend/native-codegen.js +261 -0
  132. package/dist/backend/native-codegen.js.map +1 -0
  133. package/dist/backend/native-codegen.test.d.ts +1 -0
  134. package/dist/backend/native-codegen.test.js +188 -0
  135. package/dist/backend/native-codegen.test.js.map +1 -0
  136. package/dist/backend/native-link-info.d.ts +96 -0
  137. package/dist/backend/native-link-info.js +219 -0
  138. package/dist/backend/native-link-info.js.map +1 -0
  139. package/dist/backend/native-link-info.test.d.ts +1 -0
  140. package/dist/backend/native-link-info.test.js +134 -0
  141. package/dist/backend/native-link-info.test.js.map +1 -0
  142. package/dist/backend/{cc.d.ts → native-toolchain.d.ts} +139 -47
  143. package/dist/backend/{cc.js → native-toolchain.js} +1008 -910
  144. package/dist/backend/native-toolchain.js.map +1 -0
  145. package/dist/backend/native-toolchain.test.d.ts +1 -0
  146. package/dist/backend/{cc-cache.test.js → native-toolchain.test.js} +1297 -127
  147. package/dist/backend/native-toolchain.test.js.map +1 -0
  148. package/dist/backend/object-localize.js +1 -1
  149. package/dist/backend/object-localize.test.js +20 -0
  150. package/dist/backend/object-localize.test.js.map +1 -1
  151. package/dist/backend/runtime-abi.d.ts +10 -0
  152. package/dist/backend/runtime-abi.js +11 -0
  153. package/dist/backend/runtime-abi.js.map +1 -0
  154. package/dist/backend/runtime-pack.d.ts +137 -0
  155. package/dist/backend/runtime-pack.js +400 -0
  156. package/dist/backend/runtime-pack.js.map +1 -0
  157. package/dist/backend/runtime-pack.test.d.ts +1 -0
  158. package/dist/backend/runtime-pack.test.js +438 -0
  159. package/dist/backend/runtime-pack.test.js.map +1 -0
  160. package/dist/backend/targets.d.ts +30 -0
  161. package/dist/backend/targets.js +46 -0
  162. package/dist/backend/targets.js.map +1 -0
  163. package/dist/backend/targets.test.d.ts +1 -0
  164. package/dist/backend/targets.test.js +19 -0
  165. package/dist/backend/targets.test.js.map +1 -0
  166. package/dist/backend/vendor-archives.d.ts +41 -0
  167. package/dist/backend/vendor-archives.js +462 -0
  168. package/dist/backend/vendor-archives.js.map +1 -0
  169. package/dist/compat/fetch-profile.d.ts +0 -1
  170. package/dist/compat/fetch-profile.js +0 -1
  171. package/dist/compat/fetch-profile.js.map +1 -1
  172. package/dist/coverage/report.js +3 -3
  173. package/dist/coverage/report.js.map +1 -1
  174. package/dist/coverage/surface-manifest.js +25 -32
  175. package/dist/coverage/surface-manifest.js.map +1 -1
  176. package/dist/diagnostics/diagnostic.d.ts +11 -12
  177. package/dist/diagnostics/diagnostic.js +19 -17
  178. package/dist/diagnostics/diagnostic.js.map +1 -1
  179. package/dist/diagnostics/render.d.ts +1 -1
  180. package/dist/diagnostics/render.js +1 -1
  181. package/dist/diagnostics/render.js.map +1 -1
  182. package/dist/errors.d.ts +5 -0
  183. package/dist/errors.js +9 -0
  184. package/dist/errors.js.map +1 -0
  185. package/dist/executable/executable-cache.d.ts +86 -0
  186. package/dist/executable/executable-cache.js +398 -0
  187. package/dist/executable/executable-cache.js.map +1 -0
  188. package/dist/executable/executable-cache.test.d.ts +1 -0
  189. package/dist/executable/executable-cache.test.js +300 -0
  190. package/dist/executable/executable-cache.test.js.map +1 -0
  191. package/dist/ffi/{profile.d.ts → ffi-manifest.d.ts} +7 -2
  192. package/dist/ffi/{profile.js → ffi-manifest.js} +2 -1
  193. package/dist/ffi/ffi-manifest.js.map +1 -0
  194. package/dist/frontend/builtin-modules.d.ts +21 -0
  195. package/dist/frontend/builtin-modules.js +82 -0
  196. package/dist/frontend/builtin-modules.js.map +1 -0
  197. package/dist/frontend/cjs-lexer.d.ts +7 -0
  198. package/dist/frontend/cjs-lexer.js +15 -17
  199. package/dist/frontend/cjs-lexer.js.map +1 -1
  200. package/dist/frontend/dts-paths.d.ts +26 -0
  201. package/dist/frontend/dts-paths.js +41 -0
  202. package/dist/frontend/dts-paths.js.map +1 -0
  203. package/dist/frontend/input-tracker.d.ts +0 -2
  204. package/dist/frontend/input-tracker.js +1 -4
  205. package/dist/frontend/input-tracker.js.map +1 -1
  206. package/dist/frontend/lib-contract.d.ts +1 -5
  207. package/dist/frontend/lib-contract.js +1 -1
  208. package/dist/frontend/lib-contract.js.map +1 -1
  209. package/dist/frontend/lib-exports.d.ts +1 -1
  210. package/dist/frontend/lowering/call-position.d.ts +4 -0
  211. package/dist/frontend/lowering/call-position.js +7 -0
  212. package/dist/frontend/lowering/call-position.js.map +1 -0
  213. package/dist/frontend/lowering/callback-arg.d.ts +20 -0
  214. package/dist/frontend/lowering/callback-arg.js +44 -0
  215. package/dist/frontend/lowering/callback-arg.js.map +1 -0
  216. package/dist/frontend/lowering/lib-boundary.d.ts +1 -1
  217. package/dist/frontend/lowering/lib-boundary.js +34 -34
  218. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  219. package/dist/frontend/lowering/lower-assert.d.ts +3 -3
  220. package/dist/frontend/lowering/lower-assert.js +214 -241
  221. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  222. package/dist/frontend/lowering/lower-builtins.d.ts +74 -146
  223. package/dist/frontend/lowering/lower-builtins.js +1126 -1234
  224. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  225. package/dist/frontend/lowering/lower-calls.d.ts +56 -188
  226. package/dist/frontend/lowering/lower-calls.js +1409 -1494
  227. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  228. package/dist/frontend/lowering/lower-classes.d.ts +62 -125
  229. package/dist/frontend/lowering/lower-classes.js +832 -866
  230. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  231. package/dist/frontend/lowering/lower-comptime.d.ts +5 -12
  232. package/dist/frontend/lowering/lower-comptime.js +32 -31
  233. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  234. package/dist/frontend/lowering/lower-containers.d.ts +35 -135
  235. package/dist/frontend/lowering/lower-containers.js +1394 -1715
  236. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  237. package/dist/frontend/lowering/lower-dgram.d.ts +3 -7
  238. package/dist/frontend/lowering/lower-dgram.js +97 -111
  239. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  240. package/dist/frontend/lowering/lower-enums.d.ts +4 -4
  241. package/dist/frontend/lowering/lower-enums.js +30 -30
  242. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  243. package/dist/frontend/lowering/{lower-emitter.d.ts → lower-event-emitter.d.ts} +7 -18
  244. package/dist/frontend/lowering/{lower-emitter.js → lower-event-emitter.js} +172 -174
  245. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -0
  246. package/dist/frontend/lowering/lower-expando.d.ts +5 -5
  247. package/dist/frontend/lowering/lower-expando.js +40 -40
  248. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  249. package/dist/frontend/lowering/lower-exprs.d.ts +56 -264
  250. package/dist/frontend/lowering/lower-exprs.js +1644 -1704
  251. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  252. package/dist/frontend/lowering/lower-generators.d.ts +6 -6
  253. package/dist/frontend/lowering/lower-generators.js +73 -72
  254. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  255. package/dist/frontend/lowering/lower-inspect.d.ts +5 -17
  256. package/dist/frontend/lowering/lower-inspect.js +236 -238
  257. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  258. package/dist/frontend/lowering/lower-island.d.ts +34 -45
  259. package/dist/frontend/lowering/lower-island.js +440 -511
  260. package/dist/frontend/lowering/lower-island.js.map +1 -1
  261. package/dist/frontend/lowering/lower-mixins.d.ts +7 -10
  262. package/dist/frontend/lowering/lower-mixins.js +86 -86
  263. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  264. package/dist/frontend/lowering/lower-modules.d.ts +12 -18
  265. package/dist/frontend/lowering/lower-modules.js +284 -283
  266. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  267. package/dist/frontend/lowering/lower-namespaces.d.ts +23 -49
  268. package/dist/frontend/lowering/lower-namespaces.js +123 -115
  269. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  270. package/dist/frontend/lowering/lower-server.d.ts +18 -25
  271. package/dist/frontend/lowering/lower-server.js +899 -899
  272. package/dist/frontend/lowering/lower-server.js.map +1 -1
  273. package/dist/frontend/lowering/lower-stmts.d.ts +30 -149
  274. package/dist/frontend/lowering/lower-stmts.js +1176 -1229
  275. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  276. package/dist/frontend/lowering/lower-stream.d.ts +12 -12
  277. package/dist/frontend/lowering/lower-stream.js +300 -301
  278. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  279. package/dist/frontend/lowering/lower-test.d.ts +5 -5
  280. package/dist/frontend/lowering/lower-test.js +82 -82
  281. package/dist/frontend/lowering/lower-test.js.map +1 -1
  282. package/dist/frontend/lowering/lowerer.d.ts +66 -20
  283. package/dist/frontend/lowering/lowerer.js +421 -198
  284. package/dist/frontend/lowering/lowerer.js.map +1 -1
  285. package/dist/frontend/lowering/pairs-snapshot.d.ts +11 -0
  286. package/dist/frontend/lowering/pairs-snapshot.js +85 -0
  287. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -0
  288. package/dist/frontend/lowering/static-this.d.ts +6 -0
  289. package/dist/frontend/lowering/static-this.js +24 -0
  290. package/dist/frontend/lowering/static-this.js.map +1 -0
  291. package/dist/frontend/lowering/surfaces.d.ts +14 -33
  292. package/dist/frontend/lowering/surfaces.js +64 -64
  293. package/dist/frontend/lowering/surfaces.js.map +1 -1
  294. package/dist/frontend/npm-static-rewrite.js +6 -28
  295. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  296. package/dist/frontend/npm-static.d.ts +0 -10
  297. package/dist/frontend/npm-static.js +4 -7
  298. package/dist/frontend/npm-static.js.map +1 -1
  299. package/dist/frontend/npm.d.ts +0 -24
  300. package/dist/frontend/npm.js +11 -85
  301. package/dist/frontend/npm.js.map +1 -1
  302. package/dist/frontend/program.d.ts +3 -1
  303. package/dist/frontend/program.js +51 -17
  304. package/dist/frontend/program.js.map +1 -1
  305. package/dist/frontend/provenance-registry.d.ts +0 -2
  306. package/dist/frontend/provenance-registry.js +0 -10
  307. package/dist/frontend/provenance-registry.js.map +1 -1
  308. package/dist/frontend/provenance.js +4 -7
  309. package/dist/frontend/provenance.js.map +1 -1
  310. package/dist/frontend/resolve.d.ts +7 -2
  311. package/dist/frontend/resolve.js +12 -17
  312. package/dist/frontend/resolve.js.map +1 -1
  313. package/dist/frontend/resolve.test.d.ts +1 -0
  314. package/dist/frontend/resolve.test.js +29 -0
  315. package/dist/frontend/resolve.test.js.map +1 -0
  316. package/dist/frontend/ts7/adapter.d.ts +2 -2
  317. package/dist/frontend/ts7/adapter.js +1 -1
  318. package/dist/frontend/ts7/adapter.js.map +1 -1
  319. package/dist/frontend/ts7/checker.d.ts +40 -2
  320. package/dist/frontend/ts7/checker.js +182 -54
  321. package/dist/frontend/ts7/checker.js.map +1 -1
  322. package/dist/frontend/ts7/enums.js +2 -1
  323. package/dist/frontend/ts7/enums.js.map +1 -1
  324. package/dist/frontend/ts7/{program.js → program-adapter.js} +7 -6
  325. package/dist/frontend/ts7/program-adapter.js.map +1 -0
  326. package/dist/frontend/ts7/world-check.d.ts +1 -3
  327. package/dist/frontend/ts7/world-check.js +3 -1
  328. package/dist/frontend/ts7/world-check.js.map +1 -1
  329. package/dist/frontend/tsc-codes.d.ts +8 -0
  330. package/dist/frontend/tsc-codes.js +109 -0
  331. package/dist/frontend/tsc-codes.js.map +1 -0
  332. package/dist/frontend/{types.d.ts → type-mapper.d.ts} +2 -25
  333. package/dist/frontend/{types.js → type-mapper.js} +31 -52
  334. package/dist/frontend/type-mapper.js.map +1 -0
  335. package/dist/frontend/workspace-registry.d.ts +26 -0
  336. package/dist/frontend/workspace-registry.js +71 -0
  337. package/dist/frontend/workspace-registry.js.map +1 -0
  338. package/dist/index.d.ts +115 -30
  339. package/dist/index.js +650 -146
  340. package/dist/index.js.map +1 -1
  341. package/dist/ir/analysis.d.ts +37 -0
  342. package/dist/ir/analysis.js +118 -0
  343. package/dist/ir/analysis.js.map +1 -0
  344. package/dist/ir/analysis.test.d.ts +1 -0
  345. package/dist/ir/analysis.test.js +21 -0
  346. package/dist/ir/analysis.test.js.map +1 -0
  347. package/dist/ir/build.d.ts +9 -0
  348. package/dist/ir/build.js +33 -0
  349. package/dist/ir/build.js.map +1 -0
  350. package/dist/ir/integer-loops.d.ts +1 -1
  351. package/dist/ir/{nodes.d.ts → ir.d.ts} +60 -26
  352. package/dist/ir/{nodes.js → ir.js} +173 -141
  353. package/dist/ir/ir.js.map +1 -0
  354. package/dist/ir/ir.test.d.ts +1 -0
  355. package/dist/ir/ir.test.js +17 -0
  356. package/dist/ir/ir.test.js.map +1 -0
  357. package/dist/ir/serialize.d.ts +1 -1
  358. package/dist/ir/serialize.js +2 -1
  359. package/dist/ir/serialize.js.map +1 -1
  360. package/dist/ir/validate.d.ts +1 -1
  361. package/dist/ir/validate.js +16 -5
  362. package/dist/ir/validate.js.map +1 -1
  363. package/dist/library/cache-primitives.d.ts +24 -0
  364. package/dist/library/cache-primitives.js +83 -0
  365. package/dist/library/cache-primitives.js.map +1 -0
  366. package/dist/library/cache-reset.test.d.ts +1 -0
  367. package/dist/library/cache-reset.test.js +47 -0
  368. package/dist/library/cache-reset.test.js.map +1 -0
  369. package/dist/library/compiler-self-identity.d.ts +23 -0
  370. package/dist/library/compiler-self-identity.js +84 -0
  371. package/dist/library/compiler-self-identity.js.map +1 -0
  372. package/dist/library/fence-eval.d.ts +3 -1
  373. package/dist/library/fence-eval.js +5 -1
  374. package/dist/library/fence-eval.js.map +1 -1
  375. package/dist/library/int-infer.d.ts +1 -36
  376. package/dist/library/int-infer.js +17 -17
  377. package/dist/library/int-infer.js.map +1 -1
  378. package/dist/library/{early-cache.d.ts → library-cache.d.ts} +1 -1
  379. package/dist/library/{early-cache.js → library-cache.js} +37 -111
  380. package/dist/library/library-cache.js.map +1 -0
  381. package/dist/library/library-cache.test.d.ts +1 -0
  382. package/dist/library/{early-cache.test.js → library-cache.test.js} +2 -2
  383. package/dist/library/library-cache.test.js.map +1 -0
  384. package/dist/library/{profile.d.ts → library-profile.d.ts} +4 -7
  385. package/dist/library/{profile.js → library-profile.js} +18 -11
  386. package/dist/library/library-profile.js.map +1 -0
  387. package/dist/library/semantic-source.js +2 -1
  388. package/dist/library/semantic-source.js.map +1 -1
  389. package/dist/library/sidecar.d.ts +5 -2
  390. package/dist/library/sidecar.js +11 -5
  391. package/dist/library/sidecar.js.map +1 -1
  392. package/dist/startup-cache.d.ts +6 -0
  393. package/dist/startup-cache.js +6 -0
  394. package/dist/startup-cache.js.map +1 -0
  395. package/package.json +7 -2
  396. package/surface-manifest.json +1 -1
  397. package/dist/backend/cc-cache.test.js.map +0 -1
  398. package/dist/backend/cc.js.map +0 -1
  399. package/dist/backend/emission/emit-async.js.map +0 -1
  400. package/dist/backend/emission/emit-exprs.d.ts +0 -13
  401. package/dist/backend/emission/emit-exprs.js +0 -7407
  402. package/dist/backend/emission/emit-exprs.js.map +0 -1
  403. package/dist/backend/emission/emit-island.js.map +0 -1
  404. package/dist/backend/emission/emit-shapes.js.map +0 -1
  405. package/dist/backend/emission/emit-stmts.js.map +0 -1
  406. package/dist/backend/emission/emit-types.js.map +0 -1
  407. package/dist/backend/emission/emit-walkers.js.map +0 -1
  408. package/dist/backend/emission/emitter.js.map +0 -1
  409. package/dist/backend/emission/may-throw.js.map +0 -1
  410. package/dist/backend/library-identity.js.map +0 -1
  411. package/dist/ffi/profile.js.map +0 -1
  412. package/dist/frontend/lowering/lower-emitter.js.map +0 -1
  413. package/dist/frontend/shared.d.ts +0 -82
  414. package/dist/frontend/shared.js +0 -308
  415. package/dist/frontend/shared.js.map +0 -1
  416. package/dist/frontend/ts7/program.js.map +0 -1
  417. package/dist/frontend/types.js.map +0 -1
  418. package/dist/ir/nodes.js.map +0 -1
  419. package/dist/library/early-cache.js.map +0 -1
  420. package/dist/library/early-cache.test.js.map +0 -1
  421. package/dist/library/profile.js.map +0 -1
  422. /package/dist/backend/{cc-cache.test.d.ts → c/types.test.d.ts} +0 -0
  423. /package/dist/{library/early-cache.test.d.ts → backend/llvm/shapes.test.d.ts} +0 -0
  424. /package/dist/frontend/ts7/{program.d.ts → program-adapter.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walkers.js","sourceRoot":"","sources":["../../../src/backend/c/walkers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { IrFfiCallbackParam, IrFfiImport } from "../ir/nodes.js";
1
+ import type { IrFfiCallbackParam, IrFfiImport } from "../ir/ir.js";
2
2
  export interface FfiCallbackAdapter {
3
3
  symbol: string;
4
4
  /** Raw call-scoped callbacks borrow this thread-local slot. */
@@ -1,4 +1,5 @@
1
- import { isFfiCallbackParam, isFfiContextParam, isFfiReleaseParam } from "../ir/nodes.js";
1
+ import { InternalCompilerError } from "../errors.js";
2
+ import { isFfiCallbackParam, isFfiContextParam, isFfiReleaseParam } from "../ir/ir.js";
2
3
  /** Allocate internal callback symbols outside the manifest's external
3
4
  * symbol set. C and LLVM share this table so a valid native symbol can
4
5
  * never collide with a generated trampoline or raw-callback TLS slot. */
@@ -80,7 +81,7 @@ export function collectFfiRetainedOps(entry, callbackArgs, adapterFor) {
80
81
  if (isFfiCallbackParam(param) && param.callback.lifetime === "retained") {
81
82
  const adapter = adapterFor(entry.name, param.callback.id);
82
83
  if (adapter.table === null)
83
- throw new Error("emitter bug: retained callback has no table");
84
+ throw new InternalCompilerError("emitter bug: retained callback has no table");
84
85
  registrations.push({
85
86
  table: adapter.table,
86
87
  global: adapter.global,
@@ -92,7 +93,7 @@ export function collectFfiRetainedOps(entry, callbackArgs, adapterFor) {
92
93
  const { binding, id } = parseFfiCallbackKey(param.callback.release);
93
94
  const adapter = adapterFor(binding, id);
94
95
  if (adapter.table === null)
95
- throw new Error("emitter bug: retained release has no table");
96
+ throw new InternalCompilerError("emitter bug: retained release has no table");
96
97
  releases.push({
97
98
  table: adapter.table,
98
99
  global: adapter.global,
@@ -1 +1 @@
1
- {"version":3,"file":"ffi-callbacks.js","sourceRoot":"","sources":["../../src/backend/ffi-callbacks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ffi-callbacks.js","sourceRoot":"","sources":["../../src/backend/ffi-callbacks.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,4 @@
1
1
  export type LibraryEmission = "c" | "llvm";
2
- export declare const C_LIBRARY_IDENTITY_BEGIN = "/* scriptc-library-identity: begin */";
3
- export declare const C_LIBRARY_IDENTITY_END = "/* scriptc-library-identity: end */";
4
- export declare const LLVM_LIBRARY_IDENTITY_BEGIN = "; scriptc-library-identity: begin";
5
- export declare const LLVM_LIBRARY_IDENTITY_END = "; scriptc-library-identity: end";
6
2
  export interface LibraryIdentityValues {
7
3
  buildIdSymbol: string;
8
4
  abiVersionSymbol: string;
@@ -1,7 +1,8 @@
1
- export const C_LIBRARY_IDENTITY_BEGIN = "/* scriptc-library-identity: begin */";
2
- export const C_LIBRARY_IDENTITY_END = "/* scriptc-library-identity: end */";
3
- export const LLVM_LIBRARY_IDENTITY_BEGIN = "; scriptc-library-identity: begin";
4
- export const LLVM_LIBRARY_IDENTITY_END = "; scriptc-library-identity: end";
1
+ import { InternalCompilerError } from "../errors.js";
2
+ const C_LIBRARY_IDENTITY_BEGIN = "/* scriptc-library-identity: begin */";
3
+ const C_LIBRARY_IDENTITY_END = "/* scriptc-library-identity: end */";
4
+ const LLVM_LIBRARY_IDENTITY_BEGIN = "; scriptc-library-identity: begin";
5
+ const LLVM_LIBRARY_IDENTITY_END = "; scriptc-library-identity: end";
5
6
  function identityMarkers(emission) {
6
7
  return emission === "c"
7
8
  ? { begin: C_LIBRARY_IDENTITY_BEGIN, end: C_LIBRARY_IDENTITY_END }
@@ -9,7 +10,7 @@ function identityMarkers(emission) {
9
10
  }
10
11
  export function emitLibraryIdentityLines(emission, identity, llvmFunctionAttrs = "#0") {
11
12
  if (!/^[0-9a-f]{16}$/.test(identity.buildId)) {
12
- throw new Error("library build id must be exactly 16 lowercase hex digits");
13
+ throw new InternalCompilerError("library build id must be exactly 16 lowercase hex digits");
13
14
  }
14
15
  if (emission === "c") {
15
16
  return [
@@ -47,18 +48,18 @@ function identityOffsets(source, emission) {
47
48
  if (start < 0)
48
49
  return null;
49
50
  if (source.indexOf(begin, start + begin.length) >= 0) {
50
- throw new Error("generated library TU contains multiple identity regions");
51
+ throw new InternalCompilerError("generated library TU contains multiple identity regions");
51
52
  }
52
53
  const endStart = source.indexOf(end, start + begin.length);
53
54
  if (endStart < 0)
54
- throw new Error("generated library TU has an unterminated identity region");
55
+ throw new InternalCompilerError("generated library TU has an unterminated identity region");
55
56
  return { start, end: endStart + end.length };
56
57
  }
57
58
  /** Refresh only the volatile identity block in a cached public TU. */
58
59
  export function replaceLibraryIdentity(source, emission, identity) {
59
60
  const offsets = identityOffsets(source, emission);
60
61
  if (offsets === null)
61
- throw new Error("generated public library TU has no identity region");
62
+ throw new InternalCompilerError("generated public library TU has no identity region");
62
63
  const replacement = emitLibraryIdentityLines(emission, identity).join("\n");
63
64
  return source.slice(0, offsets.start) + replacement + source.slice(offsets.end);
64
65
  }
@@ -100,4 +101,4 @@ export function stripLibraryIdentity(source, emission) {
100
101
  }
101
102
  return prefix + source.slice(suffix);
102
103
  }
103
- //# sourceMappingURL=library-identity.js.map
104
+ //# sourceMappingURL=library-identity-markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-identity-markers.js","sourceRoot":"","sources":["../../src/backend/library-identity-markers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,MAAM,wBAAwB,GAAG,uCAAuC,CAAC;AACzE,MAAM,sBAAsB,GAAG,qCAAqC,CAAC;AACrE,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AACxE,MAAM,yBAAyB,GAAG,iCAAiC,CAAC;AASpE,SAAS,eAAe,CAAC,QAAyB;IAChD,OAAO,QAAQ,KAAK,GAAG;QACrB,CAAC,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,sBAAsB,EAAE;QAClE,CAAC,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,GAAG,EAAE,yBAAyB,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAyB,EACzB,QAA+B,EAC/B,iBAAiB,GAAG,IAAI;IAExB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,qBAAqB,CAAC,0DAA0D,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO;YACL,wBAAwB;YACxB,YAAY,QAAQ,CAAC,aAAa,UAAU;YAC5C,uBAAuB,QAAQ,CAAC,OAAO,IAAI;YAC3C,GAAG;YACH,EAAE;YACF,YAAY,QAAQ,CAAC,gBAAgB,UAAU;YAC/C,YAAY,QAAQ,CAAC,UAAU,IAAI;YACnC,GAAG;YACH,EAAE;YACF,sBAAsB;SACvB,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpF,OAAO;QACL,2BAA2B;QAC3B,eAAe,QAAQ,CAAC,aAAa,MAAM,iBAAiB,mCAAmC,QAAQ,CAAC,OAAO,EAAE;QACjH,QAAQ;QACR,aAAa,aAAa,EAAE;QAC5B,GAAG;QACH,EAAE;QACF,eAAe,QAAQ,CAAC,gBAAgB,MAAM,iBAAiB,kCAAkC;QACjG,QAAQ;QACR,aAAa,QAAQ,CAAC,UAAU,EAAE;QAClC,GAAG;QACH,EAAE;QACF,yBAAyB;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,MAAc,EACd,QAAyB;IAEzB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,qBAAqB,CAAC,yDAAyD,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,QAAQ,GAAG,CAAC;QAAE,MAAM,IAAI,qBAAqB,CAAC,0DAA0D,CAAC,CAAC;IAC9G,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,QAAyB,EACzB,QAA+B;IAE/B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;IAC5G,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,sEAAsE;IACtE,0EAA0E;IAC1E,OAAO,IAAI,MAAM,CACf,SAAS,aAAa,CAAC,UAAU,CAAC,cAAc;QAC9C,uDAAuD,EACzD,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,UAAkB,EAClB,UAAoC;IAEpC,OAAO,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE,CAC/E,OAAO,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,UAAkB;IAC3E,OAAO,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;6EAE6E;AAC7E,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,QAAyB;IAEzB,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,2EAA2E;IAC3E,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
@@ -17,5 +17,9 @@ export declare class BlockBuilder {
17
17
  terminate(s: string): void;
18
18
  br(label: string): void;
19
19
  condBr(v: string, t: string, f: string): void;
20
+ /** Emit a double-indexed `for (i = 0; i < len; i++)` loop. `next` is
21
+ * exposed for bodies with internal branches that need to continue at the
22
+ * shared increment block. */
23
+ countedLoop(len: string, emitBody: (index: string, next: string) => void, comparison?: "olt" | "ole"): void;
20
24
  render(): string;
21
25
  }
@@ -52,6 +52,35 @@ export class BlockBuilder {
52
52
  condBr(v, t, f) {
53
53
  this.terminate(`br i1 ${v}, label %${t}, label %${f}`);
54
54
  }
55
+ /** Emit a double-indexed `for (i = 0; i < len; i++)` loop. `next` is
56
+ * exposed for bodies with internal branches that need to continue at the
57
+ * shared increment block. */
58
+ countedLoop(len, emitBody, comparison = "olt") {
59
+ const indexSlot = this.slot();
60
+ this.entryAllocas.push(`${indexSlot} = alloca double`);
61
+ this.line(`store double 0x0000000000000000, ptr ${indexSlot}`);
62
+ const condition = this.newLabel("count.c");
63
+ const body = this.newLabel("count.b");
64
+ const next = this.newLabel("count.n");
65
+ const done = this.newLabel("count.e");
66
+ this.br(condition);
67
+ this.startBlock(condition);
68
+ const index = this.tmp();
69
+ const more = this.tmp();
70
+ this.line(`${index} = load double, ptr ${indexSlot}`);
71
+ this.line(`${more} = fcmp ${comparison} double ${index}, ${len}`);
72
+ this.condBr(more, body, done);
73
+ this.startBlock(body);
74
+ emitBody(index, next);
75
+ if (!this.isTerminated())
76
+ this.br(next);
77
+ this.startBlock(next);
78
+ const incremented = this.tmp();
79
+ this.line(`${incremented} = fadd double ${index}, 0x3FF0000000000000`);
80
+ this.line(`store double ${incremented}, ptr ${indexSlot}`);
81
+ this.br(condition);
82
+ this.startBlock(done);
83
+ }
55
84
  render() {
56
85
  return this.blocks
57
86
  .map((b, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/backend/llvm/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;6CAU6C;AAE7C,MAAM,OAAO,YAAY;IACN,MAAM,GAA8D,EAAE,CAAC;IAChF,GAAG,CAA0D;IACrE;;2CAEuC;IAC9B,YAAY,GAAa,EAAE,CAAC;IAC7B,WAAW,GAAG,CAAC,CAAC;IAChB,YAAY,GAAG,CAAC,CAAC;IAEzB;QACE,IAAI,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,CAAS;QACZ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,GAAG;QACD,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,CAAS;QACjB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,EAAE,CAAC,KAAa;QACd,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACpC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1F,+DAA+D;YAC/D,mEAAmE;YACnE,cAAc;YACd,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC;YACvC,OAAO,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;QAC9E,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/backend/llvm/blocks.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { IrClassDef, IrFunction, IrModule, IrType } from "../../ir/nodes.js";
1
+ import type { IrClassDef, IrFunction, IrModule, IrType, IrUnionDef } from "../../ir/ir.js";
2
2
  import { type ShapeHost } from "./shapes.js";
3
3
  /** One virtual method slot of a hierarchy: the ROOT-MOST declaring class
4
4
  * owns the slot; its declaration's IrFunction fixes the slot's ABI (the
@@ -28,27 +28,10 @@ export interface LlClassMeta {
28
28
  * strict descendant redeclares it (whole-program devirtualization).
29
29
  * Ported from the CEmitter constructor. */
30
30
  export declare function buildClassGraph(mod: IrModule, fnByName: Map<string, IrFunction>): Map<string, LlClassMeta>;
31
- /** The root's slot list as seen by one class: the implementation the class
32
- * dispatches to, or null outside the slot's declaring subtree / on a
33
- * fully-abstract chain (vtEntriesFor, ported). */
34
- export declare function vtEntriesFor(meta: LlClassMeta): {
35
- slot: LlVtSlot;
36
- impl: LlClassMeta | null;
37
- }[];
38
31
  /** The LLVM struct type name a class's instances GEP through: the runtime
39
32
  * error classes share the runtime's ScrError layout (emitted subclasses
40
33
  * embed it as their prefix); every emitted class has its own %sc_o_*. */
41
34
  export declare function classStructSym(className: string): string;
42
- /** True when the class descends from the runtime emitter class: its
43
- * struct embeds ScrEmitter's remaining prefix (the registry pointer and
44
- * the display-name slot) after the vtable word, so an upcast to
45
- * ScrEmitter* is the usual pointer reinterpret (emit-shapes.ts's rule). */
46
- export declare function emitterRooted(meta: LlClassMeta): boolean;
47
- /** True when the class descends from a runtime STREAM class: its struct
48
- * embeds the FULL ScrStream prefix (registry, display name, state
49
- * pointer) and its RC/trace helpers delegate the state block to
50
- * scr_stream_st_* (emit-shapes.ts's streamRooted). */
51
- export declare function streamRooted(meta: LlClassMeta): boolean;
52
35
  /** A field's GEP index inside its class struct: rc at 0, the vtable word
53
36
  * at 1 on hierarchy members, then the flattened field list. */
54
37
  export declare function classFieldIndex(meta: LlClassMeta, field: string): {
@@ -60,8 +43,8 @@ export declare function classFieldIndex(meta: LlClassMeta, field: string): {
60
43
  * undefined-armed union start as JS's `undefined`, never NULL), and the
61
44
  * interned NUL-terminated constants (emitter subclass display names). */
62
45
  export interface ClassHost extends ShapeHost {
46
+ readonly unionsById: Map<string, IrUnionDef>;
63
47
  unitInstanceRef(unionId: string, tag: number): string;
64
- undefinedArmTag(t: IrType): number;
65
48
  cstr(text: string): string;
66
49
  }
67
50
  /** Per-class LLVM emission for every non-runtime class: the struct types
@@ -1,6 +1,8 @@
1
- import { isRefCounted, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES } from "../../ir/nodes.js";
1
+ import { InternalCompilerError } from "../../errors.js";
2
+ import { isRefCounted, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES } from "../../ir/ir.js";
3
+ import { streamRooted, undefinedArmTag } from "../../ir/analysis.js";
2
4
  import { mangleClassGcFree, mangleClassNew, mangleClassObj, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleFunction, mangleVtInstance, mangleVtStruct, } from "../mangle.js";
3
- import { FN_ATTRS, llFieldType, releaseSym, traceAdapter } from "./shapes.js";
5
+ import { FN_ATTRS, llFieldType, releaseBody, releaseSym, retainBody, traceAdapter } from "./shapes.js";
4
6
  /** The class graph: link base/children, number the forest in preorder
5
7
  * (roots and children in module class order — the SAME numbering the C
6
8
  * backend computes, so instanceof agrees between backends and with the
@@ -27,7 +29,7 @@ export function buildClassGraph(mod, fnByName) {
27
29
  continue;
28
30
  const base = metaMap.get(meta.def.base);
29
31
  if (!base)
30
- throw new Error(`llvm emitter bug: undeclared base class ${meta.def.base}`);
32
+ throw new InternalCompilerError(`llvm emitter bug: undeclared base class ${meta.def.base}`);
31
33
  meta.base = base;
32
34
  base.children.push(meta);
33
35
  }
@@ -73,7 +75,7 @@ export function buildClassGraph(mod, fnByName) {
73
75
  continue;
74
76
  }
75
77
  if (!fn)
76
- throw new Error(`llvm emitter bug: missing method function %${m.def.name}.${method}`);
78
+ throw new InternalCompilerError(`llvm emitter bug: missing method function %${m.def.name}.${method}`);
77
79
  root.slots.push({ method, declarer: m, fn });
78
80
  }
79
81
  }
@@ -89,7 +91,7 @@ export function buildClassGraph(mod, fnByName) {
89
91
  /** The root's slot list as seen by one class: the implementation the class
90
92
  * dispatches to, or null outside the slot's declaring subtree / on a
91
93
  * fully-abstract chain (vtEntriesFor, ported). */
92
- export function vtEntriesFor(meta) {
94
+ function vtEntriesFor(meta) {
93
95
  return meta.root.slots.map((slot) => {
94
96
  if (!(slot.declarer.pre <= meta.pre && meta.pre <= slot.declarer.post)) {
95
97
  return { slot, impl: null };
@@ -101,7 +103,7 @@ export function vtEntriesFor(meta) {
101
103
  }
102
104
  if (meta.def.abstract === true)
103
105
  return { slot, impl: null };
104
- throw new Error(`llvm emitter bug: no implementation of ${slot.method} for ${meta.def.name}`);
106
+ throw new InternalCompilerError(`llvm emitter bug: no implementation of ${slot.method} for ${meta.def.name}`);
105
107
  });
106
108
  }
107
109
  /** The LLVM struct type name a class's instances GEP through: the runtime
@@ -119,21 +121,10 @@ export function classStructSym(className) {
119
121
  /** True when the class descends from the runtime emitter class: its
120
122
  * struct embeds ScrEmitter's remaining prefix (the registry pointer and
121
123
  * the display-name slot) after the vtable word, so an upcast to
122
- * ScrEmitter* is the usual pointer reinterpret (emit-shapes.ts's rule). */
123
- export function emitterRooted(meta) {
124
+ * ScrEmitter* is the usual pointer reinterpret (shapes.ts's rule). */
125
+ function emitterRooted(meta) {
124
126
  return meta.root.def.name === RUNTIME_EMITTER_CLASS;
125
127
  }
126
- /** True when the class descends from a runtime STREAM class: its struct
127
- * embeds the FULL ScrStream prefix (registry, display name, state
128
- * pointer) and its RC/trace helpers delegate the state block to
129
- * scr_stream_st_* (emit-shapes.ts's streamRooted). */
130
- export function streamRooted(meta) {
131
- for (let m = meta.base; m; m = m.base) {
132
- if (RUNTIME_STREAM_CLASSES.has(m.def.name))
133
- return true;
134
- }
135
- return false;
136
- }
137
128
  /** The GEP index where a class's own fields start: rc at 0, the vtable
138
129
  * word at 1 on hierarchy members, then the emitter prefix (registry +
139
130
  * display name) on emitter-rooted classes, then the stream-state slot on
@@ -150,7 +141,7 @@ function fieldBase(meta) {
150
141
  export function classFieldIndex(meta, field) {
151
142
  const idx = meta.def.fields.findIndex((f) => f.name === field);
152
143
  if (idx < 0)
153
- throw new Error(`llvm emitter bug: unknown field ${field} on class ${meta.def.name}`);
144
+ throw new InternalCompilerError(`llvm emitter bug: unknown field ${field} on class ${meta.def.name}`);
154
145
  return { index: fieldBase(meta) + idx, type: meta.def.fields[idx].type };
155
146
  }
156
147
  /** The newFn initialization stores for fields whose type ADMITS undefined
@@ -168,7 +159,7 @@ function undefFieldInits(host, meta) {
168
159
  }
169
160
  if (f.type.kind !== "union")
170
161
  return;
171
- const tag = host.undefinedArmTag(f.type);
162
+ const tag = undefinedArmTag(f.type, host.unionsById);
172
163
  if (tag < 0)
173
164
  return;
174
165
  out.push(` %uf${i} = getelementptr inbounds %${mangleClassStruct(meta.def.name)}, ptr %o, i64 0, i32 ${index}`, ` store ptr ${host.unitInstanceRef(f.type.unionId, tag)}, ptr %uf${i} ; ${f.name} starts undefined`);
@@ -254,9 +245,7 @@ export function emitClassShapes(host, mod, metaMap) {
254
245
  const stCall = (tag, entry, tail) => prefixCall(tag, 4, entry, tail, "stream state (ScrStream prefix)");
255
246
  // retain: NULL-tolerant, immortal-skip, mark-live on traced shapes —
256
247
  // layout-generic (rc at 0), so hierarchy members need no dispatch.
257
- defs.push(`define internal ptr @${mangleClassRetain(cls.name)}(ptr %o) ${FN_ATTRS} { ; retain ${cls.name}`, `entry:`, ` %isnull = icmp eq ptr %o, null`, ` br i1 %isnull, label %done, label %check`, `check:`, ` %rc = load ${host.sizeType}, ptr %o`, ` %imm = icmp eq ${host.sizeType} %rc, -1`, ` br i1 %imm, label %done, label %inc`, `inc:`, ` %n = add ${host.sizeType} %rc, 1`, ` store ${host.sizeType} %n, ptr %o`, ...(traced
258
- ? [` %colorp = getelementptr i8, ptr %o, ${host.sizeType} -${host.cycleColorOffset}`, ` store i32 0, ptr %colorp ; mark live`]
259
- : []), ` br label %done`, `done:`, ` ret ptr %o`, `}`, ``);
248
+ defs.push(...retainBody(host, mangleClassRetain(cls.name), traced, `retain ${cls.name}`), ``);
260
249
  // The field-releasing teardown body shared by both release shapes
261
250
  // (the public one on standalone classes, the DIRECT one on hierarchy
262
251
  // members). Runs at rc == 0.
@@ -309,30 +298,9 @@ export function emitClassShapes(host, mod, metaMap) {
309
298
  defs.push(...reld);
310
299
  }
311
300
  else {
312
- const rel = [
313
- `define internal void @${mangleClassRelease(cls.name)}(ptr %o) ${FN_ATTRS} { ; release ${cls.name}`,
314
- `entry:`,
315
- ` %isnull = icmp eq ptr %o, null`,
316
- ` br i1 %isnull, label %done, label %check`,
317
- `check:`,
318
- ` %rc = load ${host.sizeType}, ptr %o`,
319
- ` %imm = icmp eq ${host.sizeType} %rc, -1`,
320
- ` br i1 %imm, label %done, label %dec`,
321
- `dec:`,
322
- ` %n = sub ${host.sizeType} %rc, 1`,
323
- ` store ${host.sizeType} %n, ptr %o`,
324
- ` %dead = icmp eq ${host.sizeType} %n, 0`,
325
- ` br i1 %dead, label %free, label %${traced ? "root" : "done"}`,
326
- `free:`,
327
- ];
328
- teardown(rel);
329
- rel.push(` br label %done`);
330
- if (traced) {
331
- host.declare(`declare void @scr_cyc_on_release(ptr)`);
332
- rel.push(`root:`, ` call void @scr_cyc_on_release(ptr %o) ; possible cycle root; may collect`, ` br label %done`);
333
- }
334
- rel.push(`done:`, ` ret void`, `}`, ``);
335
- defs.push(...rel);
301
+ const freeBody = [];
302
+ teardown(freeBody);
303
+ defs.push(...releaseBody(host, mangleClassRelease(cls.name), traced, freeBody, `release ${cls.name}`), ``);
336
304
  }
337
305
  // new: zeroed allocation, rc = 1, the vtable word on hierarchy
338
306
  // members, undefined-admitting union fields at the interned unit
@@ -358,7 +326,7 @@ export function emitClassShapes(host, mod, metaMap) {
358
326
  if (isEmitterRooted) {
359
327
  // The ScrEmitter prefix: registry stays NULL (zeroed allocation);
360
328
  // the display name Node's leak warning prints ([My]) is the source
361
- // class name, without the module qualifier (emit-shapes.ts's rule).
329
+ // class name, without the module qualifier (shapes.ts's rule).
362
330
  const displayName = cls.name.includes(".")
363
331
  ? cls.name.slice(cls.name.lastIndexOf(".") + 1)
364
332
  : cls.name;
@@ -416,17 +384,17 @@ export function emitClassObjDefs(host, metaMap, classObjs, fnByName, llType) {
416
384
  for (const [className, { nameSym }] of classObjs) {
417
385
  const meta = metaMap.get(className);
418
386
  if (!meta)
419
- throw new Error(`llvm emitter bug: class object for unknown class ${className}`);
387
+ throw new InternalCompilerError(`llvm emitter bug: class object for unknown class ${className}`);
420
388
  // A generic instantiation's class object carries its FAMILY's interval
421
389
  // (JS has ONE `Box` at runtime); construction still dispatches the
422
390
  // instantiation's own thunk.
423
391
  const intervalMeta = meta.def.genericOf !== undefined ? metaMap.get(meta.def.genericOf) : meta;
424
392
  if (!intervalMeta) {
425
- throw new Error(`llvm emitter bug: class object for ${className} names unknown family ${meta.def.genericOf ?? ""}`);
393
+ throw new InternalCompilerError(`llvm emitter bug: class object for ${className} names unknown family ${meta.def.genericOf ?? ""}`);
426
394
  }
427
395
  const ctor = fnByName.get(`%${className}.constructor`);
428
396
  if (!ctor)
429
- throw new Error(`llvm emitter bug: class object for ${className} without a constructor`);
397
+ throw new InternalCompilerError(`llvm emitter bug: class object for ${className} without a constructor`);
430
398
  const params = ctor.params.slice(1);
431
399
  const paramDecls = params.map((p, i) => `${llType(p.type)} %a${i}`).join(", ");
432
400
  const ctorArgs = params.map((p, i) => `${llType(p.type)} %a${i}`);