@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.
- package/ambient/scriptc-node-fallback.d.ts +99 -27
- package/dist/backend/cycle-analysis.js +63 -50
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +51 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/llvm/borrowed-inputs.d.ts +15 -0
- package/dist/backend/llvm/borrowed-inputs.js +28 -0
- package/dist/backend/llvm/borrowed-inputs.js.map +1 -0
- package/dist/backend/llvm/borrowed-receivers.d.ts +9 -0
- package/dist/backend/llvm/borrowed-receivers.js +58 -0
- package/dist/backend/llvm/borrowed-receivers.js.map +1 -0
- package/dist/backend/llvm/byte-numbers.d.ts +10 -0
- package/dist/backend/llvm/byte-numbers.js +235 -0
- package/dist/backend/llvm/byte-numbers.js.map +1 -0
- package/dist/backend/llvm/bytes-bounds.d.ts +9 -0
- package/dist/backend/llvm/bytes-bounds.js +189 -0
- package/dist/backend/llvm/bytes-bounds.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +27 -0
- package/dist/backend/llvm/call-lifetimes.js +199 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.test.d.ts +1 -0
- package/dist/backend/llvm/call-lifetimes.test.js +259 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -0
- package/dist/backend/llvm/checked-value-lifetimes.d.ts +9 -0
- package/dist/backend/llvm/checked-value-lifetimes.js +35 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -0
- package/dist/backend/llvm/counted-loops.d.ts +6 -0
- package/dist/backend/llvm/counted-loops.js +28 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +2 -2
- package/dist/backend/llvm/dyn.js +79 -35
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +56 -7
- package/dist/backend/llvm/emitter.js +310 -37
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +24 -5
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +4 -3
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +4 -4
- package/dist/backend/llvm/expr-bytes.js +68 -35
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +50 -5
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +2 -1
- package/dist/backend/llvm/expr-containers.js +136 -57
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +11 -0
- package/dist/backend/llvm/expr-control.js +26 -5
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +33 -31
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +61 -27
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +9 -3
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +5 -10
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +10 -0
- package/dist/backend/llvm/integer-values.js +41 -0
- package/dist/backend/llvm/integer-values.js.map +1 -0
- package/dist/backend/llvm/integer-views.d.ts +7 -0
- package/dist/backend/llvm/integer-views.js +67 -0
- package/dist/backend/llvm/integer-views.js.map +1 -0
- package/dist/backend/llvm/integer-views.test.d.ts +1 -0
- package/dist/backend/llvm/integer-views.test.js +34 -0
- package/dist/backend/llvm/integer-views.test.js.map +1 -0
- package/dist/backend/llvm/lib-dispatch.js +3 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +5 -5
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +35 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.d.ts +42 -0
- package/dist/backend/llvm/local-array-reads.js +226 -0
- package/dist/backend/llvm/local-array-reads.js.map +1 -0
- package/dist/backend/llvm/local-array-reads.test.d.ts +1 -0
- package/dist/backend/llvm/local-array-reads.test.js +446 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +36 -0
- package/dist/backend/llvm/map-read-lifetimes.js +128 -0
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.test.d.ts +1 -0
- package/dist/backend/llvm/map-read-lifetimes.test.js +127 -0
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -0
- package/dist/backend/llvm/reference-effects.d.ts +22 -0
- package/dist/backend/llvm/reference-effects.js +148 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -0
- package/dist/backend/llvm/reference-effects.test.d.ts +1 -0
- package/dist/backend/llvm/reference-effects.test.js +74 -0
- package/dist/backend/llvm/reference-effects.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +7 -4
- package/dist/backend/llvm/shapes.js +24 -6
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/split.js +15 -5
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +17 -0
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.d.ts +20 -0
- package/dist/backend/llvm/stack-unions.js +61 -0
- package/dist/backend/llvm/stack-unions.js.map +1 -0
- package/dist/backend/llvm/stack-unions.test.d.ts +1 -0
- package/dist/backend/llvm/stack-unions.test.js +262 -0
- package/dist/backend/llvm/stack-unions.test.js.map +1 -0
- package/dist/backend/llvm/string-construction.d.ts +10 -0
- package/dist/backend/llvm/string-construction.js +38 -0
- package/dist/backend/llvm/string-construction.js.map +1 -0
- package/dist/backend/llvm/string-construction.test.d.ts +1 -0
- package/dist/backend/llvm/string-construction.test.js +65 -0
- package/dist/backend/llvm/string-construction.test.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.d.ts +12 -0
- package/dist/backend/llvm/string-lifetimes.js +72 -0
- package/dist/backend/llvm/string-lifetimes.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.test.d.ts +1 -0
- package/dist/backend/llvm/string-lifetimes.test.js +239 -0
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -0
- package/dist/backend/mangle.d.ts +2 -0
- package/dist/backend/mangle.js +4 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.js +67 -29
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +104 -1
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +2 -2
- package/dist/backend/native-toolchain.js +2 -0
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/frontend/input-tracker.js +3 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +38 -2
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.d.ts +31 -0
- package/dist/frontend/lowering/collection-ingestion.js +224 -0
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.js +2 -0
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +6 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/import-meta.d.ts +10 -0
- package/dist/frontend/lowering/import-meta.js +52 -0
- package/dist/frontend/lowering/import-meta.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +105 -41
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +2 -0
- package/dist/frontend/lowering/lower-builtin-values.js +22 -1
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +3 -13
- package/dist/frontend/lowering/lower-builtins.js +152 -46
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +6 -3
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +7 -7
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +5 -1
- package/dist/frontend/lowering/lower-containers.js +52 -37
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +47 -43
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +43 -0
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +72 -68
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-system-errors.d.ts +6 -0
- package/dist/frontend/lowering/lower-system-errors.js +29 -0
- package/dist/frontend/lowering/lower-system-errors.js.map +1 -0
- package/dist/frontend/lowering/lowerer.d.ts +4 -3
- package/dist/frontend/lowering/lowerer.js +60 -25
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +2 -2
- package/dist/frontend/lowering/surfaces.js +69 -21
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +8 -1
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/module-syntax.test.js +10 -0
- package/dist/frontend/module-syntax.test.js.map +1 -1
- package/dist/frontend/npm.d.ts +4 -0
- package/dist/frontend/npm.js +86 -33
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +103 -0
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.js +2 -1
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/services-node.js +3 -2
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services.d.ts +5 -1
- package/dist/frontend/services.js +9 -1
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +21 -0
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +2 -0
- package/dist/frontend/ts7/ast-node.js +30 -4
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +60 -1
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/type-mapper.js +8 -2
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -1
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/byte-numbers.d.ts +20 -0
- package/dist/ir/byte-numbers.js +65 -0
- package/dist/ir/byte-numbers.js.map +1 -0
- package/dist/ir/byte-numbers.test.d.ts +1 -0
- package/dist/ir/byte-numbers.test.js +42 -0
- package/dist/ir/byte-numbers.test.js.map +1 -0
- package/dist/ir/integer-loops.d.ts +26 -0
- package/dist/ir/integer-loops.js +130 -1
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.d.ts +1 -0
- package/dist/ir/integer-loops.test.js +91 -0
- package/dist/ir/integer-loops.test.js.map +1 -0
- package/dist/ir/integer-ranges.d.ts +8 -6
- package/dist/ir/integer-ranges.js +343 -89
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +54 -3
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +29 -22
- package/dist/ir/ir.js +59 -14
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +18 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/validate.js +208 -105
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +247 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.js +9 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/fence-eval.test.d.ts +1 -0
- package/dist/library/fence-eval.test.js +21 -0
- package/dist/library/fence-eval.test.js.map +1 -0
- package/dist/native/runtime-typescript.d.ts +4 -0
- package/dist/native/runtime-typescript.js +61 -0
- package/dist/native/runtime-typescript.js.map +1 -0
- package/dist/native/runtime-typescript.test.d.ts +1 -0
- package/dist/native/runtime-typescript.test.js +41 -0
- package/dist/native/runtime-typescript.test.js.map +1 -0
- package/dist/native/toolchain.js +6 -3
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +43 -5
- package/dist/native/toolchain.test.js.map +1 -1
- package/package.json +20 -20
- 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
|
|
168
|
-
integerLoopBindings: Map<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):
|
|
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:
|
|
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:
|
|
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:
|
|
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";
|