Mercurial > hg > graal-compiler
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); } }