Mercurial > hg > graal-jvmci-8
changeset 16353:7c47610015a9
Support direct memory compare of uncompressed metadata references if they fit in 32 bit.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Wed, 02 Jul 2014 14:56:30 +0200 |
parents | 00460aab5c96 |
children | b6e70c59b32d |
files | graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCompare.java |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCompare.java Tue Jul 01 19:06:06 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCompare.java Wed Jul 02 14:56:30 2014 +0200 @@ -26,6 +26,7 @@ import static com.oracle.graal.lir.LIRInstruction.OperandFlag.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.asm.*; import com.oracle.graal.asm.amd64.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.hotspot.data.*; @@ -109,8 +110,11 @@ // compressed metaspace pointer crb.recordInlineDataInCode(new MetaspaceData(0, y.asInt(), HotSpotMetaspaceConstant.getMetaspaceObject(y), true)); masm.cmpl(address.toAddress(), y.asInt()); + } else if (y.getKind() == Kind.Long && NumUtil.is32bit(y.asLong())) { + // uncompressed metaspace pointer + crb.recordInlineDataInCode(new MetaspaceData(0, y.asLong(), HotSpotMetaspaceConstant.getMetaspaceObject(y), false)); + masm.cmpq(address.toAddress(), (int) y.asLong()); } else { - // uncompressed metaspace pointer throw GraalInternalError.shouldNotReachHere(); } } else {