Mercurial > hg > graal-jvmci-8
changeset 19470:d216de21bfe8
Fix unchecked warnings in NodeClass.
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/FieldIntrospection.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/FieldIntrospection.java Wed Feb 18 12:10:04 2015 +0100 @@ -24,22 +24,22 @@ import java.util.concurrent.*; -public abstract class FieldIntrospection extends UnsafeAccess { +public abstract class FieldIntrospection<T> extends UnsafeAccess { - protected static final ConcurrentHashMap<Class<?>, FieldIntrospection> allClasses = new ConcurrentHashMap<>(); + protected static final ConcurrentHashMap<Class<?>, FieldIntrospection<?>> allClasses = new ConcurrentHashMap<>(); - private final Class<?> clazz; + private final Class<T> clazz; /** * The set of fields in {@link #clazz} that do long belong to a more specific category. */ protected Fields data; - public FieldIntrospection(Class<?> clazz) { + public FieldIntrospection(Class<T> clazz) { this.clazz = clazz; } - public Class<?> getClazz() { + public Class<T> getClazz() { return clazz; }
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed Feb 18 12:10:04 2015 +0100 @@ -51,7 +51,7 @@ * <li>The identifier for an {@link IterableNodeType} class.</li> * </ul> */ -public final class NodeClass<T> extends FieldIntrospection { +public final class NodeClass<T> extends FieldIntrospection<T> { // Timers for creation of a NodeClass instance private static final DebugTimer Init_FieldScanning = Debug.timer("NodeClass.Init.FieldScanning"); @@ -71,23 +71,22 @@ /** * Gets the {@link NodeClass} associated with a given {@link Class}. */ - @SuppressWarnings({"unchecked", "rawtypes"}) public static <T> NodeClass<T> get(Class<T> c) { assert getNodeClassViaReflection(c) == null; - Class<?> superclass = c.getSuperclass(); - NodeClass nodeSuperclass = null; + Class<? super T> superclass = c.getSuperclass(); + NodeClass<? super T> nodeSuperclass = null; if (superclass != NODE_CLASS) { nodeSuperclass = getNodeClassViaReflection(superclass); } - return new NodeClass(c, nodeSuperclass); + return new NodeClass<>(c, nodeSuperclass); } - @SuppressWarnings("rawtypes") - public static NodeClass<?> getNodeClassViaReflection(Class<?> superclass) { + @SuppressWarnings("unchecked") + public static <T> NodeClass<T> getNodeClassViaReflection(Class<T> superclass) { try { Field field = superclass.getDeclaredField("TYPE"); field.setAccessible(true); - return (NodeClass) field.get(null); + return (NodeClass<T>) field.get(null); } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) { throw new RuntimeException(e); } @@ -101,7 +100,7 @@ private final InputEdges inputs; private final SuccessorEdges successors; - private final NodeClass<?> superNodeClass; + private final NodeClass<? super T> superNodeClass; private final boolean canGVN; private final int startGVNNumber; @@ -124,11 +123,11 @@ private final boolean isSimplifiable; private final boolean isLeafNode; - public NodeClass(Class<?> clazz, NodeClass<?> superNodeClass) { + public NodeClass(Class<T> clazz, NodeClass<? super T> superNodeClass) { this(clazz, superNodeClass, new FieldsScanner.DefaultCalcOffset(), null, 0); } - public NodeClass(Class<?> clazz, NodeClass<?> superNodeClass, FieldsScanner.CalcOffset calcOffset, int[] presetIterableIds, int presetIterableId) { + public NodeClass(Class<T> clazz, NodeClass<? super T> superNodeClass, FieldsScanner.CalcOffset calcOffset, int[] presetIterableIds, int presetIterableId) { super(clazz); this.superNodeClass = superNodeClass; assert NODE_CLASS.isAssignableFrom(clazz); @@ -638,7 +637,7 @@ } } - public Class<?> getJavaClass() { + public Class<T> getJavaClass() { return getClazz(); }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Wed Feb 18 12:10:04 2015 +0100 @@ -65,5 +65,5 @@ } @MacroSubstitution(isStatic = true, forced = true, macro = CompositeValueClassGetNode.class) - private static native CompositeValueClass get(Class<?> c); + private static native CompositeValueClass<?> get(Class<?> c); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java Wed Feb 18 12:10:04 2015 +0100 @@ -44,7 +44,7 @@ OperandFlag[] value() default OperandFlag.REG; } - private final CompositeValueClass valueClass; + private final CompositeValueClass<?> valueClass; private static final DebugMetric COMPOSITE_VALUE_COUNT = Debug.metric("CompositeValues"); @@ -81,7 +81,7 @@ return false; } - CompositeValueClass getValueClass() { + CompositeValueClass<?> getValueClass() { return valueClass; }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java Wed Feb 18 12:10:04 2015 +0100 @@ -38,18 +38,19 @@ * such fields.</li> * </ul> */ -public class CompositeValueClass extends LIRIntrospection { +public class CompositeValueClass<T> extends LIRIntrospection<T> { - public static final CompositeValueClass get(Class<? extends CompositeValue> c) { - CompositeValueClass clazz = (CompositeValueClass) allClasses.get(c); + @SuppressWarnings("unchecked") + public static final <T extends CompositeValue> CompositeValueClass<T> get(Class<T> c) { + CompositeValueClass<T> clazz = (CompositeValueClass<T>) allClasses.get(c); if (clazz != null) { return clazz; } // We can have a race of multiple threads creating the LIRInstructionClass at the same time. // However, only one will be put into the map, and this is the one returned by all threads. - clazz = new CompositeValueClass(c); - CompositeValueClass oldClazz = (CompositeValueClass) allClasses.putIfAbsent(c, clazz); + clazz = new CompositeValueClass<>(c); + CompositeValueClass<T> oldClazz = (CompositeValueClass<T>) allClasses.putIfAbsent(c, clazz); if (oldClazz != null) { return oldClazz; } else { @@ -57,11 +58,11 @@ } } - public CompositeValueClass(Class<? extends CompositeValue> clazz) { + public CompositeValueClass(Class<T> clazz) { this(clazz, new FieldsScanner.DefaultCalcOffset()); } - public CompositeValueClass(Class<? extends CompositeValue> clazz, FieldsScanner.CalcOffset calcOffset) { + public CompositeValueClass(Class<T> clazz, FieldsScanner.CalcOffset calcOffset) { super(clazz); CompositeValueFieldsScanner vfs = new CompositeValueFieldsScanner(calcOffset);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Wed Feb 18 12:10:04 2015 +0100 @@ -255,5 +255,5 @@ void verify(); - LIRInstructionClass getLIRInstructionClass(); + LIRInstructionClass<?> getLIRInstructionClass(); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionBase.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionBase.java Wed Feb 18 12:10:04 2015 +0100 @@ -54,7 +54,7 @@ */ protected static final EnumSet<OperandFlag> ADDRESS_FLAGS = EnumSet.of(REG, ILLEGAL); - private final LIRInstructionClass instructionClass; + private final LIRInstructionClass<?> instructionClass; /** * Instruction id for register allocation. @@ -231,7 +231,7 @@ return instructionClass.toString(this); } - public LIRInstructionClass getLIRInstructionClass() { + public LIRInstructionClass<?> getLIRInstructionClass() { return instructionClass; } }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java Wed Feb 18 12:10:04 2015 +0100 @@ -31,18 +31,19 @@ import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; -public class LIRInstructionClass extends LIRIntrospection { +public class LIRInstructionClass<T> extends LIRIntrospection<T> { - public static final LIRInstructionClass get(Class<? extends LIRInstruction> c) { - LIRInstructionClass clazz = (LIRInstructionClass) allClasses.get(c); + @SuppressWarnings("unchecked") + public static final <T extends LIRInstruction> LIRInstructionClass<T> get(Class<T> c) { + LIRInstructionClass<T> clazz = (LIRInstructionClass<T>) allClasses.get(c); if (clazz != null) { return clazz; } // We can have a race of multiple threads creating the LIRInstructionClass at the same time. // However, only one will be put into the map, and this is the one returned by all threads. - clazz = new LIRInstructionClass(c); - LIRInstructionClass oldClazz = (LIRInstructionClass) allClasses.putIfAbsent(c, clazz); + clazz = new LIRInstructionClass<>(c); + LIRInstructionClass<T> oldClazz = (LIRInstructionClass<T>) allClasses.putIfAbsent(c, clazz); if (oldClazz != null) { return oldClazz; } else { @@ -62,11 +63,11 @@ private String opcodeConstant; private int opcodeIndex; - private LIRInstructionClass(Class<? extends LIRInstruction> clazz) { + private LIRInstructionClass(Class<T> clazz) { this(clazz, new FieldsScanner.DefaultCalcOffset()); } - public LIRInstructionClass(Class<? extends LIRInstruction> clazz, FieldsScanner.CalcOffset calcOffset) { + public LIRInstructionClass(Class<T> clazz, FieldsScanner.CalcOffset calcOffset) { super(clazz); assert INSTRUCTION_CLASS.isAssignableFrom(clazz);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRIntrospection.java Wed Feb 18 11:46:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRIntrospection.java Wed Feb 18 12:10:04 2015 +0100 @@ -35,7 +35,7 @@ import com.oracle.graal.lir.LIRInstruction.OperandFlag; import com.oracle.graal.lir.LIRInstruction.OperandMode; -abstract class LIRIntrospection extends FieldIntrospection { +abstract class LIRIntrospection<T> extends FieldIntrospection<T> { private static final Class<Value> VALUE_CLASS = Value.class; private static final Class<JavaConstant> CONSTANT_CLASS = JavaConstant.class; @@ -44,7 +44,7 @@ private static final Class<StackSlot> STACK_SLOT_CLASS = StackSlot.class; private static final Class<Value[]> VALUE_ARRAY_CLASS = Value[].class; - public LIRIntrospection(Class<?> clazz) { + public LIRIntrospection(Class<T> clazz) { super(clazz); }