@scriptc/compiler 0.3.1 → 0.3.2

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 (280) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +342 -16
  2. package/dist/backend/executable-features.js +1 -0
  3. package/dist/backend/executable-features.js.map +1 -1
  4. package/dist/backend/literals.d.ts +7 -0
  5. package/dist/backend/literals.js +32 -0
  6. package/dist/backend/literals.js.map +1 -1
  7. package/dist/backend/literals.test.js +17 -1
  8. package/dist/backend/literals.test.js.map +1 -1
  9. package/dist/backend/llvm/alloc.d.ts +15 -4
  10. package/dist/backend/llvm/alloc.js +39 -15
  11. package/dist/backend/llvm/alloc.js.map +1 -1
  12. package/dist/backend/llvm/alloc.test.js +15 -1
  13. package/dist/backend/llvm/alloc.test.js.map +1 -1
  14. package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
  15. package/dist/backend/llvm/appended-array-literals.js +109 -0
  16. package/dist/backend/llvm/appended-array-literals.js.map +1 -0
  17. package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
  18. package/dist/backend/llvm/appended-array-literals.test.js +90 -0
  19. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
  20. package/dist/backend/llvm/call-lifetimes.d.ts +4 -1
  21. package/dist/backend/llvm/call-lifetimes.js +51 -3
  22. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  23. package/dist/backend/llvm/classes.js +10 -2
  24. package/dist/backend/llvm/classes.js.map +1 -1
  25. package/dist/backend/llvm/classes.test.js +2 -2
  26. package/dist/backend/llvm/dense-array-access.js +17 -12
  27. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  28. package/dist/backend/llvm/dense-array-access.test.js +15 -2
  29. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  30. package/dist/backend/llvm/dyn.d.ts +2 -0
  31. package/dist/backend/llvm/dyn.js +11 -2
  32. package/dist/backend/llvm/dyn.js.map +1 -1
  33. package/dist/backend/llvm/emitter.d.ts +43 -2
  34. package/dist/backend/llvm/emitter.js +306 -32
  35. package/dist/backend/llvm/emitter.js.map +1 -1
  36. package/dist/backend/llvm/expr-async.js +122 -6
  37. package/dist/backend/llvm/expr-async.js.map +1 -1
  38. package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
  39. package/dist/backend/llvm/expr-callbacks.js +81 -1
  40. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  41. package/dist/backend/llvm/expr-calls.d.ts +12 -1
  42. package/dist/backend/llvm/expr-calls.js +126 -54
  43. package/dist/backend/llvm/expr-calls.js.map +1 -1
  44. package/dist/backend/llvm/expr-containers.d.ts +7 -0
  45. package/dist/backend/llvm/expr-containers.js +38 -7
  46. package/dist/backend/llvm/expr-containers.js.map +1 -1
  47. package/dist/backend/llvm/expr-context.d.ts +2 -0
  48. package/dist/backend/llvm/expr-control.d.ts +8 -0
  49. package/dist/backend/llvm/expr-control.js +103 -69
  50. package/dist/backend/llvm/expr-control.js.map +1 -1
  51. package/dist/backend/llvm/expr-dynamic.js +2 -2
  52. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  53. package/dist/backend/llvm/expr-primitives.d.ts +7 -0
  54. package/dist/backend/llvm/expr-primitives.js +30 -26
  55. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  56. package/dist/backend/llvm/expr-records.js +11 -1
  57. package/dist/backend/llvm/expr-records.js.map +1 -1
  58. package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
  59. package/dist/backend/llvm/expr-stream-bridges.js +77 -8
  60. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  61. package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
  62. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  63. package/dist/backend/llvm/int32-abi.d.ts +18 -2
  64. package/dist/backend/llvm/int32-abi.js +23 -2
  65. package/dist/backend/llvm/int32-abi.js.map +1 -1
  66. package/dist/backend/llvm/int32-abi.test.js +75 -1
  67. package/dist/backend/llvm/int32-abi.test.js.map +1 -1
  68. package/dist/backend/llvm/lib-dispatch.js +7 -0
  69. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  70. package/dist/backend/llvm/lib-filesystem.js +58 -0
  71. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  72. package/dist/backend/llvm/lib-shared.js +76 -9
  73. package/dist/backend/llvm/lib-shared.js.map +1 -1
  74. package/dist/backend/llvm/local-array-reads.js +5 -3
  75. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  76. package/dist/backend/llvm/local-union-storage.d.ts +24 -2
  77. package/dist/backend/llvm/local-union-storage.js +127 -12
  78. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  79. package/dist/backend/llvm/local-union-storage.test.js +106 -1
  80. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  81. package/dist/backend/llvm/record-results.d.ts +26 -0
  82. package/dist/backend/llvm/record-results.js +252 -0
  83. package/dist/backend/llvm/record-results.js.map +1 -0
  84. package/dist/backend/llvm/reference-effects.js +2 -0
  85. package/dist/backend/llvm/reference-effects.js.map +1 -1
  86. package/dist/backend/llvm/reference-writes.js +15 -9
  87. package/dist/backend/llvm/reference-writes.js.map +1 -1
  88. package/dist/backend/llvm/regions.d.ts +67 -0
  89. package/dist/backend/llvm/regions.js +309 -0
  90. package/dist/backend/llvm/regions.js.map +1 -0
  91. package/dist/backend/llvm/regions.test.d.ts +1 -0
  92. package/dist/backend/llvm/regions.test.js +173 -0
  93. package/dist/backend/llvm/regions.test.js.map +1 -0
  94. package/dist/backend/llvm/shapes.d.ts +34 -7
  95. package/dist/backend/llvm/shapes.js +31 -16
  96. package/dist/backend/llvm/shapes.js.map +1 -1
  97. package/dist/backend/llvm/shapes.test.js +7 -6
  98. package/dist/backend/llvm/shapes.test.js.map +1 -1
  99. package/dist/backend/llvm/split-loops.js +1 -1
  100. package/dist/backend/llvm/split-loops.js.map +1 -1
  101. package/dist/backend/llvm/stack-objects.d.ts +29 -0
  102. package/dist/backend/llvm/stack-objects.js +130 -0
  103. package/dist/backend/llvm/stack-objects.js.map +1 -0
  104. package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
  105. package/dist/backend/llvm/stack-objects.test.js +252 -0
  106. package/dist/backend/llvm/stack-objects.test.js.map +1 -0
  107. package/dist/backend/llvm/string-reads.d.ts +4 -1
  108. package/dist/backend/llvm/string-reads.js +89 -9
  109. package/dist/backend/llvm/string-reads.js.map +1 -1
  110. package/dist/backend/llvm/switch-dispatch.js +5 -4
  111. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  112. package/dist/backend/llvm/walkers.d.ts +2 -0
  113. package/dist/backend/llvm/walkers.js +4 -2
  114. package/dist/backend/llvm/walkers.js.map +1 -1
  115. package/dist/backend/may-throw.js +1 -0
  116. package/dist/backend/may-throw.js.map +1 -1
  117. package/dist/backend/native/contracts.d.ts +5 -0
  118. package/dist/backend/native/executable.js +16 -1
  119. package/dist/backend/native/executable.js.map +1 -1
  120. package/dist/backend/native/library.js +1 -1
  121. package/dist/backend/native/library.js.map +1 -1
  122. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  123. package/dist/backend/native/runtime-inputs.js +2 -0
  124. package/dist/backend/native/runtime-inputs.js.map +1 -1
  125. package/dist/backend/native-link-info-core.d.ts +1 -0
  126. package/dist/backend/native-link-info-core.js.map +1 -1
  127. package/dist/backend/runtime-abi.d.ts +2 -2
  128. package/dist/backend/runtime-abi.js +2 -2
  129. package/dist/backend/runtime-pack-core.d.ts +1 -0
  130. package/dist/backend/runtime-pack-core.js +1 -0
  131. package/dist/backend/runtime-pack-core.js.map +1 -1
  132. package/dist/backend/runtime-pack-targets.test.js +1 -1
  133. package/dist/backend/runtime-pack.test.js +1 -1
  134. package/dist/backend/target-diagnostics.js +14 -0
  135. package/dist/backend/target-diagnostics.js.map +1 -1
  136. package/dist/backend/target-diagnostics.test.js +13 -0
  137. package/dist/backend/target-diagnostics.test.js.map +1 -1
  138. package/dist/executable/executable-cache.d.ts +1 -0
  139. package/dist/executable/executable-cache.js.map +1 -1
  140. package/dist/frontend/experimental-import.d.ts +12 -0
  141. package/dist/frontend/experimental-import.js +63 -0
  142. package/dist/frontend/experimental-import.js.map +1 -0
  143. package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
  144. package/dist/frontend/lowering/builtin-calls.js +36 -0
  145. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  146. package/dist/frontend/lowering/builtins/console.d.ts +16 -6
  147. package/dist/frontend/lowering/builtins/console.js +33 -9
  148. package/dist/frontend/lowering/builtins/console.js.map +1 -1
  149. package/dist/frontend/lowering/builtins/errors.js +20 -0
  150. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  151. package/dist/frontend/lowering/builtins/json.d.ts +2 -2
  152. package/dist/frontend/lowering/builtins/json.js +13 -4
  153. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  154. package/dist/frontend/lowering/builtins/module-calls.js +16 -1
  155. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  156. package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
  157. package/dist/frontend/lowering/builtins/numbers.js +17 -0
  158. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  159. package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
  160. package/dist/frontend/lowering/builtins/operating-system.js +361 -1
  161. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  162. package/dist/frontend/lowering/builtins/process.js +15 -3
  163. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  164. package/dist/frontend/lowering/builtins/promises.js +109 -2
  165. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  166. package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
  167. package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
  168. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  169. package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
  170. package/dist/frontend/lowering/checked-promise-all.js +52 -6
  171. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  172. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -3
  173. package/dist/frontend/lowering/class-dynamic-dispatch.js +54 -31
  174. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  175. package/dist/frontend/lowering/containers/array-callbacks.js +34 -4
  176. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  177. package/dist/frontend/lowering/containers/array-construction.js +8 -4
  178. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  179. package/dist/frontend/lowering/containers/array-pipelines.js +1 -1
  180. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  181. package/dist/frontend/lowering/containers/string-and-regexp.js +91 -0
  182. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  183. package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
  184. package/dist/frontend/lowering/cycle-initialization.js +166 -12
  185. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  186. package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
  187. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  188. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  189. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  190. package/dist/frontend/lowering/expressions/object-literals.js +5 -56
  191. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  192. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  193. package/dist/frontend/lowering/generator-delegation.js +231 -10
  194. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  195. package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
  196. package/dist/frontend/lowering/lifetime-regions.js +216 -0
  197. package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
  198. package/dist/frontend/lowering/lower-array-sort.d.ts +28 -2
  199. package/dist/frontend/lowering/lower-array-sort.js +100 -3
  200. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  201. package/dist/frontend/lowering/lower-array-sort.test.js +99 -2
  202. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  203. package/dist/frontend/lowering/lower-calls.js +72 -102
  204. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  205. package/dist/frontend/lowering/lower-classes.d.ts +4 -3
  206. package/dist/frontend/lowering/lower-classes.js +116 -2
  207. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  208. package/dist/frontend/lowering/lower-console.d.ts +13 -0
  209. package/dist/frontend/lowering/lower-console.js +460 -4
  210. package/dist/frontend/lowering/lower-console.js.map +1 -1
  211. package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
  212. package/dist/frontend/lowering/lower-event-emitter.js +124 -38
  213. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  214. package/dist/frontend/lowering/lower-exprs.js +137 -22
  215. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  216. package/dist/frontend/lowering/lower-generators.d.ts +15 -7
  217. package/dist/frontend/lowering/lower-generators.js +183 -99
  218. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  219. package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
  220. package/dist/frontend/lowering/lower-inspect.js +119 -18
  221. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  222. package/dist/frontend/lowering/lower-modules.js +20 -14
  223. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  224. package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
  225. package/dist/frontend/lowering/lower-stdlib.js +35 -1
  226. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  227. package/dist/frontend/lowering/lower-stmts.js +66 -11
  228. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  229. package/dist/frontend/lowering/lowerer.d.ts +22 -1
  230. package/dist/frontend/lowering/lowerer.js +116 -8
  231. package/dist/frontend/lowering/lowerer.js.map +1 -1
  232. package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
  233. package/dist/frontend/lowering/regex-span-reads.js +164 -0
  234. package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
  235. package/dist/frontend/lowering/surfaces.js +112 -10
  236. package/dist/frontend/lowering/surfaces.js.map +1 -1
  237. package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
  238. package/dist/frontend/lowering/var-hoisting.js +261 -0
  239. package/dist/frontend/lowering/var-hoisting.js.map +1 -0
  240. package/dist/frontend/pipeline.js +5 -3
  241. package/dist/frontend/pipeline.js.map +1 -1
  242. package/dist/frontend/program.d.ts +3 -2
  243. package/dist/frontend/program.js +23 -5
  244. package/dist/frontend/program.js.map +1 -1
  245. package/dist/frontend/program.test.js +13 -0
  246. package/dist/frontend/program.test.js.map +1 -1
  247. package/dist/frontend/type-mapper.d.ts +13 -1
  248. package/dist/frontend/type-mapper.js +146 -13
  249. package/dist/frontend/type-mapper.js.map +1 -1
  250. package/dist/index.js +1 -0
  251. package/dist/index.js.map +1 -1
  252. package/dist/ir/builtin-effects.js +29 -2
  253. package/dist/ir/builtin-effects.js.map +1 -1
  254. package/dist/ir/builtin-signatures.d.ts +1 -1
  255. package/dist/ir/builtin-signatures.js +145 -15
  256. package/dist/ir/builtin-signatures.js.map +1 -1
  257. package/dist/ir/function-references.test.js +1 -0
  258. package/dist/ir/function-references.test.js.map +1 -1
  259. package/dist/ir/int32-slots.js +1 -0
  260. package/dist/ir/int32-slots.js.map +1 -1
  261. package/dist/ir/intrinsic-signatures.js +2 -0
  262. package/dist/ir/intrinsic-signatures.js.map +1 -1
  263. package/dist/ir/ir.d.ts +65 -20
  264. package/dist/ir/ir.js +5 -0
  265. package/dist/ir/ir.js.map +1 -1
  266. package/dist/ir/runtime-features.d.ts +1 -0
  267. package/dist/ir/runtime-features.js +35 -1
  268. package/dist/ir/runtime-features.js.map +1 -1
  269. package/dist/ir/scalar-records.js +1 -2
  270. package/dist/ir/scalar-records.js.map +1 -1
  271. package/dist/ir/validate.js +150 -25
  272. package/dist/ir/validate.js.map +1 -1
  273. package/dist/ir/validate.test.js +65 -0
  274. package/dist/ir/validate.test.js.map +1 -1
  275. package/dist/library/ir-policy.js +1 -0
  276. package/dist/library/ir-policy.js.map +1 -1
  277. package/dist/native/sanitizer.test.js +1 -0
  278. package/dist/native/sanitizer.test.js.map +1 -1
  279. package/package.json +20 -20
  280. package/surface-manifest.json +159 -1
