@scriptc/compiler 0.2.8 → 0.2.10

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 (275) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +1 -0
  2. package/dist/backend/cycle-analysis.d.ts +56 -0
  3. package/dist/backend/cycle-analysis.js +222 -28
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-analysis.test.js +232 -15
  6. package/dist/backend/cycle-analysis.test.js.map +1 -1
  7. package/dist/backend/cycle-mutability.d.ts +27 -6
  8. package/dist/backend/cycle-mutability.js +110 -17
  9. package/dist/backend/cycle-mutability.js.map +1 -1
  10. package/dist/backend/immutability.d.ts +57 -0
  11. package/dist/backend/immutability.js +178 -0
  12. package/dist/backend/immutability.js.map +1 -0
  13. package/dist/backend/immutability.test.d.ts +1 -0
  14. package/dist/backend/immutability.test.js +131 -0
  15. package/dist/backend/immutability.test.js.map +1 -0
  16. package/dist/backend/llvm/alloc.d.ts +13 -3
  17. package/dist/backend/llvm/alloc.js +24 -10
  18. package/dist/backend/llvm/alloc.js.map +1 -1
  19. package/dist/backend/llvm/alloc.test.js +5 -5
  20. package/dist/backend/llvm/alloc.test.js.map +1 -1
  21. package/dist/backend/llvm/borrowed-inputs.d.ts +9 -2
  22. package/dist/backend/llvm/borrowed-inputs.js +31 -3
  23. package/dist/backend/llvm/borrowed-inputs.js.map +1 -1
  24. package/dist/backend/llvm/byte-numbers.js +2 -3
  25. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  26. package/dist/backend/llvm/classes.d.ts +28 -0
  27. package/dist/backend/llvm/classes.js +51 -10
  28. package/dist/backend/llvm/classes.js.map +1 -1
  29. package/dist/backend/llvm/classes.test.js +129 -1
  30. package/dist/backend/llvm/classes.test.js.map +1 -1
  31. package/dist/backend/llvm/common.d.ts +30 -0
  32. package/dist/backend/llvm/common.js +41 -0
  33. package/dist/backend/llvm/common.js.map +1 -1
  34. package/dist/backend/llvm/dense-array-access.js +6 -5
  35. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  36. package/dist/backend/llvm/dense-array-access.test.js +10 -2
  37. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  38. package/dist/backend/llvm/dyn.d.ts +6 -4
  39. package/dist/backend/llvm/dyn.js +30 -14
  40. package/dist/backend/llvm/dyn.js.map +1 -1
  41. package/dist/backend/llvm/emitter.d.ts +109 -5
  42. package/dist/backend/llvm/emitter.js +716 -112
  43. package/dist/backend/llvm/emitter.js.map +1 -1
  44. package/dist/backend/llvm/emitter.test.js +54 -3
  45. package/dist/backend/llvm/emitter.test.js.map +1 -1
  46. package/dist/backend/llvm/expr-bytes.js +35 -28
  47. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  48. package/dist/backend/llvm/expr-calls.js +14 -6
  49. package/dist/backend/llvm/expr-calls.js.map +1 -1
  50. package/dist/backend/llvm/expr-containers.js +31 -8
  51. package/dist/backend/llvm/expr-containers.js.map +1 -1
  52. package/dist/backend/llvm/expr-context.d.ts +2 -0
  53. package/dist/backend/llvm/expr-control.js +46 -5
  54. package/dist/backend/llvm/expr-control.js.map +1 -1
  55. package/dist/backend/llvm/expr-dynamic.js +3 -0
  56. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  57. package/dist/backend/llvm/expr-primitives.js +30 -3
  58. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  59. package/dist/backend/llvm/expr-primitives.test.js +53 -0
  60. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  61. package/dist/backend/llvm/expr-stream-bridges.d.ts +3 -0
  62. package/dist/backend/llvm/expr-stream-bridges.js +76 -14
  63. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  64. package/dist/backend/llvm/lib-filesystem.js +18 -2
  65. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  66. package/dist/backend/llvm/lib-shared.js +1 -0
  67. package/dist/backend/llvm/lib-shared.js.map +1 -1
  68. package/dist/backend/llvm/local-array-reads.d.ts +17 -6
  69. package/dist/backend/llvm/local-array-reads.js +157 -45
  70. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  71. package/dist/backend/llvm/loop-array-borrows.d.ts +5 -2
  72. package/dist/backend/llvm/loop-array-borrows.js +27 -8
  73. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  74. package/dist/backend/llvm/map-number-lookup.d.ts +7 -0
  75. package/dist/backend/llvm/map-number-lookup.js +18 -1
  76. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  77. package/dist/backend/llvm/map-read-lifetimes.d.ts +5 -0
  78. package/dist/backend/llvm/map-read-lifetimes.js +14 -4
  79. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  80. package/dist/backend/llvm/map-read-lifetimes.test.js +5 -0
  81. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  82. package/dist/backend/llvm/reference-effects.js +34 -1
  83. package/dist/backend/llvm/reference-effects.js.map +1 -1
  84. package/dist/backend/llvm/reference-writes.d.ts +124 -0
  85. package/dist/backend/llvm/reference-writes.js +1090 -0
  86. package/dist/backend/llvm/reference-writes.js.map +1 -0
  87. package/dist/backend/llvm/shapes.d.ts +22 -8
  88. package/dist/backend/llvm/shapes.js +79 -23
  89. package/dist/backend/llvm/shapes.js.map +1 -1
  90. package/dist/backend/llvm/shapes.test.js +5 -5
  91. package/dist/backend/llvm/shapes.test.js.map +1 -1
  92. package/dist/backend/llvm/string-lifetimes.test.js +39 -10
  93. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  94. package/dist/backend/llvm/string-reads.d.ts +3 -0
  95. package/dist/backend/llvm/string-reads.js +45 -11
  96. package/dist/backend/llvm/string-reads.js.map +1 -1
  97. package/dist/backend/llvm/string-slices.js +1 -1
  98. package/dist/backend/llvm/switch-dispatch.d.ts +2 -2
  99. package/dist/backend/llvm/switch-dispatch.js +35 -22
  100. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  101. package/dist/backend/llvm/switch-dispatch.test.js +28 -10
  102. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
  103. package/dist/backend/llvm/trunc.d.ts +8 -0
  104. package/dist/backend/llvm/trunc.js +28 -0
  105. package/dist/backend/llvm/trunc.js.map +1 -0
  106. package/dist/backend/llvm/walk-borrows.d.ts +8 -1
  107. package/dist/backend/llvm/walk-borrows.js +15 -4
  108. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  109. package/dist/backend/loop-polls.d.ts +14 -0
  110. package/dist/backend/loop-polls.js +100 -0
  111. package/dist/backend/loop-polls.js.map +1 -0
  112. package/dist/backend/loop-polls.test.d.ts +1 -0
  113. package/dist/backend/loop-polls.test.js +86 -0
  114. package/dist/backend/loop-polls.test.js.map +1 -0
  115. package/dist/backend/may-throw.d.ts +36 -2
  116. package/dist/backend/may-throw.js +328 -13
  117. package/dist/backend/may-throw.js.map +1 -1
  118. package/dist/backend/may-throw.test.js +169 -1
  119. package/dist/backend/may-throw.test.js.map +1 -1
  120. package/dist/backend/native-codegen.d.ts +1 -3
  121. package/dist/backend/native-codegen.js +4 -32
  122. package/dist/backend/native-codegen.js.map +1 -1
  123. package/dist/backend/publication.d.ts +5 -0
  124. package/dist/backend/publication.js +10 -0
  125. package/dist/backend/publication.js.map +1 -1
  126. package/dist/backend/runtime-abi.d.ts +2 -2
  127. package/dist/backend/runtime-abi.js +2 -2
  128. package/dist/backend/runtime-abi.js.map +1 -1
  129. package/dist/backend/runtime-pack-targets.test.js +1 -1
  130. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  131. package/dist/backend/runtime-pack.test.js +1 -1
  132. package/dist/backend/runtime-pack.test.js.map +1 -1
  133. package/dist/cli/command.js +8 -1
  134. package/dist/cli/command.js.map +1 -1
  135. package/dist/cli/output-options.d.ts +1 -0
  136. package/dist/cli/output-options.js +3 -0
  137. package/dist/cli/output-options.js.map +1 -1
  138. package/dist/cli/usage.d.ts +5 -1
  139. package/dist/cli/usage.js +6 -0
  140. package/dist/cli/usage.js.map +1 -1
  141. package/dist/compile-types.d.ts +5 -0
  142. package/dist/contracts/check.d.ts +8 -0
  143. package/dist/contracts/check.js +1577 -0
  144. package/dist/contracts/check.js.map +1 -0
  145. package/dist/executable/executable-cache.d.ts +2 -0
  146. package/dist/executable/executable-cache.js +3 -0
  147. package/dist/executable/executable-cache.js.map +1 -1
  148. package/dist/executable/executable-cache.test.js +1 -0
  149. package/dist/executable/executable-cache.test.js.map +1 -1
  150. package/dist/executable/prepare.js +9 -0
  151. package/dist/executable/prepare.js.map +1 -1
  152. package/dist/frontend/contract-types.d.ts +50 -0
  153. package/dist/frontend/contract-types.js +232 -0
  154. package/dist/frontend/contract-types.js.map +1 -0
  155. package/dist/frontend/lowering/array-values.js +37 -1
  156. package/dist/frontend/lowering/array-values.js.map +1 -1
  157. package/dist/frontend/lowering/builtins/strings.js +4 -1
  158. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  159. package/dist/frontend/lowering/call-arguments.js +96 -4
  160. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  161. package/dist/frontend/lowering/class-method-mutations.js +88 -0
  162. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  163. package/dist/frontend/lowering/coercions/unions.d.ts +12 -0
  164. package/dist/frontend/lowering/coercions/unions.js +63 -0
  165. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  166. package/dist/frontend/lowering/containers/bytes.js +15 -4
  167. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  168. package/dist/frontend/lowering/expressions/optional-chains.js +4 -1
  169. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  170. package/dist/frontend/lowering/expressions/union-fields.d.ts +19 -0
  171. package/dist/frontend/lowering/expressions/union-fields.js +236 -0
  172. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -0
  173. package/dist/frontend/lowering/lower-calls.js +21 -4
  174. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  175. package/dist/frontend/lowering/lower-exprs.d.ts +6 -0
  176. package/dist/frontend/lowering/lower-exprs.js +245 -4
  177. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  178. package/dist/frontend/lowering/lower-island.js +5 -19
  179. package/dist/frontend/lowering/lower-island.js.map +1 -1
  180. package/dist/frontend/lowering/lower-stmts.js +11 -1
  181. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  182. package/dist/frontend/lowering/lowerer.d.ts +14 -0
  183. package/dist/frontend/lowering/lowerer.js +221 -8
  184. package/dist/frontend/lowering/lowerer.js.map +1 -1
  185. package/dist/frontend/lowering/nan-coded-reads.d.ts +161 -0
  186. package/dist/frontend/lowering/nan-coded-reads.js +1342 -0
  187. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -0
  188. package/dist/frontend/lowering/narrowing-stability.d.ts +100 -0
  189. package/dist/frontend/lowering/narrowing-stability.js +1174 -0
  190. package/dist/frontend/lowering/narrowing-stability.js.map +1 -0
  191. package/dist/frontend/lowering/narrowing-stability.test.d.ts +1 -0
  192. package/dist/frontend/lowering/narrowing-stability.test.js +150 -0
  193. package/dist/frontend/lowering/narrowing-stability.test.js.map +1 -0
  194. package/dist/frontend/lowering/runtime-optional-bounds.d.ts +14 -2
  195. package/dist/frontend/lowering/runtime-optional-bounds.js +17 -11
  196. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  197. package/dist/frontend/lowering/runtime-optional-bounds.test.js +28 -0
  198. package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -1
  199. package/dist/frontend/lowering/surfaces.js +8 -0
  200. package/dist/frontend/lowering/surfaces.js.map +1 -1
  201. package/dist/frontend/program.js +1 -1
  202. package/dist/frontend/type-mapper.js +43 -0
  203. package/dist/frontend/type-mapper.js.map +1 -1
  204. package/dist/index.d.ts +1 -1
  205. package/dist/index.js +20 -8
  206. package/dist/index.js.map +1 -1
  207. package/dist/ir/builtin-signatures.d.ts +1 -1
  208. package/dist/ir/builtin-signatures.js +2 -0
  209. package/dist/ir/builtin-signatures.js.map +1 -1
  210. package/dist/ir/constant-globals.d.ts +14 -0
  211. package/dist/ir/constant-globals.js +81 -0
  212. package/dist/ir/constant-globals.js.map +1 -0
  213. package/dist/ir/constant-globals.test.d.ts +1 -0
  214. package/dist/ir/constant-globals.test.js +97 -0
  215. package/dist/ir/constant-globals.test.js.map +1 -0
  216. package/dist/ir/final-fields.d.ts +35 -0
  217. package/dist/ir/final-fields.js +187 -0
  218. package/dist/ir/final-fields.js.map +1 -0
  219. package/dist/ir/final-fields.test.d.ts +1 -0
  220. package/dist/ir/final-fields.test.js +106 -0
  221. package/dist/ir/final-fields.test.js.map +1 -0
  222. package/dist/ir/int32-slots.d.ts +35 -0
  223. package/dist/ir/int32-slots.js +217 -104
  224. package/dist/ir/int32-slots.js.map +1 -1
  225. package/dist/ir/int32-slots.test.js +27 -0
  226. package/dist/ir/int32-slots.test.js.map +1 -1
  227. package/dist/ir/integer-loops.d.ts +5 -0
  228. package/dist/ir/integer-loops.js +23 -4
  229. package/dist/ir/integer-loops.js.map +1 -1
  230. package/dist/ir/integer-loops.test.js +43 -1
  231. package/dist/ir/integer-loops.test.js.map +1 -1
  232. package/dist/ir/integer-ranges.d.ts +20 -0
  233. package/dist/ir/integer-ranges.js +178 -21
  234. package/dist/ir/integer-ranges.js.map +1 -1
  235. package/dist/ir/integer-ranges.test.js +148 -3
  236. package/dist/ir/integer-ranges.test.js.map +1 -1
  237. package/dist/ir/ir.d.ts +38 -1
  238. package/dist/ir/ir.js +4 -0
  239. package/dist/ir/ir.js.map +1 -1
  240. package/dist/ir/serialize.d.ts +17 -3
  241. package/dist/ir/serialize.js +198 -39
  242. package/dist/ir/serialize.js.map +1 -1
  243. package/dist/ir/serialize.test.js +65 -1
  244. package/dist/ir/serialize.test.js.map +1 -1
  245. package/dist/ir/unshare.d.ts +14 -0
  246. package/dist/ir/unshare.js +60 -0
  247. package/dist/ir/unshare.js.map +1 -0
  248. package/dist/ir/unshare.test.d.ts +1 -0
  249. package/dist/ir/unshare.test.js +115 -0
  250. package/dist/ir/unshare.test.js.map +1 -0
  251. package/dist/library/prepare.js +9 -0
  252. package/dist/library/prepare.js.map +1 -1
  253. package/dist/native/cache.d.ts +8 -1
  254. package/dist/native/cache.js +38 -1
  255. package/dist/native/cache.js.map +1 -1
  256. package/dist/native/cache.test.js +11 -0
  257. package/dist/native/cache.test.js.map +1 -1
  258. package/dist/native/compiler.js +4 -3
  259. package/dist/native/compiler.js.map +1 -1
  260. package/dist/native/prepare.d.ts +3 -1
  261. package/dist/native/prepare.js +63 -28
  262. package/dist/native/prepare.js.map +1 -1
  263. package/dist/native/prepare.test.js +23 -1
  264. package/dist/native/prepare.test.js.map +1 -1
  265. package/dist/native/text-file.d.ts +10 -0
  266. package/dist/native/text-file.js +41 -0
  267. package/dist/native/text-file.js.map +1 -0
  268. package/dist/text-parts.d.ts +5 -0
  269. package/dist/text-parts.js +36 -0
  270. package/dist/text-parts.js.map +1 -0
  271. package/package.json +20 -20
  272. package/surface-manifest.json +7 -1
  273. package/dist/frontend/lowering/expressions/union-field-write.d.ts +0 -8
  274. package/dist/frontend/lowering/expressions/union-field-write.js +0 -108
  275. package/dist/frontend/lowering/expressions/union-field-write.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { isFfiCallbackParam, MAY_THROW_ARR_METHODS, MAY_THROW_BYTES_METHODS } from "../ir/ir.js";
