Skip to content

Commit a2985ab

Browse files
committed
BIG memory reduction
1 parent 0bfcd9b commit a2985ab

File tree

3 files changed

+83
-73
lines changed

3 files changed

+83
-73
lines changed

SRC/ast-constructor.lsts

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ let .is-var-or-ascripted-var(t: AST): Bool = (
5050
let .with-implies(term: AST, implies: Vector<Type>): AST = (
5151
match term {
5252
Typedef{} => (
53-
let location = open((term as Tag::Typedef)).td.location;
54-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
55-
let implements = open((term as Tag::Typedef)).td.implements;
56-
let size = open((term as Tag::Typedef)).td.size;
57-
let alias = open((term as Tag::Typedef)).td.alias;
58-
let opaque-alias = open((term as Tag::Typedef)).td.opaque-alias;
59-
let cases = open((term as Tag::Typedef)).td.cases;
60-
let misc-type = open((term as Tag::Typedef)).td.misc-type;
61-
let implied-phi = open((term as Tag::Typedef)).td.implied-phi;
53+
let location = open((term as Tag::Typedef).td).location;
54+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
55+
let implements = open((term as Tag::Typedef).td).implements;
56+
let size = open((term as Tag::Typedef).td).size;
57+
let alias = open((term as Tag::Typedef).td).alias;
58+
let opaque-alias = open((term as Tag::Typedef).td).opaque-alias;
59+
let cases = open((term as Tag::Typedef).td).cases;
60+
let misc-type = open((term as Tag::Typedef).td).misc-type;
61+
let implied-phi = open((term as Tag::Typedef).td).implied-phi;
6262
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
6363
);
6464
_ => term;
@@ -67,15 +67,15 @@ let .with-implies(term: AST, implies: Vector<Type>): AST = (
6767
let .with-implements(term: AST, implements: Vector<Type>): AST = (
6868
match term {
6969
Typedef{} => (
70-
let location = open((term as Tag::Typedef)).td.location;
71-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
72-
let implies = open((term as Tag::Typedef)).td.implies;
73-
let size = open((term as Tag::Typedef)).td.size;
74-
let alias = open((term as Tag::Typedef)).td.alias;
75-
let opaque-alias = open((term as Tag::Typedef)).td.opaque-alias;
76-
let cases = open((term as Tag::Typedef)).td.cases;
77-
let misc-type = open((term as Tag::Typedef)).td.misc-type;
78-
let implied-phi = open((term as Tag::Typedef)).td.implied-phi;
70+
let location = open((term as Tag::Typedef).td).location;
71+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
72+
let implies = open((term as Tag::Typedef).td).implies;
73+
let size = open((term as Tag::Typedef).td).size;
74+
let alias = open((term as Tag::Typedef).td).alias;
75+
let opaque-alias = open((term as Tag::Typedef).td).opaque-alias;
76+
let cases = open((term as Tag::Typedef).td).cases;
77+
let misc-type = open((term as Tag::Typedef).td).misc-type;
78+
let implied-phi = open((term as Tag::Typedef).td).implied-phi;
7979
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
8080
);
8181
_ => term;
@@ -84,15 +84,15 @@ let .with-implements(term: AST, implements: Vector<Type>): AST = (
8484
let .with-size(term: AST, size: Type): AST = (
8585
match term {
8686
Typedef{} => (
87-
let location = open((term as Tag::Typedef)).td.location;
88-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
89-
let implies = open((term as Tag::Typedef)).td.implies;
90-
let implements = open((term as Tag::Typedef)).td.implements;
91-
let alias = open((term as Tag::Typedef)).td.alias;
92-
let opaque-alias = open((term as Tag::Typedef)).td.opaque-alias;
93-
let cases = open((term as Tag::Typedef)).td.cases;
94-
let misc-type = open((term as Tag::Typedef)).td.misc-type;
95-
let implied-phi = open((term as Tag::Typedef)).td.implied-phi;
87+
let location = open((term as Tag::Typedef).td).location;
88+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
89+
let implies = open((term as Tag::Typedef).td).implies;
90+
let implements = open((term as Tag::Typedef).td).implements;
91+
let alias = open((term as Tag::Typedef).td).alias;
92+
let opaque-alias = open((term as Tag::Typedef).td).opaque-alias;
93+
let cases = open((term as Tag::Typedef).td).cases;
94+
let misc-type = open((term as Tag::Typedef).td).misc-type;
95+
let implied-phi = open((term as Tag::Typedef).td).implied-phi;
9696
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
9797
);
9898
_ => term;
@@ -101,15 +101,15 @@ let .with-size(term: AST, size: Type): AST = (
101101
let .with-alias(term: AST, alias: Type): AST = (
102102
match term {
103103
Typedef{} => (
104-
let location = open((term as Tag::Typedef)).td.location;
105-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
106-
let implies = open((term as Tag::Typedef)).td.implies;
107-
let implements = open((term as Tag::Typedef)).td.implements;
108-
let size = open((term as Tag::Typedef)).td.size;
109-
let opaque-alias = open((term as Tag::Typedef)).td.opaque-alias;
110-
let cases = open((term as Tag::Typedef)).td.cases;
111-
let misc-type = open((term as Tag::Typedef)).td.misc-type;
112-
let implied-phi = open((term as Tag::Typedef)).td.implied-phi;
104+
let location = open((term as Tag::Typedef).td).location;
105+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
106+
let implies = open((term as Tag::Typedef).td).implies;
107+
let implements = open((term as Tag::Typedef).td).implements;
108+
let size = open((term as Tag::Typedef).td).size;
109+
let opaque-alias = open((term as Tag::Typedef).td).opaque-alias;
110+
let cases = open((term as Tag::Typedef).td).cases;
111+
let misc-type = open((term as Tag::Typedef).td).misc-type;
112+
let implied-phi = open((term as Tag::Typedef).td).implied-phi;
113113
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
114114
);
115115
_ => term;
@@ -118,15 +118,15 @@ let .with-alias(term: AST, alias: Type): AST = (
118118
let .with-opaque-alias(term: AST, opaque-alias: Type): AST = (
119119
match term {
120120
Typedef{} => (
121-
let location = open((term as Tag::Typedef)).td.location;
122-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
123-
let implies = open((term as Tag::Typedef)).td.implies;
124-
let implements = open((term as Tag::Typedef)).td.implements;
125-
let size = open((term as Tag::Typedef)).td.size;
126-
let alias = open((term as Tag::Typedef)).td.alias;
127-
let cases = open((term as Tag::Typedef)).td.cases;
128-
let misc-type = open((term as Tag::Typedef)).td.misc-type;
129-
let implied-phi = open((term as Tag::Typedef)).td.implied-phi;
121+
let location = open((term as Tag::Typedef).td).location;
122+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
123+
let implies = open((term as Tag::Typedef).td).implies;
124+
let implements = open((term as Tag::Typedef).td).implements;
125+
let size = open((term as Tag::Typedef).td).size;
126+
let alias = open((term as Tag::Typedef).td).alias;
127+
let cases = open((term as Tag::Typedef).td).cases;
128+
let misc-type = open((term as Tag::Typedef).td).misc-type;
129+
let implied-phi = open((term as Tag::Typedef).td).implied-phi;
130130
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
131131
);
132132
_ => term;
@@ -135,15 +135,15 @@ let .with-opaque-alias(term: AST, opaque-alias: Type): AST = (
135135
let .with-cases(term: AST, cases: Vector<(CString,Vector<(CString,Type)>)>): AST = (
136136
match term {
137137
Typedef{} => (
138-
let location = open((term as Tag::Typedef)).td.location;
139-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
140-
let implies = open((term as Tag::Typedef)).td.implies;
141-
let implements = open((term as Tag::Typedef)).td.implements;
142-
let size = open((term as Tag::Typedef)).td.size;
143-
let alias = open((term as Tag::Typedef)).td.alias;
144-
let opaque-alias = open((term as Tag::Typedef)).td.opaque-alias;
145-
let misc-type = open((term as Tag::Typedef)).td.misc-type;
146-
let implied-phi = open((term as Tag::Typedef)).td.implied-phi;
138+
let location = open((term as Tag::Typedef).td).location;
139+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
140+
let implies = open((term as Tag::Typedef).td).implies;
141+
let implements = open((term as Tag::Typedef).td).implements;
142+
let size = open((term as Tag::Typedef).td).size;
143+
let alias = open((term as Tag::Typedef).td).alias;
144+
let opaque-alias = open((term as Tag::Typedef).td).opaque-alias;
145+
let misc-type = open((term as Tag::Typedef).td).misc-type;
146+
let implied-phi = open((term as Tag::Typedef).td).implied-phi;
147147
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
148148
);
149149
_ => term;
@@ -152,15 +152,15 @@ let .with-cases(term: AST, cases: Vector<(CString,Vector<(CString,Type)>)>): AST
152152
let .with-misc(term: AST, misc-type: Type): AST = (
153153
match term {
154154
Typedef{} => (
155-
let location = open((term as Tag::Typedef)).td.location;
156-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
157-
let implies = open((term as Tag::Typedef)).td.implies;
158-
let implements = open((term as Tag::Typedef)).td.implements;
159-
let size = open((term as Tag::Typedef)).td.size;
160-
let alias = open((term as Tag::Typedef)).td.alias;
161-
let opaque-alias = open((term as Tag::Typedef)).td.opaque-alias;
162-
let cases = open((term as Tag::Typedef)).td.cases;
163-
let implied-phi = open((term as Tag::Typedef)).td.implied-phi;
155+
let location = open((term as Tag::Typedef).td).location;
156+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
157+
let implies = open((term as Tag::Typedef).td).implies;
158+
let implements = open((term as Tag::Typedef).td).implements;
159+
let size = open((term as Tag::Typedef).td).size;
160+
let alias = open((term as Tag::Typedef).td).alias;
161+
let opaque-alias = open((term as Tag::Typedef).td).opaque-alias;
162+
let cases = open((term as Tag::Typedef).td).cases;
163+
let implied-phi = open((term as Tag::Typedef).td).implied-phi;
164164
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
165165
);
166166
_ => term;
@@ -169,15 +169,15 @@ let .with-misc(term: AST, misc-type: Type): AST = (
169169
let .with-implied-phi(term: AST, implied-phi: Type): AST = (
170170
match term {
171171
Typedef{} => (
172-
let location = open((term as Tag::Typedef)).td.location;
173-
let lhs-type = open((term as Tag::Typedef)).td.lhs-type;
174-
let implies = open((term as Tag::Typedef)).td.implies;
175-
let implements = open((term as Tag::Typedef)).td.implements;
176-
let size = open((term as Tag::Typedef)).td.size;
177-
let alias = open((term as Tag::Typedef)).td.alias;
178-
let opaque-alias = open((term as Tag::Typedef)).td.opaque-alias;
179-
let cases = open((term as Tag::Typedef)).td.cases;
180-
let misc-type = open((term as Tag::Typedef)).td.misc-type;
172+
let location = open((term as Tag::Typedef).td).location;
173+
let lhs-type = open((term as Tag::Typedef).td).lhs-type;
174+
let implies = open((term as Tag::Typedef).td).implies;
175+
let implements = open((term as Tag::Typedef).td).implements;
176+
let size = open((term as Tag::Typedef).td).size;
177+
let alias = open((term as Tag::Typedef).td).alias;
178+
let opaque-alias = open((term as Tag::Typedef).td).opaque-alias;
179+
let cases = open((term as Tag::Typedef).td).cases;
180+
let misc-type = open((term as Tag::Typedef).td).misc-type;
181181
Typedef( location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi );
182182
);
183183
_ => term;

SRC/ast-definition.lsts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,16 @@ let $"Typedef"(location: SourceLocation, lhs-type: Type, implies: Vector<Type>,
1414
Typedef(close(ASTTypedef(location, lhs-type, implies, implements, size, alias, opaque-alias, cases, misc-type, implied-phi)))
1515
);
1616

17+
let .lhs-type(t: AST+Tag::Typedef): Type = open((t as Tag::Typedef).td).lhs-type;
18+
let .implies(t: AST+Tag::Typedef): Vector<Type> = open((t as Tag::Typedef).td).implies;
19+
let .implements(t: AST+Tag::Typedef): Vector<Type> = open((t as Tag::Typedef).td).implements;
20+
let .size(t: AST+Tag::Typedef): Type = open((t as Tag::Typedef).td).size;
21+
let .alias(t: AST+Tag::Typedef): Type = open((t as Tag::Typedef).td).alias;
22+
let .opaque-alias(t: AST+Tag::Typedef): Type = open((t as Tag::Typedef).td).opaque-alias;
23+
let .cases(t: AST+Tag::Typedef): Vector<(CString,Vector<(CString,Type)>)> = open((t as Tag::Typedef).td).cases;
24+
let .misc-type(t: AST+Tag::Typedef): Type = open((t as Tag::Typedef).td).misc-type;
25+
let .implied-phi(t: AST+Tag::Typedef): Type = open((t as Tag::Typedef).td).implied-phi;
26+
1727
type AST zero ASTEOF implies MustRetain, MustRelease
1828
= Meta { val: OwnedData<AST>[] }
1929
| ASTEOF

SRC/ast-location.lsts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ let .location(term: AST): SourceLocation = (
1111
for vector s in seq { loc = loc || s.location };
1212
loc
1313
);
14-
Typedef{ location=location } => location;
14+
Typedef{ td=td } => open(td).location;
1515
_ => mk-location();
1616
}
1717
);

0 commit comments

Comments
 (0)