@scriptc/compiler 0.3.4 → 0.3.5

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 (219) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +131 -10
  2. package/dist/backend/llvm/array-search.js +1 -1
  3. package/dist/backend/llvm/array-search.js.map +1 -1
  4. package/dist/backend/llvm/call-lifetimes.d.ts +6 -0
  5. package/dist/backend/llvm/call-lifetimes.js +19 -0
  6. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  7. package/dist/backend/llvm/constant-callbacks.d.ts +2 -21
  8. package/dist/backend/llvm/constant-callbacks.js +36 -219
  9. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  10. package/dist/backend/llvm/constant-callbacks.test.js +22 -0
  11. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  12. package/dist/backend/llvm/dense-array-access.d.ts +9 -0
  13. package/dist/backend/llvm/dense-array-access.js +27 -1
  14. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  15. package/dist/backend/llvm/dyn.d.ts +6 -0
  16. package/dist/backend/llvm/dyn.js +40 -6
  17. package/dist/backend/llvm/dyn.js.map +1 -1
  18. package/dist/backend/llvm/emitter.d.ts +75 -1
  19. package/dist/backend/llvm/emitter.js +408 -38
  20. package/dist/backend/llvm/emitter.js.map +1 -1
  21. package/dist/backend/llvm/expr-async.js +17 -7
  22. package/dist/backend/llvm/expr-async.js.map +1 -1
  23. package/dist/backend/llvm/expr-bytes.js +1 -1
  24. package/dist/backend/llvm/expr-callbacks.d.ts +11 -0
  25. package/dist/backend/llvm/expr-callbacks.js +53 -0
  26. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  27. package/dist/backend/llvm/expr-calls.js +88 -2
  28. package/dist/backend/llvm/expr-calls.js.map +1 -1
  29. package/dist/backend/llvm/expr-containers.js +50 -27
  30. package/dist/backend/llvm/expr-containers.js.map +1 -1
  31. package/dist/backend/llvm/expr-primitives.js +9 -1
  32. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  33. package/dist/backend/llvm/expr-stream-bridges.js +4 -0
  34. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  35. package/dist/backend/llvm/integer-clones.d.ts +103 -0
  36. package/dist/backend/llvm/integer-clones.js +1336 -0
  37. package/dist/backend/llvm/integer-clones.js.map +1 -0
  38. package/dist/backend/llvm/integer-clones.test.d.ts +1 -0
  39. package/dist/backend/llvm/integer-clones.test.js +219 -0
  40. package/dist/backend/llvm/integer-clones.test.js.map +1 -0
  41. package/dist/backend/llvm/lib-datagram.js +14 -0
  42. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  43. package/dist/backend/llvm/lib-dispatch.js +4 -0
  44. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  45. package/dist/backend/llvm/lib-process.js +24 -0
  46. package/dist/backend/llvm/lib-process.js.map +1 -1
  47. package/dist/backend/llvm/lib-shared.js +34 -2
  48. package/dist/backend/llvm/lib-shared.js.map +1 -1
  49. package/dist/backend/llvm/lib-tls.js +6 -0
  50. package/dist/backend/llvm/lib-tls.js.map +1 -1
  51. package/dist/backend/llvm/local-array-reads.js +1 -1
  52. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  53. package/dist/backend/llvm/map-entry-fusion.d.ts +28 -0
  54. package/dist/backend/llvm/map-entry-fusion.js +233 -0
  55. package/dist/backend/llvm/map-entry-fusion.js.map +1 -0
  56. package/dist/backend/llvm/map-entry-fusion.test.d.ts +1 -0
  57. package/dist/backend/llvm/map-entry-fusion.test.js +183 -0
  58. package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -0
  59. package/dist/backend/llvm/map-number-lookup.d.ts +2 -0
  60. package/dist/backend/llvm/map-number-lookup.js +1 -1
  61. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  62. package/dist/backend/llvm/map-number-lookup.test.js +10 -11
  63. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  64. package/dist/backend/llvm/map-read-lifetimes.d.ts +2 -0
  65. package/dist/backend/llvm/map-read-lifetimes.js +3 -0
  66. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  67. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  68. package/dist/backend/llvm/publish.d.ts +16 -0
  69. package/dist/backend/llvm/publish.js +81 -10
  70. package/dist/backend/llvm/publish.js.map +1 -1
  71. package/dist/backend/llvm/publish.test.d.ts +1 -0
  72. package/dist/backend/llvm/publish.test.js +94 -0
  73. package/dist/backend/llvm/publish.test.js.map +1 -0
  74. package/dist/backend/llvm/record-results.js +76 -2
  75. package/dist/backend/llvm/record-results.js.map +1 -1
  76. package/dist/backend/llvm/record-sources.d.ts +7 -0
  77. package/dist/backend/llvm/record-sources.js +14 -0
  78. package/dist/backend/llvm/record-sources.js.map +1 -0
  79. package/dist/backend/llvm/shapes.d.ts +9 -3
  80. package/dist/backend/llvm/shapes.js +18 -14
  81. package/dist/backend/llvm/shapes.js.map +1 -1
  82. package/dist/backend/llvm/shapes.test.js +5 -3
  83. package/dist/backend/llvm/shapes.test.js.map +1 -1
  84. package/dist/backend/llvm/string-lifetimes.test.js +75 -1
  85. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  86. package/dist/backend/llvm/walkers.d.ts +17 -0
  87. package/dist/backend/llvm/walkers.js +123 -0
  88. package/dist/backend/llvm/walkers.js.map +1 -1
  89. package/dist/backend/native/contracts.d.ts +2 -1
  90. package/dist/backend/native/executable.js +3 -1
  91. package/dist/backend/native/executable.js.map +1 -1
  92. package/dist/backend/runtime-abi.d.ts +2 -2
  93. package/dist/backend/runtime-abi.js +2 -2
  94. package/dist/backend/runtime-pack-targets.test.js +1 -1
  95. package/dist/backend/runtime-pack.test.js +1 -1
  96. package/dist/frontend/lowering/builtin-calls.js +3 -0
  97. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  98. package/dist/frontend/lowering/builtins/callable-aliases.js +54 -8
  99. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  100. package/dist/frontend/lowering/builtins/child-process-async.d.ts +8 -6
  101. package/dist/frontend/lowering/builtins/child-process-async.js +45 -29
  102. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  103. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +2 -0
  104. package/dist/frontend/lowering/builtins/filesystem-calls.js +5 -0
  105. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  106. package/dist/frontend/lowering/builtins/filesystem.js +60 -0
  107. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  108. package/dist/frontend/lowering/builtins/fs-streams.d.ts +26 -0
  109. package/dist/frontend/lowering/builtins/fs-streams.js +131 -0
  110. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -0
  111. package/dist/frontend/lowering/builtins/module-calls.js +5 -1
  112. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  113. package/dist/frontend/lowering/class-dynamic-dispatch.js +150 -8
  114. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  115. package/dist/frontend/lowering/containers/bytes.js +33 -12
  116. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  117. package/dist/frontend/lowering/devirtualize.js +20 -7
  118. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  119. package/dist/frontend/lowering/lower-calls.js +58 -3
  120. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  121. package/dist/frontend/lowering/lower-classes.js +7 -0
  122. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  123. package/dist/frontend/lowering/lower-dgram.js +55 -15
  124. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  125. package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -1
  126. package/dist/frontend/lowering/lower-event-emitter.js +78 -0
  127. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  128. package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
  129. package/dist/frontend/lowering/lower-exprs.js +132 -58
  130. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  131. package/dist/frontend/lowering/lower-inspect.js +26 -0
  132. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  133. package/dist/frontend/lowering/lower-server.d.ts +2 -1
  134. package/dist/frontend/lowering/lower-server.js +73 -5
  135. package/dist/frontend/lowering/lower-server.js.map +1 -1
  136. package/dist/frontend/lowering/lower-stmts.js +12 -6
  137. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  138. package/dist/frontend/lowering/lower-stream.js +8 -0
  139. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  140. package/dist/frontend/lowering/lowerer.d.ts +3 -1
  141. package/dist/frontend/lowering/lowerer.js +2 -2
  142. package/dist/frontend/lowering/lowerer.js.map +1 -1
  143. package/dist/frontend/lowering/record-sources.d.ts +15 -0
  144. package/dist/frontend/lowering/record-sources.js +46 -0
  145. package/dist/frontend/lowering/record-sources.js.map +1 -0
  146. package/dist/frontend/lowering/surfaces.js +33 -1
  147. package/dist/frontend/lowering/surfaces.js.map +1 -1
  148. package/dist/frontend/type-mapper.d.ts +3 -0
  149. package/dist/frontend/type-mapper.js +53 -0
  150. package/dist/frontend/type-mapper.js.map +1 -1
  151. package/dist/ir/analysis.d.ts +10 -0
  152. package/dist/ir/analysis.js +35 -0
  153. package/dist/ir/analysis.js.map +1 -1
  154. package/dist/ir/analysis.test.js +69 -1
  155. package/dist/ir/analysis.test.js.map +1 -1
  156. package/dist/ir/builtin-effects.js +36 -0
  157. package/dist/ir/builtin-effects.js.map +1 -1
  158. package/dist/ir/builtin-signatures.d.ts +1 -1
  159. package/dist/ir/builtin-signatures.js +91 -7
  160. package/dist/ir/builtin-signatures.js.map +1 -1
  161. package/dist/ir/capture-values.d.ts +107 -0
  162. package/dist/ir/capture-values.js +850 -0
  163. package/dist/ir/capture-values.js.map +1 -0
  164. package/dist/ir/capture-values.test.d.ts +1 -0
  165. package/dist/ir/capture-values.test.js +268 -0
  166. package/dist/ir/capture-values.test.js.map +1 -0
  167. package/dist/ir/field-values.d.ts +16 -0
  168. package/dist/ir/field-values.js +128 -0
  169. package/dist/ir/field-values.js.map +1 -0
  170. package/dist/ir/field-values.test.d.ts +1 -0
  171. package/dist/ir/field-values.test.js +160 -0
  172. package/dist/ir/field-values.test.js.map +1 -0
  173. package/dist/ir/final-fields.d.ts +4 -1
  174. package/dist/ir/final-fields.js +11 -3
  175. package/dist/ir/final-fields.js.map +1 -1
  176. package/dist/ir/function-references.test.js +1 -1
  177. package/dist/ir/function-references.test.js.map +1 -1
  178. package/dist/ir/init-only-globals.d.ts +16 -0
  179. package/dist/ir/init-only-globals.js +121 -0
  180. package/dist/ir/init-only-globals.js.map +1 -0
  181. package/dist/ir/init-only-globals.test.d.ts +1 -0
  182. package/dist/ir/init-only-globals.test.js +115 -0
  183. package/dist/ir/init-only-globals.test.js.map +1 -0
  184. package/dist/ir/initializer-bindings.d.ts +18 -1
  185. package/dist/ir/initializer-bindings.js +91 -1
  186. package/dist/ir/initializer-bindings.js.map +1 -1
  187. package/dist/ir/initializer-bindings.test.js +57 -2
  188. package/dist/ir/initializer-bindings.test.js.map +1 -1
  189. package/dist/ir/int32-slots.d.ts +22 -0
  190. package/dist/ir/int32-slots.js +376 -13
  191. package/dist/ir/int32-slots.js.map +1 -1
  192. package/dist/ir/int32-slots.test.js +91 -8
  193. package/dist/ir/int32-slots.test.js.map +1 -1
  194. package/dist/ir/integer-loop-facts.d.ts +19 -1
  195. package/dist/ir/integer-loop-facts.js +155 -7
  196. package/dist/ir/integer-loop-facts.js.map +1 -1
  197. package/dist/ir/integer-ranges.d.ts +8 -5
  198. package/dist/ir/integer-ranges.js +147 -55
  199. package/dist/ir/integer-ranges.js.map +1 -1
  200. package/dist/ir/integer-ranges.test.js +225 -7
  201. package/dist/ir/integer-ranges.test.js.map +1 -1
  202. package/dist/ir/ir.d.ts +9 -1
  203. package/dist/ir/ir.js.map +1 -1
  204. package/dist/ir/property-bags.d.ts +14 -0
  205. package/dist/ir/property-bags.js +121 -0
  206. package/dist/ir/property-bags.js.map +1 -0
  207. package/dist/ir/receiver-readers.d.ts +21 -0
  208. package/dist/ir/receiver-readers.js +217 -0
  209. package/dist/ir/receiver-readers.js.map +1 -0
  210. package/dist/ir/runtime-features.js +6 -1
  211. package/dist/ir/runtime-features.js.map +1 -1
  212. package/dist/ir/validate.js +26 -0
  213. package/dist/ir/validate.js.map +1 -1
  214. package/dist/ir/validate.test.js +21 -0
  215. package/dist/ir/validate.test.js.map +1 -1
  216. package/dist/library/int-infer.js +3 -0
  217. package/dist/library/int-infer.js.map +1 -1
  218. package/package.json +20 -20
  219. package/surface-manifest.json +28 -2
