src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/LIRIntrospection.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/LIRIntrospection.java	Mon Mar 20 17:39:43 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/LIRIntrospection.java	Mon Mar 20 17:39:43 2017

*** 30,48 **** --- 30,48 ---- import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.graalvm.compiler.core.common.FieldIntrospection; import org.graalvm.compiler.core.common.Fields; import org.graalvm.compiler.core.common.FieldsScanner; import org.graalvm.compiler.lir.LIRInstruction.OperandFlag; import org.graalvm.compiler.lir.LIRInstruction.OperandMode; + import org.graalvm.util.Equivalence; + import org.graalvm.util.EconomicMap; + import org.graalvm.util.MapCursor; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.meta.Value;
*** 149,173 **** --- 149,174 ---- public final ArrayList<ValueFieldInfo> values = new ArrayList<>(); } protected abstract static class LIRFieldsScanner extends FieldsScanner { ! public final EconomicMap<Class<? extends Annotation>, OperandModeAnnotation> valueAnnotations; public final ArrayList<FieldsScanner.FieldInfo> states = new ArrayList<>(); public LIRFieldsScanner(FieldsScanner.CalcOffset calc) { super(calc); ! valueAnnotations = new HashMap<>(); ! valueAnnotations = EconomicMap.create(Equivalence.DEFAULT); } protected OperandModeAnnotation getOperandModeAnnotation(Field field) { OperandModeAnnotation result = null; for (Entry<Class<? extends Annotation>, OperandModeAnnotation> entry : valueAnnotations.entrySet()) { Annotation annotation = field.getAnnotation(entry.getKey()); + MapCursor<Class<? extends Annotation>, OperandModeAnnotation> cursor = valueAnnotations.getEntries(); + while (cursor.advance()) { + Annotation annotation = field.getAnnotation(cursor.getKey()); if (annotation != null) { assert result == null : "Field has two operand mode annotations: " + field; ! result = entry.getValue(); ! result = cursor.getValue(); } } return result; }

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/LIRIntrospection.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File