Mercurial > hg > graal-compiler
changeset 10830:4c6df71db9e7
Merge
author | Christos Kotselidis <christos.kotselidis@oracle.com> |
---|---|
date | Sun, 21 Jul 2013 20:11:55 +0200 |
parents | 761002c55728 (current diff) da9d33c7b6de (diff) |
children | 000ee2d0c518 |
files | |
diffstat | 3 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCache.java Sun Jul 21 20:11:12 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCache.java Sun Jul 21 20:11:55 2013 +0200 @@ -107,6 +107,7 @@ } Assumptions tmpAssumptions = new Assumptions(false); + optimizeGraph(newGraph, tmpAssumptions); HighTierContext context = new HighTierContext(metaAccessProvider, tmpAssumptions, replacements); @@ -153,9 +154,11 @@ CanonicalizerPhase.Instance canonicalizerPhase = new CanonicalizerPhase.Instance(metaAccessProvider, assumptions, !AOTCompilation.getValue(), null, null); + EarlyReadEliminationPhase earlyRead = new EarlyReadEliminationPhase(new CanonicalizerPhase(true)); + HighTierContext context = new HighTierContext(metaAccessProvider, assumptions, replacements); Integer maxNodes = TruffleCompilerOptions.TruffleOperationCacheMaxNodes.getValue(); - contractGraph(newGraph, eliminate, convertDeoptimizeToGuardPhase, canonicalizerPhase); + contractGraph(newGraph, eliminate, convertDeoptimizeToGuardPhase, canonicalizerPhase, earlyRead, context); while (newGraph.getNodeCount() <= maxNodes) { @@ -168,7 +171,7 @@ break; } - contractGraph(newGraph, eliminate, convertDeoptimizeToGuardPhase, canonicalizerPhase); + contractGraph(newGraph, eliminate, convertDeoptimizeToGuardPhase, canonicalizerPhase, earlyRead, context); } if (newGraph.getNodeCount() > maxNodes && (TruffleCompilerOptions.TraceTruffleCacheDetails.getValue() || TruffleCompilerOptions.TraceTrufflePerformanceWarnings.getValue())) { @@ -177,10 +180,13 @@ } private static void contractGraph(StructuredGraph newGraph, ConditionalEliminationPhase eliminate, ConvertDeoptimizeToGuardPhase convertDeoptimizeToGuardPhase, - CanonicalizerPhase.Instance canonicalizerPhase) { + CanonicalizerPhase.Instance canonicalizerPhase, EarlyReadEliminationPhase earlyRead, HighTierContext context) { // Canonicalize / constant propagate. canonicalizerPhase.apply(newGraph); + // Early read eliminiation + earlyRead.apply(newGraph, context); + // Convert deopt to guards. convertDeoptimizeToGuardPhase.apply(newGraph);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java Sun Jul 21 20:11:12 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerOptions.java Sun Jul 21 20:11:55 2013 +0200 @@ -54,7 +54,7 @@ @Option(help = "") public static final OptionValue<Integer> TruffleConstantUnrollLimit = new OptionValue<>(32); @Option(help = "") - public static final OptionValue<Integer> TruffleOperationCacheMaxNodes = new OptionValue<>(200); + public static final OptionValue<Integer> TruffleOperationCacheMaxNodes = new OptionValue<>(350); @Option(help = "") public static final OptionValue<Integer> TruffleGraphMaxNodes = new OptionValue<>(12000); @Option(help = "")
--- a/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/Specialization.java Sun Jul 21 20:11:12 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/Specialization.java Sun Jul 21 20:11:55 2013 +0200 @@ -24,7 +24,7 @@ import java.lang.annotation.*; -@Retention(RetentionPolicy.CLASS) +@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface Specialization {