< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/PEGraphDecoder.java

Print this page

        

*** 191,200 **** --- 191,218 ---- protected class PENonAppendGraphBuilderContext implements GraphBuilderContext { protected final PEMethodScope methodScope; protected final Invoke invoke; + @Override + public ExternalInliningContext getExternalInliningContext() { + return new ExternalInliningContext() { + @Override + public int getInlinedDepth() { + int count = 0; + PEGraphDecoder.PEMethodScope scope = methodScope; + while (scope != null) { + if (scope.method.equals(callInlinedMethod)) { + count++; + } + scope = scope.caller; + } + return count; + } + }; + } + public PENonAppendGraphBuilderContext(PEMethodScope methodScope, Invoke invoke) { this.methodScope = methodScope; this.invoke = invoke; }
*** 418,440 **** private final InlineInvokePlugin[] inlineInvokePlugins; private final ParameterPlugin parameterPlugin; private final NodePlugin[] nodePlugins; private final EconomicMap<SpecialCallTargetCacheKey, Object> specialCallTargetCache; private final EconomicMap<ResolvedJavaMethod, Object> invocationPluginCache; public PEGraphDecoder(Architecture architecture, StructuredGraph graph, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ConstantFieldProvider constantFieldProvider, StampProvider stampProvider, LoopExplosionPlugin loopExplosionPlugin, InvocationPlugins invocationPlugins, InlineInvokePlugin[] inlineInvokePlugins, ParameterPlugin parameterPlugin, ! NodePlugin[] nodePlugins) { super(architecture, graph, metaAccess, constantReflection, constantFieldProvider, stampProvider, true); this.loopExplosionPlugin = loopExplosionPlugin; this.invocationPlugins = invocationPlugins; this.inlineInvokePlugins = inlineInvokePlugins; this.parameterPlugin = parameterPlugin; this.nodePlugins = nodePlugins; this.specialCallTargetCache = EconomicMap.create(Equivalence.DEFAULT); this.invocationPluginCache = EconomicMap.create(Equivalence.DEFAULT); } protected static LoopExplosionKind loopExplosionKind(ResolvedJavaMethod method, LoopExplosionPlugin loopExplosionPlugin) { if (loopExplosionPlugin == null) { return LoopExplosionKind.NONE; --- 436,460 ---- private final InlineInvokePlugin[] inlineInvokePlugins; private final ParameterPlugin parameterPlugin; private final NodePlugin[] nodePlugins; private final EconomicMap<SpecialCallTargetCacheKey, Object> specialCallTargetCache; private final EconomicMap<ResolvedJavaMethod, Object> invocationPluginCache; + private final ResolvedJavaMethod callInlinedMethod; public PEGraphDecoder(Architecture architecture, StructuredGraph graph, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ConstantFieldProvider constantFieldProvider, StampProvider stampProvider, LoopExplosionPlugin loopExplosionPlugin, InvocationPlugins invocationPlugins, InlineInvokePlugin[] inlineInvokePlugins, ParameterPlugin parameterPlugin, ! NodePlugin[] nodePlugins, ResolvedJavaMethod callInlinedMethod) { super(architecture, graph, metaAccess, constantReflection, constantFieldProvider, stampProvider, true); this.loopExplosionPlugin = loopExplosionPlugin; this.invocationPlugins = invocationPlugins; this.inlineInvokePlugins = inlineInvokePlugins; this.parameterPlugin = parameterPlugin; this.nodePlugins = nodePlugins; this.specialCallTargetCache = EconomicMap.create(Equivalence.DEFAULT); this.invocationPluginCache = EconomicMap.create(Equivalence.DEFAULT); + this.callInlinedMethod = callInlinedMethod; } protected static LoopExplosionKind loopExplosionKind(ResolvedJavaMethod method, LoopExplosionPlugin loopExplosionPlugin) { if (loopExplosionPlugin == null) { return LoopExplosionKind.NONE;
< prev index next >