Skip to content

Commit 2cb38ff

Browse files
Computed mlir type string once and made result of getMembers an unmodifyable map
1 parent 03a1d80 commit 2cb38ff

1 file changed

Lines changed: 29 additions & 20 deletions

File tree

app/src/main/java/de/tudarmstadt/esa/treenail/codegen/MLIRStructType.java

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,37 @@
11
package de.tudarmstadt.esa.treenail.codegen;
22

33
import com.minres.coredsl.type.CoreDslType;
4+
import java.util.Collections;
45
import java.util.LinkedHashMap;
6+
import java.util.Map;
57

68
class MLIRStructType extends MLIRType {
79
private final LinkedHashMap<String, MLIRType> members;
10+
private final String mlirTypeString;
11+
12+
private static String
13+
createStructTypeString(LinkedHashMap<String, MLIRType> members) {
14+
StringBuilder sb = new StringBuilder("!hw.struct<");
15+
final int lastIdx = members.size() - 1;
16+
int currIdx = 0;
17+
for (var item : members.entrySet()) {
18+
String key = item.getKey();
19+
MLIRType val = item.getValue();
20+
sb.append(key);
21+
sb.append(": ");
22+
sb.append(val);
23+
if (currIdx != lastIdx) {
24+
sb.append(", ");
25+
}
26+
++currIdx;
27+
}
28+
sb.append(">");
29+
return sb.toString();
30+
}
31+
832
private MLIRStructType(LinkedHashMap<String, MLIRType> members) {
933
this.members = members;
34+
this.mlirTypeString = createStructTypeString(members);
1035
}
1136

1237
private static final LinkedHashMap<String, MLIRStructType> types =
@@ -37,25 +62,9 @@ public MLIRType getMemberType(String memberName) {
3762
return members.get(memberName);
3863
}
3964

40-
// TODO: this allows the user to modify members
41-
public LinkedHashMap<String, MLIRType> getMembers() { return members; }
42-
// TODO: it may make sense to compute this once and store it
43-
public String toString() {
44-
StringBuilder sb = new StringBuilder("!hw.struct<");
45-
final int lastIdx = members.size() - 1;
46-
int currIdx = 0;
47-
for (var item : members.entrySet()) {
48-
String key = item.getKey();
49-
MLIRType val = item.getValue();
50-
sb.append(key);
51-
sb.append(": ");
52-
sb.append(val);
53-
if (currIdx != lastIdx) {
54-
sb.append(", ");
55-
}
56-
++currIdx;
57-
}
58-
sb.append(">");
59-
return sb.toString();
65+
public Map<String, MLIRType> getMembers() {
66+
return Collections.unmodifiableMap(members);
6067
}
68+
69+
public String toString() { return mlirTypeString; }
6170
}

0 commit comments

Comments
 (0)