@scriptc/compiler 0.4.0 → 0.4.1

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 (433) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +35 -5
  2. package/dist/backend/executable-features.js +7 -0
  3. package/dist/backend/executable-features.js.map +1 -1
  4. package/dist/backend/library-pack.js +3 -0
  5. package/dist/backend/library-pack.js.map +1 -1
  6. package/dist/backend/link-plan-core.d.ts +2 -0
  7. package/dist/backend/link-plan-core.js +2 -0
  8. package/dist/backend/link-plan-core.js.map +1 -1
  9. package/dist/backend/link-plan.d.ts +1 -0
  10. package/dist/backend/link-plan.js +1 -0
  11. package/dist/backend/link-plan.js.map +1 -1
  12. package/dist/backend/llvm/array-search.js +3 -1
  13. package/dist/backend/llvm/array-search.js.map +1 -1
  14. package/dist/backend/llvm/classes.d.ts +27 -1
  15. package/dist/backend/llvm/classes.js +115 -22
  16. package/dist/backend/llvm/classes.js.map +1 -1
  17. package/dist/backend/llvm/classes.test.js +21 -9
  18. package/dist/backend/llvm/classes.test.js.map +1 -1
  19. package/dist/backend/llvm/common.d.ts +21 -3
  20. package/dist/backend/llvm/common.js +50 -3
  21. package/dist/backend/llvm/common.js.map +1 -1
  22. package/dist/backend/llvm/dense-array-access.d.ts +3 -1
  23. package/dist/backend/llvm/dense-array-access.js +61 -38
  24. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  25. package/dist/backend/llvm/dense-array-access.test.js +4 -0
  26. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  27. package/dist/backend/llvm/dense-array-loops.js +3 -3
  28. package/dist/backend/llvm/dense-array-loops.js.map +1 -1
  29. package/dist/backend/llvm/dyn.d.ts +9 -0
  30. package/dist/backend/llvm/dyn.js +62 -6
  31. package/dist/backend/llvm/dyn.js.map +1 -1
  32. package/dist/backend/llvm/emit-function.js +5 -2
  33. package/dist/backend/llvm/emit-function.js.map +1 -1
  34. package/dist/backend/llvm/emit-module.js +54 -32
  35. package/dist/backend/llvm/emit-module.js.map +1 -1
  36. package/dist/backend/llvm/emit-statements.d.ts +3 -2
  37. package/dist/backend/llvm/emit-statements.js +90 -13
  38. package/dist/backend/llvm/emit-statements.js.map +1 -1
  39. package/dist/backend/llvm/emitter.d.ts +20 -9
  40. package/dist/backend/llvm/emitter.js +42 -31
  41. package/dist/backend/llvm/emitter.js.map +1 -1
  42. package/dist/backend/llvm/expr-calls.js +17 -4
  43. package/dist/backend/llvm/expr-calls.js.map +1 -1
  44. package/dist/backend/llvm/expr-containers.js +6 -9
  45. package/dist/backend/llvm/expr-containers.js.map +1 -1
  46. package/dist/backend/llvm/expr-dynamic.js +46 -4
  47. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  48. package/dist/backend/llvm/expr-primitives.js +3 -3
  49. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  50. package/dist/backend/llvm/expr-primitives.test.js +55 -0
  51. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  52. package/dist/backend/llvm/expr-stream-bridges.js +11 -15
  53. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  54. package/dist/backend/llvm/integer-clones.js +3 -3
  55. package/dist/backend/llvm/integer-clones.js.map +1 -1
  56. package/dist/backend/llvm/js-ic.d.ts +18 -0
  57. package/dist/backend/llvm/js-ic.js +712 -0
  58. package/dist/backend/llvm/js-ic.js.map +1 -0
  59. package/dist/backend/llvm/jsval.js +139 -11
  60. package/dist/backend/llvm/jsval.js.map +1 -1
  61. package/dist/backend/llvm/lib-process.js +4 -3
  62. package/dist/backend/llvm/lib-process.js.map +1 -1
  63. package/dist/backend/llvm/lib-shared.js +22 -0
  64. package/dist/backend/llvm/lib-shared.js.map +1 -1
  65. package/dist/backend/llvm/local-array-reads.js +40 -31
  66. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  67. package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
  68. package/dist/backend/llvm/map-number-lookup.js +43 -7
  69. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  70. package/dist/backend/llvm/narrow-guards.js +64 -0
  71. package/dist/backend/llvm/narrow-guards.js.map +1 -1
  72. package/dist/backend/llvm/publish.d.ts +3 -0
  73. package/dist/backend/llvm/publish.js +36 -17
  74. package/dist/backend/llvm/publish.js.map +1 -1
  75. package/dist/backend/llvm/regions.js +2 -2
  76. package/dist/backend/llvm/regions.js.map +1 -1
  77. package/dist/backend/llvm/regions.test.js +7 -1
  78. package/dist/backend/llvm/regions.test.js.map +1 -1
  79. package/dist/backend/llvm/shapes.d.ts +8 -2
  80. package/dist/backend/llvm/shapes.js +9 -7
  81. package/dist/backend/llvm/shapes.js.map +1 -1
  82. package/dist/backend/llvm/speculative-integers.d.ts +20 -1
  83. package/dist/backend/llvm/speculative-integers.js +94 -6
  84. package/dist/backend/llvm/speculative-integers.js.map +1 -1
  85. package/dist/backend/llvm/speculative-integers.test.js +55 -1
  86. package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
  87. package/dist/backend/llvm/string-reads.d.ts +1 -1
  88. package/dist/backend/llvm/string-reads.js +4 -4
  89. package/dist/backend/llvm/string-reads.js.map +1 -1
  90. package/dist/backend/llvm/thread-slots.test.js +5 -4
  91. package/dist/backend/llvm/thread-slots.test.js.map +1 -1
  92. package/dist/backend/mangle.d.ts +5 -0
  93. package/dist/backend/mangle.js +7 -0
  94. package/dist/backend/mangle.js.map +1 -1
  95. package/dist/backend/native/contracts.d.ts +20 -0
  96. package/dist/backend/native/executable.js +20 -3
  97. package/dist/backend/native/executable.js.map +1 -1
  98. package/dist/backend/native/library.js +2 -1
  99. package/dist/backend/native/library.js.map +1 -1
  100. package/dist/backend/native-codegen.d.ts +6 -0
  101. package/dist/backend/native-codegen.js +19 -0
  102. package/dist/backend/native-codegen.js.map +1 -1
  103. package/dist/backend/native-codegen.test.js +27 -0
  104. package/dist/backend/native-codegen.test.js.map +1 -1
  105. package/dist/backend/native-link-info-core.d.ts +18 -0
  106. package/dist/backend/native-link-info-core.js.map +1 -1
  107. package/dist/backend/native-profile.d.ts +32 -0
  108. package/dist/backend/native-profile.js +39 -0
  109. package/dist/backend/native-profile.js.map +1 -0
  110. package/dist/backend/native-profile.test.d.ts +1 -0
  111. package/dist/backend/native-profile.test.js +58 -0
  112. package/dist/backend/native-profile.test.js.map +1 -0
  113. package/dist/backend/native-tools.d.ts +14 -0
  114. package/dist/backend/native-tools.js +13 -0
  115. package/dist/backend/native-tools.js.map +1 -1
  116. package/dist/backend/runtime-abi.d.ts +2 -2
  117. package/dist/backend/runtime-abi.js +2 -2
  118. package/dist/backend/runtime-pack-core.d.ts +4 -0
  119. package/dist/backend/runtime-pack-core.js +4 -0
  120. package/dist/backend/runtime-pack-core.js.map +1 -1
  121. package/dist/backend/runtime-pack-targets.test.js +4 -1
  122. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  123. package/dist/backend/runtime-pack.test.js +4 -1
  124. package/dist/backend/runtime-pack.test.js.map +1 -1
  125. package/dist/backend/target-diagnostics.js +7 -0
  126. package/dist/backend/target-diagnostics.js.map +1 -1
  127. package/dist/backend/warm-cache.js +3 -0
  128. package/dist/backend/warm-cache.js.map +1 -1
  129. package/dist/cli/command.js +63 -1
  130. package/dist/cli/command.js.map +1 -1
  131. package/dist/cli/host.d.ts +3 -0
  132. package/dist/cli/output-options.d.ts +2 -0
  133. package/dist/cli/output-options.js +9 -0
  134. package/dist/cli/output-options.js.map +1 -1
  135. package/dist/cli/usage.d.ts +11 -1
  136. package/dist/cli/usage.js +23 -0
  137. package/dist/cli/usage.js.map +1 -1
  138. package/dist/compile-types.d.ts +9 -0
  139. package/dist/contracts/check.js +1 -2
  140. package/dist/contracts/check.js.map +1 -1
  141. package/dist/executable/executable-cache.d.ts +10 -0
  142. package/dist/executable/executable-cache.js +6 -0
  143. package/dist/executable/executable-cache.js.map +1 -1
  144. package/dist/executable/executable-cache.test.js +5 -0
  145. package/dist/executable/executable-cache.test.js.map +1 -1
  146. package/dist/frontend/arguments-usage.d.ts +8 -0
  147. package/dist/frontend/arguments-usage.js +98 -0
  148. package/dist/frontend/arguments-usage.js.map +1 -1
  149. package/dist/frontend/arguments-usage.test.d.ts +1 -0
  150. package/dist/frontend/arguments-usage.test.js +32 -0
  151. package/dist/frontend/arguments-usage.test.js.map +1 -0
  152. package/dist/frontend/builtin-package-aliases.d.ts +24 -0
  153. package/dist/frontend/builtin-package-aliases.js +133 -0
  154. package/dist/frontend/builtin-package-aliases.js.map +1 -0
  155. package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
  156. package/dist/frontend/builtin-package-aliases.test.js +48 -0
  157. package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
  158. package/dist/frontend/dts-paths.d.ts +4 -0
  159. package/dist/frontend/dts-paths.js +9 -1
  160. package/dist/frontend/dts-paths.js.map +1 -1
  161. package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
  162. package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
  163. package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
  164. package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
  165. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  166. package/dist/frontend/lowering/builtins/crypto.d.ts +3 -0
  167. package/dist/frontend/lowering/builtins/crypto.js +4 -1
  168. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  169. package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
  170. package/dist/frontend/lowering/builtins/ecdh.js +208 -0
  171. package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
  172. package/dist/frontend/lowering/builtins/json.js +52 -0
  173. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  174. package/dist/frontend/lowering/builtins/process.d.ts +9 -0
  175. package/dist/frontend/lowering/builtins/process.js +44 -0
  176. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  177. package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
  178. package/dist/frontend/lowering/builtins/promisify-callback.js +21 -3
  179. package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
  180. package/dist/frontend/lowering/builtins/reflection.js +26 -0
  181. package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
  182. package/dist/frontend/lowering/builtins/timers.js +5 -1
  183. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  184. package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
  185. package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
  186. package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
  187. package/dist/frontend/lowering/call-signatures.d.ts +4 -0
  188. package/dist/frontend/lowering/call-signatures.js +126 -9
  189. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  190. package/dist/frontend/lowering/cjs-exports-object.js +34 -1
  191. package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
  192. package/dist/frontend/lowering/class-dynamic-dispatch.js +9 -1
  193. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  194. package/dist/frontend/lowering/class-protocols.d.ts +10 -0
  195. package/dist/frontend/lowering/class-protocols.js +53 -3
  196. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  197. package/dist/frontend/lowering/class-prototypes.js +6 -1
  198. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  199. package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
  200. package/dist/frontend/lowering/class-to-primitive.js +6 -3
  201. package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
  202. package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
  203. package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
  204. package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
  205. package/dist/frontend/lowering/coercions/function-adapters.js +99 -70
  206. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  207. package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -0
  208. package/dist/frontend/lowering/containers/array-callbacks.js +22 -19
  209. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  210. package/dist/frontend/lowering/containers/array-construction.js +7 -0
  211. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  212. package/dist/frontend/lowering/containers/array-methods.js +5 -0
  213. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  214. package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
  215. package/dist/frontend/lowering/containers/bytes.js +493 -17
  216. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  217. package/dist/frontend/lowering/containers/collection-methods.js +72 -3
  218. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  219. package/dist/frontend/lowering/containers/string-and-regexp.js +49 -13
  220. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  221. package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
  222. package/dist/frontend/lowering/cycle-initialization.js +152 -35
  223. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  224. package/dist/frontend/lowering/expressions/array-literals.js +33 -13
  225. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  226. package/dist/frontend/lowering/expressions/binary.js +79 -5
  227. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  228. package/dist/frontend/lowering/expressions/element-access.js +13 -6
  229. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  230. package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
  231. package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
  232. package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
  233. package/dist/frontend/lowering/expressions/narrowing.js +17 -2
  234. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  235. package/dist/frontend/lowering/expressions/object-literals.js +48 -1
  236. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  237. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  238. package/dist/frontend/lowering/expressions/optional-chains.js +12 -3
  239. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  240. package/dist/frontend/lowering/expressions/property-access.d.ts +5 -0
  241. package/dist/frontend/lowering/expressions/property-access.js +252 -9
  242. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  243. package/dist/frontend/lowering/expressions/relational.js +49 -4
  244. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  245. package/dist/frontend/lowering/expressions/typeof.js +13 -0
  246. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  247. package/dist/frontend/lowering/expressions/updates.js +1 -1
  248. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  249. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  250. package/dist/frontend/lowering/generator-delegation.js +191 -1
  251. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  252. package/dist/frontend/lowering/generic-functions.d.ts +4 -0
  253. package/dist/frontend/lowering/generic-functions.js +213 -56
  254. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  255. package/dist/frontend/lowering/handle-properties.d.ts +24 -0
  256. package/dist/frontend/lowering/handle-properties.js +281 -0
  257. package/dist/frontend/lowering/handle-properties.js.map +1 -0
  258. package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
  259. package/dist/frontend/lowering/iterable-spelling.js +38 -0
  260. package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
  261. package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
  262. package/dist/frontend/lowering/lower-array-sort.js +117 -21
  263. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  264. package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
  265. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  266. package/dist/frontend/lowering/lower-builtin-values.js +1 -0
  267. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  268. package/dist/frontend/lowering/lower-calls.js +166 -7
  269. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  270. package/dist/frontend/lowering/lower-classes.d.ts +4 -0
  271. package/dist/frontend/lowering/lower-classes.js +59 -7
  272. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  273. package/dist/frontend/lowering/lower-dgram.js +62 -13
  274. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  275. package/dist/frontend/lowering/lower-exprs.js +32 -1
  276. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  277. package/dist/frontend/lowering/lower-functions.js +4 -0
  278. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  279. package/dist/frontend/lowering/lower-generators.js +10 -4
  280. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  281. package/dist/frontend/lowering/lower-inspect.js +569 -11
  282. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  283. package/dist/frontend/lowering/lower-modules.d.ts +11 -3
  284. package/dist/frontend/lowering/lower-modules.js +212 -67
  285. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  286. package/dist/frontend/lowering/lower-namespaces.js +20 -0
  287. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  288. package/dist/frontend/lowering/lower-server.js +26 -1
  289. package/dist/frontend/lowering/lower-server.js.map +1 -1
  290. package/dist/frontend/lowering/lower-stdlib.js +28 -9
  291. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  292. package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
  293. package/dist/frontend/lowering/lower-stmts.js +418 -51
  294. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  295. package/dist/frontend/lowering/lower-timers.js +17 -1
  296. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  297. package/dist/frontend/lowering/lowerer.d.ts +29 -5
  298. package/dist/frontend/lowering/lowerer.js +172 -25
  299. package/dist/frontend/lowering/lowerer.js.map +1 -1
  300. package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
  301. package/dist/frontend/lowering/rebindable-functions.js +54 -0
  302. package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
  303. package/dist/frontend/lowering/static-typeof.d.ts +26 -0
  304. package/dist/frontend/lowering/static-typeof.js +133 -0
  305. package/dist/frontend/lowering/static-typeof.js.map +1 -0
  306. package/dist/frontend/lowering/string-index-bounds.js +3 -2
  307. package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
  308. package/dist/frontend/lowering/surfaces.js +30 -4
  309. package/dist/frontend/lowering/surfaces.js.map +1 -1
  310. package/dist/frontend/lowering/thenables.d.ts +16 -0
  311. package/dist/frontend/lowering/thenables.js +124 -0
  312. package/dist/frontend/lowering/thenables.js.map +1 -0
  313. package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
  314. package/dist/frontend/npm-static-builtin-aliases.js +65 -0
  315. package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
  316. package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
  317. package/dist/frontend/npm-static-bundled-chunks.js +173 -2
  318. package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
  319. package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
  320. package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
  321. package/dist/frontend/npm-static-bundled-esm.js +224 -4
  322. package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
  323. package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
  324. package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
  325. package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
  326. package/dist/frontend/npm-static-enum-iife.js +280 -0
  327. package/dist/frontend/npm-static-enum-iife.js.map +1 -0
  328. package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
  329. package/dist/frontend/npm-static-enum-iife.test.js +116 -0
  330. package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
  331. package/dist/frontend/npm-static.d.ts +8 -0
  332. package/dist/frontend/npm-static.js +46 -1
  333. package/dist/frontend/npm-static.js.map +1 -1
  334. package/dist/frontend/npm.js +13 -0
  335. package/dist/frontend/npm.js.map +1 -1
  336. package/dist/frontend/package-shims.d.ts +47 -0
  337. package/dist/frontend/package-shims.js +300 -0
  338. package/dist/frontend/package-shims.js.map +1 -0
  339. package/dist/frontend/pipeline.js +67 -1
  340. package/dist/frontend/pipeline.js.map +1 -1
  341. package/dist/frontend/program.d.ts +8 -0
  342. package/dist/frontend/program.js +72 -9
  343. package/dist/frontend/program.js.map +1 -1
  344. package/dist/frontend/resolve.js +13 -0
  345. package/dist/frontend/resolve.js.map +1 -1
  346. package/dist/frontend/services.d.ts +6 -0
  347. package/dist/frontend/services.js +19 -0
  348. package/dist/frontend/services.js.map +1 -1
  349. package/dist/frontend/ts7/program-host.d.ts +6 -5
  350. package/dist/frontend/ts7/program-host.js +7 -0
  351. package/dist/frontend/ts7/program-host.js.map +1 -1
  352. package/dist/frontend/ts7/semantic-model.d.ts +3 -0
  353. package/dist/frontend/ts7/semantic-model.js +26 -0
  354. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  355. package/dist/frontend/ts7/session.d.ts +19 -4
  356. package/dist/frontend/ts7/session.js.map +1 -1
  357. package/dist/frontend/type-mapper.js +201 -15
  358. package/dist/frontend/type-mapper.js.map +1 -1
  359. package/dist/index.d.ts +1 -0
  360. package/dist/index.js +58 -6
  361. package/dist/index.js.map +1 -1
  362. package/dist/ir/array-length-stability.d.ts +3 -2
  363. package/dist/ir/array-length-stability.js +15 -2
  364. package/dist/ir/array-length-stability.js.map +1 -1
  365. package/dist/ir/array-length-stability.test.js +22 -1
  366. package/dist/ir/array-length-stability.test.js.map +1 -1
  367. package/dist/ir/builtin-effects.js +13 -0
  368. package/dist/ir/builtin-effects.js.map +1 -1
  369. package/dist/ir/builtin-signatures.d.ts +1 -1
  370. package/dist/ir/builtin-signatures.js +46 -4
  371. package/dist/ir/builtin-signatures.js.map +1 -1
  372. package/dist/ir/integer-loop-facts.d.ts +5 -0
  373. package/dist/ir/integer-loop-facts.js +79 -14
  374. package/dist/ir/integer-loop-facts.js.map +1 -1
  375. package/dist/ir/integer-ranges.d.ts +10 -1
  376. package/dist/ir/integer-ranges.js +122 -25
  377. package/dist/ir/integer-ranges.js.map +1 -1
  378. package/dist/ir/integer-ranges.test.js +191 -1
  379. package/dist/ir/integer-ranges.test.js.map +1 -1
  380. package/dist/ir/ir.js +8 -0
  381. package/dist/ir/ir.js.map +1 -1
  382. package/dist/ir/js-ic.d.ts +52 -0
  383. package/dist/ir/js-ic.js +199 -0
  384. package/dist/ir/js-ic.js.map +1 -0
  385. package/dist/ir/js-ic.test.d.ts +1 -0
  386. package/dist/ir/js-ic.test.js +148 -0
  387. package/dist/ir/js-ic.test.js.map +1 -0
  388. package/dist/ir/jsval.js +38 -4
  389. package/dist/ir/jsval.js.map +1 -1
  390. package/dist/ir/runtime-features.d.ts +39 -4
  391. package/dist/ir/runtime-features.js +229 -99
  392. package/dist/ir/runtime-features.js.map +1 -1
  393. package/dist/ir/traverse.js +110 -68
  394. package/dist/ir/traverse.js.map +1 -1
  395. package/dist/ir/validate.js +21 -8
  396. package/dist/ir/validate.js.map +1 -1
  397. package/dist/ir/validate.test.js +15 -2
  398. package/dist/ir/validate.test.js.map +1 -1
  399. package/dist/library/ir-policy.js +1 -0
  400. package/dist/library/ir-policy.js.map +1 -1
  401. package/dist/native/cli.js +17 -0
  402. package/dist/native/cli.js.map +1 -1
  403. package/dist/native/compiler.js +33 -4
  404. package/dist/native/compiler.js.map +1 -1
  405. package/dist/native/executable-cache.js +3 -0
  406. package/dist/native/executable-cache.js.map +1 -1
  407. package/dist/native/prepare.js +3 -0
  408. package/dist/native/prepare.js.map +1 -1
  409. package/dist/native/sanitizer.test.js +7 -0
  410. package/dist/native/sanitizer.test.js.map +1 -1
  411. package/package.json +21 -20
  412. package/shims/fs-extra/core/api.ts +1192 -0
  413. package/shims/fs-extra/index.ts +9 -0
  414. package/shims/undici/core/agent.ts +163 -0
  415. package/shims/undici/core/api.ts +93 -0
  416. package/shims/undici/core/client.ts +1304 -0
  417. package/shims/undici/core/connector.ts +157 -0
  418. package/shims/undici/core/diagnostics-types.ts +68 -0
  419. package/shims/undici/core/diagnostics.ts +16 -0
  420. package/shims/undici/core/dispatcher.ts +574 -0
  421. package/shims/undici/core/errors-v5.ts +22 -0
  422. package/shims/undici/core/errors-v7.ts +25 -0
  423. package/shims/undici/core/errors.ts +255 -0
  424. package/shims/undici/core/fetch.ts +635 -0
  425. package/shims/undici/core/pool.ts +280 -0
  426. package/shims/undici/core/readable.ts +268 -0
  427. package/shims/undici/core/request.ts +313 -0
  428. package/shims/undici/core/timers.ts +80 -0
  429. package/shims/undici/core/types.ts +167 -0
  430. package/shims/undici/core/util.ts +67 -0
  431. package/shims/undici/v5.ts +119 -0
  432. package/shims/undici/v7.ts +119 -0
  433. package/surface-manifest.json +2 -4
