changeset 13166:107fee7fa3bb

replace code handling abstract (non-array) types in type profiles with assertions now that it should never occur
author Doug Simon <doug.simon@oracle.com>
date Tue, 26 Nov 2013 00:09:17 +0100
parents 0097301f34fa
children 787357a6de3e
files graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaTypeProfile.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java
diffstat 2 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaTypeProfile.java	Tue Nov 26 00:08:15 2013 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaTypeProfile.java	Tue Nov 26 00:09:17 2013 +0100
@@ -22,6 +22,8 @@
  */
 package com.oracle.graal.api.meta;
 
+import static java.lang.reflect.Modifier.*;
+
 import java.util.*;
 
 import com.oracle.graal.api.meta.JavaTypeProfile.ProfiledType;
@@ -144,6 +146,7 @@
 
         public ProfiledType(ResolvedJavaType item, double probability) {
             super(item, probability);
+            assert !isAbstract(item.getModifiers()) || item.isArray() : item;
         }
 
         /**
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Tue Nov 26 00:08:15 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Tue Nov 26 00:09:17 2013 +0100
@@ -1139,10 +1139,7 @@
             }
 
             ResolvedJavaType type = ptypes[0].getType();
-            if (isAbstract(type.getModifiers())) {
-                // In TieredCompilation mode, C1 can generate profiles containing abstract types
-                return null;
-            }
+            assert !isAbstract(type.getModifiers());
             ResolvedJavaMethod concrete = type.resolveMethod(targetMethod);
             if (!checkTargetConditions(data, replacements, invoke, concrete, optimisticOpts)) {
                 return null;
@@ -1213,10 +1210,8 @@
                 int index = concreteMethods.indexOf(concrete);
                 if (index == -1) {
                     notRecordedTypeProbability += type.getProbability();
-                } else if (isAbstract(type.getType().getModifiers())) {
-                    // In TieredCompilation mode, C1 can generate profiles containing abstract types
-                    notRecordedTypeProbability += type.getProbability();
                 } else {
+                    assert !isAbstract(type.getType().getModifiers());
                     usedTypes.add(type);
                     typesToConcretes.add(index);
                 }