2
2
  import { MAY_THROW_LIB_FNS } from "../ir/builtin-effects.js";
3
- import { everyStmtList } from "../ir/traverse.js";
3
+ import { everyExprChild, everyStmtChild, everyStmtList } from "../ir/traverse.js";
4
4
  import { hasRetainedFfiCallback } from "./ffi-callbacks.js";
5
5
  import { computePublishedTypes, writesPublished } from "./publication.js";
6
6
  /** Cheap may-throw analysis (cost discipline: functions that transitively
@@ -12,12 +12,22 @@ import { computePublishedTypes, writesPublished } from "./publication.js";
12
12
  * Fixpoint over the call graph; runtime traps (array OOB etc.) are aborts,
13
13
  * not exceptions, so most intrinsics never contribute. The module evaluator's
14
14
  * internal await and throwing library calls are the exceptions: both can
15
- * surface a catchable rejection/error and seed the fixpoint like a `throw`. */
15
+ * surface a catchable rejection/error and seed the fixpoint like a `throw`.
16
+ *
17
+ * Handlers discharge what they handle: a throwing operation or call inside
18
+ * a `try` with a `catch`, or inside a `try`/`catch` whose `finally` never
19
+ * completes normally (it returns, breaks or continues, which discards the
20
+ * pending exception), cannot propagate out of that statement, so it adds no
21
+ * seed and no call edge. The `catch` and `finally` bodies themselves are
22
+ * analyzed like any other code, which keeps rethrows exact. Worker programs
23
+ * and generator bodies keep the conservative answer: a termination request
24
+ * and a generator's `.return()` unwind through `catch`. */
16
25
  export function computeMayThrow(mod, options = {}) {
17
26
  const terminations = mod.workers === true ? workerTerminationPolls(mod) : null;
18
27
  const stackChecks = options.stackChecks === true ? stackCheckedFunctions(mod) : null;
19
28
  // Stores that can reach a published object throw the frozen TypeError.
20
29
  const published = computePublishedTypes(mod);
30
+ const explain = options.explain === true;
21
31
  const facts = new Map();
22
32
  const closureTargets = new Set();
23
33
  // FUNC-targeted dynChecks synthesize adapter closures outside the IR's
@@ -47,8 +57,16 @@ export function computeMayThrow(mod, options = {}) {
47
57
  list.push(`%${cls.name}.${m}`);
48
58
  }
49
59
  }
