changeset 18477:7b5106be0f18

Use correct LIRKind in HSAIL metaspace pointer compression/uncompression op.
author Roland Schatz <roland.schatz@oracle.com>
date Thu, 20 Nov 2014 14:00:51 +0100
parents 2e2148013010
children 12dbd9a40718
files graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java	Wed Nov 19 16:52:54 2014 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java	Thu Nov 20 14:00:51 2014 +0100
@@ -265,14 +265,19 @@
 
     @Override
     public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
-        Variable result = newVariable(LIRKind.reference(Kind.Int));
+        Variable result = newVariable(pointer.getLIRKind().changeType(Kind.Int));
         append(new HSAILMove.CompressPointer(result, newVariable(pointer.getLIRKind()), asAllocatable(pointer), encoding.base, encoding.shift, encoding.alignment, nonNull));
         return result;
     }
 
     @Override
     public Value emitUncompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
-        Variable result = newVariable(LIRKind.reference(Kind.Object));
+        Variable result;
+        if (pointer.getLIRKind().isReference(0)) {
+            result = newVariable(LIRKind.reference(Kind.Object));
+        } else {
+            result = newVariable(LIRKind.value(Kind.Long));
+        }
         append(new HSAILMove.UncompressPointer(result, asAllocatable(pointer), encoding.base, encoding.shift, encoding.alignment, nonNull));
         return result;
     }