# HG changeset patch # User Lukas Stadler # Date 1308659532 -7200 # Node ID f08a810b84498cbc33c9e0500c290c257b3a1d7e # Parent 8c67295934ff6ebbab4c2ac3d5c8492217e62e16 Graph.getNodes() is Iterable, doesn't return null nodes and doesn't throw ConcurrentModificationException diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/debug/IdealGraphPrinter.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/debug/IdealGraphPrinter.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/debug/IdealGraphPrinter.java Tue Jun 21 14:32:12 2011 +0200 @@ -145,11 +145,11 @@ flush(); } - private List printNodes(Collection nodes, boolean shortNames, NodeMap nodeToBlock) { + private List printNodes(Iterable nodes, boolean shortNames, NodeMap nodeToBlock) { ArrayList edges = new ArrayList(); for (Node node : nodes) { - if (node == Node.Null || omittedClasses.contains(node.getClass())) { + if (omittedClasses.contains(node.getClass())) { continue; } @@ -228,9 +228,6 @@ if (nodeToBlock != null) { for (Node n : graph.getNodes()) { - if (n == null) { - continue; - } Block blk = nodeToBlock.get(n); if (blk == block) { nodes.add(n); diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java Tue Jun 21 14:32:12 2011 +0200 @@ -99,6 +99,8 @@ new CanonicalizerPhase().apply(graph); new DeadCodeEliminationPhase().apply(graph); } +// +// new EscapeAnalysisPhase().apply(graph); if (GraalOptions.OptLoops) { new LoopPhase().apply(graph); diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java Tue Jun 21 14:32:12 2011 +0200 @@ -104,7 +104,7 @@ private void disconnectCFGNodes() { for (Node node : graph.getNodes()) { - if (node != Node.Null && !flood.isMarked(node)) { + if (!flood.isMarked(node)) { if (node instanceof EndNode) { EndNode end = (EndNode) node; Merge merge = end.merge(); @@ -131,7 +131,7 @@ private void deleteNodes() { for (Node node : graph.getNodes()) { - if (node != Node.Null && !flood.isMarked(node)) { + if (!flood.isMarked(node)) { node.unsafeDelete(); } } @@ -142,7 +142,7 @@ if (node instanceof Local) { flood.add(node); } - if (node != Node.Null && flood.isMarked(node)) { + if (flood.isMarked(node)) { for (Node input : node.inputs()) { flood.add(input); } @@ -157,7 +157,7 @@ private void disconnectNodes() { for (Node node : graph.getNodes()) { - if (node != Node.Null && !flood.isMarked(node)) { + if (!flood.isMarked(node)) { for (int i = 0; i < node.inputs().size(); i++) { Node input = node.inputs().get(i); if (input != Node.Null && flood.isMarked(input)) { diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DuplicationPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DuplicationPhase.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DuplicationPhase.java Tue Jun 21 14:32:12 2011 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,7 +49,7 @@ // Delete nodes in original graph. for (Node n : graph.getNodes()) { - if (n != null && n != graph.start()) { + if (n != graph.start()) { n.forceDelete(); } } diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Tue Jun 21 14:32:12 2011 +0200 @@ -319,20 +319,18 @@ Unwind unwindNode = null; StartNode startNode = graph.start(); for (Node node : graph.getNodes()) { - if (node != null) { - if (node instanceof StartNode) { - assert startNode == node; - } else if (node instanceof Local) { - replacements.put(node, parameters[((Local) node).index()]); - } else { - nodes.add(node); - if (node instanceof Return) { - returnNode = (Return) node; - } else if (node instanceof Unwind) { - unwindNode = (Unwind) node; - } else if (node instanceof FrameState) { - frameStates.add(node); - } + if (node instanceof StartNode) { + assert startNode == node; + } else if (node instanceof Local) { + replacements.put(node, parameters[((Local) node).index()]); + } else { + nodes.add(node); + if (node instanceof Return) { + returnNode = (Return) node; + } else if (node instanceof Unwind) { + unwindNode = (Unwind) node; + } else if (node instanceof FrameState) { + frameStates.add(node); } } } diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/LoopPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/LoopPhase.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/LoopPhase.java Tue Jun 21 14:32:12 2011 +0200 @@ -35,8 +35,7 @@ @Override protected void run(Graph graph) { - List nodes = new ArrayList(graph.getNodes()); - for (Node n : nodes) { + for (Node n : graph.getNodes()) { if (n instanceof LoopBegin) { doLoop((LoopBegin) n); } diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java Tue Jun 21 14:32:12 2011 +0200 @@ -112,22 +112,20 @@ // Identify blocks. for (Node n : graph.getNodes()) { - if (n != null) { - if (n instanceof EndNode || n instanceof Return || n instanceof Unwind || n instanceof LoopEnd || n instanceof Deoptimize) { - Block block = null; - Node currentNode = n; - while (nodeToBlock.get(currentNode) == null) { - if (block != null && (currentNode instanceof ControlSplit || trueSuccessorCount(currentNode) > 1)) { - // We are at a split node => start a new block. - block = null; - } - block = assignBlockNew(currentNode, block); - if (currentNode.predecessors().size() == 0) { - // Either dead code or at a merge node => stop iteration. - break; - } - currentNode = currentNode.singlePredecessor(); + if (n instanceof EndNode || n instanceof Return || n instanceof Unwind || n instanceof LoopEnd || n instanceof Deoptimize) { + Block block = null; + Node currentNode = n; + while (nodeToBlock.get(currentNode) == null) { + if (block != null && (currentNode instanceof ControlSplit || trueSuccessorCount(currentNode) > 1)) { + // We are at a split node => start a new block. + block = null; } + block = assignBlockNew(currentNode, block); + if (currentNode.predecessors().size() == 0) { + // Either dead code or at a merge node => stop iteration. + break; + } + currentNode = currentNode.singlePredecessor(); } } } diff -r 8c67295934ff -r f08a810b8449 graal/com.oracle.max.graal.graphviz/src/com/oracle/max/graal/graphviz/GraphvizPrinter.java --- a/graal/com.oracle.max.graal.graphviz/src/com/oracle/max/graal/graphviz/GraphvizPrinter.java Tue Jun 21 12:15:38 2011 +0200 +++ b/graal/com.oracle.max.graal.graphviz/src/com/oracle/max/graal/graphviz/GraphvizPrinter.java Tue Jun 21 14:32:12 2011 +0200 @@ -92,9 +92,7 @@ public void print(Graph graph, boolean shortNames) { // graph.getNodes() returns all the graph's nodes, not just "roots" for (Node n : graph.getNodes()) { - if (n != null) { - printNode(n, shortNames); - } + printNode(n, shortNames); } }