# HG changeset patch # User Christos Kotselidis # Date 1374594481 -7200 # Node ID 5404cde63c4389daa25857be7962fd365acb435a # Parent cea4beb67bfde815b8bef29f0e31bbb86be73cd4 Remove redundant checks for loading compressed constants diff -r cea4beb67bfd -r 5404cde63c43 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java Mon Jul 22 22:04:17 2013 +0200 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java Tue Jul 23 17:48:01 2013 +0200 @@ -90,11 +90,11 @@ * * @param base the base address from which the value is read * @param displacement the displacement within the object in bytes - * @param compressedPointer whether this is a read of a compressed or an uncompressed pointer + * @param compressible whether this is a read of a compressed or an uncompressed pointer * @return the read value encapsulated in a {@link Constant} object, or {@code null} if the * value cannot be read. */ - Constant readUnsafeConstant(Kind kind, Object base, long displacement, boolean compressedPointer); + Constant readUnsafeConstant(Kind kind, Object base, long displacement, boolean compressible); /** * Determines if a given foreign call is side-effect free. Deoptimization cannot return diff -r cea4beb67bfd -r 5404cde63c43 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Mon Jul 22 22:04:17 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Tue Jul 23 17:48:01 2013 +0200 @@ -200,12 +200,12 @@ if (receiver == null) { assert Modifier.isStatic(flags); if (holder.isInitialized()) { - return graalRuntime().getRuntime().readUnsafeConstant(getKind(), holder.mirror(), offset, graalRuntime().getRuntime().config.useCompressedOops); + return graalRuntime().getRuntime().readUnsafeConstant(getKind(), holder.mirror(), offset, getKind() == Kind.Object); } return null; } else { assert !Modifier.isStatic(flags); - return graalRuntime().getRuntime().readUnsafeConstant(getKind(), receiver.asObject(), offset, graalRuntime().getRuntime().config.useCompressedOops); + return graalRuntime().getRuntime().readUnsafeConstant(getKind(), receiver.asObject(), offset, getKind() == Kind.Object); } } diff -r cea4beb67bfd -r 5404cde63c43 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Mon Jul 22 22:04:17 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Jul 23 17:48:01 2013 +0200 @@ -1115,7 +1115,7 @@ } @Override - public Constant readUnsafeConstant(Kind kind, Object base, long displacement, boolean compressedPointer) { + public Constant readUnsafeConstant(Kind kind, Object base, long displacement, boolean compressible) { switch (kind) { case Boolean: return Constant.forBoolean(base == null ? unsafe.getByte(displacement) != 0 : unsafe.getBoolean(base, displacement)); @@ -1143,7 +1143,7 @@ return Constant.forDouble(base == null ? unsafe.getDouble(displacement) : unsafe.getDouble(base, displacement)); case Object: { Object o = null; - if (compressedPointer || !this.getGraalRuntime().getRuntime().config.useCompressedOops) { + if (compressible) { o = unsafe.getObject(base, displacement); } else { o = this.getGraalRuntime().getCompilerToVM().readUnsafeUncompressedPointer(base, displacement); diff -r cea4beb67bfd -r 5404cde63c43 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Mon Jul 22 22:04:17 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Tue Jul 23 17:48:01 2013 +0200 @@ -70,7 +70,7 @@ return graph().unique(new FloatingReadNode(object(), location(), lastLocationAccess, stamp(), getGuard(), getBarrierType(), isCompressible())); } - public static ValueNode canonicalizeRead(ValueNode read, LocationNode location, ValueNode object, CanonicalizerTool tool, boolean compressedPointer) { + public static ValueNode canonicalizeRead(ValueNode read, LocationNode location, ValueNode object, CanonicalizerTool tool, boolean compressible) { MetaAccessProvider runtime = tool.runtime(); if (read.usages().count() == 0) { // Read without usages can be savely removed. @@ -83,7 +83,7 @@ if (object.kind() == Kind.Object) { Object base = object.asConstant().asObject(); if (base != null) { - Constant constant = tool.runtime().readUnsafeConstant(kind, base, displacement, compressedPointer); + Constant constant = tool.runtime().readUnsafeConstant(kind, base, displacement, compressible); if (constant != null) { return ConstantNode.forConstant(constant, runtime, read.graph()); } @@ -91,7 +91,7 @@ } else if (object.kind() == Kind.Long || object.kind().getStackKind() == Kind.Int) { long base = object.asConstant().asLong(); if (base != 0L) { - Constant constant = tool.runtime().readUnsafeConstant(kind, null, base + displacement, compressedPointer); + Constant constant = tool.runtime().readUnsafeConstant(kind, null, base + displacement, compressible); if (constant != null) { return ConstantNode.forConstant(constant, runtime, read.graph()); }