@scriptc/compiler 0.2.2 → 0.2.4

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 (243) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +99 -27
  2. package/dist/backend/cycle-analysis.js +63 -50
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/cycle-analysis.test.js +51 -0
  5. package/dist/backend/cycle-analysis.test.js.map +1 -1
  6. package/dist/backend/llvm/borrowed-inputs.d.ts +15 -0
  7. package/dist/backend/llvm/borrowed-inputs.js +28 -0
  8. package/dist/backend/llvm/borrowed-inputs.js.map +1 -0
  9. package/dist/backend/llvm/borrowed-receivers.d.ts +9 -0
  10. package/dist/backend/llvm/borrowed-receivers.js +58 -0
  11. package/dist/backend/llvm/borrowed-receivers.js.map +1 -0
  12. package/dist/backend/llvm/byte-numbers.d.ts +10 -0
  13. package/dist/backend/llvm/byte-numbers.js +235 -0
  14. package/dist/backend/llvm/byte-numbers.js.map +1 -0
  15. package/dist/backend/llvm/bytes-bounds.d.ts +9 -0
  16. package/dist/backend/llvm/bytes-bounds.js +189 -0
  17. package/dist/backend/llvm/bytes-bounds.js.map +1 -0
  18. package/dist/backend/llvm/call-lifetimes.d.ts +27 -0
  19. package/dist/backend/llvm/call-lifetimes.js +199 -0
  20. package/dist/backend/llvm/call-lifetimes.js.map +1 -0
  21. package/dist/backend/llvm/call-lifetimes.test.d.ts +1 -0
  22. package/dist/backend/llvm/call-lifetimes.test.js +259 -0
  23. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -0
  24. package/dist/backend/llvm/checked-value-lifetimes.d.ts +9 -0
  25. package/dist/backend/llvm/checked-value-lifetimes.js +35 -0
  26. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -0
  27. package/dist/backend/llvm/counted-loops.d.ts +6 -0
  28. package/dist/backend/llvm/counted-loops.js +28 -0
  29. package/dist/backend/llvm/counted-loops.js.map +1 -0
  30. package/dist/backend/llvm/dyn.d.ts +2 -2
  31. package/dist/backend/llvm/dyn.js +79 -35
  32. package/dist/backend/llvm/dyn.js.map +1 -1
  33. package/dist/backend/llvm/emitter.d.ts +56 -7
  34. package/dist/backend/llvm/emitter.js +310 -37
  35. package/dist/backend/llvm/emitter.js.map +1 -1
  36. package/dist/backend/llvm/emitter.test.js +24 -5
  37. package/dist/backend/llvm/emitter.test.js.map +1 -1
  38. package/dist/backend/llvm/expr-async.js +4 -3
  39. package/dist/backend/llvm/expr-async.js.map +1 -1
  40. package/dist/backend/llvm/expr-bytes.d.ts +4 -4
  41. package/dist/backend/llvm/expr-bytes.js +68 -35
  42. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  43. package/dist/backend/llvm/expr-calls.js +50 -5
  44. package/dist/backend/llvm/expr-calls.js.map +1 -1
  45. package/dist/backend/llvm/expr-containers.d.ts +2 -1
  46. package/dist/backend/llvm/expr-containers.js +136 -57
  47. package/dist/backend/llvm/expr-containers.js.map +1 -1
  48. package/dist/backend/llvm/expr-context.d.ts +11 -0
  49. package/dist/backend/llvm/expr-control.js +26 -5
  50. package/dist/backend/llvm/expr-control.js.map +1 -1
  51. package/dist/backend/llvm/expr-dynamic.js +33 -31
  52. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  53. package/dist/backend/llvm/expr-primitives.js +61 -27
  54. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  55. package/dist/backend/llvm/expr-records.js +9 -3
  56. package/dist/backend/llvm/expr-records.js.map +1 -1
  57. package/dist/backend/llvm/expr-stream-bridges.js +5 -10
  58. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  59. package/dist/backend/llvm/integer-values.d.ts +10 -0
  60. package/dist/backend/llvm/integer-values.js +41 -0
  61. package/dist/backend/llvm/integer-values.js.map +1 -0
  62. package/dist/backend/llvm/integer-views.d.ts +7 -0
  63. package/dist/backend/llvm/integer-views.js +67 -0
  64. package/dist/backend/llvm/integer-views.js.map +1 -0
  65. package/dist/backend/llvm/integer-views.test.d.ts +1 -0
  66. package/dist/backend/llvm/integer-views.test.js +34 -0
  67. package/dist/backend/llvm/integer-views.test.js.map +1 -0
  68. package/dist/backend/llvm/lib-dispatch.js +3 -1
  69. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  70. package/dist/backend/llvm/lib-filesystem.js +5 -5
  71. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  72. package/dist/backend/llvm/lib-shared.js +35 -1
  73. package/dist/backend/llvm/lib-shared.js.map +1 -1
  74. package/dist/backend/llvm/local-array-reads.d.ts +42 -0
  75. package/dist/backend/llvm/local-array-reads.js +226 -0
  76. package/dist/backend/llvm/local-array-reads.js.map +1 -0
  77. package/dist/backend/llvm/local-array-reads.test.d.ts +1 -0
  78. package/dist/backend/llvm/local-array-reads.test.js +446 -0
  79. package/dist/backend/llvm/local-array-reads.test.js.map +1 -0
  80. package/dist/backend/llvm/map-read-lifetimes.d.ts +36 -0
  81. package/dist/backend/llvm/map-read-lifetimes.js +128 -0
  82. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -0
  83. package/dist/backend/llvm/map-read-lifetimes.test.d.ts +1 -0
  84. package/dist/backend/llvm/map-read-lifetimes.test.js +127 -0
  85. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -0
  86. package/dist/backend/llvm/reference-effects.d.ts +22 -0
  87. package/dist/backend/llvm/reference-effects.js +148 -0
  88. package/dist/backend/llvm/reference-effects.js.map +1 -0
  89. package/dist/backend/llvm/reference-effects.test.d.ts +1 -0
  90. package/dist/backend/llvm/reference-effects.test.js +74 -0
  91. package/dist/backend/llvm/reference-effects.test.js.map +1 -0
  92. package/dist/backend/llvm/shapes.d.ts +7 -4
  93. package/dist/backend/llvm/shapes.js +24 -6
  94. package/dist/backend/llvm/shapes.js.map +1 -1
  95. package/dist/backend/llvm/split.js +15 -5
  96. package/dist/backend/llvm/split.js.map +1 -1
  97. package/dist/backend/llvm/split.test.js +17 -0
  98. package/dist/backend/llvm/split.test.js.map +1 -1
  99. package/dist/backend/llvm/stack-unions.d.ts +20 -0
  100. package/dist/backend/llvm/stack-unions.js +61 -0
  101. package/dist/backend/llvm/stack-unions.js.map +1 -0
  102. package/dist/backend/llvm/stack-unions.test.d.ts +1 -0
  103. package/dist/backend/llvm/stack-unions.test.js +262 -0
  104. package/dist/backend/llvm/stack-unions.test.js.map +1 -0
  105. package/dist/backend/llvm/string-construction.d.ts +10 -0
  106. package/dist/backend/llvm/string-construction.js +38 -0
  107. package/dist/backend/llvm/string-construction.js.map +1 -0
  108. package/dist/backend/llvm/string-construction.test.d.ts +1 -0
  109. package/dist/backend/llvm/string-construction.test.js +65 -0
  110. package/dist/backend/llvm/string-construction.test.js.map +1 -0
  111. package/dist/backend/llvm/string-lifetimes.d.ts +12 -0
  112. package/dist/backend/llvm/string-lifetimes.js +72 -0
  113. package/dist/backend/llvm/string-lifetimes.js.map +1 -0
  114. package/dist/backend/llvm/string-lifetimes.test.d.ts +1 -0
  115. package/dist/backend/llvm/string-lifetimes.test.js +239 -0
  116. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -0
  117. package/dist/backend/mangle.d.ts +2 -0
  118. package/dist/backend/mangle.js +4 -0
  119. package/dist/backend/mangle.js.map +1 -1
  120. package/dist/backend/may-throw.js +67 -29
  121. package/dist/backend/may-throw.js.map +1 -1
  122. package/dist/backend/may-throw.test.js +104 -1
  123. package/dist/backend/may-throw.test.js.map +1 -1
  124. package/dist/backend/native-toolchain.d.ts +2 -2
  125. package/dist/backend/native-toolchain.js +2 -0
  126. package/dist/backend/native-toolchain.js.map +1 -1
  127. package/dist/frontend/input-tracker.js +3 -3
  128. package/dist/frontend/input-tracker.js.map +1 -1
  129. package/dist/frontend/input-tracker.test.js +38 -2
  130. package/dist/frontend/input-tracker.test.js.map +1 -1
  131. package/dist/frontend/lowering/collection-ingestion.d.ts +31 -0
  132. package/dist/frontend/lowering/collection-ingestion.js +224 -0
  133. package/dist/frontend/lowering/collection-ingestion.js.map +1 -0
  134. package/dist/frontend/lowering/containers/bytes.js +2 -0
  135. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  136. package/dist/frontend/lowering/containers/string-and-regexp.js +6 -0
  137. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  138. package/dist/frontend/lowering/import-meta.d.ts +10 -0
  139. package/dist/frontend/lowering/import-meta.js +52 -0
  140. package/dist/frontend/lowering/import-meta.js.map +1 -0
  141. package/dist/frontend/lowering/lower-assert.js +105 -41
  142. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  143. package/dist/frontend/lowering/lower-builtin-values.d.ts +2 -0
  144. package/dist/frontend/lowering/lower-builtin-values.js +22 -1
  145. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  146. package/dist/frontend/lowering/lower-builtins.d.ts +3 -13
  147. package/dist/frontend/lowering/lower-builtins.js +152 -46
  148. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  149. package/dist/frontend/lowering/lower-calls.js +6 -3
  150. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  151. package/dist/frontend/lowering/lower-classes.js +7 -7
  152. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  153. package/dist/frontend/lowering/lower-containers.d.ts +5 -1
  154. package/dist/frontend/lowering/lower-containers.js +52 -37
  155. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  156. package/dist/frontend/lowering/lower-exprs.js +47 -43
  157. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  158. package/dist/frontend/lowering/lower-inspect.js +43 -0
  159. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  160. package/dist/frontend/lowering/lower-stmts.js +72 -68
  161. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  162. package/dist/frontend/lowering/lower-system-errors.d.ts +6 -0
  163. package/dist/frontend/lowering/lower-system-errors.js +29 -0
  164. package/dist/frontend/lowering/lower-system-errors.js.map +1 -0
  165. package/dist/frontend/lowering/lowerer.d.ts +4 -3
  166. package/dist/frontend/lowering/lowerer.js +60 -25
  167. package/dist/frontend/lowering/lowerer.js.map +1 -1
  168. package/dist/frontend/lowering/surfaces.d.ts +2 -2
  169. package/dist/frontend/lowering/surfaces.js +69 -21
  170. package/dist/frontend/lowering/surfaces.js.map +1 -1
  171. package/dist/frontend/module-syntax.d.ts +1 -1
  172. package/dist/frontend/module-syntax.js +8 -1
  173. package/dist/frontend/module-syntax.js.map +1 -1
  174. package/dist/frontend/module-syntax.test.js +10 -0
  175. package/dist/frontend/module-syntax.test.js.map +1 -1
  176. package/dist/frontend/npm.d.ts +4 -0
  177. package/dist/frontend/npm.js +86 -33
  178. package/dist/frontend/npm.js.map +1 -1
  179. package/dist/frontend/npm.test.js +103 -0
  180. package/dist/frontend/npm.test.js.map +1 -1
  181. package/dist/frontend/pipeline-native.js +2 -1
  182. package/dist/frontend/pipeline-native.js.map +1 -1
  183. package/dist/frontend/services-node.js +3 -2
  184. package/dist/frontend/services-node.js.map +1 -1
  185. package/dist/frontend/services.d.ts +5 -1
  186. package/dist/frontend/services.js +9 -1
  187. package/dist/frontend/services.js.map +1 -1
  188. package/dist/frontend/services.test.js +21 -0
  189. package/dist/frontend/services.test.js.map +1 -1
  190. package/dist/frontend/ts7/ast-node.d.ts +2 -0
  191. package/dist/frontend/ts7/ast-node.js +30 -4
  192. package/dist/frontend/ts7/ast-node.js.map +1 -1
  193. package/dist/frontend/ts7/ast-node.test.js +60 -1
  194. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  195. package/dist/frontend/type-mapper.js +8 -2
  196. package/dist/frontend/type-mapper.js.map +1 -1
  197. package/dist/index.js +3 -2
  198. package/dist/index.js.map +1 -1
  199. package/dist/ir/analysis.js +4 -1
  200. package/dist/ir/analysis.js.map +1 -1
  201. package/dist/ir/byte-numbers.d.ts +20 -0
  202. package/dist/ir/byte-numbers.js +65 -0
  203. package/dist/ir/byte-numbers.js.map +1 -0
  204. package/dist/ir/byte-numbers.test.d.ts +1 -0
  205. package/dist/ir/byte-numbers.test.js +42 -0
  206. package/dist/ir/byte-numbers.test.js.map +1 -0
  207. package/dist/ir/integer-loops.d.ts +26 -0
  208. package/dist/ir/integer-loops.js +130 -1
  209. package/dist/ir/integer-loops.js.map +1 -1
  210. package/dist/ir/integer-loops.test.d.ts +1 -0
  211. package/dist/ir/integer-loops.test.js +91 -0
  212. package/dist/ir/integer-loops.test.js.map +1 -0
  213. package/dist/ir/integer-ranges.d.ts +8 -6
  214. package/dist/ir/integer-ranges.js +343 -89
  215. package/dist/ir/integer-ranges.js.map +1 -1
  216. package/dist/ir/integer-ranges.test.js +54 -3
  217. package/dist/ir/integer-ranges.test.js.map +1 -1
  218. package/dist/ir/ir.d.ts +29 -22
  219. package/dist/ir/ir.js +59 -14
  220. package/dist/ir/ir.js.map +1 -1
  221. package/dist/ir/ir.test.js +18 -0
  222. package/dist/ir/ir.test.js.map +1 -1
  223. package/dist/ir/validate.js +208 -105
  224. package/dist/ir/validate.js.map +1 -1
  225. package/dist/ir/validate.test.js +247 -0
  226. package/dist/ir/validate.test.js.map +1 -1
  227. package/dist/library/fence-eval.js +9 -2
  228. package/dist/library/fence-eval.js.map +1 -1
  229. package/dist/library/fence-eval.test.d.ts +1 -0
  230. package/dist/library/fence-eval.test.js +21 -0
  231. package/dist/library/fence-eval.test.js.map +1 -0
  232. package/dist/native/runtime-typescript.d.ts +4 -0
  233. package/dist/native/runtime-typescript.js +61 -0
  234. package/dist/native/runtime-typescript.js.map +1 -0
  235. package/dist/native/runtime-typescript.test.d.ts +1 -0
  236. package/dist/native/runtime-typescript.test.js +41 -0
  237. package/dist/native/runtime-typescript.test.js.map +1 -0
  238. package/dist/native/toolchain.js +6 -3
  239. package/dist/native/toolchain.js.map +1 -1
  240. package/dist/native/toolchain.test.js +43 -5
  241. package/dist/native/toolchain.test.js.map +1 -1
  242. package/package.json +20 -20
  243. package/surface-manifest.json +271 -17
