Mercurial > hg > graal-compiler
changeset 15860:3e55e9614af7
[inlining] check maxMethodPerInlining after discarding methods below threshold
author | Miguel Garcia <miguel.m.garcia@oracle.com> |
---|---|
date | Thu, 22 May 2014 14:15:01 +0200 |
parents | ebe257551ffd |
children | dba1a510fe92 |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java |
diffstat | 1 files changed, 5 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Thu May 22 11:18:11 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/InliningData.java Thu May 22 14:15:01 2014 +0200 @@ -264,11 +264,6 @@ } } - if (concreteMethods.size() > maxMethodPerInlining) { - InliningUtil.logNotInlinedInvoke(invoke, inliningDepth(), targetMethod, "polymorphic call with more than %d target methods", maxMethodPerInlining); - return null; - } - // Clear methods that fall below the threshold. if (notRecordedTypeProbability > 0) { ArrayList<ResolvedJavaMethod> newConcreteMethods = new ArrayList<>(); @@ -291,6 +286,11 @@ concreteMethodsProbabilities = newConcreteMethodsProbabilities; } + if (concreteMethods.size() > maxMethodPerInlining) { + InliningUtil.logNotInlinedInvoke(invoke, inliningDepth(), targetMethod, "polymorphic call with more than %d target methods", maxMethodPerInlining); + return null; + } + // Clean out types whose methods are no longer available. ArrayList<JavaTypeProfile.ProfiledType> usedTypes = new ArrayList<>(); ArrayList<Integer> typesToConcretes = new ArrayList<>();