@scriptc/compiler 0.0.32 → 0.0.34
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/dist/backend/cc-cache.test.js +430 -1
- package/dist/backend/cc-cache.test.js.map +1 -1
- package/dist/backend/cc.d.ts +25 -0
- package/dist/backend/cc.js +818 -88
- package/dist/backend/cc.js.map +1 -1
- package/dist/backend/emission/emit-exprs.js +79 -3
- package/dist/backend/emission/emit-exprs.js.map +1 -1
- package/dist/backend/emission/emit-shapes.js +37 -4
- package/dist/backend/emission/emit-shapes.js.map +1 -1
- package/dist/backend/emission/emitter.d.ts +23 -7
- package/dist/backend/emission/emitter.js +171 -27
- package/dist/backend/emission/emitter.js.map +1 -1
- package/dist/backend/emission/may-throw.js +7 -4
- package/dist/backend/emission/may-throw.js.map +1 -1
- package/dist/backend/ffi-callbacks.d.ts +38 -1
- package/dist/backend/ffi-callbacks.js +76 -3
- package/dist/backend/ffi-callbacks.js.map +1 -1
- package/dist/backend/library-identity.d.ts +22 -0
- package/dist/backend/library-identity.js +103 -0
- package/dist/backend/library-identity.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +3 -0
- package/dist/backend/llvm/emitter.js +278 -17
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +1 -0
- package/dist/backend/llvm/shapes.js +25 -1
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/mangle.d.ts +1 -0
- package/dist/backend/mangle.js +3 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/object-localize.d.ts +5 -5
- package/dist/backend/object-localize.js +19 -16
- package/dist/backend/object-localize.js.map +1 -1
- package/dist/backend/object-localize.test.js +37 -13
- package/dist/backend/object-localize.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +2 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/ffi/profile.d.ts +17 -5
- package/dist/ffi/profile.js +169 -22
- package/dist/ffi/profile.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +82 -0
- package/dist/frontend/input-tracker.js +380 -0
- package/dist/frontend/input-tracker.js.map +1 -0
- package/dist/frontend/input-tracker.test.d.ts +1 -0
- package/dist/frontend/input-tracker.test.js +137 -0
- package/dist/frontend/input-tracker.test.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.js +2 -8
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +1 -0
- package/dist/frontend/lowering/lower-calls.js +244 -163
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +3 -0
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.js +113 -28
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +67 -1
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +45 -26
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +1 -1
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +48 -3
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +79 -29
- package/dist/frontend/lowering/lowerer.js +429 -87
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/npm-static-rewrite.js +25 -26
- package/dist/frontend/npm-static-rewrite.js.map +1 -1
- package/dist/frontend/npm-static.js +29 -30
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.d.ts +1 -0
- package/dist/frontend/npm-static.test.js +15 -0
- package/dist/frontend/npm-static.test.js.map +1 -0
- package/dist/frontend/npm.js +5 -17
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/program.js +2 -6
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.js +8 -29
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +2 -0
- package/dist/frontend/ts7/checker.js +20 -3
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/program.js +17 -18
- package/dist/frontend/ts7/program.js.map +1 -1
- package/dist/frontend/types.d.ts +41 -0
- package/dist/frontend/types.js +147 -8
- package/dist/frontend/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +275 -41
- package/dist/index.js.map +1 -1
- package/dist/ir/nodes.d.ts +42 -12
- package/dist/ir/nodes.js +7 -1
- package/dist/ir/nodes.js.map +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/validate.js +104 -1
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/early-cache.d.ts +65 -0
- package/dist/library/early-cache.js +380 -0
- package/dist/library/early-cache.js.map +1 -0
- package/dist/library/early-cache.test.d.ts +1 -0
- package/dist/library/early-cache.test.js +528 -0
- package/dist/library/early-cache.test.js.map +1 -0
- package/dist/library/int-infer.js +14 -0
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +21 -4
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/profile.d.ts +3 -0
- package/dist/library/profile.js +9 -1
- package/dist/library/profile.js.map +1 -1
- package/dist/library/semantic-source.d.ts +13 -0
- package/dist/library/semantic-source.js +257 -0
- package/dist/library/semantic-source.js.map +1 -0
- package/dist/library/semantic-source.test.d.ts +1 -0
- package/dist/library/semantic-source.test.js +113 -0
- package/dist/library/semantic-source.test.js.map +1 -0
- package/dist/library/sidecar.d.ts +6 -0
- package/dist/library/sidecar.js +11 -0
- package/dist/library/sidecar.js.map +1 -1
- package/package.json +2 -2
- package/surface-manifest.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, isRefCounted, mapOf, STRING } from "../../ir/nodes.js";
|
|
2
|
-
import { mangleClassGcFree, mangleClassNew, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleField, mangleFunction, mangleRecordGcFree, mangleRecordNew, mangleRecordRelease, mangleRecordRetain, mangleRecordStruct, mangleRecordTrace, mangleVtAdapter, mangleVtInstance, mangleVtStruct } from "../mangle.js";
|
|
3
|
-
import { boxKindC, cDecl, cType, elemKindC, mapValKindC, releaseCallC, vAdapters } from "./emit-types.js";
|
|
2
|
+
import { mangleClassGcFree, mangleClassNew, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleField, mangleFunction, mangleRecordClone, mangleRecordGcFree, mangleRecordNew, mangleRecordRelease, mangleRecordRetain, mangleRecordStruct, mangleRecordTrace, mangleVtAdapter, mangleVtInstance, mangleVtStruct } from "../mangle.js";
|
|
3
|
+
import { boxKindC, cDecl, cType, elemKindC, mapValKindC, releaseCallC, retainCallC, vAdapters } from "./emit-types.js";
|
|
4
4
|
/** The overflow map's C member name on index-signature record structs.
|
|
5
5
|
* User fields mangle to `sc_fld_*`, so no field can collide. */
|
|
6
6
|
export const OVERFLOW_MEMBER = "sc_ovf";
|
|
@@ -56,6 +56,7 @@ export function emitStructDefs(E, out) {
|
|
|
56
56
|
gcFree: mangleRecordGcFree(rec.id),
|
|
57
57
|
traced: E.tracedShapes.has(`record:${rec.id}`),
|
|
58
58
|
fields: rec.fields,
|
|
59
|
+
recordId: rec.id,
|
|
59
60
|
...(rec.indexValue ? { indexValue: rec.indexValue } : {}),
|
|
60
61
|
comment: `record ${rec.id} { ${rec.fields.map((f) => f.name).join("; ")}${rec.indexValue ? "; [key: string]" : ""} }`,
|
|
61
62
|
meta: null,
|
|
@@ -141,6 +142,9 @@ export function emitStructDefs(E, out) {
|
|
|
141
142
|
E.emitVtableDecls(out, shapes.filter(inHierarchy).map((s) => s.meta));
|
|
142
143
|
for (const s of shapes) {
|
|
143
144
|
out.push(`static ${s.struct} *${s.retain}(${s.struct} *o);`, `static void ${s.release}(${s.struct} *o);`, `static ${s.struct} *${s.newFn}(void);`);
|
|
145
|
+
if (s.recordId !== undefined && E.recordCloneShapes.has(s.recordId)) {
|
|
146
|
+
out.push(`static ${s.struct} *${mangleRecordClone(s.recordId)}(${s.struct} *src);`);
|
|
147
|
+
}
|
|
144
148
|
if (inHierarchy(s)) {
|
|
145
149
|
out.push(`static void ${mangleClassReleaseDirect(s.meta.def.name)}(void *o0);`);
|
|
146
150
|
}
|
|
@@ -165,7 +169,9 @@ export function emitStructDefs(E, out) {
|
|
|
165
169
|
const field = `o->${m.member}`;
|
|
166
170
|
out.push(` if (${field}) ${releaseCallC(m.type, field)};`);
|
|
167
171
|
}
|
|
168
|
-
out.push(` scr_obj_free_note();`, ` free(o);`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = calloc(1, sizeof *o);`, ` if (!o) { scr_trap("scriptc: out of memory\\n"); }`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`,
|
|
172
|
+
out.push(` scr_obj_free_note();`, ` free(o);`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = calloc(1, sizeof *o);`, ` if (!o) { scr_trap("scriptc: out of memory\\n"); }`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && E.recordCloneShapes.has(s.recordId)
|
|
173
|
+
? emitRecordCloneC(s.recordId, s.struct, s.fields, s.newFn)
|
|
174
|
+
: []), `static void *${s.retain}_v(void *o) { return ${s.retain}((${s.struct} *)o); }`, `static void ${s.release}_v(void *o) { ${s.release}((${s.struct} *)o); }`, ``);
|
|
169
175
|
continue;
|
|
170
176
|
}
|
|
171
177
|
// Cycle-capable shape: cycle-headered allocation, root-buffer hooks
|
|
@@ -179,7 +185,9 @@ export function emitStructDefs(E, out) {
|
|
|
179
185
|
const field = `o->${m.member}`;
|
|
180
186
|
out.push(` if (${field}) ${releaseCallC(m.type, field)};`);
|
|
181
187
|
}
|
|
182
|
-
out.push(` scr_obj_free_note();`, ` scr_cyc_free(o);`, ` } else {`, ` scr_cyc_on_release(o); /* possible cycle root; may collect */`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = scr_cyc_alloc(sizeof *o, &${s.trace}, &${s.gcFree});`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`,
|
|
188
|
+
out.push(` scr_obj_free_note();`, ` scr_cyc_free(o);`, ` } else {`, ` scr_cyc_on_release(o); /* possible cycle root; may collect */`, ` }`, `}`, `static ${s.struct} *${s.newFn}(void) {`, ` ${s.struct} *o = scr_cyc_alloc(sizeof *o, &${s.trace}, &${s.gcFree});`, ` o->rc = 1;`, ...undefFieldInitC(s), ...(s.indexValue ? [` o->${OVERFLOW_MEMBER} = ${overflowNewC(s)};`] : []), ` scr_obj_alloc_note();`, ` return o;`, `}`, ...(s.recordId !== undefined && E.recordCloneShapes.has(s.recordId)
|
|
189
|
+
? emitRecordCloneC(s.recordId, s.struct, s.fields, s.newFn)
|
|
190
|
+
: []), `static void ${s.trace}(void *o0, ScrTraceVisit visit, void *ctx) {`, ` ${s.struct} *o = (${s.struct} *)o0;`, ...tracedFields.map((m) => ` visit(o->${m.member}, ctx); /* ${m.name} */`), `}`, `static void ${s.gcFree}(void *o0) {`, ...(untracedRefFields.length > 0
|
|
183
191
|
? [
|
|
184
192
|
` ${s.struct} *o = (${s.struct} *)o0;`,
|
|
185
193
|
...untracedRefFields.map((m) => {
|
|
@@ -190,6 +198,31 @@ export function emitStructDefs(E, out) {
|
|
|
190
198
|
: []), ` scr_obj_free_note();`, ` scr_cyc_free(o0);`, `}`, `static void *${s.retain}_v(void *o) { return ${s.retain}((${s.struct} *)o); }`, `static void ${s.release}_v(void *o) { ${s.release}((${s.struct} *)o); }`, ``);
|
|
191
199
|
}
|
|
192
200
|
}
|
|
201
|
+
/** One deliberately non-inlined same-shape clone helper. Keeping the copy
|
|
202
|
+
* here makes each `{ ...largeRecord, override }` site constant-sized while
|
|
203
|
+
* preserving the ordinary type-directed retain rules. */
|
|
204
|
+
function emitRecordCloneC(shapeId, struct, fields, newFn) {
|
|
205
|
+
const noinline = fields.length >= 16;
|
|
206
|
+
return [
|
|
207
|
+
...(noinline
|
|
208
|
+
? [
|
|
209
|
+
`#if defined(_MSC_VER)`,
|
|
210
|
+
`__declspec(noinline)`,
|
|
211
|
+
`#else`,
|
|
212
|
+
`__attribute__((noinline))`,
|
|
213
|
+
`#endif`,
|
|
214
|
+
]
|
|
215
|
+
: []),
|
|
216
|
+
`static ${struct} *${mangleRecordClone(shapeId)}(${struct} *src) {`,
|
|
217
|
+
` ${struct} *o = ${newFn}();`,
|
|
218
|
+
...fields.map((f) => {
|
|
219
|
+
const member = mangleField(f.name);
|
|
220
|
+
return ` o->${member} = ${isRefCounted(f.type) ? retainCallC(f.type, `src->${member}`) : `src->${member}`};`;
|
|
221
|
+
}),
|
|
222
|
+
` return o;`,
|
|
223
|
+
`}`,
|
|
224
|
+
];
|
|
225
|
+
}
|
|
193
226
|
/** The root's slot list as seen by one class: the implementation the
|
|
194
227
|
* class dispatches to, or null outside the slot's declaring subtree (a
|
|
195
228
|
* call through this class's vtable can never reach that slot). An
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-shapes.js","sourceRoot":"","sources":["../../../src/backend/emission/emit-shapes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"emit-shapes.js","sourceRoot":"","sources":["../../../src/backend/emission/emit-shapes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { IrBytesElem, IrGlobal, IrRecordShape, IrExpr, IrFfiCallbackParamClass, IrFfiImport, IrFfiReturnClass, IrFfiValueParamClass, IrFunction, IrLocal, IrModule, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/nodes.js";
|
|
2
2
|
import { type FfiCallbackAdapter } from "../ffi-callbacks.js";
|
|
3
3
|
import { VtSlot, ClassMeta } from "./emit-shapes.js";
|
|
4
|
-
export
|
|
4
|
+
export interface CEmitOptions {
|
|
5
|
+
/** Library archive assembly may move the volatile identity getters into a
|
|
6
|
+
* separate translation unit. Public/direct emission keeps them by default. */
|
|
7
|
+
emitLibraryIdentity?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function emitModule(mod: IrModule, sourceText?: string, options?: CEmitOptions): string;
|
|
5
10
|
/** A declared C value with its IR type — the unit frames and scopes track
|
|
6
11
|
* so releases can be type-directed. */
|
|
7
12
|
export interface Temp {
|
|
@@ -16,6 +21,7 @@ export interface ScopeEntry extends Temp {
|
|
|
16
21
|
export declare function ffiNativeTypeC(cls: IrFfiCallbackParamClass | IrFfiValueParamClass | IrFfiReturnClass): string;
|
|
17
22
|
export declare class CEmitter {
|
|
18
23
|
readonly mod: IrModule;
|
|
24
|
+
private readonly options;
|
|
19
25
|
readonly lines: string[];
|
|
20
26
|
indent: number;
|
|
21
27
|
tempCounter: number;
|
|
@@ -125,11 +131,20 @@ export declare class CEmitter {
|
|
|
125
131
|
* pointers additionally get a distinct TLS context slot, so two
|
|
126
132
|
* callbacks with the same signature never alias each other's closure. */
|
|
127
133
|
readonly ffiCallbackAdapters: Map<string, FfiCallbackAdapter>;
|
|
134
|
+
/** Module-level constant consulted per ffiCall: with a retained
|
|
135
|
+
* descriptor anywhere in the manifest, every native call is a
|
|
136
|
+
* pending-exception checkpoint (may-throw derives the same fact from
|
|
137
|
+
* the same helper). */
|
|
138
|
+
readonly ffiHasRetainedCallback: boolean;
|
|
139
|
+
readonly ffiHasForeignCallback: boolean;
|
|
128
140
|
readonly globalsById: Map<string, IrGlobal>;
|
|
129
141
|
readonly unionsById: Map<string, IrUnionDef>;
|
|
130
142
|
/** Active optional-chain bind temps, by chain id (chainRecv reads). */
|
|
131
143
|
readonly chainTemps: Map<string, Temp>;
|
|
132
144
|
readonly recordsById: Map<string, IrRecordShape>;
|
|
145
|
+
/** Record shapes whose bodies emitted recordClone. Filled while function
|
|
146
|
+
* bodies emit, before emitStructDefs assembles per-shape helpers. */
|
|
147
|
+
readonly recordCloneShapes: Set<string>;
|
|
133
148
|
/** Type-directed JSON walkers, interned per typeKey — one serializer per
|
|
134
149
|
* type used in jsonStringify position (sc_jw_*), one match predicate
|
|
135
150
|
* (sc_dm_*) and one checked builder (sc_dc_*) per type used in dynCheck
|
|
@@ -308,7 +323,7 @@ export declare class CEmitter {
|
|
|
308
323
|
impl: ClassMeta;
|
|
309
324
|
slot: VtSlot;
|
|
310
325
|
}>;
|
|
311
|
-
constructor(mod: IrModule, sourceText?: string);
|
|
326
|
+
constructor(mod: IrModule, sourceText?: string, options?: CEmitOptions);
|
|
312
327
|
emit(): string;
|
|
313
328
|
emitLibEntries(out: string[], globals: IrGlobal[]): void;
|
|
314
329
|
emitAsyncScaffolding(out: string[]): void;
|
|
@@ -450,11 +465,12 @@ export declare class CEmitter {
|
|
|
450
465
|
* record shapes' construction paths, which write every field. */
|
|
451
466
|
undefFieldInitLineC(name: string, t: IrType): string[];
|
|
452
467
|
ffiCallbackAdapter(binding: string, id: string): FfiCallbackAdapter;
|
|
453
|
-
/** C-callable trampolines for format-2 callbacks. The external callback
|
|
454
|
-
* ABI is scalar C
|
|
455
|
-
* internal side is scriptc's
|
|
456
|
-
* A raw callback borrows its
|
|
457
|
-
* dynamic extent of the outer
|
|
468
|
+
/** C-callable trampolines for format-2/3/4 callbacks. The external callback
|
|
469
|
+
* ABI is scalar C, format-3 copy-in string/byte slots, plus an optional
|
|
470
|
+
* exact-position context pointer; the internal side is scriptc's
|
|
471
|
+
* (ScrClosure *env, params...) convention. A raw callback borrows its
|
|
472
|
+
* closure through a distinct TLS slot for the dynamic extent of the outer
|
|
473
|
+
* call, or a process-global slot for retained replace semantics. */
|
|
458
474
|
emitFfiCallbackDefs(out: string[]): void;
|
|
459
475
|
signature(fn: IrFunction): string;
|
|
460
476
|
emitFunction(fn: IrFunction): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ffiCallbackType, funcOf, isFfiCallbackParam, isFfiContextParam, isRefCounted, isUnitType, mapOf, moduleEmbedsCompressedNpm, moduleUsesDgram, moduleUsesDynInvoke, moduleEmbedsBuiltin, moduleUsesFetch, moduleUsesFsWatch, moduleUsesHttp2, moduleUsesHttpServer, moduleUsesNet, moduleUsesNodeTest, moduleUsesProcessEvents, moduleUsesStream, moduleUsesTls, moduleUsesTlsCa, RUNTIME_EMITTER_CLASS, STRING, VOID } from "../../ir/nodes.js";
|
|
2
|
-
import { allocateFfiCallbackAdapters } from "../ffi-callbacks.js";
|
|
1
|
+
import { ffiCallbackType, funcOf, isFfiCallbackParam, isFfiContextParam, isFfiReleaseParam, isRefCounted, isUnitType, mapOf, moduleEmbedsCompressedNpm, moduleUsesDgram, moduleUsesDynInvoke, moduleEmbedsBuiltin, moduleUsesFetch, moduleUsesFsWatch, moduleUsesHttp2, moduleUsesHttpServer, moduleUsesNet, moduleUsesNodeTest, moduleUsesProcessEvents, moduleUsesStream, moduleUsesTls, moduleUsesTlsCa, RUNTIME_EMITTER_CLASS, STRING, VOID } from "../../ir/nodes.js";
|
|
2
|
+
import { allocateFfiCallbackAdapters, hasForeignFfiCallback, hasRetainedFfiCallback } from "../ffi-callbacks.js";
|
|
3
3
|
import { mangleAsyncSpawn, mangleGenSpawn, mangleClassObj, mangleField, mangleGlobal, mangleFnClosure, mangleFunction, mangleLocal, mangleRawParam, mangleVtSlot, mangleWrapper, } from "../mangle.js";
|
|
4
4
|
import { cFnPtrCast, cType, releaseCallC, cStringLiteral, cDecl } from "./emit-types.js";
|
|
5
5
|
import { computeMayThrow } from "./may-throw.js";
|
|
@@ -9,8 +9,9 @@ import { emitAsyncScaffolding, childDataThunkFor, childExitThunkFor, childExitTh
|
|
|
9
9
|
import { emitNpmEmbedding, islandAdapter, islandTypedAdapter } from "./emit-island.js";
|
|
10
10
|
import { emitFunction, emitBlock, emitStmts, emitStmt, emitTryCatch, emitSwitch, mergeBrace, emitBranchInto, emitCondition } from "./emit-stmts.js";
|
|
11
11
|
import { emitExpr } from "./emit-exprs.js";
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
import { emitLibraryIdentityLines } from "../library-identity.js";
|
|
13
|
+
export function emitModule(mod, sourceText, options = {}) {
|
|
14
|
+
return new CEmitter(mod, sourceText, options).emit();
|
|
14
15
|
}
|
|
15
16
|
export function ffiNativeTypeC(cls) {
|
|
16
17
|
switch (cls) {
|
|
@@ -23,6 +24,8 @@ export function ffiNativeTypeC(cls) {
|
|
|
23
24
|
return "uint32_t";
|
|
24
25
|
case "i32":
|
|
25
26
|
return "int32_t";
|
|
27
|
+
case "cstring":
|
|
28
|
+
return "const char *";
|
|
26
29
|
case "string":
|
|
27
30
|
case "bytes":
|
|
28
31
|
throw new Error(`emitter bug: span class '${cls}' has no scalar C type`);
|
|
@@ -31,9 +34,17 @@ export function ffiNativeTypeC(cls) {
|
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
function ffiCallbackNativeParamsC(callback, named) {
|
|
34
|
-
return callback.params.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
return callback.params.flatMap((param, i) => {
|
|
38
|
+
if (isFfiContextParam(param))
|
|
39
|
+
return [`void *${named ? "sc_ctx" : ""}`.trim()];
|
|
40
|
+
if (param === "string" || param === "bytes") {
|
|
41
|
+
return [
|
|
42
|
+
`const uint8_t *${named ? `sc_a${i}` : ""}`.trim(),
|
|
43
|
+
`size_t${named ? ` sc_a${i}_len` : ""}`,
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
return [`${ffiNativeTypeC(param)}${named ? ` sc_a${i}` : ""}`];
|
|
47
|
+
});
|
|
37
48
|
}
|
|
38
49
|
function ffiCallbackPointerTypeC(callback) {
|
|
39
50
|
const ret = ffiNativeTypeC(callback.returns);
|
|
@@ -45,6 +56,7 @@ function ffiCallbackDummyC(callback) {
|
|
|
45
56
|
}
|
|
46
57
|
export class CEmitter {
|
|
47
58
|
mod;
|
|
59
|
+
options;
|
|
48
60
|
lines = [];
|
|
49
61
|
indent = 0;
|
|
50
62
|
tempCounter = 0;
|
|
@@ -151,11 +163,20 @@ export class CEmitter {
|
|
|
151
163
|
* pointers additionally get a distinct TLS context slot, so two
|
|
152
164
|
* callbacks with the same signature never alias each other's closure. */
|
|
153
165
|
ffiCallbackAdapters;
|
|
166
|
+
/** Module-level constant consulted per ffiCall: with a retained
|
|
167
|
+
* descriptor anywhere in the manifest, every native call is a
|
|
168
|
+
* pending-exception checkpoint (may-throw derives the same fact from
|
|
169
|
+
* the same helper). */
|
|
170
|
+
ffiHasRetainedCallback;
|
|
171
|
+
ffiHasForeignCallback;
|
|
154
172
|
globalsById = new Map();
|
|
155
173
|
unionsById = new Map();
|
|
156
174
|
/** Active optional-chain bind temps, by chain id (chainRecv reads). */
|
|
157
175
|
chainTemps = new Map();
|
|
158
176
|
recordsById = new Map();
|
|
177
|
+
/** Record shapes whose bodies emitted recordClone. Filled while function
|
|
178
|
+
* bodies emit, before emitStructDefs assembles per-shape helpers. */
|
|
179
|
+
recordCloneShapes = new Set();
|
|
159
180
|
/** Type-directed JSON walkers, interned per typeKey — one serializer per
|
|
160
181
|
* type used in jsonStringify position (sc_jw_*), one match predicate
|
|
161
182
|
* (sc_dm_*) and one checked builder (sc_dc_*) per type used in dynCheck
|
|
@@ -292,9 +313,12 @@ export class CEmitter {
|
|
|
292
313
|
/** Vtable slot adapters to define after the function signatures (they
|
|
293
314
|
* call sc_f_* bodies): dedupe key "implClass.method". */
|
|
294
315
|
vtAdapters = new Map();
|
|
295
|
-
constructor(mod, sourceText) {
|
|
316
|
+
constructor(mod, sourceText, options = {}) {
|
|
296
317
|
this.mod = mod;
|
|
318
|
+
this.options = options;
|
|
297
319
|
this.ffiCallbackAdapters = allocateFfiCallbackAdapters(mod.ffiImports ?? []);
|
|
320
|
+
this.ffiHasRetainedCallback = hasRetainedFfiCallback(mod.ffiImports ?? []);
|
|
321
|
+
this.ffiHasForeignCallback = hasForeignFfiCallback(mod.ffiImports ?? []);
|
|
298
322
|
for (const fn of mod.functions) {
|
|
299
323
|
this.returnTypeByFn.set(fn.name, fn.returnType);
|
|
300
324
|
this.fnByName.set(fn.name, fn);
|
|
@@ -621,8 +645,9 @@ export class CEmitter {
|
|
|
621
645
|
const directFfiImports = (this.mod.ffiImports ?? []).filter((entry) => !libraryCallbackNames.has(entry.name));
|
|
622
646
|
for (const entry of directFfiImports) {
|
|
623
647
|
const params = entry.params.flatMap((param) => {
|
|
624
|
-
if (isFfiCallbackParam(param))
|
|
648
|
+
if (isFfiCallbackParam(param) || isFfiReleaseParam(param)) {
|
|
625
649
|
return [ffiCallbackPointerTypeC(param.callback)];
|
|
650
|
+
}
|
|
626
651
|
if (isFfiContextParam(param))
|
|
627
652
|
return ["void *"];
|
|
628
653
|
switch (param) {
|
|
@@ -745,19 +770,28 @@ export class CEmitter {
|
|
|
745
770
|
// main freed them (observed use-after-free). scr_run_exit_listeners
|
|
746
771
|
// is idempotent (scr_exit_ran), so the atexit becomes a no-op; the
|
|
747
772
|
// code argument is the hint the failure reporters maintain — exactly
|
|
748
|
-
// what the atexit path would have passed.
|
|
773
|
+
// what the atexit path would have passed. With a retained FFI
|
|
774
|
+
// descriptor the inline call is required even with nothing to
|
|
775
|
+
// release: listeners must beat the atexit FFI ledger sweep (a
|
|
776
|
+
// listener may legitimately release or pump a registration), and
|
|
777
|
+
// only the inline call orders ahead of every atexit handler. Plain
|
|
778
|
+
// event programs with neither keep the atexit path, so their
|
|
779
|
+
// listener timing is unchanged.
|
|
749
780
|
const needsRelease = refGlobals.length > 0 || fnValueProps.length > 0;
|
|
750
|
-
const runExitListeners = moduleUsesProcessEvents(this.mod) && needsRelease
|
|
781
|
+
const runExitListeners = moduleUsesProcessEvents(this.mod) && (needsRelease || this.ffiHasRetainedCallback)
|
|
751
782
|
? "scr_run_exit_listeners((double)scr_exit_code_hint_get()); "
|
|
752
783
|
: "";
|
|
784
|
+
const exitCleanup = `${runExitListeners}${needsRelease ? "sc_release_globals(); " : ""}`;
|
|
753
785
|
const releaseGlobals = needsRelease
|
|
754
786
|
? ` ${runExitListeners}sc_release_globals();`
|
|
755
|
-
:
|
|
787
|
+
: runExitListeners !== ""
|
|
788
|
+
? ` ${runExitListeners.trim()}`
|
|
789
|
+
: ` /* no refcounted globals */`;
|
|
756
790
|
const uncaught = (indent, releaseTop = false) => [
|
|
757
791
|
`${indent}if (scr_exc_pending()) {`,
|
|
758
792
|
`${indent} scr_exc_print_uncaught();`,
|
|
759
793
|
`${indent} ${releaseTop ? "scr_promise_release(sc_top); " : ""}` +
|
|
760
|
-
`${
|
|
794
|
+
`${exitCleanup}return 1;`,
|
|
761
795
|
`${indent}}`,
|
|
762
796
|
];
|
|
763
797
|
out.push(
|
|
@@ -828,7 +862,7 @@ export class CEmitter {
|
|
|
828
862
|
...(moduleUsesDgram(this.mod) ? [` scr_dgram_install();`] : []),
|
|
829
863
|
// fs.watch programs fill the loop's watch hooks the same way —
|
|
830
864
|
// scr_watch.c links only when this line is emitted.
|
|
831
|
-
...(moduleUsesFsWatch(this.mod) ? [` scr_watch_install();`] : []),
|
|
865
|
+
...(moduleUsesFsWatch(this.mod) ? [` scr_watch_install();`] : []), ...(this.ffiHasForeignCallback ? [` scr_ffi_install();`] : []),
|
|
832
866
|
// The embedded npm tables must be registered before %main: the %init
|
|
833
867
|
// functions it calls import from them. Static data only — the engine
|
|
834
868
|
// still boots lazily, on the first island entry. Compressed module
|
|
@@ -852,14 +886,14 @@ export class CEmitter {
|
|
|
852
886
|
// The event loop runs to exhaustion (microtasks before timers). A
|
|
853
887
|
// throw escaping a timer callback and unhandled promise rejections
|
|
854
888
|
// both exit 1, like Node.
|
|
855
|
-
...(hasAsync || hasGenerators || this.usesTimers || usesIsland
|
|
889
|
+
...(hasAsync || hasGenerators || this.usesTimers || usesIsland || this.ffiHasForeignCallback
|
|
856
890
|
? [
|
|
857
891
|
` bool sc_loop_rejection = scr_loop_run(${asyncEntry ? "sc_top" : "NULL"});`,
|
|
858
892
|
...uncaught(" ", asyncEntry),
|
|
859
893
|
` if (sc_loop_rejection) {`,
|
|
860
894
|
` scr_discard_unhandled_rejections();`,
|
|
861
895
|
...(asyncEntry ? [` scr_promise_release(sc_top);`] : []),
|
|
862
|
-
` ${
|
|
896
|
+
` ${exitCleanup}return 1;`,
|
|
863
897
|
` }`,
|
|
864
898
|
...(asyncEntry
|
|
865
899
|
? [
|
|
@@ -872,13 +906,13 @@ export class CEmitter {
|
|
|
872
906
|
` scr_promise_rethrow_top_level(sc_top);`,
|
|
873
907
|
` scr_promise_release(sc_top);`,
|
|
874
908
|
` scr_exc_print_uncaught();`,
|
|
875
|
-
` ${
|
|
909
|
+
` ${exitCleanup}return 1;`,
|
|
876
910
|
` }`,
|
|
877
911
|
` scr_promise_release(sc_top);`,
|
|
878
912
|
]
|
|
879
913
|
: []),
|
|
880
914
|
` if (scr_report_unhandled_rejections()) {`,
|
|
881
|
-
` ${
|
|
915
|
+
` ${exitCleanup}return 1;`,
|
|
882
916
|
` }`,
|
|
883
917
|
...(asyncEntry
|
|
884
918
|
? [
|
|
@@ -980,12 +1014,12 @@ export class CEmitter {
|
|
|
980
1014
|
}
|
|
981
1015
|
out.push(` return -1;`, `}`, ``);
|
|
982
1016
|
}
|
|
983
|
-
if (lib.identity !== undefined) {
|
|
1017
|
+
if (lib.identity !== undefined && this.options.emitLibraryIdentity !== false) {
|
|
984
1018
|
// Profile-declared identity getters (the ask-2 sidecar's boot-time
|
|
985
1019
|
// pairing fence): pure data returns with NO entry prologue — exempt
|
|
986
1020
|
// from the poisoned guard and every runtime touch (ratified), so a
|
|
987
1021
|
// host can read them before init and after a trap.
|
|
988
|
-
out.push(
|
|
1022
|
+
out.push(...emitLibraryIdentityLines("c", lib.identity));
|
|
989
1023
|
}
|
|
990
1024
|
if (lib.resultResetSymbol !== null) {
|
|
991
1025
|
out.push(`void ${lib.resultResetSymbol}(void) {`, ` scr_library_entry(false, "${lib.resultResetSymbol}");`, ` scr_library_arena_reset();`, `}`, ``);
|
|
@@ -1493,11 +1527,12 @@ export class CEmitter {
|
|
|
1493
1527
|
throw new Error(`emitter bug: no callback adapter for ${binding}:${id}`);
|
|
1494
1528
|
return adapter;
|
|
1495
1529
|
}
|
|
1496
|
-
/** C-callable trampolines for format-2 callbacks. The external callback
|
|
1497
|
-
* ABI is scalar C
|
|
1498
|
-
* internal side is scriptc's
|
|
1499
|
-
* A raw callback borrows its
|
|
1500
|
-
* dynamic extent of the outer
|
|
1530
|
+
/** C-callable trampolines for format-2/3/4 callbacks. The external callback
|
|
1531
|
+
* ABI is scalar C, format-3 copy-in string/byte slots, plus an optional
|
|
1532
|
+
* exact-position context pointer; the internal side is scriptc's
|
|
1533
|
+
* (ScrClosure *env, params...) convention. A raw callback borrows its
|
|
1534
|
+
* closure through a distinct TLS slot for the dynamic extent of the outer
|
|
1535
|
+
* call, or a process-global slot for retained replace semantics. */
|
|
1501
1536
|
emitFfiCallbackDefs(out) {
|
|
1502
1537
|
if (this.ffiCallbackAdapters.size === 0)
|
|
1503
1538
|
return;
|
|
@@ -1506,13 +1541,110 @@ export class CEmitter {
|
|
|
1506
1541
|
if (adapter.tls !== null) {
|
|
1507
1542
|
out.push(`static _Thread_local ScrClosure *${adapter.tls};`);
|
|
1508
1543
|
}
|
|
1544
|
+
if (adapter.global !== null) {
|
|
1545
|
+
out.push(`static ScrClosure *${adapter.global};`);
|
|
1546
|
+
}
|
|
1547
|
+
if (adapter.table !== null) {
|
|
1548
|
+
out.push(`static ScrFfiTable ${adapter.table};`);
|
|
1549
|
+
}
|
|
1509
1550
|
const nativeParams = ffiCallbackNativeParamsC(cb, true);
|
|
1510
1551
|
const ret = ffiNativeTypeC(cb.returns);
|
|
1511
1552
|
const contextParam = cb.params.findIndex(isFfiContextParam);
|
|
1512
|
-
|
|
1553
|
+
if (cb.invoke === "foreign") {
|
|
1554
|
+
if (adapter.table === null || contextParam < 0 || cb.returns !== "void") {
|
|
1555
|
+
throw new Error("emitter bug: invalid foreign FFI callback descriptor");
|
|
1556
|
+
}
|
|
1557
|
+
const dispatch = `${adapter.symbol}_dispatch`;
|
|
1558
|
+
const ft = ffiCallbackType(cb);
|
|
1559
|
+
const scriptArgs = cb.params.flatMap((param, i) => {
|
|
1560
|
+
if (isFfiContextParam(param))
|
|
1561
|
+
return [];
|
|
1562
|
+
switch (param) {
|
|
1563
|
+
case "f64":
|
|
1564
|
+
return [`scr_ffi_call_get_f64(sc_call, ${i})`];
|
|
1565
|
+
case "bool":
|
|
1566
|
+
return [`scr_ffi_call_get_bool(sc_call, ${i})`];
|
|
1567
|
+
case "u8":
|
|
1568
|
+
return [`scr_ffi_call_get_u8(sc_call, ${i})`];
|
|
1569
|
+
case "u32":
|
|
1570
|
+
return [`scr_ffi_call_get_u32(sc_call, ${i})`];
|
|
1571
|
+
case "i32":
|
|
1572
|
+
return [`scr_ffi_call_get_i32(sc_call, ${i})`];
|
|
1573
|
+
case "cstring":
|
|
1574
|
+
case "string":
|
|
1575
|
+
return [`scr_str_from_utf8_lossy(scr_ffi_call_get_data(sc_call, ${i}), scr_ffi_call_get_len(sc_call, ${i}))`];
|
|
1576
|
+
case "bytes":
|
|
1577
|
+
return [`scr_bytes_from_data(scr_ffi_call_get_data(sc_call, ${i}), scr_ffi_call_get_len(sc_call, ${i}))`];
|
|
1578
|
+
}
|
|
1579
|
+
});
|
|
1580
|
+
out.push(`static void ${dispatch}(ScrClosure *sc_cb, ScrFfiCall *sc_call) {`, ` (${cFnPtrCast(ft)}sc_cb->fn)(sc_cb${scriptArgs.length ? `, ${scriptArgs.join(", ")}` : ""});`, `}`, `static void ${adapter.symbol}(${nativeParams.join(", ")}) {`, ` ScrClosure *sc_cb = (ScrClosure *)sc_ctx;`, ` ScrFfiCall *sc_call = scr_ffi_call_new(&${adapter.table}, sc_cb, &${dispatch}, ${cb.params.length});`);
|
|
1581
|
+
cb.params.forEach((param, i) => {
|
|
1582
|
+
if (isFfiContextParam(param))
|
|
1583
|
+
return;
|
|
1584
|
+
switch (param) {
|
|
1585
|
+
case "f64":
|
|
1586
|
+
out.push(` scr_ffi_call_set_f64(sc_call, ${i}, sc_a${i});`);
|
|
1587
|
+
break;
|
|
1588
|
+
case "bool":
|
|
1589
|
+
out.push(` scr_ffi_call_set_bool(sc_call, ${i}, sc_a${i});`);
|
|
1590
|
+
break;
|
|
1591
|
+
case "u8":
|
|
1592
|
+
out.push(` scr_ffi_call_set_u8(sc_call, ${i}, sc_a${i});`);
|
|
1593
|
+
break;
|
|
1594
|
+
case "u32":
|
|
1595
|
+
out.push(` scr_ffi_call_set_u32(sc_call, ${i}, sc_a${i});`);
|
|
1596
|
+
break;
|
|
1597
|
+
case "i32":
|
|
1598
|
+
out.push(` scr_ffi_call_set_i32(sc_call, ${i}, sc_a${i});`);
|
|
1599
|
+
break;
|
|
1600
|
+
case "cstring":
|
|
1601
|
+
out.push(` scr_ffi_call_copy_cstring(sc_call, ${i}, sc_a${i});`);
|
|
1602
|
+
break;
|
|
1603
|
+
case "string":
|
|
1604
|
+
case "bytes":
|
|
1605
|
+
out.push(` scr_ffi_call_copy_${param}(sc_call, ${i}, sc_a${i}, sc_a${i}_len);`);
|
|
1606
|
+
break;
|
|
1607
|
+
}
|
|
1608
|
+
});
|
|
1609
|
+
out.push(` scr_ffi_post(sc_call);`, `}`, ``);
|
|
1610
|
+
continue;
|
|
1611
|
+
}
|
|
1612
|
+
out.push(`static ${ret} ${adapter.symbol}(${nativeParams.length > 0 ? nativeParams.join(", ") : "void"}) {`, ` ScrClosure *sc_cb = ${contextParam >= 0 ? `(ScrClosure *)sc_ctx` : adapter.tls ?? adapter.global};`, ` if (sc_cb == NULL) scr_trap("scriptc: native callback invoked outside its ${adapter.callback.lifetime === "call" ? "call-scoped" : "retained"} lifetime\\n");`);
|
|
1513
1613
|
const dummy = ffiCallbackDummyC(cb);
|
|
1514
1614
|
out.push(` if (scr_exc_pending()) ${cb.returns === "void" ? "return;" : `return ${dummy};`}`);
|
|
1615
|
+
// Reject every invalid native pointer before materializing any owned
|
|
1616
|
+
// callback arguments, so the trap path cannot strand an earlier copy.
|
|
1617
|
+
for (let i = 0; i < cb.params.length; i++) {
|
|
1618
|
+
const param = cb.params[i];
|
|
1619
|
+
if (param === "cstring") {
|
|
1620
|
+
out.push(` if (sc_a${i} == NULL) scr_trap("scriptc: native callback passed a NULL cstring\\n");`);
|
|
1621
|
+
}
|
|
1622
|
+
else if (param === "string" || param === "bytes") {
|
|
1623
|
+
out.push(` if (sc_a${i} == NULL && sc_a${i}_len != 0) scr_trap("scriptc: native callback passed a NULL ${param} span with nonzero length\\n");`);
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1515
1626
|
const ft = ffiCallbackType(cb);
|
|
1627
|
+
const materialized = new Map();
|
|
1628
|
+
for (let i = 0; i < cb.params.length; i++) {
|
|
1629
|
+
const param = cb.params[i];
|
|
1630
|
+
if (isFfiContextParam(param))
|
|
1631
|
+
continue;
|
|
1632
|
+
if (param === "cstring") {
|
|
1633
|
+
const local = `sc_s${i}`;
|
|
1634
|
+
out.push(` ScrStr *${local} = scr_str_from_utf8_lossy((const uint8_t *)sc_a${i}, strlen(sc_a${i}));`);
|
|
1635
|
+
materialized.set(i, local);
|
|
1636
|
+
}
|
|
1637
|
+
else if (param === "string") {
|
|
1638
|
+
const local = `sc_s${i}`;
|
|
1639
|
+
out.push(` ScrStr *${local} = scr_str_from_utf8_lossy(sc_a${i}, sc_a${i}_len);`);
|
|
1640
|
+
materialized.set(i, local);
|
|
1641
|
+
}
|
|
1642
|
+
else if (param === "bytes") {
|
|
1643
|
+
const local = `sc_s${i}`;
|
|
1644
|
+
out.push(` ScrBytes *${local} = scr_bytes_from_data(sc_a${i}, sc_a${i}_len);`);
|
|
1645
|
+
materialized.set(i, local);
|
|
1646
|
+
}
|
|
1647
|
+
}
|
|
1516
1648
|
const scriptArgs = cb.params.flatMap((param, i) => {
|
|
1517
1649
|
if (isFfiContextParam(param))
|
|
1518
1650
|
return [];
|
|
@@ -1525,14 +1657,26 @@ export class CEmitter {
|
|
|
1525
1657
|
case "u32":
|
|
1526
1658
|
case "i32":
|
|
1527
1659
|
return [`(double)sc_a${i}`];
|
|
1660
|
+
case "cstring":
|
|
1661
|
+
case "string":
|
|
1662
|
+
case "bytes":
|
|
1663
|
+
return [materialized.get(i)];
|
|
1528
1664
|
}
|
|
1529
1665
|
});
|
|
1530
1666
|
const call = `(${cFnPtrCast(ft)}sc_cb->fn)(sc_cb${scriptArgs.length ? `, ${scriptArgs.join(", ")}` : ""})`;
|
|
1667
|
+
if (cb.lifetime === "retained") {
|
|
1668
|
+
// The callback may unregister or replace its own descriptor. Hold
|
|
1669
|
+
// one invocation reference so that dropping the table's last pin
|
|
1670
|
+
// cannot free the executing closure or its captures mid-call.
|
|
1671
|
+
out.push(` scr_closure_retain(sc_cb);`);
|
|
1672
|
+
}
|
|
1531
1673
|
if (cb.returns === "void") {
|
|
1532
|
-
out.push(` ${call};`, ` return;`, `}`, ``);
|
|
1674
|
+
out.push(` ${call};`, ...(cb.lifetime === "retained" ? [` scr_closure_release(sc_cb);`] : []), ` return;`, `}`, ``);
|
|
1533
1675
|
continue;
|
|
1534
1676
|
}
|
|
1535
1677
|
out.push(` ${cDecl(ft.ret, "sc_result")} = ${call};`);
|
|
1678
|
+
if (cb.lifetime === "retained")
|
|
1679
|
+
out.push(` scr_closure_release(sc_cb);`);
|
|
1536
1680
|
switch (cb.returns) {
|
|
1537
1681
|
case "f64":
|
|
1538
1682
|
out.push(` return sc_result;`);
|