Mercurial > hg > truffle
diff graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java @ 19382:37516af640ed
Do not inline into methods that need a Graal replacement in the new partial evaluator.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sun, 15 Feb 2015 16:44:52 +0100 |
parents | 31442a6da26d |
children | fc390dcb0ba5 |
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Sun Feb 15 16:00:58 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Sun Feb 15 16:44:52 2015 +0100 @@ -78,7 +78,7 @@ @Override protected void run(StructuredGraph graph, HighTierContext context) { - new Instance(context.getMetaAccess(), context.getStampProvider(), null, context.getConstantReflection(), graphBuilderConfig, graphBuilderPlugins, context.getOptimisticOptimizations()).run(graph); + new Instance(context.getMetaAccess(), context.getStampProvider(), null, null, context.getConstantReflection(), graphBuilderConfig, graphBuilderPlugins, context.getOptimisticOptimizations()).run(graph); } public GraphBuilderConfiguration getGraphBuilderConfig() { @@ -104,6 +104,8 @@ private final ConstantReflectionProvider constantReflection; private final SnippetReflectionProvider snippetReflectionProvider; + private final Replacements replacements; + /** * Gets the graph being processed by this builder. */ @@ -111,8 +113,8 @@ return currentGraph; } - public Instance(MetaAccessProvider metaAccess, StampProvider stampProvider, SnippetReflectionProvider snippetReflectionProvider, ConstantReflectionProvider constantReflection, - GraphBuilderConfiguration graphBuilderConfig, GraphBuilderPlugins graphBuilderPlugins, OptimisticOptimizations optimisticOpts) { + public Instance(MetaAccessProvider metaAccess, StampProvider stampProvider, SnippetReflectionProvider snippetReflectionProvider, Replacements replacements, + ConstantReflectionProvider constantReflection, GraphBuilderConfiguration graphBuilderConfig, GraphBuilderPlugins graphBuilderPlugins, OptimisticOptimizations optimisticOpts) { this.graphBuilderConfig = graphBuilderConfig; this.optimisticOpts = optimisticOpts; this.metaAccess = metaAccess; @@ -120,12 +122,13 @@ this.graphBuilderPlugins = graphBuilderPlugins; this.constantReflection = constantReflection; this.snippetReflectionProvider = snippetReflectionProvider; + this.replacements = replacements; assert metaAccess != null; } public Instance(MetaAccessProvider metaAccess, StampProvider stampProvider, ConstantReflectionProvider constantReflection, GraphBuilderConfiguration graphBuilderConfig, OptimisticOptimizations optimisticOpts) { - this(metaAccess, stampProvider, null, constantReflection, graphBuilderConfig, null, optimisticOpts); + this(metaAccess, stampProvider, null, null, constantReflection, graphBuilderConfig, null, optimisticOpts); } @Override @@ -876,6 +879,7 @@ } InlineInvokePlugin inlineInvokePlugin = graphBuilderConfig.getInlineInvokePlugin(); if (inlineInvokePlugin != null && invokeKind.isDirect() && targetMethod.canBeInlined() && targetMethod.hasBytecodes() && + (replacements == null || (replacements.getMethodSubstitution(targetMethod) == null && replacements.getMacroSubstitution(targetMethod) == null)) && inlineInvokePlugin.shouldInlineInvoke(targetMethod, currentDepth)) { if (GraalOptions.TraceInlineDuringParsing.getValue()) { int bci = this.bci();