# HG changeset patch # User Gilles Duboscq # Date 1337607843 -7200 # Node ID 8dc11fe22eb1a7e69832c199cd419beacb2de4e0 # Parent 791eb4f85b29032622a09863400cbb8d0f4f91f2 autoGrow option to NodeBitMaps diff -r 791eb4f85b29 -r 8dc11fe22eb1 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeBitMap.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeBitMap.java Fri May 18 15:49:46 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeBitMap.java Mon May 21 15:44:03 2012 +0200 @@ -22,18 +22,22 @@ */ package com.oracle.graal.graph; -import java.util.Collection; -import java.util.Iterator; +import java.util.*; public final class NodeBitMap implements Iterable{ - + private final boolean autoGrow; private final BitMap bitMap; private final Graph graph; public NodeBitMap(Graph graph) { + this(graph, false); + } + + public NodeBitMap(Graph graph, boolean autoGrow) { this.graph = graph; + this.autoGrow = autoGrow; bitMap = new BitMap(graph.nodeIdCount()); } @@ -63,6 +67,9 @@ } public boolean isMarked(Node node) { + if (autoGrow && isNew(node)) { + return false; + } assert check(node); return bitMap.get(node.id()); } @@ -72,11 +79,17 @@ } public void mark(Node node) { + if (autoGrow && isNew(node)) { + grow(); + } assert check(node); bitMap.set(node.id()); } public void clear(Node node) { + if (autoGrow && isNew(node)) { + return; + } assert check(node); bitMap.clear(node.id()); } @@ -105,7 +118,7 @@ return bitMap.toBinaryString(); } - public void markAll(Collection nodes) { + public void markAll(Iterable nodes) { for (Node node : nodes) { mark(node); }