# HG changeset patch # User Roland Schatz # Date 1433758476 -7200 # Node ID 037d14459ef9e0dd3181b67cc8f6449d286ca762 # Parent 76c162c69c2ff5e225f0a103b319089663090521 Provide a method to determine size in bytes of a Stamp. diff -r 76c162c69c2f -r 037d14459ef9 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Mon Jun 08 12:09:37 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Mon Jun 08 12:14:36 2015 +0200 @@ -539,4 +539,13 @@ protected LocationIdentity initLocationIdentity() { return INIT_LOCATION; } + + @Override + public int getSizeInBytes(Stamp stamp) { + if (stamp instanceof NarrowOopStamp || (stamp instanceof KlassPointerStamp && ((KlassPointerStamp) stamp).isCompressed())) { + return Kind.Int.getByteCount(); + } else { + return super.getSizeInBytes(stamp); + } + } } diff -r 76c162c69c2f -r 037d14459ef9 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringProvider.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringProvider.java Mon Jun 08 12:09:37 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringProvider.java Mon Jun 08 12:14:36 2015 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.nodes.spi; +import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -43,4 +44,9 @@ * @return a node that gives the index of the element */ ValueNode reconstructArrayIndex(Kind elementKind, LocationNode location); + + /** + * Gets the platform specific size of a type in bytes. + */ + int getSizeInBytes(Stamp stamp); } diff -r 76c162c69c2f -r 037d14459ef9 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Mon Jun 08 12:09:37 2015 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Mon Jun 08 12:14:36 2015 +0200 @@ -791,4 +791,15 @@ } } } + + @Override + public int getSizeInBytes(Stamp stamp) { + if (stamp instanceof PrimitiveStamp) { + return ((PrimitiveStamp) stamp).getBits() / 8; + } else if (stamp instanceof AbstractPointerStamp) { + return target.wordSize; + } else { + throw JVMCIError.shouldNotReachHere("stamp " + stamp + " has no size"); + } + } }