src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/aot/AOTInliningPolicy.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/aot/AOTInliningPolicy.java	Mon Mar 20 17:38:50 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/aot/AOTInliningPolicy.java	Mon Mar 20 17:38:50 2017

*** 29,40 **** --- 29,41 ---- import org.graalvm.compiler.hotspot.FingerprintUtil; import org.graalvm.compiler.nodes.Invoke; import org.graalvm.compiler.nodes.spi.Replacements; import org.graalvm.compiler.options.Option; + import org.graalvm.compiler.options.OptionKey; import org.graalvm.compiler.options.OptionType; ! import org.graalvm.compiler.options.OptionValues; import org.graalvm.compiler.phases.common.inlining.InliningUtil; import org.graalvm.compiler.phases.common.inlining.info.InlineInfo; import org.graalvm.compiler.phases.common.inlining.policy.GreedyInliningPolicy; import org.graalvm.compiler.phases.common.inlining.walker.MethodInvocation;
*** 42,65 **** --- 43,66 ---- public class AOTInliningPolicy extends GreedyInliningPolicy { public static class Options { // @formatter:off @Option(help = "", type = OptionType.Expert) ! public static final OptionValue<Double> AOTInliningDepthToSizeRate = new OptionValue<>(2.5); ! public static final OptionKey<Double> AOTInliningDepthToSizeRate = new OptionKey<>(2.5); @Option(help = "", type = OptionType.Expert) ! public static final OptionValue<Integer> AOTInliningSizeMaximum = new OptionValue<>(300); ! public static final OptionKey<Integer> AOTInliningSizeMaximum = new OptionKey<>(300); @Option(help = "", type = OptionType.Expert) ! public static final OptionValue<Integer> AOTInliningSizeMinimum = new OptionValue<>(50); ! public static final OptionKey<Integer> AOTInliningSizeMinimum = new OptionKey<>(50); // @formatter:on } public AOTInliningPolicy(Map<Invoke, Double> hints) { super(hints); } ! protected double maxInliningSize(int inliningDepth, OptionValues options) { ! return Math.max(Options.AOTInliningSizeMaximum.getValue() / (inliningDepth * Options.AOTInliningDepthToSizeRate.getValue()), Options.AOTInliningSizeMinimum.getValue()); ! return Math.max(Options.AOTInliningSizeMaximum.getValue(options) / (inliningDepth * Options.AOTInliningDepthToSizeRate.getValue(options)), Options.AOTInliningSizeMinimum.getValue(options)); } @Override public boolean isWorthInlining(Replacements replacements, MethodInvocation invocation, int inliningDepth, boolean fullyProcessed) { final InlineInfo info = invocation.callee();
*** 72,82 **** --- 73,84 ---- } final double probability = invocation.probability(); final double relevance = invocation.relevance(); if (InlineEverything.getValue()) { + OptionValues options = info.graph().getOptions(); + if (InlineEverything.getValue(options)) { InliningUtil.logInlinedMethod(info, inliningDepth, fullyProcessed, "inline everything"); return true; } if (isIntrinsic(replacements, info)) {
*** 90,105 **** --- 92,107 ---- } double inliningBonus = getInliningBonus(info); int nodes = info.determineNodeCount(); ! if (nodes < TrivialInliningSize.getValue(options) * inliningBonus) { InliningUtil.logInlinedMethod(info, inliningDepth, fullyProcessed, "trivial (relevance=%f, probability=%f, bonus=%f, nodes=%d)", relevance, probability, inliningBonus, nodes); return true; } ! double maximumNodes = computeMaximumSize(relevance, (int) (maxInliningSize(inliningDepth, options) * inliningBonus)); if (nodes <= maximumNodes) { InliningUtil.logInlinedMethod(info, inliningDepth, fullyProcessed, "relevance-based (relevance=%f, probability=%f, bonus=%f, nodes=%d <= %f)", relevance, probability, inliningBonus, nodes, maximumNodes); return true; }

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/aot/AOTInliningPolicy.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File