changeset 8397:0f86d2449070

simplify VirtualInstanceNode
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 20 Mar 2013 11:34:31 +0100
parents c4028b279ebd
children 2d1b0b20f89d
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java
diffstat 1 files changed, 12 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Wed Mar 20 11:33:00 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Wed Mar 20 11:34:31 2013 +0100
@@ -22,8 +22,6 @@
  */
 package com.oracle.graal.nodes.virtual;
 
-import java.util.*;
-
 import com.oracle.graal.api.meta.*;
 import com.oracle.graal.graph.*;
 
@@ -32,21 +30,10 @@
 
     private final ResolvedJavaType type;
     private final ResolvedJavaField[] fields;
-    private final HashMap<ResolvedJavaField, Integer> fieldMap;
 
     public VirtualInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields) {
         this.type = type;
         this.fields = fields;
-        fieldMap = new HashMap<>();
-        for (int i = 0; i < fields.length; i++) {
-            fieldMap.put(fields[i], i);
-        }
-    }
-
-    private VirtualInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields, HashMap<ResolvedJavaField, Integer> fieldMap) {
-        this.type = type;
-        this.fields = fields;
-        this.fieldMap = fieldMap;
     }
 
     @Override
@@ -63,6 +50,10 @@
         return fields[index];
     }
 
+    public ResolvedJavaField[] getFields() {
+        return fields;
+    }
+
     @Override
     public String toString(Verbosity verbosity) {
         if (verbosity == Verbosity.Name) {
@@ -78,8 +69,13 @@
     }
 
     public int fieldIndex(ResolvedJavaField field) {
-        Integer index = fieldMap.get(field);
-        return index == null ? -1 : index;
+        // on average fields.length == ~6, so a linear search is fast enough
+        for (int i = 0; i < fields.length; i++) {
+            if (fields[i] == field) {
+                return i;
+            }
+        }
+        return -1;
     }
 
     @Override
@@ -95,6 +91,6 @@
 
     @Override
     public VirtualInstanceNode duplicate() {
-        return new VirtualInstanceNode(type, fields, fieldMap);
+        return new VirtualInstanceNode(type, fields);
     }
 }