Mercurial > hg > truffle
changeset 14042:2864cb92fa9a
TruffleDSL: retire NodeFactory#createNodeGeneric
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Wed, 26 Feb 2014 15:34:59 +0100 |
parents | 67d2c95bfa43 |
children | 3bd2ad96f162 |
files | graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TestHelper.java graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/NodeFactory.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java |
diffstat | 3 files changed, 12 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- 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 extends ValueNode> E createGenericNode(NodeFactory<E> 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 <E extends ValueNode> TestRootNode<E> createRoot(NodeFactory<E> factory, Object... constants) {
--- 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.
--- 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());