changeset 14115:ed7893cae86f

Check for abstract modifier in NodeIntrinsic verification.
author Roland Schatz <roland.schatz@oracle.com>
date Fri, 07 Mar 2014 19:15:22 +0100
parents 2bb17229c0d7
children be7ebdf41bea
files graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/NodeIntrinsicVerifier.java
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/NodeIntrinsicVerifier.java	Fri Mar 07 13:55:06 2014 +0100
+++ b/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/NodeIntrinsicVerifier.java	Fri Mar 07 19:15:22 2014 +0100
@@ -90,8 +90,12 @@
         }
 
         if (isNodeType(nodeClass)) {
-            TypeMirror[] constructorSignature = constructorSignature(intrinsicMethod);
-            findConstructor(nodeClass, constructorSignature, intrinsicMethod, annotation);
+            if (nodeClass.getModifiers().contains(Modifier.ABSTRACT)) {
+                env.getMessager().printMessage(Kind.ERROR, String.format("Cannot make @NodeIntrinsic for abstract node class %s.", nodeClass.getSimpleName()), element, annotation);
+            } else {
+                TypeMirror[] constructorSignature = constructorSignature(intrinsicMethod);
+                findConstructor(nodeClass, constructorSignature, intrinsicMethod, annotation);
+            }
         } else {
             env.getMessager().printMessage(Kind.ERROR, String.format("The class %s is not a Node subclass.", nodeClass.getSimpleName()), element, annotation);
         }