Mercurial > hg > truffle
changeset 17187:bd760d193008
updated CHANGELOG.md
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 23 Sep 2014 13:19:30 +0200 |
parents | ca13853abf0d |
children | 55a924683e72 |
files | CHANGELOG.md graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java |
diffstat | 4 files changed, 2 insertions(+), 265 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGELOG.md Tue Sep 23 13:18:14 2014 +0200 +++ b/CHANGELOG.md Tue Sep 23 13:19:30 2014 +0200 @@ -2,6 +2,7 @@ ## `tip` ### Graal +* Changed name suite specification from `mx/projects.py` to `mx/suite.py`. * ... ### Truffle
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Tue Sep 23 13:18:14 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Tue Sep 23 13:19:30 2014 +0200 @@ -1116,25 +1116,6 @@ } /** - * Gets an input or successor list at a given position. - * - * @param position - */ - public NodeList<? extends Node> getNodeListAt(Position position) { - throw new NoSuchElementException(); - } - - /** - * Sets an input or successor list at a given position. - * - * @param position - * @param list - */ - public void setNodeListAt(Position position, NodeList<? extends Node> list) { - throw new NoSuchElementException(); - } - - /** * Updates an input or successor of this node at a given position. The existing, non-null input * or successor at {@code position} is notified of the change via * {@link #updateUsages(Node, Node)} or {@link #updatePredecessor(Node, Node)}.
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Tue Sep 23 13:18:14 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Tue Sep 23 13:19:30 2014 +0200 @@ -372,7 +372,7 @@ * * <pre> * if (node.getNodeClass().is(BeginNode.class)) { ... } - * + * * // Due to generated Node classes, the test below * // is *not* the same as the test above: * if (node.getClass() == BeginNode.class) { ... } @@ -1021,9 +1021,6 @@ } public NodeList<?> getNodeList(Node node, Position pos) { - if (Node.USE_GENERATED_NODES) { - return node.getNodeListAt(pos); - } long offset = pos.isInput() ? inputOffsets[pos.getIndex()] : successorOffsets[pos.getIndex()]; assert pos.getSubIndex() == Node.NODE_LIST; return getNodeList(node, offset);
--- a/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java Tue Sep 23 13:18:14 2014 +0200 +++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java Tue Sep 23 13:19:30 2014 +0200 @@ -540,248 +540,6 @@ return cls; } - private void createGetFieldMethod(CodeTypeElement cls, List<VariableElement> fields, TypeMirror returnType, String name) { - if (!fields.isEmpty()) { - CodeExecutableElement method = new CodeExecutableElement(modifiers(PROTECTED, FINAL), returnType, name); - addParameter(method, getType(int.class), "at"); - CodeTreeBuilder b = method.createBuilder(); - createGetFieldCases(b, fields, returnType, null); - cls.add(method); - } - } - - private void createGetFieldCases(CodeTreeBuilder b, List<VariableElement> fields, TypeMirror returnType, String returnExpressionSuffix) { - for (int i = 0; i < fields.size(); i++) { - VariableElement field = fields.get(i); - b.startIf().string("at == " + i).end().startBlock(); - b.startReturn(); - if (returnExpressionSuffix == null && !isAssignableWithErasure(field, types.asElement(returnType))) { - b.cast(((DeclaredType) returnType).asElement().getSimpleName().toString()); - } - b.string(genClassName + ".this." + field.getSimpleName()); - if (returnExpressionSuffix != null) { - b.string(returnExpressionSuffix); - } - b.end(); - b.end(); - } - b.startThrow().startNew(getType(NoSuchElementException.class)).end().end(); - } - - private void createSetNodeListAtCases(CodeTreeBuilder b, List<VariableElement> fields, TypeMirror returnType, String returnExpressionSuffix) { - for (int i = 0; i < fields.size(); i++) { - VariableElement field = fields.get(i); - b.startIf().string("at == " + i).end().startBlock(); - if (returnExpressionSuffix == null && !isAssignableWithErasure(field, types.asElement(returnType))) { - b.cast(((DeclaredType) returnType).asElement().getSimpleName().toString()); - } - b.startStatement(); - b.string(genClassName + ".this." + field.getSimpleName(), " = "); - b.cast(field.asType(), CodeTreeBuilder.singleString("list")); - b.end(); - b.end(); - } - } - - private void createUpdateOrInitializeFieldCases(CodeTreeBuilder b, List<VariableElement> fields, boolean isInitialization, boolean isList) { - boolean elseIf = false; - for (int i = 0; i < fields.size(); i++) { - VariableElement field = fields.get(i); - String fieldRef = genClassName + ".this." + field.getSimpleName(); - if (!isList) { - elseIf = b.startIf(elseIf); - b.string("at == " + i).end().startBlock(); - if (!isInitialization) { - b.startStatement().string("Node old = "); - if (!isAssignableWithErasure(field, Node)) { - b.cast(Node.asType(), CodeTreeBuilder.singleString(fieldRef)); - } else { - b.string(fieldRef); - } - b.end(); - } - b.startStatement().string(fieldRef, " = "); - if (!isAssignableWithErasure(Node, field)) { - b.cast(field.asType(), CodeTreeBuilder.singleString("newValue")); - } else { - b.string("newValue"); - } - b.end(); - if (!isInitialization) { - b.startIf().string("pos.isInput()").end().startBlock(); - b.startStatement().string("updateUsages(old, newValue)").end(); - b.end(); - b.startElseBlock(); - b.startStatement().string("updatePredecessor(old, newValue)").end(); - b.end(); - } - b.end(); - } else { - elseIf = b.startIf(elseIf); - b.string("at == " + i).end().startBlock(); - DeclaredType nodeListOfNode = types.getDeclaredType(NodeList, types.getWildcardType(Node.asType(), null)); - b.declaration(nodeListOfNode, "list", fieldRef); - if (!isInitialization) { - // if (pos.getSubIndex() < list.size()) { - b.startIf().string("pos.getSubIndex() < list.size()").end().startBlock(); - b.startStatement().string("list.set(pos.getSubIndex(), newValue)").end(); - b.end(); - b.startElseBlock(); - } - - b.startWhile().string("list.size() <= pos.getSubIndex()").end().startBlock(); - b.startStatement().string("list.add(null)").end(); - b.end(); - - if (isInitialization) { - b.startStatement().string("list.initialize(pos.getSubIndex(), newValue)").end(); - } else { - b.startStatement().string("list.add(newValue)").end(); - b.end(); - } - - b.end(); - } - } - b.startElseBlock(); - b.startThrow().startNew(getType(NoSuchElementException.class)).end().end(); - b.end(); - } - - private void createPositionAccessibleFieldOrderClass(PackageElement packageElement) { - CodeTypeElement cls = new CodeTypeElement(modifiers(PUBLIC, STATIC), ElementKind.CLASS, packageElement, "FieldOrder"); - cls.getImplements().add(getType("com.oracle.graal.graph.NodeClass.PositionFieldOrder")); - - CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), getType(String[].class), "getOrderedFieldNames"); - - addParameter(method, getType(boolean.class), "input", false); - - CodeTreeBuilder b = method.createBuilder(); - b.startIf().string("input").end().startBlock(); - String initializer = concat(inputFields, inputListFields).stream().map(v -> v.getSimpleName().toString()).collect(Collectors.joining("\", \"", "\"", "\"")); - b.startStatement().string("return new String[] {", initializer, "}").end(); - b.end(); - b.startElseBlock(); - initializer = concat(successorFields, successorListFields).stream().map(v -> v.getSimpleName().toString()).collect(Collectors.joining("\", \"", "\"", "\"")); - b.startStatement().string("return new String[] {", initializer, "}").end(); - b.end(); - cls.add(method); - - genClass.add(cls); - - } - - private void createAllIteratorClass(NodeRefsType nodeRefsType, TypeMirror inputsIteratorType, PackageElement packageElement, List<VariableElement> nodeFields, List<VariableElement> nodeListFields) { - - String name = "All" + nodeRefsType + "Iterator"; - CodeTypeElement cls = new CodeTypeElement(modifiers(PRIVATE, FINAL), ElementKind.CLASS, packageElement, name); - cls.setSuperClass(inputsIteratorType); - - // forward() method - CodeExecutableElement method = new CodeExecutableElement(modifiers(PROTECTED), getType(void.class), "forward"); - CodeTreeBuilder b = method.createBuilder(); - int nodeFieldsSize = nodeFields.size(); - int nodeListFieldsSize = nodeListFields.size(); - String cond = "index < " + nodeFieldsSize; - if (GENERATE_ASSERTIONS) { - b.startAssert().string("needsForward").end(); - } - b.startStatement().string("needsForward = false").end(); - b.startIf().string(cond).end().startBlock(); - b.startStatement().string("index++").end(); - b.startIf().string(cond).end().startBlock(); - b.startStatement().string("nextElement = getNode(index)").end(); - b.startStatement().string("return").end(); - b.end(); - b.end(); - b.startElseBlock(); - b.startStatement().string("subIndex++").end(); - b.end(); - int count = nodeFieldsSize + nodeListFieldsSize; - b.startWhile().string("index < " + count).end().startBlock(); - b.startIf().string("subIndex == 0").end().startBlock(); - b.startStatement().string("list = getNodeList(index - " + nodeFieldsSize + ")").end(); - b.end(); - b.startIf().string("subIndex < list.size()").end().startBlock(); - b.startStatement().string("nextElement = list.get(subIndex)").end(); - b.startStatement().string("return").end(); - b.end(); - b.startStatement().string("subIndex = 0").end(); - b.startStatement().string("index++").end(); - b.end(); - - cls.add(method); - - genClass.add(cls); - } - - private void createWithModCountIteratorClass(NodeRefsType nodeRefsType, TypeMirror superType, PackageElement packageElement) { - - String name = nodeRefsType + "WithModCountIterator"; - CodeTypeElement cls = new CodeTypeElement(modifiers(PRIVATE, FINAL), ElementKind.CLASS, packageElement, name); - cls.setSuperClass(superType); - - // modCount field - cls.add(new CodeVariableElement(modifiers(PRIVATE, FINAL), getType(int.class), "modCount")); - - // Constructor - CodeExecutableElement ctor = new CodeExecutableElement(Collections.emptySet(), null, name); - CodeTreeBuilder b = ctor.createBuilder(); - b.startAssert().staticReference(getType("com.oracle.graal.graph.Graph"), "MODIFICATION_COUNTS_ENABLED").end(); - b.startStatement().string("this.modCount = modCount()").end(); - cls.add(ctor); - - // hasNext, next and nextPosition methods - overrideModWithCounterMethod(cls, "hasNext", getType(boolean.class)); - overrideModWithCounterMethod(cls, "next", Node.asType()); - overrideModWithCounterMethod(cls, "nextPosition", Position.asType()); - - genClass.add(cls); - } - - private static void overrideModWithCounterMethod(CodeTypeElement cls, String name, TypeMirror returnType) { - CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), returnType, name); - CodeTreeBuilder b = method.createBuilder(); - b.startTryBlock(); - b.startStatement().string("return super." + name + "()").end(); - b.end().startFinallyBlock(); - b.startAssert().string("modCount == modCount() : \"must not be modified\"").end(); - b.end(); - cls.add(method); - } - - private void createIterableClass(NodeRefsType nodeRefsType, PackageElement packageElement) { - - String name = nodeRefsType + "Iterable"; - CodeTypeElement cls = new CodeTypeElement(modifiers(PRIVATE), ElementKind.CLASS, packageElement, name); - cls.getImplements().add(getType("com.oracle.graal.graph.NodeClassIterable")); - - // iterator() method - CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC, FINAL), getType("com.oracle.graal.graph.NodeRefIterator"), "iterator"); - CodeTreeBuilder b = method.createBuilder(); - b.startIf().staticReference(getType("com.oracle.graal.graph.Graph"), "MODIFICATION_COUNTS_ENABLED").end().startBlock(); - b.startStatement().string("return new " + nodeRefsType + "WithModCountIterator()").end(); - b.end(); - b.startElseBlock(); - b.startStatement().string("return new " + nodeRefsType + "Iterator()").end(); - b.end(); - cls.add(method); - - // withNullIterator() method - method = new CodeExecutableElement(modifiers(PUBLIC, FINAL), getType("com.oracle.graal.graph.NodePosIterator"), "withNullIterator"); - b = method.createBuilder(); - b.startStatement().string("return new All" + nodeRefsType + "Iterator()").end(); - cls.add(method); - - // contains(Node) method - method = new CodeExecutableElement(modifiers(PUBLIC, FINAL), getType(boolean.class), "contains"); - addParameter(method, Node.asType(), "n"); - b = method.createBuilder(); - b.startStatement().string("return " + nodeRefsType.name().toLowerCase() + "Contains(n)").end(); - cls.add(method); - genClass.add(cls); - } - private void createContainsMethod(NodeRefsType nodeRefsType, List<VariableElement> nodeFields, List<VariableElement> nodeListFields) { CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC, FINAL), getType(boolean.class), nodeRefsType.name().toLowerCase() + "Contains"); addParameter(method, Node.asType(), "n");