changeset 7845:0110e781b6fa

Fixed generated generic does not need an else block.
author Christian Humer <christian.humer@gmail.com>
date Tue, 19 Feb 2013 11:31:23 +0100
parents 4cbe062678ba
children 91cc98eae8ee
files graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/TernaryNode.java
diffstat 2 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java	Mon Feb 18 20:35:54 2013 +0100
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java	Tue Feb 19 11:31:23 2013 +0100
@@ -535,14 +535,11 @@
 
             if (next != null) {
                 builder.end();
-                builder.startElseBlock();
 
                 builder.startReturn().startCall(generatedGenericMethodName(next));
                 builder.string(THIS_NODE_LOCAL_VAR_NAME);
                 addValueParameterNames(builder, next, null, true);
                 builder.end().end();
-
-                builder.end();
             }
         }
 
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/TernaryNode.java	Mon Feb 18 20:35:54 2013 +0100
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/TernaryNode.java	Tue Feb 19 11:31:23 2013 +0100
@@ -56,7 +56,14 @@
         return !hasIfPart;
     }
 
+    @GuardCheck
+    public boolean demoIntegerGuard(boolean condition, boolean hasIfPart, int ifPart, boolean hasElsePart, int elsePart) {
+        return true;
+    }
+
     @Specialization
+    @SpecializationGuard(methodName = "demoIntegerGuard")
+    @SpecializationThrows(javaClass = RuntimeException.class, transitionTo = "doBigInteger")
     public int doInteger(boolean condition, boolean hasIfPart, int ifPart, boolean hasElsePart, int elsePart) {
         return hasIfPart ? ifPart : elsePart;
     }