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];