Skip to content

Commit a397974

Browse files
committed
internal/core/adt: clean up orphaned arcs
When a node is redirected to a disjunction, for instance, or when a node becomes erroneous, its arcs become irrelevant. The evaluator clears the arc list in these cases to avoid bugs resulting from descening into the wrong set of arcs. We now ensure these arcs are freed. Issue #3334 Issue #2850 Signed-off-by: Marcel van Lohuizen <[email protected]> Change-Id: Ief2d59accc66cce28327b6ad31b347cbafce3d85 Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1218190 TryBot-Result: CUEcueckoo <[email protected]> Reviewed-by: Daniel Martí <[email protected]> Unity-Result: CUE porcuepine <[email protected]>
1 parent e92f16e commit a397974

Some content is hidden

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

41 files changed

+282
-280
lines changed

cue/testdata/basicrewrite/018_self-reference_cycles.txtar

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ c: [c[1], c[0]]
137137
}
138138
}
139139
-- out/evalalpha/stats --
140-
Leaks: 1
141-
Freed: 58
140+
Leaks: 0
141+
Freed: 59
142142
Reused: 38
143143
Allocs: 21
144144
Retain: 0
@@ -154,7 +154,7 @@ diff old new
154154
--- old
155155
+++ new
156156
@@ -1,9 +1,12 @@
157-
Leaks: 1
157+
-Leaks: 1
158158
-Freed: 57
159159
-Reused: 46
160160
-Allocs: 12
@@ -163,7 +163,8 @@ diff old new
163163
-Unifications: 48
164164
-Conjuncts: 285
165165
-Disjuncts: 88
166-
+Freed: 58
166+
+Leaks: 0
167+
+Freed: 59
167168
+Reused: 38
168169
+Allocs: 21
169170
+Retain: 0

cue/testdata/benchmarks/disjunctelim.txtar

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ issue3610: {
4040
}
4141

4242
-- out/evalalpha/stats --
43-
Leaks: 1
44-
Freed: 798
43+
Leaks: 0
44+
Freed: 799
4545
Reused: 746
4646
Allocs: 53
4747
Retain: 0
@@ -57,12 +57,11 @@ diff old new
5757
--- old
5858
+++ new
5959
@@ -1,9 +1,12 @@
60-
-Leaks: 0
60+
Leaks: 0
6161
-Freed: 367
6262
-Reused: 356
6363
-Allocs: 11
64-
+Leaks: 1
65-
+Freed: 798
64+
+Freed: 799
6665
+Reused: 746
6766
+Allocs: 53
6867
Retain: 0

cue/testdata/benchmarks/inlinedisjunction.txtar

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
x: #def
1515
x: c: "foo"
1616
-- out/evalalpha/stats --
17-
Leaks: 1
18-
Freed: 111
17+
Leaks: 0
18+
Freed: 112
1919
Reused: 98
2020
Allocs: 14
2121
Retain: 0
@@ -49,12 +49,11 @@ diff old new
4949
--- old
5050
+++ new
5151
@@ -1,9 +1,12 @@
52-
-Leaks: 0
52+
Leaks: 0
5353
-Freed: 4674
5454
-Reused: 3903
5555
-Allocs: 771
56-
+Leaks: 1
57-
+Freed: 111
56+
+Freed: 112
5857
+Reused: 98
5958
+Allocs: 14
6059
Retain: 0

cue/testdata/benchmarks/issue1684.txtar

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ nestedClosed: passing: {
6262
D: {id: {}} | {[string]: D}
6363
}
6464
-- out/evalalpha/stats --
65-
Leaks: 13925
66-
Freed: 11152
67-
Reused: 11055
68-
Allocs: 14022
65+
Leaks: 13900
66+
Freed: 11177
67+
Reused: 11058
68+
Allocs: 14019
6969
Retain: 0
7070

7171
Unifications: 3219
@@ -146,10 +146,10 @@ diff old new
146146
-Freed: 1064333
147147
-Reused: 1064282
148148
-Allocs: 51
149-
+Leaks: 13925
150-
+Freed: 11152
151-
+Reused: 11055
152-
+Allocs: 14022
149+
+Leaks: 13900
150+
+Freed: 11177
151+
+Reused: 11058
152+
+Allocs: 14019
153153
Retain: 0
154154

155155
-Unifications: 792123

cue/testdata/benchmarks/issue3334.txtar

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ Schema: {
4343
nullable?: bool
4444
}
4545
-- out/evalalpha/stats --
46-
Leaks: 11
47-
Freed: 773
48-
Reused: 33
49-
Allocs: 751
46+
Leaks: 0
47+
Freed: 784
48+
Reused: 44
49+
Allocs: 740
5050
Retain: 0
5151

5252
Unifications: 452
@@ -60,7 +60,7 @@ diff old new
6060
--- old
6161
+++ new
6262
@@ -1,9 +1,12 @@
63-
-Leaks: 0
63+
Leaks: 0
6464
-Freed: 401
6565
-Reused: 388
6666
-Allocs: 13
@@ -69,10 +69,9 @@ diff old new
6969
-Unifications: 245
7070
-Conjuncts: 425
7171
-Disjuncts: 402
72-
+Leaks: 11
73-
+Freed: 773
74-
+Reused: 33
75-
+Allocs: 751
72+
+Freed: 784
73+
+Reused: 44
74+
+Allocs: 740
7675
+Retain: 0
7776
+
7877
+Unifications: 452