@@ -2,10 +2,15 @@ import type { IrBytesElem, IrExpr, IrFfiImport, IrFunction, IrLocal, IrModule, I
2
2
  import { type IntegerRanges } from "../../ir/integer-ranges.js";
3
3
  import { type ConstantNumericTable } from "../../ir/constant-tables.js";
4
4
  import { type FfiCallbackAdapter } from "../ffi-callbacks.js";
5
+ import { type CallLifetimes } from "./call-lifetimes.js";
5
6
  import { BlockBuilder } from "./blocks.js";
7
+ import { type LocalArrayRead } from "./local-array-reads.js";
8
+ import { type MapReadLifetimes } from "./map-read-lifetimes.js";
9
+ import { ReferenceEffects } from "./reference-effects.js";
6
10
  import { type LlClassMeta } from "./classes.js";
7
11
  import { LlDyn, type DynHost } from "./dyn.js";
8
12
  import { LlWalkers } from "./walkers.js";
13
+ import { type MapKeyAccess } from "./shapes.js";
9
14
  import type { ExprOf, LibCallExpr, LlStreamTypedRefAdapter, LlValue } from "./expr-context.js";
10
15
  export { LlvmUnsupportedError } from "./unsupported.js";
11
16
  export interface LlvmTargetOptions {
@@ -29,6 +34,19 @@ export declare function emitLlvmModule(mod: IrModule, options?: LlvmTargetOption
29
34
  export declare function emitLlvmModuleSource(mod: IrModule, options?: LlvmTargetOptions): string | readonly string[];
30
35
  export declare class LlEmitter {
31
36
  readonly mod: IrModule;
37
+ localArrayReads: Map<string, LocalArrayRead>;
38
+ private localStackUnions;
39
+ integerArrayBindings: Set<string>;
40
+ private readonly fieldAliasTags;
41
+ private readonly fieldPointerTags;
42
+ /** Native class fields with different property names cannot occupy the
43
+ * same slot of one object. Inherited views of the same property share a
44
+ * tag. Array storage has its own disjoint categories; untagged runtime
45
+ * operations and record views conservatively alias all of them. */
46
+ private markFieldPointer;
47
+ markMemoryPointer(ptr: string, field: string): void;
48
+ fieldAliasAttachment(ptr: string): string;
49
+ private fieldAliasMetadata;
32
50
  private readonly debug;
33
51
  private debugScope;
34
52
  readonly sizeType: "i32" | "i64";
@@ -44,6 +62,7 @@ export declare class LlEmitter {
44
62
  * immortal (rc == SIZE_MAX) static per (union, unit tag).
45
63
  * RC entry points and the collector skip immortals. */
46
64
  private readonly unitInstances;
65
+ private readonly immortalValues;
47
66
  /** Regex literal templates: "<flags>/<pattern>" → { symbol, interned
48
67
  * source/flags literal refs } — one immortal ScrRegex template per distinct
49
68
  * (pattern, flags) pair; the bytecode slot starts null and the runtime
@@ -84,6 +103,13 @@ export declare class LlEmitter {
84
103
  needsBadKey: boolean;
85
104
  private needsRetainBox;
86
105
  readonly fnByName: Map<string, IrFunction>;
106
+ readonly referenceEffects: ReferenceEffects;
107
+ private readonly optionalArrayReads;
108
+ callArrayReads: Map<IrExpr, LocalArrayRead>;
109
+ mapReadLifetimes: MapReadLifetimes;
110
+ readonly callLifetimes: CallLifetimes;
111
+ private borrowedParameters;
112
+ private stableCallBindings;
87
113
  /** Manifest-bound native imports, used by ffiCall emission. */
88
114
  readonly ffiByName: Map<string, IrFfiImport>;
89
115
  /** C-ABI callback trampolines and (for raw/no-userdata callbacks) their
@@ -164,9 +190,20 @@ export declare class LlEmitter {
164
190
  private jumpTargets;
165
191
  private currentLocals;
166
192
  private captureIds;
167
- /** Active canonical byte-loop induction bindings: local id → size_t slot. */
168
- integerLoopBindings: Map<string, string>;
193
+ /** Active induction bindings retain their width independently of size_t. */
194
+ integerLoopBindings: Map<string, {
195
+ slot: string;
196
+ type: "i32" | "i64";
197
+ signed?: boolean;
198
+ range?: {
199
+ min: number;
200
+ max: number;
201
+ };
202
+ }>;
203
+ private countedLoopsEnabled;
169
204
  integerRanges: IntegerRanges;
205
+ bytesBounds: ReadonlySet<IrExpr | IrStmt>;
206
+ integerViews: Map<string, string>;
170
207
  /** Enclosing try-with-FINALLY regions, innermost last: a `return`
171
208
  * inside one runs every crossed finally (innermost first) before the
172
209
  * actual ret — the runtime ABI’s pending-return path, with the finally
@@ -412,6 +449,16 @@ export declare class LlEmitter {
412
449
  /** Move a clean async return value into the current fiber's promise. */
413
450
  private emitWasiFulfill;
414
451
  private emitFunction;
452
+ /** Keep the ordinary owned ABI for closures, virtual dispatch, generated
453
+ * runtime adapters and library exports. Only direct IR calls select the
454
+ * borrowing body. Ownership of other parameters moves into that body;
455
+ * borrowed parameters are released here on normal and exceptional exits.
456
+ * The pending exception remains for the adapter's caller to handle. */
457
+ private emitOwnedCallAdapter;
458
+ /** A local stable binding keeps its value alive while later arguments
459
+ * and the callee execute. Global, captured, TDZ and mutable bindings need
460
+ * an owned snapshot, even when the callee only inspects the value. */
461
+ canBorrowCallArgument(value: IrExpr): boolean;
415
462
  private emitStmts;
416
463
  /** Emits a block in its own lexical scope (refcounted locals released at
417
464
  * end). `setup` runs after the
@@ -461,7 +508,7 @@ export declare class LlEmitter {
461
508
  * branch and moves the result into `slot`: the chosen value's ownership
462
509
  * transfers, every other temp the arm allocated releases inside the
463
510
  * branch. The shared core of ternary/logical. */
464
- emitBranchInto(slot: string, expr: IrExpr): void;
511
+ emitBranchInto(slot: string, expr: IrExpr, integerSlot?: string): boolean;
465
512
  emitLiteralExpr(e: ExprOf<"numLit" | "boolLit" | "strLit" | "moduleNsRef" | "unitLit" | "varRef">): LlValue;
466
513
  emitOperatorExpr(e: ExprOf<"bin" | "unary" | "incDec" | "fieldIncDec" | "assignExpr" | "seqExpr">): LlValue;
467
514
  emitControlExpr(e: ExprOf<"dynDestrCheck" | "dynIterN" | "toBool" | "logical" | "ternary" | "optChain" | "chainRecv" | "orDefault" | "nullish">): LlValue;
@@ -487,6 +534,7 @@ export declare class LlEmitter {
487
534
  * their ordinary statement-frame ownership. The caller must retain any
488
535
  * reference result before evaluating another expression. */
489
536
  emitReadReceiver(e: IrExpr): LlValue;
537
+ canBorrowReceiver(e: IrExpr): boolean;
490
538
  emitExpr(e: IrExpr): LlValue;
491
539
  emitJsMarshal(e: IrExpr & {
492
540
  kind: "jsMarshal";
@@ -562,7 +610,7 @@ export declare class LlEmitter {
562
610
  emitMapNew(e: IrExpr & {
563
611
  kind: "mapNew";
564
612
  }): LlValue;
565
- mapSet(m: string, kAcc: "f64" | "str" | "ref", vAcc: "f64" | "bool" | "ref", key: string, value: string): void;
613
+ mapSet(m: string, kAcc: MapKeyAccess, vAcc: "f64" | "bool" | "ref", key: string, value: string): void;
566
614
  emitMapLikeIntrinsic(e: Extract<IrExpr, {
567
615
  kind: "mapIntrinsic" | "setIntrinsic";
568
616
  }>): LlValue;
@@ -571,11 +619,12 @@ export declare class LlEmitter {
571
619
  }): LlValue;
572
620
  emitStableReceiver(receiver: IrExpr, following: IrExpr[]): LlValue;
573
621
  emitIntegerLoopIndex(expr: IrExpr): string | null;
574
- emitBytesIndex(receiver: string, index: string, integerIndex?: boolean): string;
622
+ emitBytesIndex(receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean): string;
575
623
  emitBytesData(receiver: string): string;
576
624
  emitBytesLength(elem: IrBytesElem, receiver: string, bytes: boolean): LlValue;
577
- emitBytesGet(elem: IrBytesElem, receiver: string, index: string, integerIndex?: boolean): LlValue;
578
- emitToUint32(value: string, expr?: IrExpr): string;
625
+ emitBytesGet(elem: IrBytesElem, receiver: string, index: LlValue, expr?: IrExpr, inBounds?: boolean): LlValue;
626
+ emitToUint32(value: string, expr?: IrExpr, uint32?: string): string;
627
+ storeIntegerView(localId: string, value: LlValue, expr?: IrExpr): void;
579
628
  private emitBytesSet;
580
629
  emitBytesIntrinsic(e: IrExpr & {
581
630
  kind: "bytesIntrinsic";