@@ -1 +1 @@
1
- {"version":3,"file":"reference-writes.js","sourceRoot":"","sources":["../../../src/backend/llvm/reference-writes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference-writes.js","sourceRoot":"","sources":["../../../src/backend/llvm/reference-writes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { IrClassDef, IrModule, IrUnionDef } from "../../ir/ir.js";
2
+ import type { LlClassMeta } from "./classes.js";
3
+ import type { NullableRefFields } from "./nullable-fields.js";
4
+ import { type ShapeHost } from "./shapes.js";
5
+ /** The type table's symbol (scr_region_create's argument). */
6
+ export declare const REGION_TYPES = "@sc_rgn_types";
7
+ export interface RegionHost extends ShapeHost {
8
+ readonly unionsById: ReadonlyMap<string, IrUnionDef>;
9
+ cstr(text: string): string;
10
+ }
11
+ /** Region emission for one module, created only when it uses regions. */
12
+ export declare class LifetimeRegions {
13
+ private readonly host;
14
+ private readonly mod;
15
+ private readonly metaMap;
16
+ private readonly lifetime;
17
+ private readonly nullable;
18
+ /** class/record key → whether its instances can reach a ProgramLifetime instance. */
19
+ private readonly reach;
20
+ constructor(host: RegionHost, mod: IrModule, metaMap: ReadonlyMap<string, LlClassMeta>, lifetime: (meta: LlClassMeta) => boolean, nullable: NullableRefFields | undefined);
21
+ private tag;
22
+ private get chunkMask();
23
+ /** Whether `className` is a ProgramLifetime class. */
24
+ private isLifetime;
25
+ private classFields;
26
+ /** Can a value of type `t` hold (or own something that holds) a
27
+ * reference to a ProgramLifetime instance the walk can explain? */
28
+ private reaches;
29
+ /** The least fixpoint of `reach` over the module's classes and records.
30
+ * A class's own walker reports its (flattened) fields, so it is emitted
31
+ * when one of them reaches (`own:`); a field of a hierarchy type holds
32
+ * any class of its subtree, so the type reaches when any of them does.
33
+ * Runtime-rooted classes keep runtime state the walk does not know, so
34
+ * they are never walked. */
35
+ private computeReach;
36
+ private subtree;
37
+ private cursor;
38
+ private descriptor;
39
+ /** A class's own-fields walker and the walker of its type. */
40
+ private ownWalker;
41
+ private classWalker;
42
+ /** The chunk base of `obj` into `%<p>.cp` (a pointer to its count word). */
43
+ private chunkLines;
44
+ private countType;
45
+ /** `new`'s allocation for a ProgramLifetime class: the zeroed instance in
46
+ * `%o`. Its first reference needs no count: the runtime counts one per
47
+ * object a chunk holds. */
48
+ allocLines(className: string, sizeOf: string): string[];
49
+ /** The retain (`add`) or release (`sub`) body of a ProgramLifetime class:
50
+ * the count of the chunk holding the instance. Nothing is counted before
51
+ * the process creates its first region (scr_region_counting), and only
52
+ * chunks of freeable regions have an owner: the default regions' objects
53
+ * are never freed, so their references need no count. Worker executables
54
+ * count only their own chunks; a published instance other threads read
55
+ * is never counted by them. */
56
+ countBody(fnName: string, ret: "ptr" | "void", comment: string): string[];
57
+ /** One field's report to the walk (none when it cannot reach a
58
+ * ProgramLifetime instance). */
59
+ private reportLines;
60
+ private reportBody;
61
+ /** The cursor, descriptor, visit and fields-release of a ProgramLifetime
62
+ * class. */
63
+ classDefs(cls: IrClassDef, sizeOf: string): string[];
64
+ /** The walkers of the ordinary classes and records that can reach a
65
+ * ProgramLifetime instance, and the type table. */
66
+ moduleDefs(): string[];
67
+ }
@@ -0,0 +1,309 @@
1
+ import { isRefCounted } from "../../ir/ir.js";
2
+ import { mangleClassRelease, mangleClassStruct, mangleRecordRelease, mangleRecordStruct, } from "../mangle.js";
3
+ import { threadHotAddressLines } from "./alloc.js";
4
+ import { llvmCommentText } from "./common.js";
5
+ import { FN_ATTRS, rcMembers, releaseSym, vAdapters } from "./shapes.js";
6
+ /** log2 of SCR_RGN_CHUNK (scr_runtime.h). */
7
+ const CHUNK_SHIFT = 21;
8
+ /** The type table's symbol (scr_region_create's argument). */
9
+ export const REGION_TYPES = "@sc_rgn_types";
10
+ /** Region emission for one module, created only when it uses regions. */
11
+ export class LifetimeRegions {
12
+ host;
13
+ mod;
14
+ metaMap;
15
+ lifetime;
16
+ nullable;
17
+ /** class/record key → whether its instances can reach a ProgramLifetime instance. */
18
+ reach = new Map();
19
+ constructor(host, mod, metaMap, lifetime, nullable) {
20
+ this.host = host;
21
+ this.mod = mod;
22
+ this.metaMap = metaMap;
23
+ this.lifetime = lifetime;
24
+ this.nullable = nullable;
25
+ this.computeReach();
26
+ }
27
+ tag(word) {
28
+ return this.host.regionAliasTag?.(word) ?? "";
29
+ }
30
+ get chunkMask() {
31
+ return String((1 << CHUNK_SHIFT) - 1);
32
+ }
33
+ /** Whether `className` is a ProgramLifetime class. */
34
+ isLifetime(className) {
35
+ const meta = this.metaMap.get(className);
36
+ return meta !== undefined && this.lifetime(meta);
37
+ }
38
+ classFields(def, meta) {
39
+ const base = meta.hierarchy ? 2 : 1;
40
+ return def.fields.map((f, i) => ({
41
+ name: f.name,
42
+ type: this.nullable?.storageType(def.name, f.name, f.type) ?? f.type,
43
+ index: base + i,
44
+ }));
45
+ }
46
+ /** Can a value of type `t` hold (or own something that holds) a
47
+ * reference to a ProgramLifetime instance the walk can explain? */
48
+ reaches(t) {
49
+ const arm = this.host.nullableUnions.of(t)?.arm;
50
+ if (arm !== undefined)
51
+ return this.reaches(arm);
52
+ switch (t.kind) {
53
+ case "object":
54
+ return this.isLifetime(t.className) || this.reach.get(`object:${t.className}`) === true;
55
+ case "record":
56
+ return this.reach.get(`record:${t.shapeId}`) === true;
57
+ case "array":
58
+ case "set":
59
+ return this.reaches(t.elem);
60
+ case "map":
61
+ return this.reaches(t.key) || this.reaches(t.value);
62
+ case "union": {
63
+ const def = this.host.unionsById.get(t.unionId);
64
+ return def !== undefined && def.arms.some((a) => this.reaches(a));
65
+ }
66
+ // Closures capture anything, and dyn values box class instances.
67
+ case "func":
68
+ case "dyn":
69
+ return true;
70
+ default:
71
+ return false;
72
+ }
73
+ }
74
+ /** The least fixpoint of `reach` over the module's classes and records.
75
+ * A class's own walker reports its (flattened) fields, so it is emitted
76
+ * when one of them reaches (`own:`); a field of a hierarchy type holds
77
+ * any class of its subtree, so the type reaches when any of them does.
78
+ * Runtime-rooted classes keep runtime state the walk does not know, so
79
+ * they are never walked. */
80
+ computeReach() {
81
+ const classes = (this.mod.classes ?? []).filter((c) => !c.runtime);
82
+ for (let changed = true; changed;) {
83
+ changed = false;
84
+ const set = (key, value) => {
85
+ if (value && this.reach.get(key) !== true) {
86
+ this.reach.set(key, true);
87
+ changed = true;
88
+ }
89
+ };
90
+ for (const shape of this.mod.records ?? [])
91
+ set(`record:${shape.id}`, rcMembers(shape).some((m) => this.reaches(m.type)));
92
+ for (const c of classes) {
93
+ const meta = this.metaMap.get(c.name);
94
+ if (this.lifetime(meta) || meta.root.def.runtime === true)
95
+ continue;
96
+ set(`own:${c.name}`, this.classFields(c, meta).some((f) => this.reaches(f.type)));
97
+ }
98
+ for (const c of classes) {
99
+ const meta = this.metaMap.get(c.name);
100
+ if (this.lifetime(meta) || meta.root.def.runtime === true)
101
+ continue;
102
+ set(`object:${c.name}`, this.subtree(meta).some((m) => this.reach.get(`own:${m.def.name}`) === true));
103
+ }
104
+ }
105
+ }
106
+ subtree(meta) {
107
+ if (!meta.hierarchy)
108
+ return [meta];
109
+ return [...this.metaMap.values()]
110
+ .filter((m) => m.pre >= meta.pre && m.pre <= meta.post && m.def.runtime !== true)
111
+ .sort((a, b) => a.pre - b.pre);
112
+ }
113
+ cursor(className) {
114
+ return `@${mangleClassStruct(className)}.rcur`;
115
+ }
116
+ descriptor(className) {
117
+ return `@${mangleClassStruct(className)}.rcls`;
118
+ }
119
+ /** A class's own-fields walker and the walker of its type. */
120
+ ownWalker(className) {
121
+ return `@${mangleClassStruct(className)}.rown`;
122
+ }
123
+ classWalker(className) {
124
+ return `@${mangleClassStruct(className)}.rwalk`;
125
+ }
126
+ /** The chunk base of `obj` into `%<p>.cp` (a pointer to its count word). */
127
+ chunkLines(p, obj) {
128
+ const S = this.host.sizeType;
129
+ return [
130
+ ` %${p}.i = ptrtoint ptr ${obj} to ${S}`,
131
+ ` %${p}.off = and ${S} %${p}.i, ${this.chunkMask}`,
132
+ ` %${p}.neg = sub ${S} 0, %${p}.off`,
133
+ ` %${p}.cp = getelementptr i8, ptr ${obj}, ${S} %${p}.neg`,
134
+ ];
135
+ }
136
+ countType() {
137
+ return "i64";
138
+ }
139
+ /** `new`'s allocation for a ProgramLifetime class: the zeroed instance in
140
+ * `%o`. Its first reference needs no count: the runtime counts one per
141
+ * object a chunk holds. */
142
+ allocLines(className, sizeOf) {
143
+ const S = this.host.sizeType;
144
+ const cur = this.cursor(className);
145
+ const tag = this.tag("cursor");
146
+ this.host.declare(`declare ptr @scr_region_alloc(ptr, ptr)`);
147
+ this.host.declare(`declare i1 @llvm.expect.i1(i1, i1)`);
148
+ return [
149
+ ` %rgn.sz7 = add ${S} ${sizeOf}, 7`,
150
+ ` %rgn.sz = and ${S} %rgn.sz7, -8`,
151
+ ` %rgn.lp = getelementptr inbounds { ptr, ptr }, ptr ${cur}, i32 0, i32 1`,
152
+ ` %rgn.p = load ptr, ptr ${cur}${tag}`,
153
+ ` %rgn.l = load ptr, ptr %rgn.lp${tag}`,
154
+ ` %rgn.np = getelementptr i8, ptr %rgn.p, ${S} %rgn.sz`,
155
+ ` %rgn.fit0 = icmp ule ptr %rgn.np, %rgn.l`,
156
+ ` %rgn.fit = call i1 @llvm.expect.i1(i1 %rgn.fit0, i1 true)`,
157
+ ` br i1 %rgn.fit, label %rgn.fast, label %rgn.slow`,
158
+ `rgn.fast:`,
159
+ ` store ptr %rgn.np, ptr ${cur}${tag}`,
160
+ ` br label %rgn.done`,
161
+ `rgn.slow:`,
162
+ ` %rgn.s = call ptr @scr_region_alloc(ptr ${cur}, ptr ${this.descriptor(className)})`,
163
+ ` br label %rgn.done`,
164
+ `rgn.done:`,
165
+ ` %o = phi ptr [ %rgn.p, %rgn.fast ], [ %rgn.s, %rgn.slow ]`,
166
+ ];
167
+ }
168
+ /** The retain (`add`) or release (`sub`) body of a ProgramLifetime class:
169
+ * the count of the chunk holding the instance. Nothing is counted before
170
+ * the process creates its first region (scr_region_counting), and only
171
+ * chunks of freeable regions have an owner: the default regions' objects
172
+ * are never freed, so their references need no count. Worker executables
173
+ * count only their own chunks; a published instance other threads read
174
+ * is never counted by them. */
175
+ countBody(fnName, ret, comment) {
176
+ const count = this.tag("count");
177
+ const workers = this.host.threadLocalAlloc === true;
178
+ this.host.declare(`@scr_region_counting = external global i8`);
179
+ // Worker threads set and read the flag concurrently: an unordered
180
+ // atomic load, which LLVM may still hoist like a plain one.
181
+ const flag = workers
182
+ ? `load atomic i8, ptr @scr_region_counting unordered, align 1`
183
+ : `load i8, ptr @scr_region_counting`;
184
+ const lines = [
185
+ `define internal ${ret} @${fnName}(ptr %o) ${FN_ATTRS} {${comment ? ` ; ${comment} (region count)` : ""}`,
186
+ `entry:`,
187
+ ` %on = ${flag}${this.tag("counting")}`,
188
+ ` %idle = icmp eq i8 %on, 0`,
189
+ ` %isnull = icmp eq ptr %o, null`,
190
+ ` %skip = or i1 %idle, %isnull`,
191
+ ` br i1 %skip, label %done, label %chunk`,
192
+ `chunk:`,
193
+ ...this.chunkLines("c", "%o"),
194
+ ...(workers ? threadHotAddressLines(this.host, "%self") : []),
195
+ ` %ownp = getelementptr inbounds i8, ptr %c.cp, i64 8`,
196
+ ` %owner = load ptr, ptr %ownp${this.tag("owner")}`,
197
+ workers ? ` %mine = icmp eq ptr %owner, %self` : ` %mine = icmp ne ptr %owner, null`,
198
+ ` br i1 %mine, label %count, label %done`,
199
+ `count:`,
200
+ ` %n = load ${this.countType()}, ptr %c.cp${count}`,
201
+ ` %n1 = ${ret === "ptr" ? "add" : "sub"} ${this.countType()} %n, 1`,
202
+ ` store ${this.countType()} %n1, ptr %c.cp${count}`,
203
+ ` br label %done`,
204
+ `done:`,
205
+ ret === "ptr" ? ` ret ptr %o` : ` ret void`,
206
+ `}`,
207
+ ];
208
+ return lines;
209
+ }
210
+ /** One field's report to the walk (none when it cannot reach a
211
+ * ProgramLifetime instance). */
212
+ reportLines(struct, f, i) {
213
+ if (!isRefCounted(f.type) || !this.reaches(f.type))
214
+ return [];
215
+ const arm = this.host.nullableUnions.of(f.type)?.arm ?? f.type;
216
+ const load = [
217
+ ` %f${i} = getelementptr inbounds %${struct}, ptr %o, i64 0, i32 ${f.index}`,
218
+ ` %v${i} = load ptr, ptr %f${i}`,
219
+ ];
220
+ if (arm.kind === "object" && this.isLifetime(arm.className)) {
221
+ this.host.declare(`declare void @scr_region_ref(ptr, ptr)`);
222
+ return [
223
+ ...load,
224
+ ` call void @scr_region_ref(ptr %w, ptr %v${i}) ; ${llvmCommentText(f.name)}`,
225
+ ];
226
+ }
227
+ this.host.declare(`declare void @scr_region_slot(ptr, ptr, ptr)`);
228
+ return [
229
+ ...load,
230
+ ` call void @scr_region_slot(ptr %w, ptr %v${i}, ptr ${vAdapters(this.host, f.type).release}) ; ${llvmCommentText(f.name)}`,
231
+ ];
232
+ }
233
+ reportBody(head, struct, fields) {
234
+ const lines = [head, `entry:`];
235
+ fields.forEach((f, i) => lines.push(...this.reportLines(struct, f, i)));
236
+ lines.push(` ret void`, `}`, ``);
237
+ return lines;
238
+ }
239
+ /** The cursor, descriptor, visit and fields-release of a ProgramLifetime
240
+ * class. */
241
+ classDefs(cls, sizeOf) {
242
+ const meta = this.metaMap.get(cls.name);
243
+ const struct = mangleClassStruct(cls.name);
244
+ const fields = this.classFields(cls, meta);
245
+ const visit = `@${struct}.rvisit`;
246
+ const release = `@${struct}.rrelease`;
247
+ const tl = this.host.threadLocalAlloc === true ? "thread_local " : "";
248
+ const rel = [
249
+ `define internal void ${release}(ptr %o) ${FN_ATTRS} { ; region fields release ${llvmCommentText(cls.name)}`,
250
+ `entry:`,
251
+ ];
252
+ fields
253
+ .filter((f) => isRefCounted(f.type))
254
+ .forEach((f, i) => rel.push(` %f${i} = getelementptr inbounds %${struct}, ptr %o, i64 0, i32 ${f.index}`, ` %v${i} = load ptr, ptr %f${i}`, ` call void ${releaseSym(this.host, f.type)}(ptr %v${i}) ; ${llvmCommentText(f.name)}`));
255
+ rel.push(` ret void`, `}`, ``);
256
+ const S = this.host.sizeType;
257
+ return [
258
+ `${this.cursor(cls.name)} = internal ${tl}global { ptr, ptr } zeroinitializer`,
259
+ `${this.descriptor(cls.name)} = internal global { ${S}, ptr, ptr, ptr, i32 } { ${S} ${sizeOf}, ptr ${visit}, ptr ${release}, ptr ${this.host.cstr(cls.name.replace(/^%(m\d+\.)?/, ""))}, i32 -1 } ; region class ${llvmCommentText(cls.name)}`,
260
+ ...this.reportBody(`define internal void ${visit}(ptr %o, ptr %w) ${FN_ATTRS} { ; region visit ${llvmCommentText(cls.name)}`, struct, fields),
261
+ ...rel,
262
+ ];
263
+ }
264
+ /** The walkers of the ordinary classes and records that can reach a
265
+ * ProgramLifetime instance, and the type table. */
266
+ moduleDefs() {
267
+ const out = [];
268
+ const rows = [];
269
+ const classes = (this.mod.classes ?? []).filter((c) => c.runtime !== true);
270
+ for (const cls of classes) {
271
+ if (this.reach.get(`own:${cls.name}`) !== true)
272
+ continue;
273
+ out.push(...this.reportBody(`define internal void ${this.ownWalker(cls.name)}(ptr %o, ptr %w) ${FN_ATTRS} { ; region walk ${llvmCommentText(cls.name)}`, mangleClassStruct(cls.name), this.classFields(cls, this.metaMap.get(cls.name))));
274
+ }
275
+ for (const cls of classes) {
276
+ const meta = this.metaMap.get(cls.name);
277
+ if (this.lifetime(meta)) {
278
+ rows.push(`{ ptr, ptr } { ptr @${mangleClassRelease(cls.name)}, ptr null }`);
279
+ continue;
280
+ }
281
+ if (this.reach.get(`object:${cls.name}`) !== true)
282
+ continue;
283
+ let walk = this.ownWalker(cls.name);
284
+ if (meta.hierarchy) {
285
+ // A field of this type holds any class of its subtree.
286
+ const S = this.host.sizeType;
287
+ const members = this.subtree(meta).filter((m) => this.reach.get(`own:${m.def.name}`) === true);
288
+ walk = this.classWalker(cls.name);
289
+ out.push(`define internal void ${walk}(ptr %o, ptr %w) ${FN_ATTRS} { ; region walk ${llvmCommentText(cls.name)} and its subclasses`, `entry:`, ` %vtp = getelementptr inbounds ptr, ptr %o, i64 1`, ` %vt = load ptr, ptr %vtp`, ` %pre = load ${S}, ptr %vt`, ` switch ${S} %pre, label %done [ ${members.map((m) => `${S} ${m.pre}, label %c${m.pre}`).join(" ")} ]`, ...members.flatMap((m) => [
290
+ `c${m.pre}: ; ${llvmCommentText(m.def.name)}`,
291
+ ` call void ${this.ownWalker(m.def.name)}(ptr %o, ptr %w)`,
292
+ ` br label %done`,
293
+ ]), `done:`, ` ret void`, `}`, ``);
294
+ }
295
+ rows.push(`{ ptr, ptr } { ptr @${mangleClassRelease(cls.name)}, ptr ${walk} }`);
296
+ }
297
+ for (const shape of this.mod.records ?? []) {
298
+ if (this.reach.get(`record:${shape.id}`) !== true)
299
+ continue;
300
+ const walk = `@${mangleRecordStruct(shape.id)}.rwalk`;
301
+ out.push(...this.reportBody(`define internal void ${walk}(ptr %o, ptr %w) ${FN_ATTRS} { ; region walk record ${shape.id}`, mangleRecordStruct(shape.id), rcMembers(shape)));
302
+ rows.push(`{ ptr, ptr } { ptr @${mangleRecordRelease(shape.id)}, ptr ${walk} }`);
303
+ }
304
+ rows.push(`{ ptr, ptr } zeroinitializer`);
305
+ out.push(`${REGION_TYPES} = internal constant [${rows.length} x { ptr, ptr }] [ ${rows.join(", ")} ] ; region type table`, ``);
306
+ return out;
307
+ }
308
+ }
309
+ //# sourceMappingURL=regions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../../src/backend/llvm/regions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};