# HG changeset patch # User Roland Schatz # Date 1404305790 -7200 # Node ID 7c47610015a99973a4508c2b7838aae3bb0320ac # Parent 00460aab5c96a4ff62af387d1e9ba3d38d5329f3 Support direct memory compare of uncompressed metadata references if they fit in 32 bit. diff -r 00460aab5c96 -r 7c47610015a9 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotCompare.java --- 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 {