# HG changeset patch # User Roland Schatz # Date 1423479391 -3600 # Node ID c79d0ed463681fda197734ec0e2a1d84e83f5237 # Parent c5b20395a8bf06fa7a977078a3750f16b066e7c1 Remove redundant code for Constant serialization. diff -r c5b20395a8bf -r c79d0ed46368 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/DataSection.java --- 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) { diff -r c5b20395a8bf -r c79d0ed46368 graal/com.oracle.graal.asm.amd64.test/src/com/oracle/graal/asm/amd64/test/SimpleAssemblerTest.java --- 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()); diff -r c5b20395a8bf -r c79d0ed46368 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java --- 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(); }