changeset 19470:d216de21bfe8

Fix unchecked warnings in NodeClass.
author Roland Schatz <roland.schatz@oracle.com>
date Wed, 18 Feb 2015 12:10:04 +0100
parents eb2e1729433e
children 880717e44675
files graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/FieldIntrospection.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValue.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/CompositeValueClass.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionBase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstructionClass.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRIntrospection.java
diffstat 9 files changed, 40 insertions(+), 39 deletions(-) [+]
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);
     }