# HG changeset patch # User Lukas Stadler # Date 1401104231 -7200 # Node ID 54151c986dbb1eb538acc9906e6ff4a28032e898 # Parent e065b97462466a83b11e22b656bcd5d0fcc7e839 explicit getAndGrow and setAndGrow functionality on NodeMap diff -r e065b9746246 -r 54151c986dbb graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeMap.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeMap.java Mon May 26 13:02:29 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeMap.java Mon May 26 13:37:11 2014 +0200 @@ -46,6 +46,19 @@ return (T) values[getNodeId(node)]; } + @SuppressWarnings("unchecked") + public T getAndGrow(Node node) { + checkAndGrow(node); + return (T) values[getNodeId(node)]; + } + + private void checkAndGrow(Node node) { + if (isNew(node)) { + this.values = Arrays.copyOf(values, graph.nodeIdCount()); + } + assert check(node); + } + public boolean isEmpty() { return !entries().iterator().hasNext(); } @@ -78,6 +91,11 @@ values[getNodeId(node)] = value; } + public void setAndGrow(Node node, T value) { + checkAndGrow(node); + values[getNodeId(node)] = value; + } + public int size() { return values.length; }