changeset 22648:63643c4ef733

[SPARC] Remove special null handling in SPARCLIRGenerator.emitConstant
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Thu, 17 Sep 2015 14:10:51 +0200
parents 350e41999d30
children 467f38f99aea
files graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Wed Sep 16 21:56:12 2015 +0200
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Thu Sep 17 14:10:51 2015 +0200
@@ -276,15 +276,6 @@
         append(new LoadDataAddressOp(dst, data));
     }
 
-    @Override
-    public Value emitConstant(LIRKind kind, Constant constant) {
-        if (JavaConstant.isNull(constant)) {
-            return new ConstantValue(kind, kind.getPlatformKind().getDefaultValue());
-        } else {
-            return super.emitConstant(kind, constant);
-        }
-    }
-
     protected SPARCAddressValue asAddressValue(Value address) {
         if (address instanceof SPARCAddressValue) {
             return (SPARCAddressValue) address;
@@ -370,9 +361,18 @@
             default:
                 throw JVMCIError.shouldNotReachHere(actualCmpKind.toString());
         }
+        right = toDefaultConstantOfKind(cmpKind, right);
         append(new SPARCControlFlow.CompareBranchOp(opcode, left, right, actualCondition, trueDestination, falseDestination, actualCmpKind, unorderedIsTrue, trueDestinationProbability));
     }
 
+    private static Value toDefaultConstantOfKind(PlatformKind forKind, Value value) {
+        if (isJavaConstant(value) && asJavaConstant(value).isDefaultForKind()) {
+            return new ConstantValue(LIRKind.value(forKind), forKind.getDefaultValue());
+        } else {
+            return value;
+        }
+    }
+
     @Override
     public void emitOverflowCheckBranch(LabelRef overflow, LabelRef noOverflow, LIRKind cmpLIRKind, double overflowProbability) {
         JavaKind cmpKind = (JavaKind) cmpLIRKind.getPlatformKind();
@@ -463,6 +463,7 @@
             right = loadNonConst(b);
             mirrored = false;
         }
+        right = toDefaultConstantOfKind(cmpKind, right);
         switch ((JavaKind) cmpKind) {
             case Short:
             case Char: