Mercurial > hg > truffle
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 { |