@@ -1,5 +1,5 @@
1
1
  import { expect, test } from "vitest";
2
- import { BOOL, F64, STRING, VOID, funcOf, } from "../../ir/ir.js";
2
+ import { BOOL, F64, STRING, VOID, arrayOf, funcOf, } from "../../ir/ir.js";
3
3
  import { validateModule } from "../../ir/validate.js";
4
4
  import { analyzeCallLifetimes } from "./call-lifetimes.js";
5
5
  import { emitLlvmModule } from "./emitter.js";
@@ -405,4 +405,78 @@ test("string comparisons decide identity, lengths and leading bytes before the r
405
405
  expect(units).toContain("call i32 @scr_str_cmp_u16(ptr %a, ptr %b)");
406
406
  }
407
407
  });
408
+ test("a string field or array-slot self-append lets the container go before the concat", () => {
409
+ const recordT = { kind: "record", shapeId: "buf" };
410
+ const arrT = arrayOf(STRING);
411
+ const field = {
412
+ name: "field",
413
+ loc,
414
+ params: [
415
+ { localId: "r", name: "r", type: recordT },
416
+ { localId: "s", name: "s", type: STRING },
417
+ ],
418
+ locals: [
419
+ { id: "r", name: "r", type: recordT, mutable: false },
420
+ { id: "s", name: "s", type: STRING, mutable: false },
421
+ ],
422
+ returnType: VOID,
423
+ body: [
424
+ {
425
+ kind: "recordSet",
426
+ obj: ref("r", recordT),
427
+ shapeId: "buf",
428
+ field: "text",
429
+ value: concat({
430
+ kind: "recordGet",
431
+ obj: ref("r", recordT),
432
+ shapeId: "buf",
433
+ field: "text",
434
+ type: STRING,
435
+ loc,
436
+ }, ref("s")),
437
+ loc,
438
+ },
439
+ ],
440
+ };
441
+ const slot = {
442
+ name: "slot",
443
+ loc,
444
+ params: [
445
+ { localId: "a", name: "a", type: arrT },
446
+ { localId: "i", name: "i", type: F64 },
447
+ { localId: "s", name: "s", type: STRING },
448
+ ],
449
+ locals: [
450
+ { id: "a", name: "a", type: arrT, mutable: false },
451
+ { id: "i", name: "i", type: F64, mutable: false },
452
+ { id: "s", name: "s", type: STRING, mutable: false },
453
+ ],
454
+ returnType: VOID,
455
+ body: [
456
+ {
457
+ kind: "arraySet",
458
+ arr: ref("a", arrT),
459
+ index: ref("i", F64),
460
+ value: concat({ kind: "arrayGet", arr: ref("a", arrT), index: ref("i", F64), type: STRING, loc }, ref("s")),
461
+ loc,
462
+ },
463
+ ],
464
+ };
465
+ const module = {
466
+ ...mod(field, slot),
467
+ records: [{ id: "buf", fields: [{ name: "text", type: STRING }] }],
468
+ };
469
+ expect(validateModule(module)).toEqual([]);
470
+ const ir = emitLlvmModule(module, { pointerBits: 64 });
471
+ const define = (name) => new RegExp(`^define internal [^\\n]*@sc_b?f_${name}\\([^]*?^}`, "m").exec(ir)[0];
472
+ const appendField = define("field");
473
+ const concatAt = appendField.indexOf("@scr_str_concat(");
474
+ expect(concatAt).toBeGreaterThan(0);
475
+ expect(appendField.slice(0, concatAt)).toMatch(/store ptr null, ptr %/);
476
+ expect(appendField.slice(0, concatAt)).toContain("@scr_str_release");
477
+ const appendSlot = define("slot");
478
+ const slotConcat = appendSlot.indexOf("@scr_str_concat(");
479
+ expect(appendSlot.slice(0, slotConcat)).toContain("arr.unlink.swap");
480
+ expect(appendSlot.slice(slotConcat)).toContain("arr.set");
481
+ });
408
482
  //# sourceMappingURL=string-lifetimes.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string-lifetimes.test.js","sourceRoot":"","sources":["../../../src/backend/llvm/string-lifetimes.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string-lifetimes.test.js","sourceRoot":"","sources":["../../../src/backend/llvm/string-lifetimes.test.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ export interface WalkerHost extends ShapeHost {
