# HG changeset patch # User Lukas Stadler # Date 1363775671 -3600 # Node ID 0f86d2449070d65cb3516e88fc7fed1c222e3478 # Parent c4028b279ebd337904e3081c6524eb1abee1aece simplify VirtualInstanceNode diff -r c4028b279ebd -r 0f86d2449070 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java --- 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 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 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); } }