# HG changeset patch # User Doug Simon # Date 1385420957 -3600 # Node ID 107fee7fa3bbbca60d9fca54d65c7a50dae07eb6 # Parent 0097301f34fa76619945518748d0ef179783c8db replace code handling abstract (non-array) types in type profiles with assertions now that it should never occur diff -r 0097301f34fa -r 107fee7fa3bb graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaTypeProfile.java --- 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; } /** diff -r 0097301f34fa -r 107fee7fa3bb graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java --- 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); }