< 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 >