Mercurial > hg > graal-jvmci-8
changeset 5418:8dc11fe22eb1
autoGrow option to NodeBitMaps
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Mon, 21 May 2012 15:44:03 +0200 |
parents | 791eb4f85b29 |
children | 3c16d338888e |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeBitMap.java |
diffstat | 1 files changed, 17 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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<Node>{ - + 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 <T extends Node> void markAll(Collection<T> nodes) { + public <T extends Node> void markAll(Iterable<T> nodes) { for (Node node : nodes) { mark(node); }