changeset 7859:3c68170fc9b0

Fixed a visibility bug in NodeFactory generation.
author Christian Humer <christian.humer@gmail.com>
date Mon, 25 Feb 2013 17:00:52 +0100
parents 4958cbdbf360
children dbbdc0a30a16
files graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java
diffstat 2 files changed, 11 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java	Mon Feb 25 14:22:18 2013 +0100
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java	Mon Feb 25 17:00:52 2013 +0100
@@ -511,8 +511,8 @@
 
                 TypeMirror nodeFactory = getContext().getEnvironment().getTypeUtils().getDeclaredType(Utils.fromTypeMirror(getContext().getType(NodeFactory.class)), node.getNodeType());
                 clazz.getImplements().add(nodeFactory);
-                clazz.add(createCreateNodeMethod(node, createVisibility));
-                clazz.add(createCreateNodeSpecializedMethod(node, createVisibility));
+                clazz.add(createCreateNodeMethod(node));
+                clazz.add(createCreateNodeSpecializedMethod(node));
                 clazz.add(createGetNodeClassMethod(node));
                 clazz.add(createGetNodeSignaturesMethod(node));
                 clazz.add(createGetInstanceMethod(node, createVisibility));
@@ -580,16 +580,12 @@
             return method;
         }
 
-        private CodeExecutableElement createCreateNodeMethod(NodeData node, Modifier visibility) {
-            CodeExecutableElement method = new CodeExecutableElement(modifiers(), node.getNodeType(), "createNode");
+        private CodeExecutableElement createCreateNodeMethod(NodeData node) {
+            CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), node.getNodeType(), "createNode");
             CodeVariableElement arguments = new CodeVariableElement(getContext().getType(Object.class), "arguments");
             method.setVarArgs(true);
             method.addParameter(arguments);
 
-            if (visibility != null) {
-                method.getModifiers().add(visibility);
-            }
-
             CodeTreeBuilder builder = method.createBuilder();
             List<ExecutableElement> signatures = findUserConstructors(node);
             boolean ifStarted = false;
@@ -636,16 +632,13 @@
             return method;
         }
 
-        private CodeExecutableElement createCreateNodeSpecializedMethod(NodeData node, Modifier visibility) {
-            CodeExecutableElement method = new CodeExecutableElement(modifiers(), node.getNodeType(), "createNodeSpecialized");
+        private CodeExecutableElement createCreateNodeSpecializedMethod(NodeData node) {
+            CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), node.getNodeType(), "createNodeSpecialized");
             CodeVariableElement nodeParam = new CodeVariableElement(node.getNodeType(), "thisNode");
             CodeVariableElement arguments = new CodeVariableElement(getContext().getType(Class.class), "types");
             method.addParameter(nodeParam);
             method.addParameter(arguments);
             method.setVarArgs(true);
-            if (visibility != null) {
-                method.getModifiers().add(visibility);
-            }
 
             CodeTreeBuilder builder = method.createBuilder();
             if (!node.needsRewrites(getContext())) {
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java	Mon Feb 25 14:22:18 2013 +0100
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java	Mon Feb 25 17:00:52 2013 +0100
@@ -94,6 +94,7 @@
         if (rootNode != null) {
             rootNode.setDeclaredChildren(children);
         }
+
         return rootNode;
     }
 
@@ -118,6 +119,10 @@
             return null; // not a node
         }
 
+        if (type.getModifiers().contains(Modifier.PRIVATE)) {
+            return null; // not visible
+        }
+
         List<Element> elements = new ArrayList<>(context.getEnvironment().getElementUtils().getAllMembers(type));
         List<TypeElement> typeHierarchy = findSuperClasses(new ArrayList<TypeElement>(), type);
         Collections.reverse(typeHierarchy);