# HG changeset patch # User Andreas Woess # Date 1393425299 -3600 # Node ID 2864cb92fa9a8d94ee69660c6422b9e71e6689af # Parent 67d2c95bfa434a8f727ff8481a009edd6b567960 TruffleDSL: retire NodeFactory#createNodeGeneric diff -r 67d2c95bfa43 -r 2864cb92fa9a graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java --- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java Wed Feb 26 13:48:47 2014 +0100 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java Wed Feb 26 15:34:59 2014 +0100 @@ -24,6 +24,7 @@ import static org.junit.Assert.*; +import java.lang.reflect.*; import java.util.*; import com.oracle.truffle.api.*; @@ -61,7 +62,17 @@ } static E createGenericNode(NodeFactory factory, Object... constants) { - return factory.createNodeGeneric(createNode(factory, constants)); + Method createGenericMethod; + try { + createGenericMethod = factory.getClass().getMethod("createGeneric", factory.getNodeClass()); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + try { + return factory.getNodeClass().cast(createGenericMethod.invoke(null, createNode(factory, constants))); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } } static TestRootNode createRoot(NodeFactory factory, Object... constants) { diff -r 67d2c95bfa43 -r 2864cb92fa9a graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/NodeFactory.java --- a/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/NodeFactory.java Wed Feb 26 13:48:47 2014 +0100 +++ b/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/NodeFactory.java Wed Feb 26 15:34:59 2014 +0100 @@ -46,15 +46,6 @@ T createNode(Object... arguments); /** - * Instantiates a new generic variant of the node. This is an optional method and throws an - * {@link UnsupportedOperationException} if not supported. - * - * @param thisNode the current node - * @return the specialized node - */ - T createNodeGeneric(T thisNode); - - /** * Returns the node class that will get created by {@link #createNode(Object...)}. The node * class does not match exactly to the instantiated object but they are guaranteed to be * assignable. diff -r 67d2c95bfa43 -r 2864cb92fa9a graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Wed Feb 26 13:48:47 2014 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Wed Feb 26 15:34:59 2014 +0100 @@ -539,7 +539,6 @@ TypeMirror nodeFactory = Utils.getDeclaredType(Utils.fromTypeMirror(getContext().getType(NodeFactory.class)), node.getNodeType()); clazz.getImplements().add(nodeFactory); clazz.add(createCreateNodeMethod(node)); - clazz.add(createCreateNodeGenericMethod(node)); clazz.add(createGetNodeClassMethod(node)); clazz.add(createGetNodeSignaturesMethod()); clazz.add(createGetChildrenSignatureMethod(node)); @@ -709,22 +708,6 @@ return method; } - private CodeExecutableElement createCreateNodeGenericMethod(NodeData node) { - CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), node.getNodeType(), "createNodeGeneric"); - CodeVariableElement nodeParam = new CodeVariableElement(node.getNodeType(), THIS_NODE_LOCAL_VAR_NAME); - method.addParameter(nodeParam); - - CodeTreeBuilder builder = method.createBuilder(); - if (!node.needsRewrites(getContext())) { - builder.startThrow().startNew(getContext().getType(UnsupportedOperationException.class)).doubleQuote("No specialized version.").end().end(); - } else { - builder.startReturn().startCall("createGeneric"); - builder.string(THIS_NODE_LOCAL_VAR_NAME); - builder.end().end(); - } - return method; - } - private ExecutableElement createGetInstanceMethod(NodeData node, Modifier visibility) { TypeElement nodeFactoryType = Utils.fromTypeMirror(getContext().getType(NodeFactory.class)); TypeMirror returnType = Utils.getDeclaredType(nodeFactoryType, node.getNodeType());