changeset 7803:89d316f8f33e

Merge
author Christian Humer <christian.humer@gmail.com>
date Mon, 18 Feb 2013 18:58:39 +0100
parents c0c5286d88df (diff) 60c010b8e1c1 (current diff)
children 447f9ba1962b 4969921f57b7
files
diffstat 3 files changed, 26 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeElement.java	Mon Feb 18 17:20:57 2013 +0100
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeElement.java	Mon Feb 18 18:58:39 2013 +0100
@@ -103,6 +103,18 @@
         return annotations;
     }
 
+    /* Support JDK8 langtools. */
+    @SuppressWarnings("unused")
+    public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) {
+        throw new UnsupportedOperationException();
+    }
+
+    /* Support for some JDK8 builds. (remove after jdk8 is released) */
+    @SuppressWarnings("unused")
+    public <A extends Annotation> A[] getAnnotations(Class<A> annotationType) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public <A extends Annotation> A getAnnotation(Class<A> annotationType) {
         throw new UnsupportedOperationException();
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeExecutableElement.java	Mon Feb 18 17:20:57 2013 +0100
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeExecutableElement.java	Mon Feb 18 18:58:39 2013 +0100
@@ -59,6 +59,7 @@
         }
     }
 
+    /* Support JDK8 langtools. */
     public boolean isDefault() {
         return false;
     }
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java	Mon Feb 18 17:20:57 2013 +0100
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java	Mon Feb 18 18:58:39 2013 +0100
@@ -186,18 +186,20 @@
         TypeSystemData typeSystem = specialization.getNode().getTypeSystem();
         // Implict guards based on method signature
         String andOperator = prefix;
-        for (NodeFieldData field : specialization.getNode().getFields()) {
-            ActualParameter param = specialization.findParameter(field.getName());
-            TypeData type = param.getActualTypeData(typeSystem);
-            if (type == null || type.isGeneric()) {
-                continue;
+        if (needsCast) {
+            for (NodeFieldData field : specialization.getNode().getFields()) {
+                ActualParameter param = specialization.findParameter(field.getName());
+                TypeData type = param.getActualTypeData(typeSystem);
+                if (type == null || type.isGeneric()) {
+                    continue;
+                }
+
+                body.string(andOperator);
+                startCallTypeSystemMethod(context, body, specialization.getNode(), TypeSystemCodeGenerator.isTypeMethodName(type));
+                body.string(valueName(specialization, param));
+                body.end().end(); // call
+                andOperator = " && ";
             }
-
-            body.string(andOperator);
-            startCallTypeSystemMethod(context, body, specialization.getNode(), TypeSystemCodeGenerator.isTypeMethodName(type));
-            body.string(valueName(specialization, param));
-            body.end().end(); // call
-            andOperator = " && ";
         }
 
         if (specialization.getGuards().length > 0) {