20
20
  export declare class LlWalkers {
21
21
  private readonly host;
22
22
  private readonly jsonWriters;
23
+ private readonly recordFieldWriters;
23
24
  private readonly unionJoinFns;
24
25
  /** Emitted function definitions, in interning order. */
25
26
  readonly defs: string[];
@@ -51,6 +52,22 @@ export declare class LlWalkers {
51
52
  /** Loads a record field slot (i8-stored bools trunc to i1). */
52
53
  private loadField;
53
54
  private emitRecordWriter;
55
+ /** A record that kept the undeclared properties of its checked source
56
+ * (scr_record_source_note) serializes in the source's own-key order: the
57
+ * runtime walks the kept keys, writing declared fields through the
58
+ * shape's field writer and the others through the dyn writer, which may
59
+ * throw (a BigInt added through an untyped reference) — the stringify
60
+ * site checks pending. */
61
+ private emitRecordSourceWriter;
62
+ /** `sc_jwf_<n>(ptr b, ptr v, size index, i1 first) -> i1`: writes the
63
+ * separator, key and value of the field at `index` in the shape's
64
+ * declaration order (record-sources.ts) and answers true, or writes
65
+ * nothing and answers false for an absent or undefined-valued optional
66
+ * field and for internal '%'-fields. */
67
+ private recordFieldWriter;
68
+ /** Whether the walker for `t` can leave an exception pending: cyclic
69
+ * values, and records serialized through a kept checked source. */
70
+ jsonWriteMayThrow(t: IrType, seen?: Set<string>): boolean;
54
71
  /** Overflow entries follow the declared fields, in JS OWN-KEY order
55
72
  * (scr_map_keys_js_order); keys escape like any JSON string;
56
73
  * undefined-valued entries drop (the optional-field rule). */
@@ -7,6 +7,7 @@ import { mangleRecordStruct } from "../mangle.js";
7
7
  import { BlockBuilder } from "./blocks.js";
8
8
  import { llvmCommentText } from "./common.js";
9
9
  import { llFieldType, loadStructField, releaseSym, traceAdapter, } from "./shapes.js";
10
+ import { recordMayKeepSource, recordSourceFieldOrder } from "./record-sources.js";
10
11
  import { LlvmUnsupportedError } from "./unsupported.js";
11
12
  import { emitUnionPeek, emitUnionTag } from "./union-repr.js";
12
13
  import { undefinedArmTag } from "../../ir/analysis.js";
@@ -14,6 +15,7 @@ const FN_ATTRS = "#0";
14
15
  export class LlWalkers {
15
16
  host;
16
17
  jsonWriters = new Map();
18
+ recordFieldWriters = new Map();
17
19
  unionJoinFns = new Map();
18
20
  /** Emitted function definitions, in interning order. */
19
21
  defs = [];
@@ -199,6 +201,8 @@ export class LlWalkers {
199
201
  if (!shape)
200
202
  throw new InternalCompilerError(`llvm emitter bug: jsonStringify of unknown shape ${shapeId}`);
201
203
  const fieldIndex = new Map(shape.fields.map((f, i) => [f.name, i + 1]));
204
+ if (recordMayKeepSource(shape))
205
+ this.emitRecordSourceWriter(B, shapeId);
202
206
  // CYCLE-CAPABLE shapes bracket the walk with the circular-detection
203
207
  // stack; edge labels stamp before members whose walk can re-enter —
204
208
  // walkers.ts's contract, ported.
@@ -293,6 +297,125 @@ export class LlWalkers {
293
297
  if (cyclic)
294
298
  this.jbLeave(B);
295
299
  }
300
+ /** A record that kept the undeclared properties of its checked source
301
+ * (scr_record_source_note) serializes in the source's own-key order: the
302
+ * runtime walks the kept keys, writing declared fields through the
303
+ * shape's field writer and the others through the dyn writer, which may
304
+ * throw (a BigInt added through an untyped reference) — the stringify
305
+ * site checks pending. */
306
+ emitRecordSourceWriter(B, shapeId) {
307
+ const host = this.host;
308
+ const writer = this.recordFieldWriter(shapeId);
309
+ const lSource = B.newLabel("jw.source");
310
+ const lNative = B.newLabel("jw.native");
311
+ if (traceAdapter(host, { kind: "record", shapeId }) === null) {
312
+ // One lookup: the runtime writes the record when it kept a source.
313
+ host.declare(`declare zeroext i1 @scr_jb_try_record_source(ptr, ptr, ptr)`);
314
+ const written = B.tmp();
315
+ B.line(`${written} = call zeroext i1 @scr_jb_try_record_source(ptr %b, ptr %v, ptr @${writer})`);
316
+ B.condBr(written, lSource, lNative);
317
+ B.startBlock(lSource);
318
+ B.terminate("ret void");
319
+ B.startBlock(lNative);
320
+ return;
321
+ }
322
+ // Cycle-capable shapes bracket the kept-source walk with the circular
323
+ // detection stack, like the native walk below.
324
+ host.declare(`declare zeroext i1 @scr_record_source_has(ptr)`);
325
+ const has = B.tmp();
326
+ B.line(`${has} = call zeroext i1 @scr_record_source_has(ptr %v)`);
327
+ B.condBr(has, lSource, lNative);
328
+ B.startBlock(lSource);
329
+ this.jbEnter(B, false);
330
+ host.declare(`declare void @scr_jb_put_record_source(ptr, ptr, ptr)`);
331
+ B.line(`call void @scr_jb_put_record_source(ptr %b, ptr %v, ptr @${writer})`);
332
+ this.jbLeave(B);
333
+ B.terminate("ret void");
334
+ B.startBlock(lNative);
335
+ }
336
+ /** `sc_jwf_<n>(ptr b, ptr v, size index, i1 first) -> i1`: writes the
337
+ * separator, key and value of the field at `index` in the shape's
338
+ * declaration order (record-sources.ts) and answers true, or writes
339
+ * nothing and answers false for an absent or undefined-valued optional
340
+ * field and for internal '%'-fields. */
341
+ recordFieldWriter(shapeId) {
342
+ const existing = this.recordFieldWriters.get(shapeId);
343
+ if (existing)
344
+ return existing;
345
+ const shape = this.host.recordsById.get(shapeId);
346
+ if (!shape)
347
+ throw new InternalCompilerError(`llvm emitter bug: field writer of unknown shape ${shapeId}`);
348
+ const name = `sc_jwf_${this.recordFieldWriters.size}`;
349
+ this.recordFieldWriters.set(shapeId, name);
350
+ const fieldIndex = new Map(shape.fields.map((f, i) => [f.name, i + 1]));
351
+ const byName = new Map(shape.fields.map((f) => [f.name, f]));
352
+ const cyclic = traceAdapter(this.host, { kind: "record", shapeId }) !== null;
353
+ const order = recordSourceFieldOrder(shape);
354
+ const B = new BlockBuilder();
355
+ const lSkip = B.newLabel("jwf.skip");
356
+ const labels = order.map(() => B.newLabel("jwf.field"));
357
+ B.terminate(`switch ${this.S} %i, label %${lSkip} [${order.map((_, i) => ` ${this.S} ${i}, label %${labels[i]}`).join("")} ]`);
358
+ order.forEach((fieldName, i) => {
359
+ B.startBlock(labels[i]);
360
+ const f = byName.get(fieldName);
361
+ if (fieldName.startsWith("%")) {
362
+ B.terminate("ret i1 false");
363
+ return;
364
+ }
365
+ const v = this.loadField(B, "%v", shapeId, fieldIndex.get(fieldName), f.type);
366
+ const utag = undefinedArmTag(f.type, this.host.unionsById);
367
+ if (utag >= 0 && f.type.kind === "union") {
368
+ const tag = this.unionTag(B, v, f.type.unionId);
369
+ const isUndefined = B.tmp();
370
+ B.line(`${isUndefined} = icmp eq i32 ${tag}, ${utag}`);
371
+ const lWrite = B.newLabel("jwf.write");
372
+ B.condBr(isUndefined, lSkip, lWrite);
373
+ B.startBlock(lWrite);
374
+ }
375
+ const lComma = B.newLabel("jwf.comma");
376
+ const lKey = B.newLabel("jwf.key");
377
+ B.condBr("%first", lKey, lComma);
378
+ B.startBlock(lComma);
379
+ this.putc(B, "%b", "44"); // ','
380
+ B.br(lKey);
381
+ B.startBlock(lKey);
382
+ this.puts(B, "%b", jsonObjectKeyLabel(fieldName));
383
+ if (cyclic && traceAdapter(this.host, f.type) !== null)
384
+ this.jbEdgeProp(B, fieldName);
385
+ B.line(`call void @${this.jsonWriteHelper(f.type)}(ptr %b, ${this.valTy(f.type)} ${v}) ; ${llvmCommentText(fieldName)}`);
386
+ B.terminate("ret i1 true");
387
+ });
388
+ B.startBlock(lSkip);
389
+ B.terminate("ret i1 false");
390
+ this.defs.push(`define internal zeroext i1 @${name}(ptr %b, ptr %v, ${this.S} %i, i1 zeroext %first) ${FN_ATTRS} { ; kept-source fields of ${shapeId}`, B.render(), `}`, ``);
391
+ return name;
392
+ }
393
+ /** Whether the walker for `t` can leave an exception pending: cyclic
394
+ * values, and records serialized through a kept checked source. */
395
+ jsonWriteMayThrow(t, seen = new Set()) {
396
+ if (traceAdapter(this.host, t) !== null)
397
+ return true;
398
+ switch (t.kind) {
399
+ case "array":
400
+ return this.jsonWriteMayThrow(t.elem, seen);
401
+ case "union":
402
+ return (this.host.unionsById.get(t.unionId)?.arms ?? []).some((arm) => this.jsonWriteMayThrow(arm, seen));
403
+ case "record": {
404
+ if (seen.has(t.shapeId))
405
+ return false;
406
+ seen.add(t.shapeId);
407
+ const shape = this.host.recordsById.get(t.shapeId);
408
+ if (!shape)
409
+ return false;
410
+ if (recordMayKeepSource(shape))
411
+ return true;
412
+ return (shape.fields.some((f) => this.jsonWriteMayThrow(f.type, seen)) ||
413
+ (shape.indexValue !== undefined && this.jsonWriteMayThrow(shape.indexValue, seen)));
414
+ }
415
+ default:
416
+ return false;
417
+ }
418
+ }
296
419
  /** Overflow entries follow the declared fields, in JS OWN-KEY order
297
420
  * (scr_map_keys_js_order); keys escape like any JSON string;
298
421
  * undefined-valued entries drop (the optional-field rule). */
@@ -1 +1 @@
1
- {"version":3,"file":"walkers.js","sourceRoot":"","sources":["../../../src/backend/llvm/walkers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"walkers.js","sourceRoot":"","sources":["../../../src/backend/llvm/walkers.ts"],"names":[],"mappings":"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"}
@@ -145,7 +145,8 @@ export interface CcOptions {
145
145
  * utility units also require their symbol, inspection, and warning features. */
146
146
  parseArgs?: boolean;
147
147
  /** The program uses the node:stream class surface (moduleUsesStream on
148
- * the IR): compiles scr_stream.c into the binary — always alongside
148
+ * the IR): compiles scr_stream.c and scr_fs_stream.c (fs.ReadStream /
149
+ * fs.WriteStream) into the binary — always alongside
149
150
  * scr_events_emitter.c, which moduleUsesEmitter answers true for
150
151
  * whenever this does (the stream classes root at the emitter). Pure
151
152
  * data structure plus the loop's deferred-tick hook — no poller, so it
@@ -384,11 +384,13 @@ export async function compileCInternal(opts, cacheWarmOnly, cacheWarmPaths) {
384
384
  ...(opts.parseArgs && opts.inspect && opts.dynAsync && opts.dynInvoke && regex
385
385
  ? [rt(join(rtDir, "scr_util_callable.c"))]
386
386
  : []),
387
- ...(opts.stream ? [rt(join(rtDir, "scr_stream.c"))] : []),
387
+ ...(opts.stream ? [rt(join(rtDir, "scr_stream.c")), rt(join(rtDir, "scr_fs_stream.c"))] : []),
388
388
  // The zlib stream classes reference both the zlib engine and the
389
389
  // stream unit.
390
390
  ...(opts.zlib && opts.stream ? [rt(join(rtDir, "scr_zlib_stream.c"))] : []),
391
391
  ...(opts.stream && opts.dynAsync ? [rt(join(rtDir, "scr_stream_ops.c"))] : []),
392
+ // FileHandle streams reference both the stream unit and FileHandle.
393
+ ...(opts.stream && opts.fileHandle ? [rt(join(rtDir, "scr_fs_stream_fh.c"))] : []),
392
394
  // The readiness-poller backends (scr_platform.h): kqueue on macOS/BSD,
393
395
  // epoll on Linux, WSAPoll on Windows — each TU is empty off its
394
396
  // platform, so all three link whenever a poller-using unit does and