changeset 19188:c79d0ed46368

Remove redundant code for Constant serialization.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 09 Feb 2015 11:56:31 +0100
parents c5b20395a8bf
children 7ebed83df427
files graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java
diffstat 3 files changed, 7 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java	Sun Feb 08 20:14:30 2015 -0800
+++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java	Mon Feb 09 11:56:31 2015 +0100
@@ -47,27 +47,8 @@
             return (buffer, patch) -> buffer.put(data);
         }
 
-        static DataBuilder primitive(PrimitiveConstant c) {
-            switch (c.getKind()) {
-                case Boolean:
-                    return (buffer, patch) -> buffer.put(c.asBoolean() ? (byte) 1 : (byte) 0);
-                case Byte:
-                    return (buffer, patch) -> buffer.put((byte) c.asInt());
-                case Char:
-                    return (buffer, patch) -> buffer.putChar((char) c.asInt());
-                case Short:
-                    return (buffer, patch) -> buffer.putShort((short) c.asInt());
-                case Int:
-                    return (buffer, patch) -> buffer.putInt(c.asInt());
-                case Long:
-                    return (buffer, patch) -> buffer.putLong(c.asLong());
-                case Float:
-                    return (buffer, patch) -> buffer.putFloat(c.asFloat());
-                case Double:
-                    return (buffer, patch) -> buffer.putDouble(c.asDouble());
-                default:
-                    throw new IllegalArgumentException();
-            }
+        static DataBuilder serializable(SerializableConstant c) {
+            return (buffer, patch) -> c.serialize(buffer);
         }
 
         static DataBuilder zero(int size) {
--- a/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java	Sun Feb 08 20:14:30 2015 -0800
+++ b/graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java	Mon Feb 09 11:56:31 2015 +0100
@@ -68,7 +68,7 @@
             public byte[] generateCode(CompilationResult compResult, TargetDescription target, RegisterConfig registerConfig, CallingConvention cc) {
                 AMD64MacroAssembler asm = new AMD64MacroAssembler(target, registerConfig);
                 Register ret = registerConfig.getReturnRegister(Kind.Double);
-                Data data = new Data(8, 8, DataBuilder.primitive(JavaConstant.forDouble(84.72)));
+                Data data = new Data(8, 8, DataBuilder.serializable(JavaConstant.forDouble(84.72)));
                 DataSectionReference ref = compResult.getDataSection().insertData(data);
                 compResult.recordDataPatch(asm.position(), ref);
                 asm.movdbl(ret, asm.getPlaceholder());
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java	Sun Feb 08 20:14:30 2015 -0800
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java	Mon Feb 09 11:56:31 2015 +0100
@@ -327,10 +327,10 @@
             boolean compressed = COMPRESSED_NULL.equals(constant);
             size = target.getSizeInBytes(compressed ? Kind.Int : target.wordKind);
             builder = DataBuilder.zero(size);
-        } else if (constant instanceof PrimitiveConstant) {
-            PrimitiveConstant prim = (PrimitiveConstant) constant;
-            size = target.getSizeInBytes(prim.getKind());
-            builder = DataBuilder.primitive(prim);
+        } else if (constant instanceof SerializableConstant) {
+            SerializableConstant s = (SerializableConstant) constant;
+            size = s.getSerializedSize();
+            builder = DataBuilder.serializable(s);
         } else {
             throw GraalInternalError.shouldNotReachHere();
         }