Mercurial > hg > graal-compiler
changeset 9001:94583d9eead8
HighTier phase suite.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Thu, 11 Apr 2013 12:17:17 +0200 |
parents | c32173f91d0e |
children | 7844a36d0216 |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/Suites.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/tiers/HighTierContext.java |
diffstat | 3 files changed, 106 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Thu Apr 11 12:02:19 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Thu Apr 11 12:17:17 2013 +0200 @@ -31,6 +31,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.alloc.*; import com.oracle.graal.compiler.gen.*; +import com.oracle.graal.compiler.phases.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.debug.*; import com.oracle.graal.lir.*; @@ -43,6 +44,7 @@ import com.oracle.graal.phases.PhasePlan.PhasePosition; import com.oracle.graal.phases.common.*; import com.oracle.graal.phases.schedule.*; +import com.oracle.graal.phases.tiers.*; import com.oracle.graal.virtual.phases.ea.*; public class GraalCompiler { @@ -155,21 +157,8 @@ new PartialEscapeAnalysisPhase(runtime, assumptions, true, GraalOptions.OptEarlyReadElimination).apply(graph); } - if (GraalOptions.OptConvertDeoptsToGuards) { - new ConvertDeoptimizeToGuardPhase().apply(graph); - } - - new LockEliminationPhase().apply(graph); - - if (GraalOptions.OptLoopTransform) { - new LoopTransformHighPhase().apply(graph); - new LoopTransformLowPhase().apply(graph); - } - new RemoveValueProxyPhase().apply(graph); - - if (GraalOptions.CullFrameStates) { - new CullFrameStatesPhase().apply(graph); - } + HighTierContext highTierContext = new HighTierContext(runtime, assumptions); + Suites.HIGH_TIER.apply(graph, highTierContext); if (GraalOptions.OptCanonicalizer) { new CanonicalizerPhase(runtime, assumptions).apply(graph);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/Suites.java Thu Apr 11 12:17:17 2013 +0200 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.compiler.phases; + +import java.util.*; + +import com.oracle.graal.loop.phases.*; +import com.oracle.graal.phases.*; +import com.oracle.graal.phases.common.*; +import com.oracle.graal.phases.tiers.*; + +public class Suites { + + public static final PhaseSuite<HighTierContext> HIGH_TIER = createHighTier(); + + private static PhaseSuite<HighTierContext> createHighTier() { + ArrayList<BasePhase<? super HighTierContext>> phases = new ArrayList<>(); + + if (GraalOptions.OptConvertDeoptsToGuards) { + phases.add(new ConvertDeoptimizeToGuardPhase()); + } + + phases.add(new LockEliminationPhase()); + + if (GraalOptions.OptLoopTransform) { + phases.add(new LoopTransformHighPhase()); + phases.add(new LoopTransformLowPhase()); + } + phases.add(new RemoveValueProxyPhase()); + + if (GraalOptions.CullFrameStates) { + phases.add(new CullFrameStatesPhase()); + } + + return new PhaseSuite<>("HighTier", phases); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/tiers/HighTierContext.java Thu Apr 11 12:17:17 2013 +0200 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.phases.tiers; + +import com.oracle.graal.api.code.*; +import com.oracle.graal.api.meta.*; + +public class HighTierContext { + + private final MetaAccessProvider runtime; + private final Assumptions assumptions; + + public HighTierContext(MetaAccessProvider runtime, Assumptions assumptions) { + this.runtime = runtime; + this.assumptions = assumptions; + } + + public MetaAccessProvider getRuntime() { + return runtime; + } + + public Assumptions getAssumptions() { + return assumptions; + } +}