Skip to content

Commit a0138fb

Browse files
committed
internal/core/debug: report more structure sharing
Change to show more structure sharing This significantly increases diffs between V2 and V3. However, it is very helpful to visualize the effects of upcoming improvments to the sharing algorithm. It also helps minimize the diffs resulting from the changes to the cycle algorithm. Issue #2850 Signed-off-by: Marcel van Lohuizen <[email protected]> Change-Id: I37f9a65469720e8e144e125b1a115b2f264462db Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1202043 Reviewed-by: Matthew Sackman <[email protected]> Unity-Result: CUE porcuepine <[email protected]> TryBot-Result: CUEcueckoo <[email protected]>
1 parent 06141e4 commit a0138fb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+13600
-842
lines changed

cue/testdata/benchmarks/cycle.txtar

+48
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,54 @@ Retain: 1
5353
Unifications: 15
5454
Conjuncts: 30
5555
Disjuncts: 26
56+
-- out/evalalpha --
57+
(struct){
58+
sameValues: (struct){
59+
SmustBeF: (struct){
60+
T: (string){ string }
61+
F: (struct){
62+
x: (string){ string }
63+
}
64+
S: ~(sameValues.SmustBeF.F)
65+
}
66+
CmustBeA: (struct){
67+
A: (struct){
68+
x: (#list){
69+
0: (string){ string }
70+
}
71+
}
72+
C: ~(sameValues.CmustBeA.A)
73+
}
74+
}
75+
}
76+
-- diff/-out/evalalpha<==>+out/eval --
77+
diff old new
78+
--- old
79+
+++ new
80+
@@ -5,9 +5,7 @@
81+
F: (struct){
82+
x: (string){ string }
83+
}
84+
- S: (struct){
85+
- x: (string){ string }
86+
- }
87+
+ S: ~(sameValues.SmustBeF.F)
88+
}
89+
CmustBeA: (struct){
90+
A: (struct){
91+
@@ -15,11 +13,7 @@
92+
0: (string){ string }
93+
}
94+
}
95+
- C: (struct){
96+
- x: (#list){
97+
- 0: (string){ string }
98+
- }
99+
- }
100+
+ C: ~(sameValues.CmustBeA.A)
101+
}
102+
}
103+
}
56104
-- out/eval --
57105
(struct){
58106
sameValues: (struct){

cue/testdata/benchmarks/listdedup.txtar

+329
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,335 @@ Retain: 0
4242
Unifications: 53
4343
Conjuncts: 407
4444
Disjuncts: 40
45+
-- out/evalalpha --
46+
(struct){
47+
A: (#struct){ |((#struct){
48+
#steps: ~(#Script)
49+
a: (int){ 1 }
50+
}, (#struct){
51+
#steps: ~(#Script)
52+
a: (int){ 1 }
53+
b: (int){ 2 }
54+
}, (#struct){
55+
#steps: ~(#Script)
56+
b: (int){ 2 }
57+
}) }
58+
B: (struct){
59+
#steps: (#struct){
60+
mount: (#list){
61+
0: (#struct){ |((#struct){
62+
#steps: ~(#Script)
63+
a: (int){ 1 }
64+
}, (#struct){
65+
#steps: ~(#Script)
66+
a: (int){ 1 }
67+
b: (int){ 2 }
68+
}, (#struct){
69+
#steps: ~(#Script)
70+
b: (int){ 2 }
71+
}) }
72+
}
73+
}
74+
}
75+
C: (struct){
76+
#steps: (#struct){
77+
mount: (#list){
78+
0: (#struct){ |((#struct){
79+
#steps: (#struct){
80+
mount: (#list){
81+
0: (#struct){ |((#struct){
82+
#steps: ~(#Script)
83+
a: (int){ 1 }
84+
}, (#struct){
85+
#steps: ~(#Script)
86+
a: (int){ 1 }
87+
b: (int){ 2 }
88+
}, (#struct){
89+
#steps: ~(#Script)
90+
b: (int){ 2 }
91+
}) }
92+
}
93+
}
94+
a: (int){ 1 }
95+
}, (#struct){
96+
#steps: (#struct){
97+
mount: (#list){
98+
0: (#struct){ |((#struct){
99+
#steps: ~(#Script)
100+
a: (int){ 1 }
101+
}, (#struct){
102+
#steps: ~(#Script)
103+
a: (int){ 1 }
104+
b: (int){ 2 }
105+
}, (#struct){
106+
#steps: ~(#Script)
107+
b: (int){ 2 }
108+
}) }
109+
}
110+
}
111+
a: (int){ 1 }
112+
b: (int){ 2 }
113+
}, (#struct){
114+
#steps: (#struct){
115+
mount: (#list){
116+
0: (#struct){ |((#struct){
117+
#steps: ~(#Script)
118+
a: (int){ 1 }
119+
}, (#struct){
120+
#steps: ~(#Script)
121+
a: (int){ 1 }
122+
b: (int){ 2 }
123+
}, (#struct){
124+
#steps: ~(#Script)
125+
b: (int){ 2 }
126+
}) }
127+
}
128+
}
129+
b: (int){ 2 }
130+
}) }
131+
}
132+
}
133+
}
134+
#Script: (#struct){
135+
mount: (list){
136+
}
137+
}
138+
#Task: (#struct){ |((#struct){
139+
#steps: ~(#Script)
140+
a: (int){ 1 }
141+
}, (#struct){
142+
#steps: ~(#Script)
143+
a: (int){ 1 }
144+
b: (int){ 2 }
145+
}, (#struct){
146+
#steps: ~(#Script)
147+
b: (int){ 2 }
148+
}) }
149+
#ref: (#struct){ |((#struct){
150+
a: (int){ 1 }
151+
}, (#struct){
152+
b: (int){ 2 }
153+
}) }
154+
}
155+
-- diff/-out/evalalpha<==>+out/eval --
156+
diff old new
157+
--- old
158+
+++ new
159+
@@ -1,22 +1,13 @@
160+
(struct){
161+
A: (#struct){ |((#struct){
162+
- #steps: (#struct){
163+
- mount: (list){
164+
- }
165+
- }
166+
- a: (int){ 1 }
167+
- }, (#struct){
168+
- #steps: (#struct){
169+
- mount: (list){
170+
- }
171+
- }
172+
- a: (int){ 1 }
173+
- b: (int){ 2 }
174+
- }, (#struct){
175+
- #steps: (#struct){
176+
- mount: (list){
177+
- }
178+
- }
179+
+ #steps: ~(#Script)
180+
+ a: (int){ 1 }
181+
+ }, (#struct){
182+
+ #steps: ~(#Script)
183+
+ a: (int){ 1 }
184+
+ b: (int){ 2 }
185+
+ }, (#struct){
186+
+ #steps: ~(#Script)
187+
b: (int){ 2 }
188+
}) }
189+
B: (struct){
190+
@@ -23,23 +14,14 @@
191+
#steps: (#struct){
192+
mount: (#list){
193+
0: (#struct){ |((#struct){
194+
- #steps: (#struct){
195+
- mount: (list){
196+
- }
197+
- }
198+
- a: (int){ 1 }
199+
- }, (#struct){
200+
- #steps: (#struct){
201+
- mount: (list){
202+
- }
203+
- }
204+
- a: (int){ 1 }
205+
- b: (int){ 2 }
206+
- }, (#struct){
207+
- #steps: (#struct){
208+
- mount: (list){
209+
- }
210+
- }
211+
+ #steps: ~(#Script)
212+
+ a: (int){ 1 }
213+
+ }, (#struct){
214+
+ #steps: ~(#Script)
215+
+ a: (int){ 1 }
216+
+ b: (int){ 2 }
217+
+ }, (#struct){
218+
+ #steps: ~(#Script)
219+
b: (int){ 2 }
220+
}) }
221+
}
222+
@@ -52,76 +34,49 @@
223+
#steps: (#struct){
224+
mount: (#list){
225+
0: (#struct){ |((#struct){
226+
- #steps: (#struct){
227+
- mount: (list){
228+
- }
229+
- }
230+
- a: (int){ 1 }
231+
- }, (#struct){
232+
- #steps: (#struct){
233+
- mount: (list){
234+
- }
235+
- }
236+
- a: (int){ 1 }
237+
- b: (int){ 2 }
238+
- }, (#struct){
239+
- #steps: (#struct){
240+
- mount: (list){
241+
- }
242+
- }
243+
- b: (int){ 2 }
244+
- }) }
245+
- }
246+
- }
247+
- a: (int){ 1 }
248+
- }, (#struct){
249+
- #steps: (#struct){
250+
- mount: (#list){
251+
- 0: (#struct){ |((#struct){
252+
- #steps: (#struct){
253+
- mount: (list){
254+
- }
255+
- }
256+
- a: (int){ 1 }
257+
- }, (#struct){
258+
- #steps: (#struct){
259+
- mount: (list){
260+
- }
261+
- }
262+
- a: (int){ 1 }
263+
- b: (int){ 2 }
264+
- }, (#struct){
265+
- #steps: (#struct){
266+
- mount: (list){
267+
- }
268+
- }
269+
- b: (int){ 2 }
270+
- }) }
271+
- }
272+
- }
273+
- a: (int){ 1 }
274+
- b: (int){ 2 }
275+
- }, (#struct){
276+
- #steps: (#struct){
277+
- mount: (#list){
278+
- 0: (#struct){ |((#struct){
279+
- #steps: (#struct){
280+
- mount: (list){
281+
- }
282+
- }
283+
- a: (int){ 1 }
284+
- }, (#struct){
285+
- #steps: (#struct){
286+
- mount: (list){
287+
- }
288+
- }
289+
- a: (int){ 1 }
290+
- b: (int){ 2 }
291+
- }, (#struct){
292+
- #steps: (#struct){
293+
- mount: (list){
294+
- }
295+
- }
296+
+ #steps: ~(#Script)
297+
+ a: (int){ 1 }
298+
+ }, (#struct){
299+
+ #steps: ~(#Script)
300+
+ a: (int){ 1 }
301+
+ b: (int){ 2 }
302+
+ }, (#struct){
303+
+ #steps: ~(#Script)
304+
+ b: (int){ 2 }
305+
+ }) }
306+
+ }
307+
+ }
308+
+ a: (int){ 1 }
309+
+ }, (#struct){
310+
+ #steps: (#struct){
311+
+ mount: (#list){
312+
+ 0: (#struct){ |((#struct){
313+
+ #steps: ~(#Script)
314+
+ a: (int){ 1 }
315+
+ }, (#struct){
316+
+ #steps: ~(#Script)
317+
+ a: (int){ 1 }
318+
+ b: (int){ 2 }
319+
+ }, (#struct){
320+
+ #steps: ~(#Script)
321+
+ b: (int){ 2 }
322+
+ }) }
323+
+ }
324+
+ }
325+
+ a: (int){ 1 }
326+
+ b: (int){ 2 }
327+
+ }, (#struct){
328+
+ #steps: (#struct){
329+
+ mount: (#list){
330+
+ 0: (#struct){ |((#struct){
331+
+ #steps: ~(#Script)
332+
+ a: (int){ 1 }
333+
+ }, (#struct){
334+
+ #steps: ~(#Script)
335+
+ a: (int){ 1 }
336+
+ b: (int){ 2 }
337+
+ }, (#struct){
338+
+ #steps: ~(#Script)
339+
b: (int){ 2 }
340+
}) }
341+
}
342+
@@ -136,23 +91,14 @@
343+
}
344+
}
345+
#Task: (#struct){ |((#struct){
346+
- #steps: (#struct){
347+
- mount: (list){
348+
- }
349+
- }
350+
- a: (int){ 1 }
351+
- }, (#struct){
352+
- #steps: (#struct){
353+
- mount: (list){
354+
- }
355+
- }
356+
- a: (int){ 1 }
357+
- b: (int){ 2 }
358+
- }, (#struct){
359+
- #steps: (#struct){
360+
- mount: (list){
361+
- }
362+
- }
363+
+ #steps: ~(#Script)
364+
+ a: (int){ 1 }
365+
+ }, (#struct){
366+
+ #steps: ~(#Script)
367+
+ a: (int){ 1 }
368+
+ b: (int){ 2 }
369+
+ }, (#struct){
370+
+ #steps: ~(#Script)
371+
b: (int){ 2 }
372+
}) }
373+
#ref: (#struct){ |((#struct){
45374
-- out/eval --
46375
(struct){
47376
A: (#struct){ |((#struct){

0 commit comments

Comments
 (0)