@scriptc/compiler 0.0.5 → 0.0.6
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/emission/emit-exprs.js +25 -2
- package/dist/backend/emission/emit-exprs.js.map +1 -1
- package/dist/backend/emission/emit-walkers.js +47 -0
- package/dist/backend/emission/emit-walkers.js.map +1 -1
- package/dist/backend/emission/may-throw.js +12 -0
- package/dist/backend/emission/may-throw.js.map +1 -1
- package/dist/backend/llvm/dyn.js +23 -1
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.js +17 -2
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +5 -0
- package/dist/backend/llvm/walkers.js +65 -5
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +41 -1
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +7 -0
- package/dist/frontend/lowering/lower-inspect.js +130 -28
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +1 -1
- package/dist/frontend/lowering/lowerer.js +16 -6
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/types.d.ts +68 -6
- package/dist/frontend/types.js +285 -57
- package/dist/frontend/types.js.map +1 -1
- package/dist/ir/nodes.d.ts +7 -4
- package/dist/ir/nodes.js +37 -13
- package/dist/ir/nodes.js.map +1 -1
- package/dist/ir/validate.js +10 -0
- package/dist/ir/validate.js.map +1 -1
- package/package.json +2 -2
- package/surface-manifest.json +1 -1
|
@@ -6,7 +6,7 @@ import { buildClassGraph, classFieldIndex, classStructSym, emitClassObjDefs, emi
|
|
|
6
6
|
import { DK, LlDyn } from "./dyn.js";
|
|
7
7
|
import { LlvmUnsupportedError } from "./unsupported.js";
|
|
8
8
|
import { LlWalkers } from "./walkers.js";
|
|
9
|
-
import { arrNewCall, boxAccess, boxNewCall, computeTraced, elemAccess, emitRecordShapes, FN_ATTRS, llFieldType, mapKeyAccess, mapKeyKindNum, mapValKindNum, releaseSym, retainSym, traceArg, vAdapters, } from "./shapes.js";
|
|
9
|
+
import { arrNewCall, boxAccess, boxNewCall, computeTraced, elemAccess, emitRecordShapes, FN_ATTRS, llFieldType, mapKeyAccess, mapKeyKindNum, mapValKindNum, releaseSym, retainSym, traceAdapter, traceArg, vAdapters, } from "./shapes.js";
|
|
10
10
|
export { LlvmUnsupportedError } from "./unsupported.js";
|
|
11
11
|
export function emitLlvmModule(mod) {
|
|
12
12
|
return new LlEmitter(mod).emit();
|
|
@@ -159,6 +159,8 @@ const LIB_FN_SYMS = {
|
|
|
159
159
|
"assert.eqDyn": "scr_assert_eq_dyn",
|
|
160
160
|
"assert.deepResult": "scr_assert_deep_result",
|
|
161
161
|
"assert.sameValue": "scr_assert_same_value_f64",
|
|
162
|
+
"assert.deqEnter": "scr_assert_deq_enter",
|
|
163
|
+
"assert.deqLeave": "scr_assert_deq_leave",
|
|
162
164
|
"assert.match": "scr_assert_match",
|
|
163
165
|
"assert.throwsNone": "scr_assert_throws_none",
|
|
164
166
|
"assert.throwsMismatch": "scr_assert_throws_mismatch",
|
|
@@ -229,6 +231,13 @@ const LIB_FN_SYMS = {
|
|
|
229
231
|
"insp.key": "scr_insp_key",
|
|
230
232
|
"insp.moreItems": "scr_insp_more_items",
|
|
231
233
|
"insp.end": "scr_insp_end",
|
|
234
|
+
// Circular references over cycle-capable composites (Node's
|
|
235
|
+
// seen/circular machinery — none of these throw; refWrap borrows its
|
|
236
|
+
// string and answers +1).
|
|
237
|
+
"insp.circCheck": "scr_insp_circ_check",
|
|
238
|
+
"insp.seenPush": "scr_insp_seen_push",
|
|
239
|
+
"insp.refWrap": "scr_insp_ref_wrap",
|
|
240
|
+
"insp.circular": "scr_insp_circular",
|
|
232
241
|
// WHATWG URL + URLSearchParams (scr_url.c / scr_url_params.c):
|
|
233
242
|
// constructions +1; url.new, the fileURLToPath pair, the win32
|
|
234
243
|
// pathToFileURL flavor, and sp.fromPairs throw catchably (may-throw).
|
|
@@ -1067,7 +1076,7 @@ class LlEmitter {
|
|
|
1067
1076
|
// slot } — TDZ reads peek the payload slot (offset 40) directly.
|
|
1068
1077
|
`%ScrBox = type { i64, i32, ptr, ptr, ptr, i64 }`,
|
|
1069
1078
|
// The stack buffer of the emitted JSON serializers { data, len, cap }.
|
|
1070
|
-
`%ScrJsonBuf = type { ptr, i64, i64 }`,
|
|
1079
|
+
`%ScrJsonBuf = type { ptr, i64, i64, ptr, i64, i64 }`,
|
|
1071
1080
|
// The dynCheck error-path spine { parent, key, index } — the emitted
|
|
1072
1081
|
// builders stack-allocate one per recursion level (dyn.ts).
|
|
1073
1082
|
`%ScrDynPath = type { ptr, ptr, i64 }`,
|
|
@@ -4711,6 +4720,12 @@ class LlEmitter {
|
|
|
4711
4720
|
const t = B.tmp();
|
|
4712
4721
|
B.line(`${t} = call ptr @scr_jb_finish(ptr ${buf})`);
|
|
4713
4722
|
compact = this.own({ name: t, type: e.type });
|
|
4723
|
+
// A cycle-capable root can throw the circular-structure
|
|
4724
|
+
// TypeError mid-walk: finish still runs (frees the buffer, the
|
|
4725
|
+
// partial string joins the frame and releases on unwind), then
|
|
4726
|
+
// the pending check unwinds — the C emitter's contract exactly.
|
|
4727
|
+
if (traceAdapter(this, e.value.type) !== null)
|
|
4728
|
+
this.emitPendingCheck();
|
|
4714
4729
|
}
|
|
4715
4730
|
// A pretty-print form (`stringify(v, null, 2)`): the frontend
|
|
4716
4731
|
// resolved the space to a compile-time indent string (Node's
|