comparison truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java @ 22368:0d4b0e4263ee

Convert NodeClass and NodeFieldAccessor to interfaces
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 13 Nov 2015 10:29:52 -0800
parents dc83cc1f94f2
children
comparison
equal deleted inserted replaced
22367:1b48778cee21 22368:0d4b0e4263ee
76 buffer.put(VariableLengthIntBuffer.NULL); 76 buffer.put(VariableLengthIntBuffer.NULL);
77 return; 77 return;
78 } 78 }
79 Class<? extends Node> nodeClass = node.getClass(); 79 Class<? extends Node> nodeClass = node.getClass();
80 80
81 NodeFieldAccessor[] nodeFields = NodeClass.get(nodeClass).getFields(); 81 NodeFieldAccessor[] nodeFields = NodeClass.Lookup.get(nodeClass).getFields();
82 serializeChildFields(buffer, node, nodeFields); 82 serializeChildFields(buffer, node, nodeFields);
83 serializeChildrenFields(buffer, node, nodeFields); 83 serializeChildrenFields(buffer, node, nodeFields);
84 buffer.put(cp.putClass(node.getClass())); 84 buffer.put(cp.putClass(node.getClass()));
85 serializeDataFields(buffer, node, nodeFields); 85 serializeDataFields(buffer, node, nodeFields);
86 } 86 }
87 87
88 private void serializeDataFields(VariableLengthIntBuffer buffer, Node node, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException { 88 private void serializeDataFields(VariableLengthIntBuffer buffer, Node node, NodeFieldAccessor[] nodeFields) throws UnsupportedConstantPoolTypeException {
89 for (int i = 0; i < nodeFields.length; i++) { 89 for (int i = 0; i < nodeFields.length; i++) {
90 NodeFieldAccessor field = nodeFields[i]; 90 NodeFieldAccessor field = nodeFields[i];
91 if (field.getKind() == NodeFieldKind.DATA) { 91 if (field.getKind() == NodeFieldKind.DATA) {
92 Class<?> fieldClass = field.getType(); 92 Class<?> fieldClass = field.getFieldType();
93 long offset = getFieldOffset(field); 93 long offset = getFieldOffset(field);
94 int cpi; 94 int cpi;
95 95
96 if (field.getType().isAssignableFrom(SourceSection.class)) { 96 if (field.getFieldType().isAssignableFrom(SourceSection.class)) {
97 continue; 97 continue;
98 } 98 }
99 99
100 if (fieldClass == int.class) { 100 if (fieldClass == int.class) {
101 cpi = cp.putInt(unsafe.getInt(node, offset)); 101 cpi = cp.putInt(unsafe.getInt(node, offset));
154 Object childArrayObject = unsafe.getObject(nodeInstance, getFieldOffset(field)); 154 Object childArrayObject = unsafe.getObject(nodeInstance, getFieldOffset(field));
155 if (childArrayObject != null && !(childArrayObject instanceof Node[])) { 155 if (childArrayObject != null && !(childArrayObject instanceof Node[])) {
156 throw new AssertionError("Node children must be instanceof Node[]"); 156 throw new AssertionError("Node children must be instanceof Node[]");
157 } 157 }
158 158
159 buffer.put(cp.putClass(field.getType())); 159 buffer.put(cp.putClass(field.getFieldType()));
160 160
161 Node[] childArray = (Node[]) childArrayObject; 161 Node[] childArray = (Node[]) childArrayObject;
162 if (childArray == null) { 162 if (childArray == null) {
163 buffer.put(VariableLengthIntBuffer.NULL); 163 buffer.put(VariableLengthIntBuffer.NULL);
164 } else { 164 } else {