# HG changeset patch # User Doug Simon # Date 1385150889 -3600 # Node ID d511d688b7823a31eeaf26210718c4dc0fcb1e41 # Parent 99dcb236aaad5fc592f6c62c006ee9da706299ca re-enabled TieredCompilation when GRAAL is defined by handling abstract types in profiles gathered by C1 diff -r 99dcb236aaad -r d511d688b782 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 Fri Nov 22 12:15:22 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Fri Nov 22 21:08:09 2013 +0100 @@ -26,6 +26,7 @@ import static com.oracle.graal.api.meta.DeoptimizationReason.*; import static com.oracle.graal.nodes.type.StampFactory.*; import static com.oracle.graal.phases.GraalOptions.*; +import static java.lang.reflect.Modifier.*; import java.lang.reflect.*; import java.util.*; @@ -434,6 +435,7 @@ super(invoke); this.concrete = concrete; this.type = type; + assert !isAbstract(type.getModifiers()) : type; } @Override @@ -1137,6 +1139,10 @@ } ResolvedJavaType type = ptypes[0].getType(); + if (isAbstract(type.getModifiers())) { + // In TieredCompilation mode, C1 can generate profiles containing abstract types + return null; + } ResolvedJavaMethod concrete = type.resolveMethod(targetMethod); if (!checkTargetConditions(data, replacements, invoke, concrete, optimisticOpts)) { return null; @@ -1207,6 +1213,9 @@ 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 { usedTypes.add(type); typesToConcretes.add(index); diff -r 99dcb236aaad -r d511d688b782 src/cpu/sparc/vm/c2_globals_sparc.hpp --- a/src/cpu/sparc/vm/c2_globals_sparc.hpp Fri Nov 22 12:15:22 2013 +0100 +++ b/src/cpu/sparc/vm/c2_globals_sparc.hpp Fri Nov 22 21:08:09 2013 +0100 @@ -44,12 +44,7 @@ #else define_pd_global(bool, ProfileInterpreter, true); #endif // CC_INTERP -// Disable TieredCompilation while profile data problems are not resolved - same thing in c2_globals_x86.hpp -#ifdef GRAAL -define_pd_global(bool, TieredCompilation, false); -#else define_pd_global(bool, TieredCompilation, trueInTiered); -#endif define_pd_global(intx, CompileThreshold, 10000); define_pd_global(intx, BackEdgeThreshold, 140000); diff -r 99dcb236aaad -r d511d688b782 src/cpu/x86/vm/c2_globals_x86.hpp --- a/src/cpu/x86/vm/c2_globals_x86.hpp Fri Nov 22 12:15:22 2013 +0100 +++ b/src/cpu/x86/vm/c2_globals_x86.hpp Fri Nov 22 21:08:09 2013 +0100 @@ -45,12 +45,7 @@ #else define_pd_global(bool, ProfileInterpreter, true); #endif // CC_INTERP -// Disable TieredCompilation while profile data problems are not resolved - same thing in c2_globals_sparc.hpp -#ifdef GRAAL -define_pd_global(bool, TieredCompilation, false); -#else define_pd_global(bool, TieredCompilation, trueInTiered); -#endif define_pd_global(intx, CompileThreshold, 10000); define_pd_global(intx, BackEdgeThreshold, 100000);