changeset 15900:54151c986dbb

explicit getAndGrow and setAndGrow functionality on NodeMap
author Lukas Stadler <lukas.stadler@oracle.com>
date Mon, 26 May 2014 13:37:11 +0200
parents e065b9746246
children dd863084c7ad
files graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeMap.java
diffstat 1 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
     }