@scriptc/compiler 0.1.2 → 0.1.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 +258 -64
- package/dist/backend/c/async.d.ts +30 -0
- package/dist/backend/c/async.js +224 -0
- package/dist/backend/c/async.js.map +1 -1
- package/dist/backend/c/c-emitter.d.ts +13 -0
- package/dist/backend/c/c-emitter.js +28 -9
- package/dist/backend/c/c-emitter.js.map +1 -1
- package/dist/backend/c/exprs.d.ts +8 -1
- package/dist/backend/c/exprs.js +445 -60
- package/dist/backend/c/exprs.js.map +1 -1
- package/dist/backend/c/shapes.js +15 -13
- package/dist/backend/c/shapes.js.map +1 -1
- package/dist/backend/c/types.d.ts +4 -0
- package/dist/backend/c/types.js +20 -1
- package/dist/backend/c/types.js.map +1 -1
- package/dist/backend/c/types.test.js +8 -1
- package/dist/backend/c/types.test.js.map +1 -1
- package/dist/backend/c/walkers.js +32 -11
- package/dist/backend/c/walkers.js.map +1 -1
- package/dist/backend/json-literal.d.ts +7 -0
- package/dist/backend/json-literal.js +17 -0
- package/dist/backend/json-literal.js.map +1 -0
- package/dist/backend/json-literal.test.d.ts +1 -0
- package/dist/backend/json-literal.test.js +17 -0
- package/dist/backend/json-literal.test.js.map +1 -0
- package/dist/backend/link-plan.d.ts +2 -1
- package/dist/backend/link-plan.js +6 -1
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/classes.js +8 -7
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +4 -0
- package/dist/backend/llvm/common.js +6 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/common.test.d.ts +1 -0
- package/dist/backend/llvm/common.test.js +9 -0
- package/dist/backend/llvm/common.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +24 -13
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.js +54 -12
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +8 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +9 -0
- package/dist/backend/llvm/expr-callbacks.js +125 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +18 -2
- package/dist/backend/llvm/expr-dispatch.js +1 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +9 -0
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +38 -9
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.d.ts +1 -0
- package/dist/backend/llvm/expr-primitives.test.js +38 -0
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -0
- package/dist/backend/llvm/expr-records.js +3 -3
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +2 -1
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +6 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +122 -0
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +22 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +68 -10
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +18 -2
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +206 -11
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +82 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +23 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/shapes.js +10 -8
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/walkers.js +7 -5
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-link-info.d.ts +2 -1
- package/dist/backend/native-link-info.js +4 -0
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +24 -1
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +11 -6
- package/dist/backend/native-toolchain.js +30 -13
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +36 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +29 -10
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/targets.d.ts +9 -0
- package/dist/backend/targets.js +22 -0
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +13 -1
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/coverage/surface-manifest.js +9 -0
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +4 -4
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -0
- package/dist/executable/executable-cache.js +4 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/fork-target.d.ts +17 -0
- package/dist/frontend/fork-target.js +256 -0
- package/dist/frontend/fork-target.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.d.ts +6 -0
- package/dist/frontend/lowering/abstract-equality.js +250 -0
- package/dist/frontend/lowering/abstract-equality.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.d.ts +0 -4
- package/dist/frontend/lowering/containers/bytes.js +112 -28
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +87 -12
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +72 -44
- package/dist/frontend/lowering/lower-builtins.js +1323 -165
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +37 -27
- package/dist/frontend/lowering/lower-calls.js +682 -132
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +39 -8
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.js +162 -8
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.js +212 -21
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +238 -87
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +8 -1
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +6 -3
- package/dist/frontend/lowering/lower-island.js +165 -6
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +6 -0
- package/dist/frontend/lowering/lower-modules.js +192 -38
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +7 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +1 -1
- package/dist/frontend/lowering/lower-server.js +130 -27
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +5 -4
- package/dist/frontend/lowering/lower-stmts.js +141 -21
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +7 -0
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +90 -13
- package/dist/frontend/lowering/lowerer.js +416 -76
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +31 -3
- package/dist/frontend/lowering/surfaces.js +173 -90
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/npm-static-declarations.d.ts +4 -0
- package/dist/frontend/npm-static-declarations.js +83 -14
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +33 -2
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/npm-static.js +6 -5
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +15 -3
- package/dist/frontend/npm.js +80 -8
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +76 -9
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/program.js +110 -12
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +28 -7
- package/dist/frontend/resolve.js +90 -26
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +21 -1
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +5 -0
- package/dist/frontend/type-mapper.js +115 -33
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +1 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/ir.d.ts +155 -66
- package/dist/ir/ir.js +143 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +14 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.js +242 -18
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +18 -5
- package/dist/library/library-cache.test.js.map +1 -1
- package/package.json +17 -17
- package/surface-manifest.json +163 -54
|
@@ -62,16 +62,16 @@ import { InternalCompilerError } from "../../errors.js";
|
|
|
62
62
|
* lazy-inflate representation as the C debugging backend.
|
|
63
63
|
*/
|
|
64
64
|
import { deflateRawSync } from "node:zlib";
|
|
65
|
-
import { endsWithJump, matchStringSelfConcat } from "../../ir/analysis.js";
|
|
65
|
+
import { endsWithJump, matchStringSelfConcat, streamTypedRefEligible } from "../../ir/analysis.js";
|
|
66
66
|
import { emitLibraryIdentityLines } from "../library-identity-markers.js";
|
|
67
|
-
import { CAUGHT, ffiCallbackType, isFfiContextParam, isRefCounted, isUnitType, moduleEmbedsBuiltin, moduleEmbedsCompressedNpm, moduleUsesChildProcess, moduleUsesDynInvoke, moduleUsesFetch, moduleUsesFsWatch, moduleUsesHttpServer, moduleUsesNet, moduleUsesNodeTest, moduleUsesProcessEvents, moduleUsesStream, moduleUsesTls, moduleUsesTlsCa, NPM_COMPRESS_MIN, POINTER_KINDS, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, typeKey, VOID } from "../../ir/ir.js";
|
|
67
|
+
import { CAUGHT, ffiCallbackType, isDynTypedRefType, isFfiContextParam, isRefCounted, isUnitType, moduleEmbedsBuiltin, moduleEmbedsCompressedNpm, moduleUsesChildProcess, moduleUsesDynInvoke, moduleUsesFetch, moduleUsesFsWatch, moduleUsesHttpServer, moduleUsesNet, moduleUsesNodeTest, moduleUsesProcessEvents, moduleUsesStream, moduleUsesTls, moduleUsesTlsCa, NPM_COMPRESS_MIN, POINTER_KINDS, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, typeKey, VOID } from "../../ir/ir.js";
|
|
68
68
|
import { matchIntegerBytesForLoop } from "../../ir/integer-loops.js";
|
|
69
69
|
import { allocateFfiCallbackAdapters, hasForeignFfiCallback, hasRetainedFfiCallback } from "../ffi-callbacks.js";
|
|
70
70
|
import { RUNTIME_ABI_MARKER } from "../runtime-abi.js";
|
|
71
71
|
import { computeMayThrow } from "../c/may-throw.js";
|
|
72
72
|
import { mangleArgPack, mangleAsyncSpawn, mangleClassObj, mangleFnClosure, mangleFunction, mangleGenDrop, mangleGenSpawn, mangleGlobal, mangleLocal, mangleRecordStruct, mangleTrampoline, mangleWrapper } from "../mangle.js";
|
|
73
73
|
import { BlockBuilder } from "./blocks.js";
|
|
74
|
-
import { f64Lit, ffiNativeTypeLl } from "./common.js";
|
|
74
|
+
import { f64Lit, ffiNativeTypeLl, llvmCommentText } from "./common.js";
|
|
75
75
|
import { emitLiteralExpr, emitOperatorExpr, emitStringExpr, emitContainerExpr, emitRecordExpr } from "./expr-primitives.js";
|
|
76
76
|
import { emitControlExpr } from "./expr-control.js";
|
|
77
77
|
import { emitCallExpr } from "./expr-calls.js";
|
|
@@ -79,10 +79,10 @@ import { emitDynamicExpr } from "./expr-dynamic.js";
|
|
|
79
79
|
import { emitIntrinsicExpr, emitSerializationExpr, emitAsyncExpr } from "./expr-async.js";
|
|
80
80
|
import { emitJsInteropExpr, emitExpr } from "./expr-dispatch.js";
|
|
81
81
|
import { emitJsMarshal, emitJsOp, emitJsExit, islandAdapter, islandTypedAdapter } from "./expr-island.js";
|
|
82
|
-
import { dynKind, raceAdapterFor, genResultThunkFor, childExitThunkFor, childExitSignalThunkFor, childDataThunkFor, emitterFixedAdapter, wrapEmitterListener, unwrapNullableClosure, closeBindThunkFor, closeOverrideWrapFor } from "./expr-callbacks.js";
|
|
83
|
-
import { streamDataAdapter, streamDoneFnFor, fsRenameThunkFor, streamCbThunkFor } from "./expr-stream-callbacks.js";
|
|
82
|
+
import { dynKind, raceAdapterFor, genResultThunkFor, childExitThunkFor, childExitSignalThunkFor, childDataThunkFor, execFileThunkFor, ipcMessageThunkFor, ipcSendThunkFor, emitterFixedAdapter, wrapEmitterListener, unwrapNullableClosure, closeBindThunkFor, closeOverrideWrapFor } from "./expr-callbacks.js";
|
|
83
|
+
import { streamDataAdapter, streamDoneFnFor, cryptoBytesThunkFor, fsRenameThunkFor, streamCbThunkFor, zlibBytesThunkFor } from "./expr-stream-callbacks.js";
|
|
84
84
|
import { resolveThunkFor, tagInSet, arrPush, emitArrayCopyLoop, emitStrIntrinsic, emitArrIntrinsic, wrapNullable, emitMapNew, mapSet, emitMapLikeIntrinsic, emitSetNew } from "./expr-containers.js";
|
|
85
|
-
import { emitBytesReceiver, emitIntegerLoopIndex, emitBytesIndex, emitBytesData, emitBytesLength, emitBytesGet,
|
|
85
|
+
import { emitBytesReceiver, emitIntegerLoopIndex, emitBytesIndex, emitBytesData, emitBytesLength, emitBytesGet, emitToUint32, emitBytesSet, emitBytesIntrinsic } from "./expr-bytes.js";
|
|
86
86
|
import { emitRegexIntrinsic, emitRecordKeyGet, keyedRecordReadInto } from "./expr-records.js";
|
|
87
87
|
import { dynPromiseAdapter, streamTypedRefCommitAdapter, liveDynUnionRefAdapter, streamTypedRefBoxValue, streamTypedRefMaterializeAdapter, streamFromArrayAdapter } from "./expr-stream-bridges.js";
|
|
88
88
|
import { emitWebLibCall, emitDynamicLibCall, emitFilesystemLibCall, emitPathUrlLibCall, emitPrimitiveLibCall } from "./lib-filesystem.js";
|
|
@@ -767,6 +767,8 @@ class LlEmitter {
|
|
|
767
767
|
// unchanged.
|
|
768
768
|
const hasRefGlobals = globals.some((g) => isRefCounted(g.type)) || fnValueProps.length > 0;
|
|
769
769
|
const inlineExitListeners = usesEvents && (hasRefGlobals || this.ffiHasRetainedCallback);
|
|
770
|
+
if (!usesNodeTest && !usesIsland)
|
|
771
|
+
this.declare(`declare i32 @scr_exit_code_hint_get()`);
|
|
770
772
|
if (inlineExitListeners) {
|
|
771
773
|
this.declare(`declare void @scr_run_exit_listeners(double)`);
|
|
772
774
|
this.declare(`declare i32 @scr_exit_code_hint_get()`);
|
|
@@ -1208,7 +1210,7 @@ class LlEmitter {
|
|
|
1208
1210
|
? [` %test_exit = call i32 @scr_test_exit_code()`, ` ret i32 %test_exit`]
|
|
1209
1211
|
: usesIsland
|
|
1210
1212
|
? [` %island_exit = call i32 @scr_island_exit_code()`, ` ret i32 %island_exit`]
|
|
1211
|
-
: [` ret i32
|
|
1213
|
+
: [` %native_exit = call i32 @scr_exit_code_hint_get()`, ` ret i32 %native_exit`]), `}`, ``,
|
|
1212
1214
|
// sanitize_address is inert under the plain pipeline; the sanitized
|
|
1213
1215
|
// lane's -fsanitize=address link activates instrumentation over the
|
|
1214
1216
|
// emitted functions too (the runtime TUs get theirs from clang).
|
|
@@ -2034,6 +2036,9 @@ class LlEmitter {
|
|
|
2034
2036
|
else if (arm.kind === "string") {
|
|
2035
2037
|
valueName = this.unionPeek(v.name);
|
|
2036
2038
|
}
|
|
2039
|
+
else if (arm.kind === "bigint") {
|
|
2040
|
+
valueName = this.unionPeek(v.name);
|
|
2041
|
+
}
|
|
2037
2042
|
const truthy = this.truthyOf(arm.kind, valueName, true);
|
|
2038
2043
|
B.line(`store i1 ${truthy}, ptr ${slot}`);
|
|
2039
2044
|
B.br(join);
|
|
@@ -2074,6 +2079,12 @@ class LlEmitter {
|
|
|
2074
2079
|
B.line(`${truthy} = icmp ne ${this.sizeType} ${len}, 0`);
|
|
2075
2080
|
return truthy;
|
|
2076
2081
|
}
|
|
2082
|
+
case "bigint": {
|
|
2083
|
+
this.declare(`declare zeroext i1 @scr_bigint_truthy(ptr)`);
|
|
2084
|
+
const truthy = B.tmp();
|
|
2085
|
+
B.line(`${truthy} = call zeroext i1 @scr_bigint_truthy(ptr ${valueName})`);
|
|
2086
|
+
return truthy;
|
|
2087
|
+
}
|
|
2077
2088
|
case "date":
|
|
2078
2089
|
return "true";
|
|
2079
2090
|
case "array":
|
|
@@ -2094,8 +2105,11 @@ class LlEmitter {
|
|
|
2094
2105
|
case "spawnRes":
|
|
2095
2106
|
case "child":
|
|
2096
2107
|
case "childStream":
|
|
2108
|
+
case "childWriter":
|
|
2097
2109
|
case "generator":
|
|
2098
|
-
case "fsWatcher":
|
|
2110
|
+
case "fsWatcher":
|
|
2111
|
+
case "cryptoHash":
|
|
2112
|
+
case "cryptoHmac": {
|
|
2099
2113
|
if (unionArm)
|
|
2100
2114
|
return "true";
|
|
2101
2115
|
const truthy = B.tmp();
|
|
@@ -2911,7 +2925,7 @@ class LlEmitter {
|
|
|
2911
2925
|
for (const f of shape.fields) {
|
|
2912
2926
|
const lit = this.internLiteral(f.name);
|
|
2913
2927
|
const hit = B.tmp();
|
|
2914
|
-
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${f.name}`);
|
|
2928
|
+
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${llvmCommentText(f.name)}`);
|
|
2915
2929
|
const lh = B.newLabel("rks.h");
|
|
2916
2930
|
const ln = B.newLabel("rks.n");
|
|
2917
2931
|
B.condBr(hit, lh, ln);
|
|
@@ -2967,7 +2981,7 @@ class LlEmitter {
|
|
|
2967
2981
|
// typeEquals(f.type, iv) — the frontend fences everything else.
|
|
2968
2982
|
const lit = this.internLiteral(f.name);
|
|
2969
2983
|
const hit = B.tmp();
|
|
2970
|
-
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${f.name}`);
|
|
2984
|
+
B.line(`${hit} = call zeroext i1 @scr_str_eq(ptr ${key.name}, ptr ${lit}) ; ${llvmCommentText(f.name)}`);
|
|
2971
2985
|
const lh = B.newLabel("rks.h");
|
|
2972
2986
|
const ln = B.newLabel("rks.n");
|
|
2973
2987
|
B.condBr(hit, lh, ln);
|
|
@@ -3780,6 +3794,15 @@ class LlEmitter {
|
|
|
3780
3794
|
childExitThunkFor(param) {
|
|
3781
3795
|
return childExitThunkFor(this.expressionContext(), param);
|
|
3782
3796
|
}
|
|
3797
|
+
execFileThunkFor(cbT) {
|
|
3798
|
+
return execFileThunkFor(this.expressionContext(), cbT);
|
|
3799
|
+
}
|
|
3800
|
+
ipcMessageThunkFor(cbT) {
|
|
3801
|
+
return ipcMessageThunkFor(this.expressionContext(), cbT);
|
|
3802
|
+
}
|
|
3803
|
+
ipcSendThunkFor(cbT) {
|
|
3804
|
+
return ipcSendThunkFor(this.expressionContext(), cbT);
|
|
3805
|
+
}
|
|
3783
3806
|
childExitSignalThunkFor(codeParam, sigParam) {
|
|
3784
3807
|
return childExitSignalThunkFor(this.expressionContext(), codeParam, sigParam);
|
|
3785
3808
|
}
|
|
@@ -3810,6 +3833,12 @@ class LlEmitter {
|
|
|
3810
3833
|
fsRenameThunkFor(cbT) {
|
|
3811
3834
|
return fsRenameThunkFor(this.expressionContext(), cbT);
|
|
3812
3835
|
}
|
|
3836
|
+
cryptoBytesThunkFor(cbT) {
|
|
3837
|
+
return cryptoBytesThunkFor(this.expressionContext(), cbT);
|
|
3838
|
+
}
|
|
3839
|
+
zlibBytesThunkFor(cbT) {
|
|
3840
|
+
return zlibBytesThunkFor(this.expressionContext(), cbT);
|
|
3841
|
+
}
|
|
3813
3842
|
streamCbThunkFor(kind, cbT) {
|
|
3814
3843
|
return streamCbThunkFor(this.expressionContext(), kind, cbT);
|
|
3815
3844
|
}
|
|
@@ -3864,8 +3893,8 @@ class LlEmitter {
|
|
|
3864
3893
|
emitBytesGet(elem, receiver, index, integerIndex = false) {
|
|
3865
3894
|
return emitBytesGet(this.expressionContext(), elem, receiver, index, integerIndex);
|
|
3866
3895
|
}
|
|
3867
|
-
|
|
3868
|
-
return
|
|
3896
|
+
emitToUint32(value) {
|
|
3897
|
+
return emitToUint32(this.expressionContext(), value);
|
|
3869
3898
|
}
|
|
3870
3899
|
emitBytesSet(elem, receiver, index, value, integerIndex = false) {
|
|
3871
3900
|
return emitBytesSet(this.expressionContext(), elem, receiver, index, value, integerIndex);
|
|
@@ -3888,6 +3917,19 @@ class LlEmitter {
|
|
|
3888
3917
|
streamTypedRefCommitAdapter(t, snapshot) {
|
|
3889
3918
|
return streamTypedRefCommitAdapter(this.expressionContext(), t, snapshot);
|
|
3890
3919
|
}
|
|
3920
|
+
liveDynRefAdapter(t) {
|
|
3921
|
+
const key = typeKey(t);
|
|
3922
|
+
const existing = this.liveDynRefAdapters.get(key);
|
|
3923
|
+
if (existing)
|
|
3924
|
+
return existing;
|
|
3925
|
+
if (!streamTypedRefEligible(t) && !isDynTypedRefType(t)) {
|
|
3926
|
+
throw new InternalCompilerError(`llvm emitter bug: live dyn ref of ${key}`);
|
|
3927
|
+
}
|
|
3928
|
+
const prefix = `sc_ldr_${this.liveDynRefAdapters.size}`;
|
|
3929
|
+
const adapter = streamTypedRefMaterializeAdapter(this.expressionContext(), t, { prefix, adapters: new Map() }, `${prefix}_materialize`);
|
|
3930
|
+
this.liveDynRefAdapters.set(key, adapter);
|
|
3931
|
+
return adapter;
|
|
3932
|
+
}
|
|
3891
3933
|
liveDynUnionRefAdapter(t) {
|
|
3892
3934
|
return liveDynUnionRefAdapter(this.expressionContext(), t);
|
|
3893
3935
|
}
|