changeset 2706:5a784215351a

Removed WasVisited flag
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 18 May 2011 17:35:14 +0200
parents d669ab61c7c7
children 4272b7af2d17
files graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java graal/GraalCompiler/src/com/sun/c1x/ir/BlockBegin.java
diffstat 2 files changed, 13 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java	Wed May 18 17:32:14 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java	Wed May 18 17:35:14 2011 +0200
@@ -237,6 +237,16 @@
         return blocksOnWorklist.contains(block);
     }
 
+    private Set<BlockBegin> blocksVisited = new HashSet<BlockBegin>();
+
+    private void markVisited(BlockBegin block) {
+        blocksVisited.add(block);
+    }
+
+    private boolean isVisited(BlockBegin block) {
+        return blocksVisited.contains(block);
+    }
+
     private void finishStartBlock(BlockBegin startBlock, BlockBegin stdEntry) {
         assert curBlock == startBlock;
         FrameState stateAfter = frameState.create(bci());
@@ -336,7 +346,7 @@
         exceptionHandlers.add(newHandler);
 
         // fill in exception handler subgraph lazily
-        if (!entry.wasVisited()) {
+        if (!isVisited(entry)) {
             addToWorkList(entry);
         } else {
             // This will occur for exception handlers that cover themselves. This code
@@ -1048,8 +1058,8 @@
     private void iterateAllBlocks() {
         BlockBegin b;
         while ((b = removeFromWorkList()) != null) {
-            if (!b.wasVisited()) {
-                b.setWasVisited(true);
+            if (!isVisited(b)) {
+                markVisited(b);
                 // now parse the block
                 curBlock = b;
                 frameState.initializeFrom(b.stateBefore());
--- a/graal/GraalCompiler/src/com/sun/c1x/ir/BlockBegin.java	Wed May 18 17:32:14 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/ir/BlockBegin.java	Wed May 18 17:35:14 2011 +0200
@@ -95,7 +95,6 @@
         StandardEntry,
         ExceptionEntry,
         BackwardBranchTarget,
-        WasVisited,
         ParserLoopHeader,
         LinearScanLoopHeader,
         LinearScanLoopEnd;
@@ -384,12 +383,6 @@
         FrameState existingState = stateBefore();
 
         if (existingState == null) {
-            // this is the first state for the block
-            if (wasVisited()) {
-                // this can happen for complex jsr/ret patterns; just bail out
-                throw new CiBailout("jsr/ret too complex");
-            }
-
             // copy state because it is modified
             FrameState duplicate = newState.duplicate(bci());
             assert duplicate.bci == bci() : "duplicate.bci=" + duplicate.bci + " my bci=" + bci();
@@ -421,10 +414,6 @@
             assert existingState.localsSize() == newState.localsSize();
             assert existingState.stackSize() == newState.stackSize();
 
-            if (wasVisited() && !isParserLoopHeader()) {
-                throw new CiBailout("jsr/ret too complicated");
-            }
-
             existingState.merge(this, newState);
         }
     }
@@ -466,14 +455,6 @@
         setBlockFlag(BlockFlag.ExceptionEntry);
     }
 
-    public boolean wasVisited() {
-        return checkBlockFlag(BlockFlag.WasVisited);
-    }
-
-    public void setWasVisited(boolean value) {
-        setBlockFlag(BlockFlag.WasVisited, value);
-    }
-
     public boolean isParserLoopHeader() {
         return checkBlockFlag(BlockFlag.ParserLoopHeader);
     }
@@ -619,9 +600,6 @@
         if (isParserLoopHeader()) {
             sb.append("LH");
         }
-        if (wasVisited()) {
-            sb.append('V');
-        }
         if (sb.length() != 0) {
             out.print('(').print(sb.toString()).print(')');
         }