60
+ // Termination requests unwind through every handler of a worker program.
61
+ const handlersCatchAll = mod.workers !== true;
50
62
  for (const fn of mod.functions) {
51
63
  const f = { throws: false, callees: [], callsValue: false };
64
+ // Inside a region whose exceptions a handler of this function takes:
65
+ // nothing seeds and no call edge can carry an exception out.
66
+ let guarded = 0;
67
+ const handlers = handlersCatchAll && !fn.generator;
68
+ if (explain)
69
+ f.calleeLocs = new Map();
52
70
  // TDZ reads and non-initializing writes can throw ReferenceError.
53
71
  // Capture locals carry the same flag as the declaring binding.
54
72
  const tdzIds = new Set([...tdzGlobals, ...fn.locals.filter((l) => l.tdz).map((l) => l.id)]);
@@ -58,6 +76,8 @@ export function computeMayThrow(mod, options = {}) {
58
76
  ]);
59
77
  // Traverse typed executable nodes without copying the IR into unknown.
60
78
  const visit = (rec) => {
79
+ const threw = f.throws;
80
+ const callees = f.callees.length;
61
81
  if (published !== null && writesPublished(published, rec))
62
82
  f.throws = true;
63
83
  switch (rec.kind) {
@@ -270,7 +290,7 @@ export function computeMayThrow(mod, options = {}) {
270
290
  // wide) cover is every constructor of the named class's
271
291
  // hierarchy; classval flows never leave it.
272
292
  const cls = rec.callee.type.kind === "classval" ? rec.callee.type.className : undefined;
273
- if (cls !== undefined) {
293
+ if (cls !== undefined && guarded === 0) {
274
294
  let list = classValueCallers.get(cls);
275
295
  if (!list)
276
296
  classValueCallers.set(cls, (list = new Set()));
@@ -288,22 +308,79 @@ export function computeMayThrow(mod, options = {}) {
288
308
  break;
289
309
  }
290
310
  case "callValue":
311
+ if (guarded > 0)
312
+ break;
291
313
  f.callsValue = true;
314
+ if (explain)
315
+ f.callValueLoc ??= rec.loc;
292
316
  break;
293
317
  case "closure":
294
318
  closureTargets.add(rec.fnName);
295
319
  break;
296
320
  }
321
+ if (guarded > 0) {
322
+ // A handler of this function takes the exception.
323
+ f.throws = threw;
324
+ f.callees.length = callees;
325
+ return true;
326
+ }
327
+ if (explain) {
328
+ if (!threw && f.throws)
329
+ f.seed = { kind: "seed", what: describeThrowingNode(rec), loc: rec.loc };
330
+ for (let i = callees; i < f.callees.length; i++)
331
+ if (!f.calleeLocs.has(f.callees[i]))
332
+ f.calleeLocs.set(f.callees[i], rec.loc);
333
+ if (rec.kind === "newValue" && !f.calleeLocs.has("\0classValue"))
334
+ f.calleeLocs.set("\0classValue", rec.loc);
335
+ }
297
336
  return true;
298
337
  };
299
- everyStmtList(fn.body, { expr: visit, stmt: visit });
338
+ const walkExpr = (node) => visit(node) && everyExprChild(node, walkExpr, walkStmt);
339
+ // Unreachable statements cannot throw, such as the frontend's trap after
340
+ // a body that returns from both its try and its catch.
341
+ const dead = unreachableStatements(fn.body);
342
+ const walkStmt = (node) => {
343
+ if (dead.has(node))
344
+ return true;
345
+ if (node.kind !== "tryCatch" || !handlers)
346
+ return visit(node) && everyStmtChild(node, walkExpr, walkStmt);
347
+ visit(node);
348
+ // The catch takes everything the try body raises. A finally that
349
+ // never completes normally discards whatever the try body or the
350
+ // catch left pending; one that can complete normally re-raises it.
351
+ const discards = node.finallyBody !== null && !completesNormally(node.finallyBody);
352
+ const guardTry = node.catchBody !== null || discards;
353
+ if (guardTry)
354
+ guarded++;
355
+ node.tryBody.every(walkStmt);
356
+ if (guardTry)
357
+ guarded--;
358
+ if (discards)
359
+ guarded++;
360
+ node.catchBody?.every(walkStmt);
361
+ if (discards)
362
+ guarded--;
363
+ node.finallyBody?.every(walkStmt);
364
+ return true;
365
+ };
366
+ fn.body.every(walkStmt);
300
367
  // A worker can be terminated at any of its polls: the noncatchable
301
368
  // stop unwinds like an exception from every function that polls.
302
- if (terminations?.polls.has(fn.name))
369
+ if (terminations?.polls.has(fn.name)) {
370
+ if (explain && !f.throws)
371
+ f.seed = { kind: "seed", what: "polls for worker termination", loc: fn.loc };
303
372
  f.throws = true;
373
+ }
304
374
  // A stack-overflow check throws Node's RangeError from the entry.
305
- if (stackChecks?.has(fn.name))
375
+ if (stackChecks?.has(fn.name)) {
376
+ if (explain && !f.throws)
377
+ f.seed = {
378
+ kind: "seed",
379
+ what: "can recurse (directly or through callbacks), so the stack guard may throw RangeError",
380
+ loc: fn.loc,
381
+ };
306
382
  f.throws = true;
383
+ }
307
384
  facts.set(fn.name, f);
308
385
  }
309
386
  // Propagate each newly throwing function along reverse call edges once.
@@ -312,15 +389,24 @@ export function computeMayThrow(mod, options = {}) {
312
389
  const indirectCallers = [];
313
390
  const may = new Set();
314
391
  const pending = [];
315
- const mark = (name) => {
392
+ const why = explain ? new Map() : null;
393
+ const mark = (name, reason) => {
316
394
  if (may.has(name))
317
395
  return;
318
396
  may.add(name);
319
397
  pending.push(name);
398
+ if (why !== null && reason !== undefined)
399
+ why.set(name, reason);
320
400
  };
401
+ const callEdge = (caller, callee) => why === null
402
+ ? undefined
403
+ : { kind: "call", callee, loc: facts.get(caller)?.calleeLocs?.get(callee) ?? null };
404
+ const indirectEdge = (caller, target) => why === null
405
+ ? undefined
406
+ : { kind: "indirect", target, loc: facts.get(caller)?.callValueLoc ?? null };
321
407
  for (const [name, f] of facts) {
322
408
  if (f.throws)
323
- mark(name);
409
+ mark(name, f.seed);
324
410
  if (f.callsValue)
325
411
  indirectCallers.push(name);
326
412
  for (const callee of new Set(f.callees)) {
@@ -339,16 +425,16 @@ export function computeMayThrow(mod, options = {}) {
339
425
  let indirect = sawDynFuncAdapter;
340
426
  if (indirect)
341
427
  for (const name of indirectCallers)
342
- mark(name);
428
+ mark(name, indirectEdge(name, ""));
343
429
  for (let i = 0; i < pending.length; i++) {
344
430
  const name = pending[i];
345
431
  if (!indirect && closureTargets.has(name) && !asyncFns.has(name) && !genFns.has(name)) {
346
432
  indirect = true;
347
433
  for (const caller of indirectCallers)
348
- mark(caller);
434
+ mark(caller, indirectEdge(caller, name));
349
435
  }
350
436
  for (const caller of callers.get(name) ?? [])
351
- mark(caller);
437
+ mark(caller, callEdge(caller, name));
352
438
  let cls = constructorClasses.get(name);
353
439
  while (cls !== undefined && !throwingHierarchies.has(cls)) {
354
440
  const def = classes.get(cls);
@@ -358,17 +444,246 @@ export function computeMayThrow(mod, options = {}) {
358
444
  const valueCallers = classValueCallers.get(cls);
359
445
  if (valueCallers)
360
446
  for (const caller of valueCallers)
361
- mark(caller);
447
+ mark(caller, why === null
448
+ ? undefined
449
+ : {
450
+ kind: "call",
451
+ callee: name,
452
+ loc: facts.get(caller)?.calleeLocs?.get("\0classValue") ?? null,
453
+ });
362
454
  cls = def.base;
363
455
  }
364
456
  }
365
457
  return {
366
458
  fns: may,
459
+ ...(why !== null ? { why } : {}),
367
460
  indirect,
368
- ...(terminations ? { workerEntryPolls: terminations.entry } : {}),
461
+ ...(terminations ? { workerEntryPolls: entryPolls(mod, terminations.entry, stackChecks) } : {}),
369
462
  ...(stackChecks ? { stackChecks } : {}),
370
463
  };
371
464
  }
465
+ /** Whether control can reach the end of a statement list. Conservative:
466
+ * false only when some statement certainly completes abruptly: `return`,
467
+ * `throw`, `break` or `continue` (which leave the list), an `if` whose
468
+ * branches both do, a `try` whose body and `catch` (or `finally`) do, a
469
+ * `switch` with a `default` whose last case does and that no `break`
470
+ * leaves, or a `while (true)`/`for (;;)` loop that no `break` leaves. */
471
+ export function completesNormally(stmts) {
472
+ return completion().list(stmts);
473
+ }
474
+ function completion() {
475
+ const memo = new Map();
476
+ const list = (stmts) => stmts.every(statement);
477
+ const statement = (s) => {
478
+ let known = memo.get(s);
479
+ if (known === undefined) {
480
+ known = compute(s);
481
+ memo.set(s, known);
482
+ }
483
+ return known;
484
+ };
485
+ const compute = (s) => {
486
+ switch (s.kind) {
487
+ case "return":
488
+ case "throw":
489
+ case "rethrow":
490
+ case "runtimeFence":
491
+ case "break":
492
+ case "continue":
493
+ return false;
494
+ case "if":
495
+ return list(s.then) || list(s.else_ ?? []);
496
+ case "block":
497
+ return list(s.body) || breaksTo(s.body, s.labels ?? [], false);
498
+ case "tryCatch":
499
+ return ((list(s.tryBody) || (s.catchBody !== null && list(s.catchBody))) &&
500
+ (s.finallyBody === null || list(s.finallyBody)));
501
+ case "switch": {
502
+ const last = s.cases[s.cases.length - 1];
503
+ return (last === undefined ||
504
+ !s.cases.some((c) => c.test === null) ||
505
+ list(last.body) ||
506
+ s.cases.some((c) => breaksTo(c.body, s.labels ?? [], true)));
507
+ }
508
+ case "while":
509
+ case "doWhile":
510
+ case "for": {
511
+ const forever = s.cond === null || (s.cond.kind === "boolLit" && s.cond.value === true);
512
+ return !forever || breaksTo(s.body, s.labels ?? [], true);
513
+ }
514
+ default:
515
+ return true;
516
+ }
517
+ };
518
+ return { list, statement };
519
+ }
520
+ /** Whether a `break` in the statements leaves the construct that owns
521
+ * them: one naming its labels, or (for loops and switches, `unlabeled`)
522
+ * an unlabeled `break` that no nested loop or switch captures first. */
523
+ function breaksTo(stmts, labels, unlabeled) {
524
+ const walk = (s, captured) => {
525
+ switch (s.kind) {
526
+ case "break":
527
+ return s.label === undefined ? unlabeled && !captured : labels.includes(s.label);
528
+ case "if":
529
+ return (s.then.some((c) => walk(c, captured)) || (s.else_ ?? []).some((c) => walk(c, captured)));
530
+ case "block":
531
+ return s.body.some((c) => walk(c, captured));
532
+ case "tryCatch":
533
+ return [s.tryBody, s.catchBody ?? [], s.finallyBody ?? []].some((body) => body.some((c) => walk(c, captured)));
534
+ case "switch":
535
+ return s.cases.some((c) => c.body.some((inner) => walk(inner, true)));
536
+ case "while":
537
+ case "doWhile":
538
+ case "for":
539
+ case "forOf":
540
+ return s.body.some((c) => walk(c, true));
541
+ default:
542
+ return false;
543
+ }
544
+ };
545
+ return stmts.some((s) => walk(s, false));
546
+ }
547
+ /** Statements no execution reaches: those after a statement that cannot
548
+ * complete normally in the same statement list. */
549
+ function unreachableStatements(body) {
550
+ const dead = new Set();
551
+ const { statement } = completion();
552
+ const list = (stmts) => {
553
+ let live = true;
554
+ for (const s of stmts) {
555
+ if (!live) {
556
+ dead.add(s);
557
+ continue;
558
+ }
559
+ for (const inner of nestedLists(s))
560
+ list(inner);
561
+ if (!statement(s))
562
+ live = false;
563
+ }
564
+ };
565
+ list(body);
566
+ return dead;
567
+ }
568
+ function nestedLists(s) {
569
+ switch (s.kind) {
570
+ case "if":
571
+ return s.else_ === null ? [s.then] : [s.then, s.else_];
572
+ case "block":
573
+ case "while":
574
+ case "doWhile":
575
+ case "for":
576
+ case "forOf":
577
+ return [s.body];
578
+ case "switch":
579
+ return s.cases.map((c) => c.body);
580
+ case "tryCatch":
581
+ return [s.tryBody, s.catchBody ?? [], s.finallyBody ?? []];
582
+ default:
583
+ return [];
584
+ }
585
+ }
586
+ /** Error constructors by runtime error kind (SCR_ERR_* in scr_runtime.h). */
587
+ const ERROR_KIND_NAMES = [
588
+ "Error",
589
+ "TypeError",
590
+ "RangeError",
591
+ "SyntaxError",
592
+ "DOMException",
593
+ "ReferenceError",
594
+ "EvalError",
595
+ "URIError",
596
+ ];
597
+ /** A short description of a node that seeds the may-throw fixpoint. */
598
+ function describeThrowingNode(rec) {
599
+ switch (rec.kind) {
600
+ case "throw":
601
+ return "throw statement";
602
+ case "rethrow":
603
+ return "rethrow";
604
+ case "runtimeFence":
605
+ return "deferred compile fence";
606
+ case "varRef":
607
+ case "incDec":
608
+ case "assignExpr":
609
+ case "assign":
610
+ return "binding accessed before initialization (ReferenceError)";
611
+ case "dynCheck":
612
+ case "caughtCheck":
613
+ return "checked cast of a dynamic value (TypeError)";
614
+ case "dynCall":
615
+ case "dynInvoke":
616
+ return "call through a dynamic value";
617
+ case "dynKeyGet":
618
+ case "dynHasKey":
619
+ return "property access on a dynamic value (undefined or null receiver)";
620
+ case "dynDestrCheck":
621
+ case "dynIterN":
622
+ return "destructuring a dynamic value";
623
+ case "awaitExpr":
624
+ case "awaitUnionExpr":
625
+ return "await (a rejected promise throws)";
626
+ case "yieldExpr":
627
+ case "genResume":
628
+ return "generator resumption";
629
+ case "libCall": {
630
+ // Compiler-resolved Node throws: name the error and its message.
631
+ if (rec.fn === "error.nodeThrow" || rec.fn === "error.new") {
632
+ const nodeThrow = rec.fn === "error.nodeThrow";
633
+ const kind = rec.args[0];
634
+ const message = nodeThrow ? rec.args[2] : rec.args[0];
635
+ const name = nodeThrow
636
+ ? kind?.kind === "numLit"
637
+ ? (ERROR_KIND_NAMES[kind.value] ?? "Error")
638
+ : "Error"
639
+ : rec.type.kind === "object"
640
+ ? rec.type.className.replace(/^%/, "")
641
+ : "Error";
642
+ return message?.kind === "strLit" ? `throws ${name}: ${message.value}` : `throws ${name}`;
643
+ }
644
+ return `library call ${rec.fn}`;
645
+ }
646
+ case "intrinsic":
647
+ return `intrinsic ${rec.name}`;
648
+ case "strIntrinsic":
649
+ case "regexIntrinsic":
650
+ case "arrIntrinsic":
651
+ case "bytesIntrinsic":
652
+ case "mapIntrinsic":
653
+ case "setIntrinsic":
654
+ return `${rec.kind} ${rec.method}`;
655
+ case "arraySetLength":
656
+ return "array length assignment (RangeError)";
657
+ case "jsonStringify":
658
+ return "JSON.stringify of a possibly circular value (TypeError)";
659
+ case "toString":
660
+ return "string conversion of a dynamic value";
661
+ case "fieldSet":
662
+ case "recordSet":
663
+ return "write into a possibly published object (TypeError)";
664
+ default:
665
+ return rec.kind;
666
+ }
667
+ }
668
+ /** The termination polls a worker program places on function entry. A
669
+ * stack-checked synchronous function needs none: it may throw (the stack
670
+ * guard seeds the fixpoint), so every caller tests the pending state after
671
+ * the call, and a descent that never returns ends at the stack guard, whose
672
+ * RangeError unwinds through those tests. An outstanding terminate request
673
+ * keeps the alert word nonzero, so the first test that runs afterwards (a
674
+ * post-call test, a loop poll or the unwinding) stops the thread; dropping
675
+ * the entry poll only delays the stop by bounded work, which Node's
676
+ * asynchronous terminate allows. The entry poll's slow path rejoins the
677
+ * body, so every polled function kept its arguments live across a call. */
678
+ function entryPolls(mod, entry, stackChecks) {
679
+ if (stackChecks === null)
680
+ return entry;
681
+ // Calling an async or generator function never tests the caller's pending
682
+ // state, and the module entry has no caller: those keep their polls.
683
+ const keep = new Set(mod.functions.filter((fn) => fn.async || fn.generator !== undefined).map((fn) => fn.name));
684
+ keep.add(mod.entry);
685
+ return new Set([...entry].filter((name) => keep.has(name) || !stackChecks.has(name)));
686
+ }
372
687
  /** Statement and expression kinds that cannot reenter scriptc code except
373
688
  * through the direct call edges recorded below (`call`, `new`,
374
689
  * `virtualCall`), and cannot block in the runtime. Everything else, such as
@@ -1 +1 @@
1
- {"version":3,"file":"may-throw.js","sourceRoot":"","sources":["../../src/backend/may-throw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"may-throw.js","sourceRoot":"","sources":["../../src/backend/may-throw.ts"],"names":[],"mappings":"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"}