Mercurial > hg > graal-compiler
changeset 7074:1361501d6bd5
added some more assertions to ensure that metadata constant are not emitted inline
author | Christian Haeubl <haeubl@ssw.jku.at> |
---|---|
date | Tue, 27 Nov 2012 10:49:12 +0100 |
parents | ea39031737cf |
children | cd2c08049dd5 |
files | graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java |
diffstat | 2 files changed, 4 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 {
--- 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 {