cue/testdata/benchmarks/issue3514.txtar

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ _schema: {
3636
#timezone: or([for i in list.Range(0, 571, 1) {"\(i)"}])
3737
}
3838
-- out/evalalpha/stats --
39-
Leaks: 20
40-
Freed: 3582
39+
Leaks: 12
40+
Freed: 3590
4141
Reused: 2436
4242
Allocs: 1166
4343
Retain: 0
@@ -62,8 +62,8 @@ diff old new
6262
-Unifications: 189
6363
-Conjuncts: 92950
6464
-Disjuncts: 31139
65-
+Leaks: 20
66-
+Freed: 3582
65+
+Leaks: 12
66+
+Freed: 3590
6767
+Reused: 2436
6868
+Allocs: 1166
6969
+Retain: 0

cue/testdata/benchmarks/issue3633.txtar

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#Issue: 3633
22
-- out/evalalpha/stats --
3-
Leaks: 1
4-
Freed: 2030
3+
Leaks: 0
4+
Freed: 2031
55
Reused: 1798
66
Allocs: 233
77
Retain: 0
@@ -17,12 +17,11 @@ diff old new
1717
--- old
1818
+++ new
1919
@@ -1,9 +1,12 @@
20-
-Leaks: 0
20+
Leaks: 0
2121
-Freed: 3595
2222
-Reused: 3575
2323
-Allocs: 20
24-
+Leaks: 1
25-
+Freed: 2030
24+
+Freed: 2031
2625
+Reused: 1798
2726
+Allocs: 233
2827
Retain: 0

cue/testdata/benchmarks/listdedup.txtar

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ C: #steps: #Script & {mount: [B]}
3333

3434
#ref: {a: 1} | {b: 2}
3535
-- out/evalalpha/stats --
36-
Leaks: 2
37-
Freed: 87
38-
Reused: 50
39-
Allocs: 39
36+
Leaks: 0
37+
Freed: 89
38+
Reused: 51
39+
Allocs: 38
4040
Retain: 0
4141

4242
Unifications: 33
@@ -467,7 +467,7 @@ diff old new
467467
--- old
468468
+++ new
469469
@@ -1,9 +1,12 @@
470-
-Leaks: 0
470+
Leaks: 0
471471
-Freed: 24096
472472
-Reused: 24051
473473
-Allocs: 45
@@ -476,10 +476,9 @@ diff old new
476476
-Unifications: 18724
477477
-Conjuncts: 100730
478478
-Disjuncts: 24097
479-
+Leaks: 2
480-
+Freed: 87
481-
+Reused: 50
482-
+Allocs: 39
479+
+Freed: 89
480+
+Reused: 51
481+
+Allocs: 38
483482
+Retain: 0
484483
+
485484
+Unifications: 33

cue/testdata/builtins/closed.txtar

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,10 @@ nestedWithSelfReference: t2: {
9292
x: foo: disallowed: 5
9393
}
9494
-- out/evalalpha/stats --
95-
Leaks: 3
96-
Freed: 270
97-
Reused: 232
98-
Allocs: 41
95+
Leaks: 0
96+
Freed: 273
97+
Reused: 234
98+
Allocs: 39
9999
Retain: 0
100100

101101
Unifications: 183
@@ -118,10 +118,10 @@ diff old new
118118
-Unifications: 261
119119
-Conjuncts: 504
120120
-Disjuncts: 266
121-
+Leaks: 3
122-
+Freed: 270
123-
+Reused: 232
124-
+Allocs: 41
121+
+Leaks: 0
122+
+Freed: 273
123+
+Reused: 234
124+
+Allocs: 39
125125
+Retain: 0
126126
+
127127
+Unifications: 183

cue/testdata/comprehensions/issue1732.txtar

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,10 @@ foo: {
122122
}
123123
}
124124
-- out/evalalpha/stats --
125-
Leaks: 7
126-
Freed: 89
127-
Reused: 54
128-
Allocs: 42
125+
Leaks: 3
126+
Freed: 93
127+
Reused: 56
128+
Allocs: 40
129129
Retain: 0
130130

131131
Unifications: 82
@@ -139,7 +139,7 @@ diff old new
139139
--- old
140140
+++ new
141141
@@ -1,12 +1,12 @@
142-
-Leaks: 3
142+
Leaks: 3
143143
-Freed: 118
144144
-Reused: 103
145145
-Allocs: 18
@@ -151,10 +151,9 @@ diff old new
151151
-
152152
-CloseIDElems: 0
153153
-NumCloseIDs: 8
154-
+Leaks: 7
155-
+Freed: 89
156-
+Reused: 54
157-
+Allocs: 42
154+
+Freed: 93
155+
+Reused: 56
156+
+Allocs: 40
158157
+Retain: 0
159158
+
160159
+Unifications: 82

0 commit comments

Comments
 (0)