Mercurial > hg > graal-jvmci-8
changeset 21778:037d14459ef9
Provide a method to determine size in bytes of a Stamp.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Mon, 08 Jun 2015 12:14:36 +0200 |
parents | 76c162c69c2f |
children | 20ace3139510 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LoweringProvider.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java |
diffstat | 3 files changed, 26 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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); + } + } }
--- 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); }
--- 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"); + } + } }