@@ -2933,6 +2933,34 @@ declare module "crypto" {
2933
2933
  iv: BinaryLike | null,
2934
2934
  options?: { authTagLength?: number },
2935
2935
  ): Decipheriv;
2936
+ export type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid";
2937
+ export class ECDH {
2938
+ private constructor();
2939
+ static convertKey(
2940
+ key: BinaryLike,
2941
+ curve: string,
2942
+ inputEncoding?: BinaryToTextEncoding,
2943
+ outputEncoding?: "latin1" | "hex" | "base64" | "base64url",
2944
+ format?: ECDHKeyFormat,
2945
+ ): Buffer | string;
2946
+ generateKeys(): Buffer;
2947
+ generateKeys(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string;
2948
+ computeSecret(otherPublicKey: ArrayBufferView): Buffer;
2949
+ computeSecret(otherPublicKey: string, inputEncoding: BinaryToTextEncoding): Buffer;
2950
+ computeSecret(otherPublicKey: ArrayBufferView, outputEncoding: BinaryToTextEncoding): string;
2951
+ computeSecret(
2952
+ otherPublicKey: string,
2953
+ inputEncoding: BinaryToTextEncoding,
2954
+ outputEncoding: BinaryToTextEncoding,
2955
+ ): string;
2956
+ getPrivateKey(): Buffer;
2957
+ getPrivateKey(encoding: BinaryToTextEncoding): string;
2958
+ getPublicKey(encoding?: null, format?: ECDHKeyFormat): Buffer;
2959
+ getPublicKey(encoding: BinaryToTextEncoding, format?: ECDHKeyFormat): string;
2960
+ setPrivateKey(privateKey: ArrayBufferView): void;
2961
+ setPrivateKey(privateKey: string, encoding: BinaryToTextEncoding): void;
2962
+ }
2963
+ export function createECDH(curveName: string): ECDH;
2936
2964
  export interface ScryptOptions {
2937
2965
  N?: number;
2938
2966
  r?: number;
@@ -4940,15 +4968,17 @@ declare module "net" {
4940
4968
  host?: string,
4941
4969
  connectListener?: () => void,
4942
4970
  ): Socket;
4943
- /* The caller-resolver dial (@types/node's net.LookupFunction, narrowed
4944
- * to the lowered shape): the runtime invokes it as Node does and dials
4945
- * the answered addresses in order under autoSelectFamily: true. */
4971
+ /* The caller-resolver dial (@types/node's net.LookupFunction): the
4972
+ * runtime invokes it as Node's autoSelectFamily dial does (options
4973
+ * { hints, all: true }, so the callback answers an address list) and
4974
+ * dials the answered addresses in order. */
4946
4975
  export type LookupFunction = (
4947
4976
  hostname: string,
4948
- options: unknown,
4977
+ options: import("node:dns").LookupOptions,
4949
4978
  callback: (
4950
4979
  err: NodeJS.ErrnoException | null,
4951
- addresses: { address: string; family: number }[],
4980
+ address: string | import("node:dns").LookupAddress[],
4981
+ family?: number,
4952
4982
  ) => void,
4953
4983
  ) => void;
4954
4984
  export function connect(
@@ -25,13 +25,18 @@ export function executableLinkFeatures(mod) {
25
25
  dynAsync: features.dynAsync,
26
26
  ...(features.dynTier ? { dynTier: true } : {}),
27
27
  ...(features.streamDyn ? { streamDyn: true } : {}),
28
+ ...(features.handleProps ? { handleProps: true } : {}),
29
+ ...(features.dynForAwait ? { dynForAwait: true } : {}),
28
30
  ...(features.eventsOnceSignal ? { eventsOnceSignal: true } : {}),
31
+ ...(features.dynBufferNum ? { dynBufferNum: true } : {}),
32
+ ...(features.builtinValues ? { builtinValues: true } : {}),
29
33
  events: features.processEvents,
30
34
  emitter: features.emitter,
31
35
  symbol: features.symbol,
32
36
  bigint: features.bigint,
33
37
  searchParams: features.searchParams,
34
38
  qs: features.qs,
39
+ utilPromisify: features.utilPromisify,
35
40
  dynBuiltinClass: features.dynBuiltinClass,
36
41
  dynBuiltinStream: features.dynBuiltinStream,
37
42
  parseArgs: features.parseArgs,
@@ -41,12 +46,14 @@ export function executableLinkFeatures(mod) {
41
46
  http2: features.http2,
42
47
  dgram: features.dgram,
43
48
  dnsPromises: features.dnsPromises,
49
+ dgramDyn: features.dgramDyn,
44
50
  watch: features.fsWatch,
45
51
  foreignFfi: hasForeignFfiCallback(mod.ffiImports ?? []),
46
52
  nodeTest: features.nodeTest,
47
53
  tls: features.tls,
48
54
  tlsCa: features.tlsCa,
49
55
  cipher: features.cipher,
56
+ ecdh: features.ecdh,
50
57
  webcrypto: features.webcrypto,
51
58
  perfLoop: features.perfLoop,
52
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"executable-features.js","sourceRoot":"","sources":["../../src/backend/executable-features.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executable-features.js","sourceRoot":"","sources":["../../src/backend/executable-features.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ export async function compilePackedLibrary(options, target, wasmExports) {
35
35
  bigint: options.bigint ?? false,
36
36
  searchParams: options.searchParams ?? false,
37
37
  qs: false,
38
+ utilPromisify: false,
38
39
  dynBuiltinClass: false,
39
40
  dynBuiltinStream: false,
40
41
  parseArgs: false,
@@ -44,11 +45,13 @@ export async function compilePackedLibrary(options, target, wasmExports) {
44
45
  http2: false,
45
46
  dgram: false,
46
47
  dnsPromises: false,
48
+ dgramDyn: false,
47
49
  watch: false,
48
50
  foreignFfi: false,
49
51
  nodeTest: false,
50
52
  tls: false,
51
53
  cipher: false,
54
+ ecdh: false,
52
55
  webcrypto: false,
53
56
  perfLoop: false,
54
57
  tlsCa: false,
@@ -1 +1 @@
1
- {"version":3,"file":"library-pack.js","sourceRoot":"","sources":["../../src/backend/library-pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAA0B,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAyB,MAAM,cAAc,CAAC;AAEvF,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhC;6EAC6E;AAC7E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA0B,EAC1B,MAAwB,EACxB,WAA+B;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC;IACvD,MAAM,QAAQ,GAAuB;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;QACrD,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;QAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;QACrC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,EAAE,EAAE,KAAK;QACT,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK;QAC3C,EAAE,EAAE,KAAK;QACT,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,KAAK;QACvB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;KACb,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;QACtC,MAAM;QACN,QAAQ;QACR,YAAY;QACZ,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;KAC7D,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,WAAW,KAAK,SAAS;YAC3B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5C,MAAM,kBAAkB,CAAC;gBACvB,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC3C,UAAU,EAAE,OAAO,CAAC,KAAK;gBACzB,UAAU,EAAE,KAAK;gBACjB,YAAY,EAAE,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBAChD,MAAM;aACP,CAAC,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,oBAAoB,CAAC;gBACzB,MAAM;gBACN,UAAU,EAAE,OAAO,CAAC,OAAO;gBAC3B,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC;gBACrE,eAAe,EAAE,SAAS,CAAC,eAAe;gBAC1C,WAAW,EAAE;oBACX,SAAS;oBACT,MAAM,CAAC,kBAAkB;oBACzB,sBAAsB;oBACtB,GAAG,gCAAgC,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;oBAClE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC;iBACrD;gBACD,eAAe,EAAE,SAAS,CAAC,eAAe;gBAC1C,yBAAyB,EAAE,EAAE;gBAC7B,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,MAAM,GAAa;gBACvB,IAAI,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;gBACzD,MAAM,EACJ,MAAM,CAAC,aAAa,KAAK,OAAO;oBAChC,MAAM,CAAC,QAAQ,KAAK,OAAO;oBAC3B,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC5B,MAAM,CAAC,YAAY,KAAK,OAAO,CAAC,IAAI;oBAClC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,MAAM,CAAC,UAAU;gBACvB,SAAS,EAAE,MAAM,CAAC,kBAAkB;gBACpC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC;gBAClD,QAAQ,EAAE,EAAE;aACb,CAAC;YACF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,KAAK,EAAE,MAAc,EAAE,IAAY,EAAmB,EAAE;gBACnE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACxC,MAAM,kBAAkB,CAAC;oBACvB,UAAU;oBACV,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,OAAO,CAAC,KAAK;oBACzB,UAAU,EAAE,KAAK;oBACjB,YAAY,EAAE,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;oBAChD,MAAM;iBACP,CAAC,CAAC;gBACH,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC;YACF,IAAI,OAAe,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBAC5F,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,oEAAoE;gBACpE,uDAAuD;gBACvD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;oBACtD,OAAO,CAAC,IAAI,CACV,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CACnB,MAAM;yBACH,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;yBACvB,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,CAC3E,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,OAAO,GAAG,MAAM,sBAAsB,CACpC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,EAAE,EACF,OAAO,CAAC,oBAAoB,EAC5B,IAAI,EACJ,MAAM,CAAC,QAAQ,CAChB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,MAAM,IAAI,CAClB,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAChE,GAAG,IAAI,IAAI,CACZ,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;YACxB,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;YACtF,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM;qBACzB,IAAI,EAAE;qBACN,KAAK,CAAC,OAAO,CAAC;qBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,kBAAkB,CAAC,CAAC;gBACxF,IACE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;oBACpC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxD,CAAC;oBACD,MAAM,IAAI,gBAAgB,CACxB,gEAAgE,EAChE,SAAS,CACV,CAAC;gBACJ,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;gBACpD,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1F,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,OAAO,GACX,OAAO,CAAC,eAAe,KAAK,SAAS;gBACnC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;gBACxB,CAAC,CAAC;oBACE,MAAM,sBAAsB,CAC1B,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,CAAC,eAAe,EACvB,GAAG,IAAI,UAAU,EACjB,MAAM,CAAC,QAAQ,CAChB;iBACF,CAAC;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5C,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE;gBAC1E,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;aAC3C,CAAC,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,YAAY,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"library-pack.js","sourceRoot":"","sources":["../../src/backend/library-pack.ts"],"names":[],"mappings":"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"}
@@ -20,4 +20,6 @@ export declare function executableLinkInputs(options: {
20
20
  optimization: NativeOptimization;
21
21
  strip?: boolean;
22
22
  windowsSubsystem?: WindowsSubsystem;
23
+ /** Instrumented for profile-guided optimization. */
24
+ profileGenerate?: boolean;
23
25
  }): ExecutableLinkInputs;
@@ -1,4 +1,5 @@
1
1
  import { executableOptimizationLinkerArgs, executableStripLinkerArgs, windowsSubsystemLinkerArgs, } from "./targets.js";
2
+ import { profileGenerateLinkerArgs } from "./native-profile.js";
2
3
  export function executableLinkInputs(options) {
3
4
  if (options.ffiFrameworks.length !== 0 && options.target.platform !== "darwin")
4
5
  throw new Error("FFI frameworks require a Darwin target");
@@ -32,6 +33,7 @@ export function executableLinkInputs(options) {
32
33
  ...executableOptimizationLinkerArgs(options.target.platform, options.optimization),
33
34
  ...executableStripLinkerArgs(options.target.platform, options.strip ?? false),
34
35
  ...windowsSubsystemLinkerArgs(options.target.platform, options.windowsSubsystem),
36
+ ...profileGenerateLinkerArgs(options.profileGenerate ?? false),
35
37
  ],
36
38
  };
37
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"link-plan-core.js","sourceRoot":"","sources":["../../src/backend/link-plan-core.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,cAAc,CAAC;AAQtB,MAAM,UAAU,oBAAoB,CAAC,OAcpC;IACC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAC5E,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,OAAO;QACL,uEAAuE;QACvE,wEAAwE;QACxE,kEAAkE;QAClE,sEAAsE;QACtE,+DAA+D;QAC/D,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,6CAA6C;QAC7C,MAAM,EAAE;YACN,GAAG,OAAO,CAAC,cAAc;YACzB,GAAG,OAAO,CAAC,eAAe;YAC1B,OAAO,CAAC,aAAa;YACrB,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;YACpC,GAAG,OAAO,CAAC,YAAY;YACvB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;gBAC3E,CAAC,CAAC,OAAO,CAAC,eAAe;gBACzB,CAAC,CAAC,EAAE,CAAC;SACR;QACD,eAAe,EAAE;YACf,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;SAC/E;QACD,WAAW,EAAE;YACX,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAChE,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC9D,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CACrF;YACD,GAAG,gCAAgC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC;YAClF,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;YAC7E,GAAG,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC;SACjF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"link-plan-core.js","sourceRoot":"","sources":["../../src/backend/link-plan-core.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAQhE,MAAM,UAAU,oBAAoB,CAAC,OAgBpC;IACC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAC5E,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,OAAO;QACL,uEAAuE;QACvE,wEAAwE;QACxE,kEAAkE;QAClE,sEAAsE;QACtE,+DAA+D;QAC/D,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,6CAA6C;QAC7C,MAAM,EAAE;YACN,GAAG,OAAO,CAAC,cAAc;YACzB,GAAG,OAAO,CAAC,eAAe;YAC1B,OAAO,CAAC,aAAa;YACrB,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;YACpC,GAAG,OAAO,CAAC,YAAY;YACvB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;gBAC3E,CAAC,CAAC,OAAO,CAAC,eAAe;gBACzB,CAAC,CAAC,EAAE,CAAC;SACR;QACD,eAAe,EAAE;YACf,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;SAC/E;QACD,WAAW,EAAE;YACX,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAChE,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC9D,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CACrF;YACD,GAAG,gCAAgC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC;YAClF,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;YAC7E,GAAG,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC;YAChF,GAAG,yBAAyB,CAAC,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;SAC/D;KACF,CAAC;AACJ,CAAC"}
@@ -36,6 +36,7 @@ export declare function createNativeLinkPlan(options: {
36
36
  optimization: NativeOptimization;
37
37
  strip?: boolean;
38
38
  windowsSubsystem?: WindowsSubsystem;
39
+ profileGenerate?: boolean;
39
40
  programObjectDependencies?: readonly NativeArtifactDependency[];
40
41
  env?: NodeJS.ProcessEnv;
41
42
  resolver?: (specifier: string) => string;
@@ -26,6 +26,7 @@ export async function createNativeLinkPlan(options) {
26
26
  ...(options.windowsSubsystem === undefined
27
27
  ? {}
28
28
  : { windowsSubsystem: options.windowsSubsystem }),
29
+ ...(options.profileGenerate === true ? { profileGenerate: true } : {}),
29
30
  }),
30
31
  dependencyPaths: [...runtimePack.dependencyPaths, ...(options.ffi?.libraries ?? [])],
31
32
  programObjectDependencies: [...(options.programObjectDependencies ?? [])],
@@ -1 +1 @@
1
- {"version":3,"file":"link-plan.js","sourceRoot":"","sources":["../../src/backend/link-plan.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAA6B,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAkB3D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAa1C;IACC,IAAI,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QACzE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,kBAAkB,EAAE,uBAAuB,CACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,EACvB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,KAAK,CACd;QACD,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,GAAG,oBAAoB,CAAC;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACrD,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE;YAC1C,kBAAkB,EAAE,OAAO,CAAC,GAAG,EAAE,eAAe,IAAI,EAAE;YACtD,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE;YAC5C,cAAc,EAAE,WAAW,CAAC,cAAc;YAC1C,eAAe,EAAE,WAAW,CAAC,QAAQ;YACrC,sBAAsB,EAAE,WAAW,CAAC,eAAe;YACnD,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;SACpD,CAAC;QACF,eAAe,EAAE,CAAC,GAAG,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;QACpF,yBAAyB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACzE,WAAW;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"link-plan.js","sourceRoot":"","sources":["../../src/backend/link-plan.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAA6B,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAkB3D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAc1C;IACC,IAAI,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QACzE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,kBAAkB,EAAE,uBAAuB,CACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,EACvB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,KAAK,CACd;QACD,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,GAAG,oBAAoB,CAAC;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACrD,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE;YAC1C,kBAAkB,EAAE,OAAO,CAAC,GAAG,EAAE,eAAe,IAAI,EAAE;YACtD,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE;YAC5C,cAAc,EAAE,WAAW,CAAC,cAAc;YAC1C,eAAe,EAAE,WAAW,CAAC,QAAQ;YACrC,sBAAsB,EAAE,WAAW,CAAC,eAAe;YACnD,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnD,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC;QACF,eAAe,EAAE,CAAC,GAAG,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;QACpF,yBAAyB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACzE,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -25,7 +25,9 @@ export function emitArraySearchHelpers(kinds, sz, declare) {
25
25
  for (const kind of [...kinds].sort()) {
26
26
  declare("declare double @scr_arr_index_of_ref(ptr, ptr)");
27
27
  const widen = sz === "i64" ? " %f = zext i32 %f32 to i64" : " %f = add i32 %f32, 0";
28
- defs.push(`define internal double @${arraySearchHelperName(kind)}(ptr %a, ptr %v) ${FN_ATTRS} {`, `entry:`, ` %lenp = getelementptr inbounds %ScrArr, ptr %a, i32 0, i32 1`, ` %len = load ${sz}, ptr %lenp${sz === "i64" ? ", !range !{i64 0, i64 4294967296}" : ""}`, ` %fp = getelementptr inbounds %ScrArr, ptr %a, i32 0, i32 6`, ` %f32 = load i32, ptr %fp`, widen, ` %dense = icmp eq ${sz} %f, %len`, ` br i1 %dense, label %scan, label %slow`, `scan:`, ` %dp = getelementptr inbounds %ScrArr, ptr %a, i32 0, i32 8`, ` %data = load ptr, ptr %dp`);
28
+ defs.push(`define internal double @${arraySearchHelperName(kind)}(ptr %a, ptr %v) ${FN_ATTRS} {`, `entry:`, ` %lenp = getelementptr inbounds %ScrArr, ptr %a, i32 0, i32 1`, ...(sz === "i64"
29
+ ? [` %len32 = load i32, ptr %lenp`, ` %len = zext i32 %len32 to i64`]
30
+ : [` %len = load i32, ptr %lenp`]), ` %fp = getelementptr inbounds %ScrArr, ptr %a, i32 0, i32 6`, ` %f32 = load i32, ptr %fp`, widen, ` %dense = icmp eq ${sz} %f, %len`, ` br i1 %dense, label %scan, label %slow`, `scan:`, ` %dp = getelementptr inbounds %ScrArr, ptr %a, i32 0, i32 8`, ` %data = load ptr, ptr %dp`);
29
31
  if (kind === "ptr") {
30
32
  defs.push(` %needle = ptrtoint ptr %v to i64`,
31
33
  // Four slots per step with one branch, then one at a time.
@@ -1 +1 @@
1
- {"version":3,"file":"array-search.js","sourceRoot":"","sources":["../../../src/backend/llvm/array-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array-search.js","sourceRoot":"","sources":["../../../src/backend/llvm/array-search.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,12 @@ export declare class LlClassMeta {
35
35
  * member's struct carries the i32 slot word before its fields
36
36
  * (classSlotWordIndex). */
37
37
  threadSlot: boolean;
38
+ /** A member of a program-rooted hierarchy on a 64-bit target: instead of
39
+ * a vtable word, the rc word holds the class id (classIdRcWord) in its
40
+ * high 32 bits (CLASS_ID_OFFSET) and the reference count in its low 32
41
+ * bits, and the hierarchy's vtables are one array indexed by the id
42
+ * (mangleVtArray). */
43
+ idInRc: boolean;
38
44
  constructor(def: IrClassDef);
39
45
  }
40
46
  /** The class graph: link base/children, number the forest in preorder
@@ -43,7 +49,7 @@ export declare class LlClassMeta {
43
49
  * slots — a class's method gets a slot iff no ancestor declares it AND some
44
50
  * strict descendant redeclares it (whole-program devirtualization).
45
51
  * The preorder intervals also identify runtime class membership. */
46
- export declare function buildClassGraph(mod: IrModule, fnByName: Map<string, IrFunction>): Map<string, LlClassMeta>;
52
+ export declare function buildClassGraph(mod: IrModule, fnByName: Map<string, IrFunction>, sizeType?: "i32" | "i64"): Map<string, LlClassMeta>;
47
53
  /** Family identity may span several concrete base subtrees. Keep those
48
54
  * ranges separate from the physical layout graph used by virtual calls. */
49
55
  export declare function classMembershipIntervals(classes: ReadonlyMap<string, LlClassMeta>, targetName: string): {
@@ -120,6 +126,26 @@ export declare function programLifetimeClass(host: ClassHost, meta: LlClassMeta)
120
126
  * count away from 0, 1 and SIZE_MAX would do; the midpoint keeps even an
121
127
  * unpaired generic retain or release from ever reaching either end. */
122
128
  export declare function programLifetimeRc(sizeType: "i32" | "i64"): string;
129
+ /** Lines that load the preorder number of the dynamic class of `obj`, an
130
+ * instance of `meta`'s hierarchy whose struct is `struct`, into `pre` (a
131
+ * `sizeType`): from the high half of the rc word (LlClassMeta.idInRc), or
132
+ * from the vtable its vtable word points at. */
133
+ export declare function classPreLines(meta: LlClassMeta, struct: string, obj: string, pre: string, sizeType: "i32" | "i64"): string[];
134
+ /** Lines that load the class id of the LlClassMeta.idInRc instance `obj`
135
+ * (`group` adds !invariant.group to the load) and point `vt` at its class's
136
+ * element of the hierarchy's vtable array. */
137
+ export declare function classIdVtLines(meta: LlClassMeta, obj: string, vt: string, group: string): string[];
138
+ /** The byte offset of the class id in the rc word of an instance that
139
+ * keeps it there (LlClassMeta.idInRc): the high half of the little-endian
140
+ * 64-bit word. The count is the i32 at offset 0. */
141
+ export declare const CLASS_ID_OFFSET = 4;
142
+ /** The rc word an LlClassMeta.idInRc instance is created with: the class
143
+ * id, its preorder number plus 1, in the high 32 bits, and in the low 32 bits
144
+ * a count of 1, or for a program-lifetime instance the midpoint of the 32-bit
145
+ * count (as programLifetimeRc is of the 32-bit word). The id is never 0,
146
+ * 0x80000000 or 0xffffffff, the high halves of other objects' rc words, so
147
+ * the runtime can tell an object with a class id (scr_rc.h scr_rc_class_id). */
148
+ export declare function classIdRcWord(meta: LlClassMeta, lifetime: boolean): string;
123
149
  /** Per-class LLVM emission for every non-runtime class: the struct types
124
150
  * (`typeDefs`), the vtable struct types + per-class constant instances,
125
151
  * and the new/retain/release (+releaseDirect for hierarchy members,
@@ -1,7 +1,7 @@
1
1
  import { InternalCompilerError } from "../../errors.js";
2
2
  import { isRefCounted, RUNTIME_EMITTER_CLASS, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, classValueConstructor, } from "../../ir/ir.js";
3
3
  import { streamRooted, undefinedArmTag } from "../../ir/analysis.js";
4
- import { mangleClassGcFree, mangleClassNew, mangleClassObj, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleFunction, mangleGlobal, mangleVtInstance, mangleVtStruct, } from "../mangle.js";
4
+ import { mangleClassGcFree, mangleClassNew, mangleClassObj, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleFunction, mangleGlobal, mangleVtArray, mangleVtInstance, mangleVtStruct, } from "../mangle.js";
5
5
  import { cycTypeDescriptor, emitObjectAlloc, emitObjectFree } from "./alloc.js";
6
6
  import { llvmCommentText } from "./common.js";
7
7
  import { NullableRefFields } from "./nullable-fields.js";
@@ -24,6 +24,12 @@ export class LlClassMeta {
24
24
  * member's struct carries the i32 slot word before its fields
25
25
  * (classSlotWordIndex). */
26
26
  threadSlot = false;
27
+ /** A member of a program-rooted hierarchy on a 64-bit target: instead of
28
+ * a vtable word, the rc word holds the class id (classIdRcWord) in its
29
+ * high 32 bits (CLASS_ID_OFFSET) and the reference count in its low 32
30
+ * bits, and the hierarchy's vtables are one array indexed by the id
31
+ * (mangleVtArray). */
32
+ idInRc = false;
27
33
  constructor(def) {
28
34
  this.def = def;
29
35
  this.root = this;
@@ -35,7 +41,7 @@ export class LlClassMeta {
35
41
  * slots — a class's method gets a slot iff no ancestor declares it AND some
36
42
  * strict descendant redeclares it (whole-program devirtualization).
37
43
  * The preorder intervals also identify runtime class membership. */
38
- export function buildClassGraph(mod, fnByName) {
44
+ export function buildClassGraph(mod, fnByName, sizeType = "i64") {
39
45
  const metaMap = new Map();
40
46
  for (const cls of mod.classes ?? []) {
41
47
  const meta = new LlClassMeta(cls);
@@ -64,6 +70,11 @@ export function buildClassGraph(mod, fnByName) {
64
70
  number(meta, meta);
65
71
  meta.hierarchy = meta.base !== null || meta.children.length > 0;
66
72
  }
73
+ // The runtime reads the vtable word of runtime-rooted hierarchies (Error,
74
+ // EventEmitter, EventTarget, Event and the streams) and 32-bit targets
75
+ // have no spare half in the rc word: those keep the vtable word.
76
+ for (const meta of metaMap.values())
77
+ meta.idInRc = sizeType === "i64" && meta.hierarchy && meta.root.def.runtime !== true;
67
78
  const slotRoots = new Set();
68
79
  for (const key of mod.threadSlotKeys ?? []) {
69
80
  const meta = metaMap.get(key);
@@ -243,11 +254,12 @@ function runtimePrefixOf(meta) {
243
254
  return RUNTIME_PREFIXES.get(meta.root.def.name) ?? null;
244
255
  }
245
256
  /** The GEP index after a class's header words: rc at 0, the vtable word
246
- * at 1 on hierarchy members, then a runtime prefix (state + display name)
257
+ * at 1 on hierarchy members that do not keep their class id in the rc
258
+ * word (LlClassMeta.idInRc), then a runtime prefix (state + display name)
247
259
  * on classes rooted at a runtime base, then the stream-state slot on
248
260
  * stream-rooted ones. */
249
261
  function headerEnd(meta) {
250
- if (!meta.hierarchy)
262
+ if (!meta.hierarchy || meta.idInRc)
251
263
  return 1;
252
264
  if (streamRooted(meta))
253
265
  return 5;
@@ -322,6 +334,54 @@ export function programLifetimeClass(host, meta) {
322
334
  export function programLifetimeRc(sizeType) {
323
335
  return sizeType === "i32" ? "-2147483648" : "-9223372036854775808";
324
336
  }
337
+ /** Lines that load the preorder number of the dynamic class of `obj`, an
338
+ * instance of `meta`'s hierarchy whose struct is `struct`, into `pre` (a
339
+ * `sizeType`): from the high half of the rc word (LlClassMeta.idInRc), or
340
+ * from the vtable its vtable word points at. */
341
+ export function classPreLines(meta, struct, obj, pre, sizeType) {
342
+ if (meta.idInRc)
343
+ return [
344
+ ` ${pre}.idp = getelementptr inbounds i8, ptr ${obj}, i64 ${CLASS_ID_OFFSET}`,
345
+ ` ${pre}.id = load i32, ptr ${pre}.idp`,
346
+ ` ${pre}.n = add i32 ${pre}.id, -1 ; the class id is the preorder number + 1`,
347
+ ` ${pre} = zext i32 ${pre}.n to ${sizeType}`,
348
+ ];
349
+ return [
350
+ ` ${pre}.vtp = getelementptr inbounds %${struct}, ptr ${obj}, i64 0, i32 1`,
351
+ ` ${pre}.vt = load ptr, ptr ${pre}.vtp`,
352
+ ` ${pre}.prep = getelementptr inbounds %ScrVt, ptr ${pre}.vt, i64 0, i32 0`,
353
+ ` ${pre} = load ${sizeType}, ptr ${pre}.prep`,
354
+ ];
355
+ }
356
+ /** Lines that load the class id of the LlClassMeta.idInRc instance `obj`
357
+ * (`group` adds !invariant.group to the load) and point `vt` at its class's
358
+ * element of the hierarchy's vtable array. */
359
+ export function classIdVtLines(meta, obj, vt, group) {
360
+ const t = `${vt}.`;
361
+ const root = meta.root;
362
+ const vtt = `%${mangleVtStruct(root.def.name)}`;
363
+ const n = root.post - root.pre + 1;
364
+ return [
365
+ ` ${t}idp = getelementptr inbounds i8, ptr ${obj}, i64 ${CLASS_ID_OFFSET}`,
366
+ ` ${t}id = load i32, ptr ${t}idp${group}`,
367
+ ` ${t}ix = sub i32 ${t}id, ${root.pre + 1}`,
368
+ ` ${t}ix64 = zext i32 ${t}ix to i64`,
369
+ ` ${vt} = getelementptr inbounds [${n} x ${vtt}], ptr @${mangleVtArray(root.def.name)}, i64 0, i64 ${t}ix64`,
370
+ ];
371
+ }
372
+ /** The byte offset of the class id in the rc word of an instance that
373
+ * keeps it there (LlClassMeta.idInRc): the high half of the little-endian
374
+ * 64-bit word. The count is the i32 at offset 0. */
375
+ export const CLASS_ID_OFFSET = 4;
376
+ /** The rc word an LlClassMeta.idInRc instance is created with: the class
377
+ * id, its preorder number plus 1, in the high 32 bits, and in the low 32 bits
378
+ * a count of 1, or for a program-lifetime instance the midpoint of the 32-bit
379
+ * count (as programLifetimeRc is of the 32-bit word). The id is never 0,
380
+ * 0x80000000 or 0xffffffff, the high halves of other objects' rc words, so
381
+ * the runtime can tell an object with a class id (scr_rc.h scr_rc_class_id). */
382
+ export function classIdRcWord(meta, lifetime) {
383
+ return (BigInt(meta.pre + 1) * 2n ** 32n + (lifetime ? 2n ** 31n : 1n)).toString();
384
+ }
325
385
  function undefFieldInits(host, meta, nullable) {
326
386
  const out = [];
327
387
  meta.def.fields.forEach((f, i) => {
@@ -383,7 +443,7 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
383
443
  // ScrEmitter* / ScrStream* / ScrEventTargetObj* / ScrEventObj* are the
384
444
  // usual pointer reinterprets.
385
445
  const runtimePrefix = runtimePrefixOf(meta);
386
- const prefix = meta.hierarchy
446
+ const prefix = meta.hierarchy && !meta.idInRc
387
447
  ? streamRooted(meta)
388
448
  ? ["ptr", "ptr", "ptr", "ptr"]
389
449
  : runtimePrefix
@@ -392,7 +452,7 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
392
452
  : [];
393
453
  const members = [...prefix, ...(meta.threadSlot ? ["i32"] : []), ...fieldTys];
394
454
  typeDefs.push(`%${mangleClassStruct(cls.name)} = type { ${host.sizeType}${members.length ? ", " + members.join(", ") : ""} } ` +
395
- `; class ${cls.name}${meta.hierarchy ? " (vt at 1)" : ""}${streamRooted(meta) ? " (ScrStream prefix at 2)" : runtimePrefix ? ` (${runtimePrefix.struct} prefix at 2)` : ""} { ${cls.fields.map((f) => llvmCommentText(f.name)).join("; ")} }`);
455
+ `; class ${cls.name}${meta.idInRc ? " (class id in rc)" : meta.hierarchy ? " (vt at 1)" : ""}${streamRooted(meta) ? " (ScrStream prefix at 2)" : runtimePrefix ? ` (${runtimePrefix.struct} prefix at 2)` : ""} { ${cls.fields.map((f) => llvmCommentText(f.name)).join("; ")} }`);
396
456
  }
397
457
  // Vtable struct types, one per ROOT of the emitted hierarchy classes (a
398
458
  // runtime root — %Error — counts exactly when an emitted subclass needs
@@ -413,16 +473,32 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
413
473
  // One constant vtable instance per emitted hierarchy class: interval,
414
474
  // direct release, and the class's dispatch entry for every slot — the
415
475
  // method functions THEMSELVES (no adapters; see the header comment).
416
- for (const cls of emitted) {
417
- const meta = metaMap.get(cls.name);
418
- if (!meta.hierarchy)
419
- continue;
476
+ const vtInit = (meta) => {
420
477
  const entries = vtEntriesFor(meta).map(({ slot, impl }) => impl === null
421
478
  ? `ptr null` // outside the declaring subtree / fully-abstract chain
422
479
  : `ptr @${host.virtualEntry?.(`%${impl.def.name}.${slot.method}`) ?? mangleFunction(`%${impl.def.name}.${slot.method}`)}`);
423
- const head = `%ScrVt { ${host.sizeType} ${meta.pre}, ${host.sizeType} ${meta.post}, ptr @${mangleClassReleaseDirect(cls.name)} }`;
480
+ const head = `%ScrVt { ${host.sizeType} ${meta.pre}, ${host.sizeType} ${meta.post}, ptr @${mangleClassReleaseDirect(meta.def.name)} }`;
481
+ return `{ ${[head, ...entries].join(", ")} }`;
482
+ };
483
+ for (const cls of emitted) {
484
+ const meta = metaMap.get(cls.name);
485
+ if (!meta.hierarchy || meta.idInRc)
486
+ continue;
424
487
  defs.push(`@${mangleVtInstance(cls.name)} = internal constant %${mangleVtStruct(meta.root.def.name)} ` +
425
- `{ ${[head, ...entries].join(", ")} } ; class ${cls.name}`, ``);
488
+ `${vtInit(meta)} ; class ${cls.name}`, ``);
489
+ }
490
+ // A hierarchy whose instances keep their class id in the rc word has
491
+ // one array of its classes' vtables, in preorder: the vtable of an
492
+ // instance is the element at its number minus the root's.
493
+ for (const name of roots) {
494
+ const root = metaMap.get(name);
495
+ if (!root.idInRc)
496
+ continue;
497
+ const members = [...metaMap.values()]
498
+ .filter((m) => m.root === root)
499
+ .sort((a, b) => a.pre - b.pre);
500
+ const vtt = `%${mangleVtStruct(root.def.name)}`;
501
+ defs.push(`@${mangleVtArray(root.def.name)} = internal constant [${members.length} x ${vtt}] [`, ...members.map((m, i) => ` ${vtt} ${vtInit(m)}${i + 1 < members.length ? "," : ""} ; class ${m.def.name}`), `]`, ``);
426
502
  }
427
503
  // Classes with an out-of-line teardown (a bounded release) whose instances
428
504
  // are all of that exact class can be torn down directly by a parent's
@@ -454,6 +530,7 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
454
530
  release: `@${release}`,
455
531
  destroy: `${teardown}_destroy`,
456
532
  traced: host.tracedShapes.has(`object:${cls.name}`),
533
+ ...(meta.idInRc ? { count: "i32" } : {}),
457
534
  },
458
535
  ]);
459
536
  }
@@ -496,7 +573,10 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
496
573
  const stCall = (tag, entry, tail) => prefixCall(tag, 4, entry, tail, "stream state (ScrStream prefix)");
497
574
  // retain: NULL-tolerant, immortal-skip — layout-generic (rc at 0), so
498
575
  // hierarchy members need no dispatch.
499
- defs.push(...retainBody(host, mangleClassRetain(cls.name), `retain ${cls.name}`, lifetime), ``);
576
+ // An instance that keeps its class id in the rc word counts in the
577
+ // low half (CLASS_ID_OFFSET).
578
+ const count = meta.idInRc ? "i32" : host.sizeType;
579
+ defs.push(...retainBody(host, mangleClassRetain(cls.name), `retain ${cls.name}`, lifetime, count), ``);
500
580
  // An out-of-line teardown tears typed children down directly
501
581
  // (directChildReleaseLines). It takes the chain length when it has such
502
582
  // children or is itself a direct target.
@@ -537,17 +617,22 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
537
617
  ? `${mangleClassRelease(cls.name)}_slow`
538
618
  : mangleClassRelease(cls.name);
539
619
  if (userRooted)
540
- defs.push(...releaseFastPath(host, mangleClassRelease(cls.name), dispatchName, traced, `release ${cls.name}`, lifetime), ``);
541
- defs.push(`define internal void @${dispatchName}(ptr %o) ${userRooted ? "noinline " : ""}${FN_ATTRS} { ; release ${cls.name} (dispatches)`, `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 %disp`, `disp:`, ` %vtp = getelementptr inbounds %${struct}, ptr %o, i64 0, i32 1`, ` %vt = load ptr, ptr %vtp`, ` %relp = getelementptr inbounds %ScrVt, ptr %vt, i64 0, i32 2`, ` %rel = load ptr, ptr %relp`, ` call void %rel(ptr %o) ; the DYNAMIC class's teardown`, ` br label %done`, `done:`, ` ret void`, `}`, ``);
620
+ defs.push(...releaseFastPath(host, mangleClassRelease(cls.name), dispatchName, traced, `release ${cls.name}`, lifetime, count), ``);
621
+ defs.push(`define internal void @${dispatchName}(ptr %o) ${userRooted ? "noinline " : ""}${FN_ATTRS} { ; release ${cls.name} (dispatches)`, `entry:`, ` %isnull = icmp eq ptr %o, null`, ` br i1 %isnull, label %done, label %check`, `check:`, ` %rc = load ${count}, ptr %o`, ` %imm = icmp eq ${count} %rc, -1`, ` br i1 %imm, label %done, label %disp`, `disp:`, ...(meta.idInRc
622
+ ? classIdVtLines(meta, "%o", "%vt", "")
623
+ : [
624
+ ` %vtp = getelementptr inbounds %${struct}, ptr %o, i64 0, i32 1`,
625
+ ` %vt = load ptr, ptr %vtp`,
626
+ ]), ` %relp = getelementptr inbounds %ScrVt, ptr %vt, i64 0, i32 2`, ` %rel = load ptr, ptr %relp`, ` call void %rel(ptr %o) ; the DYNAMIC class's teardown`, ` br label %done`, `done:`, ` ret void`, `}`, ``);
542
627
  // Direct release (the vtable entry): the class's own teardown. The
543
628
  // caller already handled NULL/immortal.
544
629
  const reld = [
545
630
  `define internal void @${mangleClassReleaseDirect(cls.name)}(ptr %o) ${FN_ATTRS} { ; direct release ${cls.name}`,
546
631
  `entry:`,
547
- ` %rc = load ${host.sizeType}, ptr %o`,
548
- ` %n = sub ${host.sizeType} %rc, 1`,
549
- ` store ${host.sizeType} %n, ptr %o`,
550
- ` %dead = icmp eq ${host.sizeType} %n, 0`,
632
+ ` %rc = load ${count}, ptr %o`,
633
+ ` %n = sub ${count} %rc, 1`,
634
+ ` store ${count} %n, ptr %o`,
635
+ ` %dead = icmp eq ${count} %n, 0`,
551
636
  ` br i1 %dead, label %free, label %${traced ? "root" : "done"}`,
552
637
  `free:`,
553
638
  ];
@@ -596,8 +681,16 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
596
681
  defs.push(...regions.classDefinitions(cls, sizeOf));
597
682
  }
598
683
  else
599
- nw.push(...emitObjectAlloc(host, sizeOf, traced && !lifetime ? { type: cycType } : null, meta.hierarchy ? 16 : 8));
600
- nw.push(` store ${host.sizeType} ${lifetime ? programLifetimeRc(host.sizeType) : 1}, ptr %o`);
684
+ nw.push(...emitObjectAlloc(host, sizeOf, traced && !lifetime ? { type: cycType } : null, meta.hierarchy && !meta.idInRc ? 16 : 8));
685
+ if (meta.idInRc) {
686
+ // The class id in the high half of the rc word, the count in the low
687
+ // half (classIdRcWord). It never changes while the object lives:
688
+ // retains, releases and the runtime write only the low half.
689
+ host.declare(`declare ptr @llvm.launder.invariant.group.p0(ptr)`);
690
+ nw.push(` %o.vt = call ptr @llvm.launder.invariant.group.p0(ptr %o)`, ` store i64 ${classIdRcWord(meta, lifetime)}, ptr %o.vt ; class ${llvmCommentText(cls.name)} is ${meta.pre}`);
691
+ }
692
+ else
693
+ nw.push(` store ${host.sizeType} ${lifetime ? programLifetimeRc(host.sizeType) : 1}, ptr %o`);
601
694
  if (lifetime && audit) {
602
695
  // --sanitize builds: the RC audit skips its leak report when the
603
696
  // program keeps program-lifetime objects (scr_console.c), and
@@ -605,7 +698,7 @@ export function emitClassShapes(host, mod, metaMap, nullable, int32) {
605
698
  host.declare(`declare void @scr_obj_lifetime_note(ptr)`);
606
699
  nw.push(` call void @scr_obj_lifetime_note(ptr %o)`);
607
700
  }
608
- if (meta.hierarchy) {
701
+ if (meta.hierarchy && !meta.idInRc) {
609
702
  // The vtable word is written once, here, and never changes while the
610
703
  // object lives: its store and the virtual-call loads carry
611
704
  // !invariant.group. A recycled block may have held an object of