Mercurial > hg > truffle
comparison truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java @ 21985:4858c5e074e9
clean up NodeFieldAccessor (remove #getOffset())
author | Andreas Woess <andreas.woess@oracle.com> |
---|---|
date | Fri, 26 Jun 2015 16:25:41 +0200 |
parents | 9c8c0937da41 |
children | dc83cc1f94f2 |
comparison
equal
deleted
inserted
replaced
21984:de52ea7de779 | 21985:4858c5e074e9 |
---|---|
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 * or visit www.oracle.com if you need additional information or have any | 22 * or visit www.oracle.com if you need additional information or have any |
23 * questions. | 23 * questions. |
24 */ | 24 */ |
25 package com.oracle.truffle.api.nodes.serial; | 25 package com.oracle.truffle.api.nodes.serial; |
26 | |
27 import static com.oracle.truffle.api.nodes.serial.PostOrderDeserializer.*; | |
26 | 28 |
27 import java.lang.reflect.*; | 29 import java.lang.reflect.*; |
28 import java.nio.*; | 30 import java.nio.*; |
29 | 31 |
30 import sun.misc.*; | 32 import sun.misc.*; |
87 private void serializeDataFields(VariableLengthIntBuffer buffer, Node node, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException { | 89 private void serializeDataFields(VariableLengthIntBuffer buffer, Node node, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException { |
88 for (int i = 0; i < nodeFields.length; i++) { | 90 for (int i = 0; i < nodeFields.length; i++) { |
89 NodeFieldAccessor field = nodeFields[i]; | 91 NodeFieldAccessor field = nodeFields[i]; |
90 if (field.getKind() == NodeFieldKind.DATA) { | 92 if (field.getKind() == NodeFieldKind.DATA) { |
91 Class<?> fieldClass = field.getType(); | 93 Class<?> fieldClass = field.getType(); |
92 long offset = field.getOffset(); | 94 long offset = getFieldOffset(field); |
93 int cpi; | 95 int cpi; |
94 | 96 |
95 if (field.getType().isAssignableFrom(SourceSection.class)) { | 97 if (field.getType().isAssignableFrom(SourceSection.class)) { |
96 continue; | 98 continue; |
97 } | 99 } |
148 | 150 |
149 private void serializeChildrenFields(VariableLengthIntBuffer buffer, Node nodeInstance, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException { | 151 private void serializeChildrenFields(VariableLengthIntBuffer buffer, Node nodeInstance, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException { |
150 for (int i = 0; i < nodeFields.length; i++) { | 152 for (int i = 0; i < nodeFields.length; i++) { |
151 NodeFieldAccessor field = nodeFields[i]; | 153 NodeFieldAccessor field = nodeFields[i]; |
152 if (field.getKind() == NodeFieldKind.CHILDREN) { | 154 if (field.getKind() == NodeFieldKind.CHILDREN) { |
153 Object childArrayObject = unsafe.getObject(nodeInstance, field.getOffset()); | 155 Object childArrayObject = unsafe.getObject(nodeInstance, getFieldOffset(field)); |
154 if (childArrayObject != null && !(childArrayObject instanceof Node[])) { | 156 if (childArrayObject != null && !(childArrayObject instanceof Node[])) { |
155 throw new AssertionError("Node children must be instanceof Node[]"); | 157 throw new AssertionError("Node children must be instanceof Node[]"); |
156 } | 158 } |
157 | 159 |
158 buffer.put(cp.putClass(field.getType())); | 160 buffer.put(cp.putClass(field.getType())); |
173 | 175 |
174 private void serializeChildFields(VariableLengthIntBuffer buffer, Node nodeInstance, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException { | 176 private void serializeChildFields(VariableLengthIntBuffer buffer, Node nodeInstance, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException { |
175 for (int i = 0; i < nodeFields.length; i++) { | 177 for (int i = 0; i < nodeFields.length; i++) { |
176 NodeFieldAccessor field = nodeFields[i]; | 178 NodeFieldAccessor field = nodeFields[i]; |
177 if (field.getKind() == NodeFieldKind.CHILD) { | 179 if (field.getKind() == NodeFieldKind.CHILD) { |
178 Object childObject = unsafe.getObject(nodeInstance, field.getOffset()); | 180 Object childObject = unsafe.getObject(nodeInstance, getFieldOffset(field)); |
179 if (childObject != null && !(childObject instanceof Node)) { | 181 if (childObject != null && !(childObject instanceof Node)) { |
180 throw new AssertionError("Node children must be instanceof Node"); | 182 throw new AssertionError("Node children must be instanceof Node"); |
181 } | 183 } |
182 serialize(buffer, (Node) childObject); | 184 serialize(buffer, (Node) childObject); |
183 } | 185 } |