Mercurial > hg > truffle
comparison truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeClass.java @ 22341:4df3d8fd6cfd
NodeClass cleanup
author | Andreas Woess <andreas.woess@oracle.com> |
---|---|
date | Wed, 04 Nov 2015 10:47:09 +0100 |
parents | dc83cc1f94f2 |
children | 0d4b0e4263ee |
comparison
equal
deleted
inserted
replaced
22340:bb3c03f2442d | 22341:4df3d8fd6cfd |
---|---|
51 } | 51 } |
52 }); | 52 }); |
53 } | 53 } |
54 }; | 54 }; |
55 | 55 |
56 private static final NodeFieldAccessor[] EMPTY_NODE_FIELD_ARRAY = new NodeFieldAccessor[0]; | |
57 | |
56 // The comprehensive list of all fields. | 58 // The comprehensive list of all fields. |
57 private final NodeFieldAccessor[] fields; | 59 private final NodeFieldAccessor[] fields; |
58 // Separate arrays for the frequently accessed fields. | 60 // Separate arrays for the frequently accessed fields. |
59 private final NodeFieldAccessor parentField; | 61 private final NodeFieldAccessor parentField; |
60 private final NodeFieldAccessor nodeClassField; | 62 private final NodeFieldAccessor nodeClassField; |
66 | 68 |
67 public static NodeClass get(Class<? extends Node> clazz) { | 69 public static NodeClass get(Class<? extends Node> clazz) { |
68 return nodeClasses.get(clazz); | 70 return nodeClasses.get(clazz); |
69 } | 71 } |
70 | 72 |
71 public static NodeClass get(Node clazz) { | 73 public static NodeClass get(Node node) { |
72 return clazz.getNodeClass(); | 74 return node.getNodeClass(); |
73 } | 75 } |
74 | 76 |
75 public NodeClass(Class<? extends Node> clazz) { | 77 NodeClass(Class<? extends Node> clazz) { |
76 List<NodeFieldAccessor> fieldsList = new ArrayList<>(); | 78 List<NodeFieldAccessor> fieldsList = new ArrayList<>(); |
77 NodeFieldAccessor parentFieldTmp = null; | 79 NodeFieldAccessor parentFieldTmp = null; |
78 NodeFieldAccessor nodeClassFieldTmp = null; | 80 NodeFieldAccessor nodeClassFieldTmp = null; |
79 List<NodeFieldAccessor> childFieldList = new ArrayList<>(); | 81 List<NodeFieldAccessor> childFieldList = new ArrayList<>(); |
80 List<NodeFieldAccessor> childrenFieldList = new ArrayList<>(); | 82 List<NodeFieldAccessor> childrenFieldList = new ArrayList<>(); |
113 | 115 |
114 if (parentFieldTmp == null) { | 116 if (parentFieldTmp == null) { |
115 throw new AssertionError("parent field not found"); | 117 throw new AssertionError("parent field not found"); |
116 } | 118 } |
117 | 119 |
118 this.fields = fieldsList.toArray(new NodeFieldAccessor[fieldsList.size()]); | 120 this.fields = fieldsList.toArray(EMPTY_NODE_FIELD_ARRAY); |
119 this.nodeClassField = nodeClassFieldTmp; | 121 this.nodeClassField = nodeClassFieldTmp; |
120 this.parentField = parentFieldTmp; | 122 this.parentField = parentFieldTmp; |
121 this.childFields = childFieldList.toArray(new NodeFieldAccessor[childFieldList.size()]); | 123 this.childFields = childFieldList.toArray(EMPTY_NODE_FIELD_ARRAY); |
122 this.childrenFields = childrenFieldList.toArray(new NodeFieldAccessor[childrenFieldList.size()]); | 124 this.childrenFields = childrenFieldList.toArray(EMPTY_NODE_FIELD_ARRAY); |
123 this.cloneableFields = cloneableFieldList.toArray(new NodeFieldAccessor[cloneableFieldList.size()]); | 125 this.cloneableFields = cloneableFieldList.toArray(EMPTY_NODE_FIELD_ARRAY); |
124 this.clazz = clazz; | 126 this.clazz = clazz; |
125 } | 127 } |
126 | 128 |
127 public NodeFieldAccessor getNodeClassField() { | 129 public NodeFieldAccessor getNodeClassField() { |
128 return nodeClassField; | 130 return nodeClassField; |