more detail on broken pipeline and vm suit tests

This commit is contained in:
2026-02-15 11:51:23 -06:00
parent ee646db394
commit 7de20b39da
16 changed files with 16527 additions and 15432 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1502,7 +1502,7 @@
"instructions": [ "instructions": [
[ [
"move", "move",
5, 4,
2, 2,
42, 42,
14 14
@@ -1516,7 +1516,7 @@
[ [
"is_identical", "is_identical",
10, 10,
5, 4,
9, 9,
43, 43,
15 15
@@ -1531,7 +1531,7 @@
[ [
"is_int", "is_int",
11, 11,
5, 4,
43, 43,
15 15
], ],
@@ -1552,7 +1552,7 @@
[ [
"eq_int", "eq_int",
10, 10,
5, 4,
9, 9,
43, 43,
15 15
@@ -1567,7 +1567,7 @@
[ [
"is_num", "is_num",
11, 11,
5, 4,
43, 43,
15 15
], ],
@@ -1588,7 +1588,7 @@
[ [
"eq_float", "eq_float",
10, 10,
5, 4,
9, 9,
43, 43,
15 15
@@ -1603,7 +1603,7 @@
[ [
"is_text", "is_text",
11, 11,
5, 4,
43, 43,
15 15
], ],
@@ -1624,7 +1624,7 @@
[ [
"eq_text", "eq_text",
10, 10,
5, 4,
9, 9,
43, 43,
15 15
@@ -1639,7 +1639,7 @@
[ [
"is_null", "is_null",
11, 11,
5, 4,
43, 43,
15 15
], ],
@@ -1668,7 +1668,7 @@
[ [
"is_bool", "is_bool",
11, 11,
5, 4,
43, 43,
15 15
], ],
@@ -1689,7 +1689,7 @@
[ [
"eq_bool", "eq_bool",
10, 10,
5, 4,
9, 9,
43, 43,
15 15
@@ -1724,7 +1724,7 @@
], ],
[ [
"move", "move",
5, 4,
13, 13,
43, 43,
28 28
@@ -1746,7 +1746,7 @@
], ],
[ [
"move", "move",
7, 6,
14, 14,
44, 44,
17 17
@@ -1796,7 +1796,7 @@
[ [
"push", "push",
20, 20,
5, 4,
92, 92,
12 12
], ],
@@ -1874,7 +1874,7 @@
"setarg", "setarg",
23, 23,
1, 1,
5, 4,
92, 92,
12 12
], ],
@@ -1888,7 +1888,7 @@
"call_done_37", "call_done_37",
[ [
"move", "move",
6, 8,
15, 15,
92, 92,
12 12
@@ -1896,7 +1896,7 @@
[ [
"move", "move",
24, 24,
6, 8,
93, 93,
7 7
], ],
@@ -1910,7 +1910,7 @@
[ [
"load_field", "load_field",
25, 25,
6, 8,
"isDirectory", "isDirectory",
93, 93,
13 13
@@ -1963,7 +1963,7 @@
"setarg", "setarg",
28, 28,
1, 1,
5, 4,
94, 94,
5 5
], ],
@@ -1992,7 +1992,7 @@
"if_end_39", "if_end_39",
[ [
"return", "return",
7, 6,
97, 97,
10 10
], ],

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,7 @@
[ [
"get", "get",
1, 1,
5, 4,
1, 1,
13, 13,
10 10
@@ -50,7 +50,7 @@
[ [
"get", "get",
1, 1,
5, 4,
1, 1,
18, 18,
10 10
@@ -444,7 +444,7 @@
[ [
"get", "get",
3, 3,
11, 10,
1, 1,
30, 30,
10 10
@@ -496,7 +496,7 @@
[ [
"get", "get",
9, 9,
8, 7,
1, 1,
30, 30,
37 37
@@ -567,7 +567,7 @@
[ [
"get", "get",
6, 6,
2, 1,
1, 1,
34, 34,
7 7
@@ -1324,7 +1324,7 @@
[ [
"get", "get",
44, 44,
2, 1,
1, 1,
41, 41,
10 10
@@ -1475,7 +1475,7 @@
[ [
"get", "get",
55, 55,
2, 1,
1, 1,
42, 42,
7 7
@@ -1756,7 +1756,7 @@
[ [
"get", "get",
8, 8,
11, 10,
1, 1,
55, 55,
10 10
@@ -1808,7 +1808,7 @@
[ [
"get", "get",
14, 14,
8, 7,
1, 1,
55, 55,
37 37
@@ -1887,7 +1887,7 @@
[ [
"get", "get",
5, 5,
2, 1,
2, 2,
71, 71,
24 24
@@ -2077,7 +2077,7 @@
[ [
"get", "get",
18, 18,
7, 6,
2, 2,
72, 72,
15 15
@@ -2264,7 +2264,7 @@
[ [
"put", "put",
28, 28,
10, 9,
2, 2,
73, 73,
40 40
@@ -2284,7 +2284,7 @@
[ [
"put", "put",
29, 29,
10, 9,
2, 2,
74, 74,
23 23
@@ -2366,7 +2366,7 @@
[ [
"put", "put",
36, 36,
10, 9,
2, 2,
77, 77,
18 18
@@ -2396,7 +2396,7 @@
[ [
"get", "get",
3, 3,
10, 9,
1, 1,
63, 63,
7 7
@@ -2411,7 +2411,7 @@
[ [
"get", "get",
4, 4,
10, 9,
1, 1,
63, 63,
26 26
@@ -2472,7 +2472,7 @@
[ [
"get", "get",
10, 10,
2, 1,
1, 1,
65, 65,
8 8
@@ -2620,7 +2620,7 @@
[ [
"put", "put",
19, 19,
10, 9,
1, 1,
66, 66,
18 18
@@ -2628,7 +2628,7 @@
[ [
"get", "get",
20, 20,
10, 9,
1, 1,
67, 67,
12 12
@@ -2688,7 +2688,7 @@
[ [
"get", "get",
25, 25,
10, 9,
1, 1,
80, 80,
10 10
@@ -2714,7 +2714,7 @@
[ [
"put", "put",
1, 1,
10, 9,
1, 1,
84, 84,
16 16
@@ -2786,7 +2786,7 @@
[ [
"get", "get",
11, 11,
7, 6,
1, 1,
87, 87,
16 16
@@ -2921,7 +2921,7 @@
[ [
"get", "get",
20, 20,
4, 3,
1, 1,
87, 87,
11 11
@@ -3021,7 +3021,7 @@
[ [
"get", "get",
28, 28,
2, 1,
1, 1,
89, 89,
3 3
@@ -3193,7 +3193,7 @@
[ [
"get", "get",
1, 1,
3, 2,
1, 1,
138, 138,
22 22
@@ -3336,7 +3336,7 @@
[ [
"get", "get",
11, 11,
3, 2,
1, 1,
139, 139,
26 26
@@ -3492,7 +3492,7 @@
[ [
"get", "get",
22, 22,
3, 2,
1, 1,
1, 1,
1 1
@@ -3670,7 +3670,7 @@
], ],
[ [
"move", "move",
3, 2,
6, 6,
130, 130,
46 46
@@ -3719,7 +3719,7 @@
"setarg", "setarg",
10, 10,
1, 1,
3, 2,
132, 132,
15 15
], ],
@@ -3755,7 +3755,7 @@
[ [
"get", "get",
14, 14,
2, 1,
3, 3,
132, 132,
49 49
@@ -3797,7 +3797,7 @@
[ [
"push", "push",
18, 18,
3, 2,
132, 132,
49 49
], ],
@@ -3875,7 +3875,7 @@
"setarg", "setarg",
21, 21,
1, 1,
3, 2,
132, 132,
49 49
], ],
@@ -3920,7 +3920,7 @@
"add", "add",
24, 24,
23, 23,
3, 2,
133, 133,
61 61
], ],
@@ -4011,7 +4011,7 @@
], ],
[ [
"move", "move",
2, 3,
32, 32,
137, 137,
26 26
@@ -4019,7 +4019,7 @@
[ [
"frame", "frame",
34, 34,
2, 3,
0, 0,
143, 143,
11 11
@@ -4070,7 +4070,7 @@
[ [
"get", "get",
3, 3,
7, 5,
1, 1,
126, 126,
35 35
@@ -4078,7 +4078,7 @@
[ [
"get", "get",
5, 5,
2, 1,
2, 2,
126, 126,
26 26
@@ -4268,7 +4268,7 @@
[ [
"get", "get",
18, 18,
7, 6,
2, 2,
127, 127,
17 17
@@ -4642,7 +4642,7 @@
[ [
"get", "get",
44, 44,
7, 5,
1, 1,
1, 1,
1 1
@@ -4908,7 +4908,7 @@
"call_done_51", "call_done_51",
[ [
"move", "move",
6, 7,
9, 9,
94, 94,
14 14
@@ -4916,7 +4916,7 @@
[ [
"load_dynamic", "load_dynamic",
17, 17,
6, 7,
1, 1,
95, 95,
13 13
@@ -5131,7 +5131,7 @@
[ [
"get", "get",
38, 38,
2, 1,
1, 1,
103, 103,
10 10
@@ -5500,7 +5500,7 @@
[ [
"get", "get",
64, 64,
6, 5,
1, 1,
112, 112,
15 15
@@ -5635,7 +5635,7 @@
[ [
"get", "get",
73, 73,
6, 5,
1, 1,
114, 114,
3 3
@@ -5770,7 +5770,7 @@
[ [
"get", "get",
82, 82,
6, 5,
1, 1,
117, 117,
3 3
@@ -6019,7 +6019,7 @@
[ [
"get", "get",
97, 97,
3, 2,
1, 1,
121, 121,
57 57
@@ -6071,7 +6071,7 @@
"tern_end_69", "tern_end_69",
[ [
"move", "move",
5, 8,
95, 95,
121, 121,
57 57
@@ -6086,28 +6086,28 @@
[ [
"add", "add",
101, 101,
5, 8,
100, 100,
122, 122,
33 33
], ],
[ [
"move", "move",
7, 5,
101, 101,
122, 122,
33 33
], ],
[ [
"null", "null",
8, 6,
123, 123,
23 23
], ],
[ [
"get", "get",
103, 103,
2, 1,
1, 1,
124, 124,
7 7
@@ -6149,7 +6149,7 @@
[ [
"push", "push",
107, 107,
7, 5,
124, 124,
7 7
], ],
@@ -6227,7 +6227,7 @@
"setarg", "setarg",
110, 110,
1, 1,
7, 5,
124, 124,
7 7
], ],
@@ -6255,7 +6255,7 @@
], ],
[ [
"move", "move",
8, 6,
111, 111,
125, 125,
21 21
@@ -6263,7 +6263,7 @@
[ [
"frame", "frame",
113, 113,
8, 6,
0, 0,
149, 149,
5 5
@@ -6425,7 +6425,7 @@
[ [
"get", "get",
5, 5,
6, 5,
1, 1,
157, 157,
15 15
@@ -6583,7 +6583,7 @@
[ [
"get", "get",
17, 17,
3, 2,
1, 1,
161, 161,
20 20
@@ -6635,7 +6635,7 @@
[ [
"get", "get",
21, 21,
2, 1,
1, 1,
162, 162,
7 7
@@ -6777,7 +6777,7 @@
[ [
"get", "get",
30, 30,
2, 1,
1, 1,
163, 163,
5 5
@@ -7006,7 +7006,7 @@
[ [
"get", "get",
48, 48,
6, 5,
1, 1,
168, 168,
3 3
@@ -7243,7 +7243,7 @@
[ [
"get", "get",
4, 4,
3, 2,
2, 2,
177, 177,
22 22
@@ -7295,7 +7295,7 @@
[ [
"get", "get",
8, 8,
2, 1,
2, 2,
178, 178,
9 9
@@ -7437,7 +7437,7 @@
[ [
"get", "get",
17, 17,
2, 1,
2, 2,
179, 179,
7 7
@@ -7602,7 +7602,7 @@
[ [
"get", "get",
3, 3,
6, 5,
1, 1,
175, 175,
15 15
@@ -7900,7 +7900,7 @@
[ [
"get", "get",
27, 27,
6, 5,
1, 1,
183, 183,
3 3
@@ -8114,7 +8114,7 @@
[ [
"get", "get",
9, 9,
3, 2,
1, 1,
190, 190,
20 20
@@ -8166,7 +8166,7 @@
[ [
"get", "get",
13, 13,
1, 11,
1, 1,
191, 191,
21 21
@@ -8218,7 +8218,7 @@
[ [
"get", "get",
17, 17,
2, 1,
1, 1,
194, 194,
16 16
@@ -8360,7 +8360,7 @@
[ [
"get", "get",
26, 26,
9, 8,
1, 1,
195, 195,
3 3
@@ -8411,7 +8411,7 @@
[ [
"get", "get",
30, 30,
2, 1,
1, 1,
199, 199,
7 7
@@ -8553,7 +8553,7 @@
[ [
"get", "get",
39, 39,
2, 1,
1, 1,
200, 200,
20 20
@@ -8960,7 +8960,7 @@
[ [
"get", "get",
52, 52,
2, 1,
1, 1,
209, 209,
7 7
@@ -9102,7 +9102,7 @@
[ [
"get", "get",
61, 61,
2, 1,
1, 1,
210, 210,
5 5
@@ -9244,7 +9244,7 @@
[ [
"get", "get",
70, 70,
2, 1,
1, 1,
211, 211,
14 14
@@ -9393,7 +9393,7 @@
[ [
"get", "get",
80, 80,
2, 1,
1, 1,
212, 212,
5 5
@@ -9552,7 +9552,7 @@
[ [
"get", "get",
89, 89,
2, 1,
1, 1,
216, 216,
3 3
@@ -10155,7 +10155,7 @@
[ [
"get", "get",
14, 14,
2, 1,
5, 5,
251, 251,
51 51
@@ -10400,7 +10400,7 @@
[ [
"get", "get",
5, 5,
2, 1,
4, 4,
245, 245,
28 28
@@ -10590,7 +10590,7 @@
[ [
"get", "get",
18, 18,
7, 6,
4, 4,
246, 246,
19 19
@@ -10994,7 +10994,7 @@
[ [
"get", "get",
6, 6,
1, 11,
3, 3,
230, 230,
25 25
@@ -11038,7 +11038,7 @@
], ],
[ [
"move", "move",
2, 3,
5, 5,
230, 230,
25 25
@@ -11046,7 +11046,7 @@
[ [
"get", "get",
10, 10,
2, 1,
3, 3,
231, 231,
12 12
@@ -11088,7 +11088,7 @@
[ [
"push", "push",
14, 14,
2, 3,
231, 231,
12 12
], ],
@@ -11166,7 +11166,7 @@
"setarg", "setarg",
17, 17,
1, 1,
2, 3,
231, 231,
12 12
], ],
@@ -11221,7 +11221,7 @@
"add", "add",
23, 23,
22, 22,
2, 3,
232, 232,
48 48
], ],
@@ -11299,7 +11299,7 @@
[ [
"add", "add",
29, 29,
2, 3,
28, 28,
235, 235,
37 37
@@ -11307,7 +11307,7 @@
[ [
"get", "get",
31, 31,
2, 1,
3, 3,
235, 235,
12 12
@@ -11482,7 +11482,7 @@
"add", "add",
44, 44,
43, 43,
2, 3,
236, 236,
48 48
], ],
@@ -11577,7 +11577,7 @@
[ [
"get", "get",
53, 53,
6, 5,
3, 3,
240, 240,
7 7
@@ -11749,7 +11749,7 @@
[ [
"add", "add",
62, 62,
2, 3,
61, 61,
243, 243,
37 37
@@ -11770,7 +11770,7 @@
], ],
[ [
"move", "move",
3, 2,
63, 63,
244, 244,
22 22
@@ -11778,7 +11778,7 @@
[ [
"frame", "frame",
65, 65,
3, 2,
0, 0,
267, 267,
7 7
@@ -12026,7 +12026,7 @@
[ [
"get", "get",
6, 6,
6, 5,
1, 1,
222, 222,
15 15
@@ -12379,7 +12379,7 @@
[ [
"get", "get",
4, 4,
6, 5,
1, 1,
281, 281,
15 15
@@ -12753,7 +12753,7 @@
[ [
"get", "get",
4, 4,
6, 5,
1, 1,
287, 287,
15 15
@@ -13238,7 +13238,7 @@
[ [
"get", "get",
5, 5,
6, 5,
1, 1,
294, 294,
15 15
@@ -13576,7 +13576,7 @@
], ],
[ [
"move", "move",
11, 10,
15, 15,
0, 0,
0 0
@@ -13590,7 +13590,7 @@
], ],
[ [
"move", "move",
8, 7,
16, 16,
0, 0,
0 0
@@ -13604,7 +13604,7 @@
], ],
[ [
"move", "move",
3, 2,
17, 17,
0, 0,
0 0
@@ -13618,7 +13618,7 @@
], ],
[ [
"move", "move",
9, 8,
18, 18,
0, 0,
0 0
@@ -13632,7 +13632,7 @@
], ],
[ [
"move", "move",
1, 11,
19, 19,
0, 0,
0 0
@@ -13694,7 +13694,7 @@
], ],
[ [
"move", "move",
7, 6,
21, 21,
4, 4,
12 12
@@ -13756,7 +13756,7 @@
], ],
[ [
"move", "move",
2, 1,
26, 26,
5, 5,
10 10
@@ -13818,7 +13818,7 @@
], ],
[ [
"move", "move",
4, 3,
31, 31,
6, 6,
12 12
@@ -13895,7 +13895,7 @@
], ],
[ [
"move", "move",
5, 4,
40, 40,
9, 9,
24 24
@@ -13907,14 +13907,14 @@
], ],
[ [
"move", "move",
6, 5,
41, 41,
58, 58,
12 12
], ],
[ [
"null", "null",
10, 9,
60, 60,
18 18
], ],
@@ -13927,7 +13927,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
42, 42,
"load", "load",
62, 62,
@@ -13942,7 +13942,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
43, 43,
"save", "save",
83, 83,
@@ -13957,7 +13957,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
44, 44,
"add", "add",
92, 92,
@@ -13972,7 +13972,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
45, 45,
"remove", "remove",
156, 156,
@@ -13987,7 +13987,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
46, 46,
"clear", "clear",
173, 173,
@@ -14002,7 +14002,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
47, 47,
"sync_one", "sync_one",
189, 189,
@@ -14017,7 +14017,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
48, 48,
"sync_all", "sync_all",
221, 221,
@@ -14032,7 +14032,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
49, 49,
"is_linked", "is_linked",
280, 280,
@@ -14047,7 +14047,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
50, 50,
"get_target", "get_target",
286, 286,
@@ -14062,7 +14062,7 @@
], ],
[ [
"store_field", "store_field",
6, 5,
51, 51,
"get_origin", "get_origin",
293, 293,
@@ -14070,7 +14070,7 @@
], ],
[ [
"return", "return",
6, 5,
302, 302,
8 8
], ],

View File

@@ -6295,7 +6295,7 @@
"call_done_124", "call_done_124",
[ [
"move", "move",
3, 2,
6, 6,
165, 165,
18 18
@@ -6303,7 +6303,7 @@
"_nop_bl_1", "_nop_bl_1",
[ [
"jump_true", "jump_true",
3, 2,
"if_else_125", "if_else_125",
166, 166,
10 10
@@ -6326,34 +6326,34 @@
[ [
"load_field", "load_field",
17, 17,
3, 2,
"dependencies", "dependencies",
168, 168,
16 16
], ],
[ [
"move", "move",
4, 3,
17, 17,
168, 168,
16 16
], ],
[ [
"null", "null",
1, 4,
169, 169,
23 23
], ],
[ [
"null", "null",
2, 1,
170, 170,
26 26
], ],
[ [
"move", "move",
18, 18,
4, 3,
171, 171,
9 9
], ],
@@ -6375,7 +6375,7 @@
[ [
"load_dynamic", "load_dynamic",
20, 20,
4, 3,
19, 19,
171, 171,
22 22
@@ -6406,14 +6406,14 @@
[ [
"load_dynamic", "load_dynamic",
22, 22,
4, 3,
21, 21,
172, 172,
26 26
], ],
[ [
"move", "move",
1, 4,
22, 22,
172, 172,
26 26
@@ -6554,7 +6554,7 @@
], ],
[ [
"move", "move",
2, 1,
30, 30,
173, 173,
24 24
@@ -6567,7 +6567,7 @@
[ [
"store_field", "store_field",
34, 34,
1, 4,
"package", "package",
174, 174,
25 25
@@ -6575,7 +6575,7 @@
[ [
"store_field", "store_field",
34, 34,
2, 1,
"path", "path",
174, 174,
44 44
@@ -11009,7 +11009,7 @@
[ [
"get", "get",
5, 5,
9, 8,
1, 1,
360, 360,
17 17
@@ -11789,7 +11789,7 @@
], ],
[ [
"move", "move",
18, 17,
23, 23,
300, 300,
20 20
@@ -11831,7 +11831,7 @@
"setarg", "setarg",
29, 29,
1, 1,
18, 17,
301, 301,
23 23
], ],
@@ -11844,7 +11844,7 @@
], ],
[ [
"move", "move",
8, 12,
27, 27,
301, 301,
23 23
@@ -11998,7 +11998,7 @@
], ],
[ [
"move", "move",
9, 8,
40, 40,
305, 305,
16 16
@@ -12012,7 +12012,7 @@
], ],
[ [
"null", "null",
10, 9,
308, 308,
14 14
], ],
@@ -12024,7 +12024,7 @@
], ],
[ [
"null", "null",
19, 18,
310, 310,
14 14
], ],
@@ -12042,13 +12042,13 @@
], ],
[ [
"null", "null",
11, 10,
313, 313,
13 13
], ],
[ [
"null", "null",
12, 11,
314, 314,
20 20
], ],
@@ -12060,7 +12060,7 @@
], ],
[ [
"null", "null",
17, 16,
316, 316,
22 22
], ],
@@ -12079,7 +12079,7 @@
], ],
[ [
"null", "null",
16, 19,
319, 319,
19 19
], ],
@@ -12226,7 +12226,7 @@
], ],
[ [
"move", "move",
10, 9,
46, 46,
321, 321,
18 18
@@ -12275,7 +12275,7 @@
"setarg", "setarg",
50, 50,
1, 1,
10, 9,
322, 322,
10 10
], ],
@@ -12359,7 +12359,7 @@
"setarg", "setarg",
57, 57,
1, 1,
10, 9,
322, 322,
36 36
], ],
@@ -12458,7 +12458,7 @@
"setarg", "setarg",
63, 63,
1, 1,
10, 9,
324, 324,
11 11
], ],
@@ -12585,7 +12585,7 @@
"setarg", "setarg",
73, 73,
1, 1,
10, 9,
325, 325,
12 12
], ],
@@ -12614,7 +12614,7 @@
], ],
[ [
"move", "move",
19, 18,
71, 71,
325, 325,
12 12
@@ -12664,7 +12664,7 @@
[ [
"push", "push",
80, 80,
19, 18,
326, 326,
17 17
], ],
@@ -12742,7 +12742,7 @@
"setarg", "setarg",
83, 83,
1, 1,
19, 18,
326, 326,
17 17
], ],
@@ -12806,7 +12806,7 @@
[ [
"push", "push",
89, 89,
19, 18,
327, 327,
16 16
], ],
@@ -12884,7 +12884,7 @@
"setarg", "setarg",
92, 92,
1, 1,
19, 18,
327, 327,
16 16
], ],
@@ -13200,7 +13200,7 @@
"tern_end_240", "tern_end_240",
[ [
"move", "move",
11, 10,
98, 98,
328, 328,
60 60
@@ -13213,7 +13213,7 @@
], ],
[ [
"move", "move",
12, 11,
102, 102,
331, 331,
18 18
@@ -13233,7 +13233,7 @@
], ],
[ [
"move", "move",
17, 16,
4, 4,
333, 333,
20 20
@@ -13256,7 +13256,7 @@
[ [
"length", "length",
105, 105,
8, 12,
335, 335,
28 28
], ],
@@ -13381,7 +13381,7 @@
[ [
"load_dynamic", "load_dynamic",
110, 110,
8, 12,
5, 5,
336, 336,
36 36
@@ -13472,7 +13472,7 @@
], ],
[ [
"move", "move",
12, 11,
116, 116,
338, 338,
22 22
@@ -13480,7 +13480,7 @@
[ [
"load_dynamic", "load_dynamic",
117, 117,
8, 12,
5, 5,
339, 339,
40 40
@@ -13579,7 +13579,7 @@
], ],
[ [
"move", "move",
17, 16,
121, 121,
340, 340,
24 24
@@ -13638,8 +13638,8 @@
[ [
"add", "add",
128, 128,
11, 10,
17, 16,
345, 345,
23 23
], ],
@@ -13653,7 +13653,7 @@
], ],
[ [
"move", "move",
16, 19,
129, 129,
345, 345,
38 38
@@ -13661,8 +13661,8 @@
[ [
"load_dynamic", "load_dynamic",
130, 130,
9, 8,
16, 19,
346, 346,
17 17
], ],
@@ -13708,9 +13708,9 @@
], ],
[ [
"store_dynamic", "store_dynamic",
9, 8,
132, 132,
16, 19,
347, 347,
14 14
], ],
@@ -13724,7 +13724,7 @@
"if_end_260", "if_end_260",
[ [
"jump_false", "jump_false",
12, 11,
"if_else_261", "if_else_261",
350, 350,
9 9
@@ -13732,8 +13732,8 @@
[ [
"load_dynamic", "load_dynamic",
135, 135,
9, 8,
16, 19,
351, 351,
14 14
], ],
@@ -13748,7 +13748,7 @@
[ [
"store_dynamic", "store_dynamic",
136, 136,
10, 9,
13, 13,
351, 351,
34 34
@@ -13763,15 +13763,15 @@
[ [
"load_dynamic", "load_dynamic",
137, 137,
9, 8,
16, 19,
353, 353,
14 14
], ],
[ [
"store_field", "store_field",
137, 137,
10, 9,
"generic", "generic",
353, 353,
14 14
@@ -13865,7 +13865,7 @@
"setarg", "setarg",
144, 144,
1, 1,
9, 8,
359, 359,
10 10
], ],

View File

@@ -1391,7 +1391,7 @@
], ],
[ [
"access", "access",
4, 5,
0, 0,
42, 42,
17 17
@@ -1404,14 +1404,14 @@
], ],
[ [
"false", "false",
5, 3,
44, 44,
21 21
], ],
[ [
"frame", "frame",
14, 14,
3, 4,
0, 0,
82, 82,
5 5
@@ -2076,7 +2076,7 @@
], ],
[ [
"move", "move",
4, 5,
19, 19,
115, 115,
19 19
@@ -2139,21 +2139,21 @@
], ],
[ [
"move", "move",
10, 8,
24, 24,
116, 116,
23 23
], ],
[ [
"access", "access",
9, 10,
0, 0,
117, 117,
22 22
], ],
[ [
"access", "access",
7, 4,
0, 0,
118, 118,
21 21
@@ -2167,7 +2167,7 @@
], ],
[ [
"false", "false",
5, 6,
120, 120,
20 20
], ],
@@ -2290,7 +2290,7 @@
"tern_end_90", "tern_end_90",
[ [
"move", "move",
8, 9,
29, 29,
174, 174,
54 54
@@ -2320,7 +2320,7 @@
[ [
"is_int", "is_int",
39, 39,
8, 9,
176, 176,
16 16
], ],
@@ -2335,7 +2335,7 @@
"lt_int", "lt_int",
37, 37,
11, 11,
8, 9,
176, 176,
16 16
], ],
@@ -2363,7 +2363,7 @@
[ [
"is_num", "is_num",
39, 39,
8, 9,
176, 176,
16 16
], ],
@@ -2378,7 +2378,7 @@
"lt_float", "lt_float",
37, 37,
11, 11,
8, 9,
176, 176,
16 16
], ],
@@ -2406,7 +2406,7 @@
[ [
"is_text", "is_text",
39, 39,
8, 9,
176, 176,
16 16
], ],
@@ -2421,7 +2421,7 @@
"lt_text", "lt_text",
37, 37,
11, 11,
8, 9,
176, 176,
16 16
], ],
@@ -2448,7 +2448,7 @@
[ [
"frame", "frame",
41, 41,
6, 7,
0, 0,
176, 176,
30 30
@@ -4434,21 +4434,21 @@
], ],
[ [
"move", "move",
10, 7,
24, 24,
208, 208,
23 23
], ],
[ [
"access", "access",
9, 10,
0, 0,
209, 209,
22 22
], ],
[ [
"access", "access",
4, 8,
0, 0,
210, 210,
21 21
@@ -4585,7 +4585,7 @@
"tern_end_143", "tern_end_143",
[ [
"move", "move",
8, 9,
29, 29,
269, 269,
54 54
@@ -4615,7 +4615,7 @@
[ [
"is_int", "is_int",
39, 39,
8, 9,
271, 271,
16 16
], ],
@@ -4630,7 +4630,7 @@
"lt_int", "lt_int",
37, 37,
11, 11,
8, 9,
271, 271,
16 16
], ],
@@ -4658,7 +4658,7 @@
[ [
"is_num", "is_num",
39, 39,
8, 9,
271, 271,
16 16
], ],
@@ -4673,7 +4673,7 @@
"lt_float", "lt_float",
37, 37,
11, 11,
8, 9,
271, 271,
16 16
], ],
@@ -4701,7 +4701,7 @@
[ [
"is_text", "is_text",
39, 39,
8, 9,
271, 271,
16 16
], ],
@@ -4716,7 +4716,7 @@
"lt_text", "lt_text",
37, 37,
11, 11,
8, 9,
271, 271,
16 16
], ],
@@ -4743,7 +4743,7 @@
[ [
"frame", "frame",
41, 41,
7, 4,
0, 0,
271, 271,
30 30
@@ -6647,7 +6647,7 @@
], ],
[ [
"access", "access",
4, 3,
0, 0,
292, 292,
17 17
@@ -6660,14 +6660,14 @@
], ],
[ [
"false", "false",
3, 5,
294, 294,
21 21
], ],
[ [
"frame", "frame",
14, 14,
5, 4,
1, 1,
332, 332,
5 5

View File

@@ -10073,7 +10073,7 @@
], ],
[ [
"move", "move",
14, 15,
75, 75,
35, 35,
17 17
@@ -10157,7 +10157,7 @@
], ],
[ [
"move", "move",
15, 14,
81, 81,
74, 74,
15 15
@@ -11016,7 +11016,7 @@
[ [
"store_field", "store_field",
138, 138,
14, 15,
"is_number", "is_number",
544, 544,
14 14
@@ -11064,7 +11064,7 @@
[ [
"store_field", "store_field",
138, 138,
15, 14,
"is_text", "is_text",
550, 550,
12 12

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -17,12 +17,25 @@ itself, but the only available compiler (old pitweb) miscompiles it.
## Current State ## Current State
- `boot/tokenize.cm.mcode` through `boot/streamline.cm.mcode` contain the **old pitweb** - `boot/tokenize.cm.mcode` through `boot/streamline.cm.mcode` contain the **old pitweb**
pipeline mcode (pre-merge). These work correctly — 641/641 vm_suite tests pass. pipeline mcode (pre-merge). These pass 641/641 vm_suite tests.
- All other boot mcode files (engine, bootstrap, seed_bootstrap, plus core modules like - All other boot mcode files (engine, bootstrap, seed_bootstrap, plus core modules like
fd, time, toml, etc.) are compiled from the merged source and work correctly. fd, time, toml, etc.) are compiled from the merged source and work correctly.
- The merged pipeline `.cm` source has changes from fix_gc that are **not active** — the - The merged pipeline `.cm` source has changes from fix_gc that are **not active** — the
runtime uses the old pitweb pipeline mcode. runtime uses the old pitweb pipeline mcode.
**The old pitweb pipeline is NOT fully working.** While it passes the test suite, it
miscompiles nested function declarations. This breaks:
- `toml.encode()` — the encoder uses nested `function` declarations inside `encode_toml`
- `Shop.save_lock()` — calls `toml.encode()`, so any lock.toml mutation fails
- Any other `.cm` module that uses nested named function declarations
This means the **ID-based package symbol naming** (Phase 2 in the plan) is blocked: it
needs `save_lock()` to persist package IDs to lock.toml.
The shop.cm changes for ID-based naming are already written and correct — they just need
a working pipeline underneath. Once the pipeline is fixed, the ID system will work.
## What Changed in the Pipeline ## What Changed in the Pipeline
The fix_gc merge brought these changes to the pipeline `.cm` files: The fix_gc merge brought these changes to the pipeline `.cm` files:
@@ -88,8 +101,12 @@ compiled by the current (old pitweb) pipeline. The process:
- Use `--seed` mode for testing compilation — it bypasses the engine entirely and - Use `--seed` mode for testing compilation — it bypasses the engine entirely and
loads the pipeline directly from boot mcode. loads the pipeline directly from boot mcode.
- The failure mode is silent: the old compiler compiles the new source without errors - The failure mode is silent: the old compiler compiles the new source without errors
but produces wrong bytecode. Start debugging with the simplest failing case but produces wrong bytecode.
(`var x = 42; print(x)`) and work up. - Known broken patterns with the old pitweb pipeline:
- `var x = 42; print(x)` fails when compiled by the regenned pipeline mcode
- Nested named function declarations (`function foo() {}` inside another function)
produce "not a function" errors — this breaks `toml.encode()`
- Test with: `echo 'var toml = use("toml"); print(toml.encode({a: 1}))' > /tmp/t.ce && ./cell --dev /tmp/t.ce`
- The most likely culprits are the mcode.cm changes (type-guarded arithmetic, array/record - The most likely culprits are the mcode.cm changes (type-guarded arithmetic, array/record
count args) since these change the bytecode format. The fold.cm changes (lookup tables) count args) since these change the bytecode format. The fold.cm changes (lookup tables)
are more likely safe refactors. are more likely safe refactors.

View File

@@ -21,6 +21,54 @@ var my$_ = actor_api
var core = "core" var core = "core"
// Generate a random 5-letter uppercase identifier for package symbol naming.
// Avoids collisions with existing IDs and "CORE".
function generate_package_id() {
var lock = Shop.load_lock()
var existing = {}
var keys = array(lock)
var _i = 0
while (_i < length(keys)) {
if (lock[keys[_i]] && lock[keys[_i]].id)
existing[lock[keys[_i]].id] = true
_i = _i + 1
}
existing["CORE"] = true
var id = null
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var _j = 0
while (true) {
id = ""
_j = 0
while (_j < 5) {
id = id + chars[abs(os.random()) % 26]
_j = _j + 1
}
if (!existing[id]) return id
}
}
// Get the assigned ID for a package, generating one if needed.
// Core always returns "core". Other packages get a random 5-letter ID
// assigned lazily on first use and persisted in lock.toml.
function get_package_id(pkg) {
if (pkg == core) return core
var lock = Shop.load_lock()
var entry = lock[pkg]
if (entry && entry.id) return entry.id
var id = generate_package_id()
if (!entry) {
entry = {}
lock[pkg] = entry
}
entry.id = id
Shop.save_lock(lock)
return id
}
function pull_from_cache(content) function pull_from_cache(content)
{ {
var path = hash_path(content) var path = hash_path(content)
@@ -593,12 +641,11 @@ function resolve_locator(path, ctx)
} }
// Generate symbol name for a C module file // Generate symbol name for a C module file
// Uses the same format as Shop.c_symbol_for_file // Uses the package's assigned ID (5-letter random or "core") instead of the full name
// Symbol names are based on canonical package names, not link targets
function make_c_symbol(pkg, file) { function make_c_symbol(pkg, file) {
var pkg_safe = replace(replace(replace(pkg, '/', '_'), '.', '_'), '-', '_') var pkg_id = get_package_id(pkg)
var file_safe = replace(replace(replace(file, '/', '_'), '.', '_'), '-', '_') var file_safe = replace(replace(replace(file, '/', '_'), '.', '_'), '-', '_')
return 'js_' + pkg_safe + '_' + file_safe + '_use' return 'js_' + pkg_id + '_' + file_safe + '_use'
} }
// Get the deterministic dylib path for a module in lib/<pkg>/<stem>.dylib // Get the deterministic dylib path for a module in lib/<pkg>/<stem>.dylib
@@ -1360,28 +1407,32 @@ Shop.get_package_dir = function(pkg) {
} }
// Generate C symbol name for a file within a package // Generate C symbol name for a file within a package
// e.g., c_symbol_for_file('gitea.pockle.world/john/prosperon', 'sprite.c') // Uses the package's assigned ID (e.g., "WAWOF") instead of the full name
// -> 'js_gitea_pockle_world_john_prosperon_sprite_use' // e.g., c_symbol_for_file('gitea.pockle.world/john/prosperon', 'sprite.c')
// -> 'js_WAWOF_sprite_use'
Shop.c_symbol_for_file = function(pkg, file) { Shop.c_symbol_for_file = function(pkg, file) {
var pkg_safe = replace(replace(replace(pkg, '/', '_'), '.', '_'), '-', '_') var pkg_id = get_package_id(pkg)
var file_safe = replace(replace(fd.stem(file), '/', '_'), '.', '_') var file_safe = replace(replace(fd.stem(file), '/', '_'), '.', '_')
var suffix = ends_with(file, '.ce') ? '_program' : '_use' var suffix = ends_with(file, '.ce') ? '_program' : '_use'
return 'js_' + pkg_safe + '_' + file_safe + suffix return 'js_' + pkg_id + '_' + file_safe + suffix
} }
// Generate C symbol prefix for a package // Generate C symbol prefix for a package
// e.g., c_symbol_prefix('gitea.pockle.world/john/prosperon') -> 'js_gitea_pockle_world_john_prosperon_' // e.g., c_symbol_prefix('gitea.pockle.world/john/prosperon') -> 'js_WAWOF_'
Shop.c_symbol_prefix = function(pkg) { Shop.c_symbol_prefix = function(pkg) {
var pkg_safe = replace(replace(replace(pkg, '/', '_'), '.', '_'), '-', '_') var pkg_id = get_package_id(pkg)
return 'js_' + pkg_safe + '_' return 'js_' + pkg_id + '_'
} }
// Get the library name for a package (without extension) // Get the library name for a package
// e.g., 'gitea.pockle.world/john/prosperon' -> 'gitea_pockle_world_john_prosperon' // e.g., 'gitea.pockle.world/john/prosperon' -> 'WAWOF'
Shop.lib_name_for_package = function(pkg) { Shop.lib_name_for_package = function(pkg) {
return replace(replace(replace(pkg, '/', '_'), '.', '_'), '-', '_') return get_package_id(pkg)
} }
// Get the assigned package ID (public API)
Shop.get_package_id = get_package_id
// Returns { ok: bool, results: [{pkg, ok, error}] } // Returns { ok: bool, results: [{pkg, ok, error}] }
// Get the deterministic dylib path for a module (public API) // Get the deterministic dylib path for a module (public API)
Shop.get_dylib_path = function(pkg, stem) { Shop.get_dylib_path = function(pkg, stem) {

View File

@@ -4935,6 +4935,82 @@ run("object literal 300 function values returned from function", function() {
} }
}) })
// ============================================================================
// NESTED FUNCTION DECLARATIONS
// ============================================================================
run("nested named function basic", function() {
function inner(x) {
return x + 1
}
assert_eq(inner(41), 42, "nested named function call")
})
run("nested named function used by sibling", function() {
function helper(v) {
return v * 2
}
function caller(v) {
return helper(v) + 1
}
assert_eq(caller(5), 11, "sibling nested function call")
})
run("nested named function in var function", function() {
var outer = function() {
function inner(a, b) {
return a + b
}
return inner(10, 20)
}
assert_eq(outer(), 30, "nested function inside var function")
})
run("nested named function with closure", function() {
var multiplier = 3
function scale(x) {
return x * multiplier
}
assert_eq(scale(7), 21, "nested function closing over outer var")
})
run("nested named function recursive", function() {
function factorial(n) {
if (n <= 1) return 1
return n * factorial(n - 1)
}
assert_eq(factorial(5), 120, "nested recursive function")
})
run("deeply nested named functions", function() {
var outer = function() {
function mid(x) {
function inner(y) {
return y + 1
}
return inner(x) * 2
}
return mid(4)
}
assert_eq(outer(), 10, "deeply nested named functions")
})
run("nested function used after definition", function() {
var result = []
function encode_value(v) {
if (is_text(v)) return '"' + v + '"'
if (is_number(v)) return text(v)
return "null"
}
function quote_key(k) {
return k
}
result[] = quote_key("a") + " = " + encode_value(1)
result[] = quote_key("b") + " = " + encode_value("hi")
assert_eq(result[0], "a = 1", "nested fn encode number")
assert_eq(result[1], 'b = "hi"', "nested fn encode text")
})
// ============================================================================ // ============================================================================
// SUMMARY // SUMMARY
// ============================================================================ // ============================================================================