# HG changeset patch # User Christian Haeubl # Date 1354009752 -3600 # Node ID 1361501d6bd50621809b139cd65b061ff8013431 # Parent ea39031737cfe535a673935e60ede9136dba0f90 added some more assertions to ensure that metadata constant are not emitted inline diff -r ea39031737cf -r 1361501d6bd5 graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Tue Nov 27 10:41:42 2012 +0100 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Tue Nov 27 10:49:12 2012 +0100 @@ -118,7 +118,7 @@ public boolean canStoreConstant(Constant c) { // there is no immediate move of 64-bit constants on Intel switch (c.getKind()) { - case Long: return Util.isInt(c.asLong()); + case Long: return Util.isInt(c.asLong()) && !runtime.needsDataPatch(c); case Double: return false; case Object: return c.isNull(); default: return true; @@ -147,6 +147,7 @@ } else if (asConstant(base).getKind() != Kind.Object) { long newDisplacement = displacement + asConstant(base).asLong(); if (NumUtil.isInt(newDisplacement)) { + assert !runtime.needsDataPatch(asConstant(base)); displacement = (int) newDisplacement; base = Value.ILLEGAL; } else { @@ -683,6 +684,7 @@ int displacement = node.displacement(); Value index = operand(node.offset()); if (isConstant(index) && NumUtil.isInt(asConstant(index).asLong() + displacement)) { + assert !runtime.needsDataPatch(asConstant(index)); displacement += (int) asConstant(index).asLong(); address = new Address(kind, load(operand(node.object())), displacement); } else { diff -r ea39031737cf -r 1361501d6bd5 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java Tue Nov 27 10:41:42 2012 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java Tue Nov 27 10:49:12 2012 +0100 @@ -125,6 +125,7 @@ Address address; Value index = operand(x.offset()); if (ValueUtil.isConstant(index) && NumUtil.isInt(ValueUtil.asConstant(index).asLong() + disp)) { + assert !runtime.needsDataPatch(asConstant(index)); disp += (int) ValueUtil.asConstant(index).asLong(); address = new Address(kind, load(operand(x.object())), disp); } else {