Mercurial > hg > truffle
diff graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java @ 16542:45fff0246a43
extract methods in (de)serializer
author | Christian Wirth <christian.wirth@oracle.com> |
---|---|
date | Thu, 17 Jul 2014 11:13:31 +0200 |
parents | 915ebb306fcc |
children | 5b7db8941fd7 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java Thu Jul 17 11:05:11 2014 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/serial/PostOrderSerializer.java Thu Jul 17 11:13:31 2014 +0200 @@ -115,28 +115,7 @@ } else if (fieldClass == boolean.class) { cpi = cp.putInt(unsafe.getBoolean(node, offset) ? 1 : 0); } else { - Object value = unsafe.getObject(node, offset); - if (value == null) { - cpi = VariableLengthIntBuffer.NULL; - } else if (fieldClass == Integer.class) { - cpi = cp.putInt((Integer) value); - } else if (fieldClass == Long.class) { - cpi = cp.putLong((Long) value); - } else if (fieldClass == Float.class) { - cpi = cp.putFloat((Float) value); - } else if (fieldClass == Double.class) { - cpi = cp.putDouble((Double) value); - } else if (fieldClass == Byte.class) { - cpi = cp.putInt((Byte) value); - } else if (fieldClass == Short.class) { - cpi = cp.putInt((Short) value); - } else if (fieldClass == Character.class) { - cpi = cp.putInt((Character) value); - } else if (fieldClass == Boolean.class) { - cpi = cp.putInt((Boolean) value ? 1 : 0); - } else { - cpi = cp.putObject(fieldClass, value); - } + cpi = serializeDataFieldsObject(node, fieldClass, offset); } buffer.put(cpi); @@ -144,6 +123,31 @@ } } + private int serializeDataFieldsObject(Node node, Class<?> fieldClass, long offset) { + Object value = unsafe.getObject(node, offset); + if (value == null) { + return VariableLengthIntBuffer.NULL; + } else if (fieldClass == Integer.class) { + return cp.putInt((Integer) value); + } else if (fieldClass == Long.class) { + return cp.putLong((Long) value); + } else if (fieldClass == Float.class) { + return cp.putFloat((Float) value); + } else if (fieldClass == Double.class) { + return cp.putDouble((Double) value); + } else if (fieldClass == Byte.class) { + return cp.putInt((Byte) value); + } else if (fieldClass == Short.class) { + return cp.putInt((Short) value); + } else if (fieldClass == Character.class) { + return cp.putInt((Character) value); + } else if (fieldClass == Boolean.class) { + return cp.putInt((Boolean) value ? 1 : 0); + } else { + return cp.putObject(fieldClass, value); + } + } + private void serializeChildrenFields(VariableLengthIntBuffer buffer, Node nodeInstance, NodeField[] nodeFields) throws UnsupportedConstantPoolTypeException { for (int i = 0; i < nodeFields.length; i++) { NodeField field = nodeFields[i];