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 }