# HG changeset patch # User Thomas Wuerthinger # Date 1424015092 -3600 # Node ID 37516af640ed0e861a6d8088fc4395b25e8f4483 # Parent 31442a6da26d952a925f38ab9390828d36e2ff95 Do not inline into methods that need a Graal replacement in the new partial evaluator. diff -r 31442a6da26d -r 37516af640ed graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- 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(); diff -r 31442a6da26d -r 37516af640ed graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Sun Feb 15 16:00:58 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Sun Feb 15 16:44:52 2015 +0100 @@ -256,8 +256,8 @@ DefaultGraphBuilderPlugins plugins = graalPlugins == null ? new DefaultGraphBuilderPlugins() : graalPlugins.copy(); TruffleGraphBuilderPlugins.registerPlugins(providers.getMetaAccess(), plugins); long ms = System.currentTimeMillis(); - new GraphBuilderPhase.Instance(providers.getMetaAccess(), providers.getStampProvider(), this.snippetReflection, providers.getConstantReflection(), newConfig, plugins, - TruffleCompilerImpl.Optimizations).apply(graph); + new GraphBuilderPhase.Instance(providers.getMetaAccess(), providers.getStampProvider(), this.snippetReflection, providers.getReplacements(), providers.getConstantReflection(), newConfig, + plugins, TruffleCompilerImpl.Optimizations).apply(graph); System.out.println("# ms: " + (System.currentTimeMillis() - ms)); Debug.dump(graph, "After FastPE"); diff -r 31442a6da26d -r 37516af640ed graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleReplacements.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleReplacements.java Sun Feb 15 16:00:58 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleReplacements.java Sun Feb 15 16:44:52 2015 +0100 @@ -50,13 +50,15 @@ } protected void registerTruffleSubstitutions() { - registerSubstitutions(CompilerAsserts.class, CompilerAssertsSubstitutions.class); - registerSubstitutions(CompilerDirectives.class, CompilerDirectivesSubstitutions.class); - registerSubstitutions(ExactMath.class, ExactMathSubstitutions.class); - registerSubstitutions(OptimizedAssumption.class, OptimizedAssumptionSubstitutions.class); - registerSubstitutions(OptimizedCallTarget.class, OptimizedCallTargetSubstitutions.class); - registerSubstitutions(FrameWithoutBoxing.class, FrameWithoutBoxingSubstitutions.class); - registerSubstitutions(UnsafeAccessImpl.class, UnsafeAccessSubstitutions.class); + if (!TruffleCompilerOptions.FastPE.getValue()) { + registerSubstitutions(CompilerAsserts.class, CompilerAssertsSubstitutions.class); + registerSubstitutions(CompilerDirectives.class, CompilerDirectivesSubstitutions.class); + registerSubstitutions(ExactMath.class, ExactMathSubstitutions.class); + registerSubstitutions(OptimizedAssumption.class, OptimizedAssumptionSubstitutions.class); + registerSubstitutions(OptimizedCallTarget.class, OptimizedCallTargetSubstitutions.class); + registerSubstitutions(FrameWithoutBoxing.class, FrameWithoutBoxingSubstitutions.class); + registerSubstitutions(UnsafeAccessImpl.class, UnsafeAccessSubstitutions.class); + } } @Override