Mercurial > hg > truffle
changeset 19229:a0c292287e31
Introduce LowLevelHighTier, LowLevelMidTier, LowLevelLowTier.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Mon, 09 Feb 2015 18:39:00 +0100 |
parents | 6340d851894b |
children | ef1208c9eb78 |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/DefaultLowLevelCompilerConfiguration.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelHighTier.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTier.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelMidTier.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelPhaseSuite.java |
diffstat | 5 files changed, 116 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/DefaultLowLevelCompilerConfiguration.java Mon Feb 09 18:23:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/DefaultLowLevelCompilerConfiguration.java Mon Feb 09 18:39:00 2015 +0100 @@ -22,46 +22,22 @@ */ package com.oracle.graal.lir.phases; -import com.oracle.graal.lir.*; -import com.oracle.graal.lir.alloc.lsra.*; -import com.oracle.graal.lir.constopt.*; import com.oracle.graal.lir.phases.LowLevelHighTierPhase.LowLevelHighTierContext; import com.oracle.graal.lir.phases.LowLevelLowTierPhase.LowLevelLowTierContext; import com.oracle.graal.lir.phases.LowLevelMidTierPhase.LowLevelMidTierContext; -import com.oracle.graal.lir.stackslotalloc.*; public class DefaultLowLevelCompilerConfiguration implements LowLevelCompilerConfiguration { public LowLevelPhaseSuite<LowLevelHighTierContext> createHighTier() { - LowLevelPhaseSuite<LowLevelHighTierContext> suite = new LowLevelPhaseSuite<>(LowLevelHighTierContext.class); - if (ConstantLoadOptimization.Options.ConstantLoadOptimization.getValue()) { - suite.appendPhase(new ConstantLoadOptimization()); - } - return suite; + return new LowLevelHighTier(); } public LowLevelPhaseSuite<LowLevelMidTierContext> createMidTier() { - LowLevelPhaseSuite<LowLevelMidTierContext> suite = new LowLevelPhaseSuite<>(LowLevelMidTierContext.class); - suite.appendPhase(new LinearScanPhase()); - - // build frame map - if (LSStackSlotAllocator.Options.LSStackSlotAllocation.getValue()) { - suite.appendPhase(new LSStackSlotAllocator()); - } else { - suite.appendPhase(new SimpleStackSlotAllocator()); - } - // currently we mark locations only if we do register allocation - suite.appendPhase(new LocationMarker()); - return suite; + return new LowLevelMidTier(); } public LowLevelPhaseSuite<LowLevelLowTierContext> createLowTier() { - LowLevelPhaseSuite<LowLevelLowTierContext> suite = new LowLevelPhaseSuite<>(LowLevelLowTierContext.class); - suite.appendPhase(new EdgeMoveOptimizer()); - suite.appendPhase(new ControlFlowOptimizer()); - suite.appendPhase(new RedundantMoveElimination()); - suite.appendPhase(new NullCheckOptimizer()); - return suite; + return new LowLevelLowTier(); } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelHighTier.java Mon Feb 09 18:39:00 2015 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2015, 2015, 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.lir.phases; + +import com.oracle.graal.lir.constopt.*; +import com.oracle.graal.lir.phases.LowLevelHighTierPhase.*; + +public class LowLevelHighTier extends LowLevelPhaseSuite<LowLevelHighTierContext> { + public LowLevelHighTier() { + if (ConstantLoadOptimization.Options.ConstantLoadOptimization.getValue()) { + appendPhase(new ConstantLoadOptimization()); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTier.java Mon Feb 09 18:39:00 2015 +0100 @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2015, 2015, 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.lir.phases; + +import com.oracle.graal.lir.*; +import com.oracle.graal.lir.phases.LowLevelLowTierPhase.*; + +public class LowLevelLowTier extends LowLevelPhaseSuite<LowLevelLowTierContext> { + public LowLevelLowTier() { + appendPhase(new EdgeMoveOptimizer()); + appendPhase(new ControlFlowOptimizer()); + appendPhase(new RedundantMoveElimination()); + appendPhase(new NullCheckOptimizer()); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelMidTier.java Mon Feb 09 18:39:00 2015 +0100 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2015, 2015, 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.lir.phases; + +import com.oracle.graal.lir.alloc.lsra.*; +import com.oracle.graal.lir.phases.LowLevelMidTierPhase.*; +import com.oracle.graal.lir.stackslotalloc.*; + +public class LowLevelMidTier extends LowLevelPhaseSuite<LowLevelMidTierContext> { + public LowLevelMidTier() { + appendPhase(new LinearScanPhase()); + + // build frame map + if (LSStackSlotAllocator.Options.LSStackSlotAllocation.getValue()) { + appendPhase(new LSStackSlotAllocator()); + } else { + appendPhase(new SimpleStackSlotAllocator()); + } + // currently we mark locations only if we do register allocation + appendPhase(new LocationMarker()); + } +} \ No newline at end of file
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelPhaseSuite.java Mon Feb 09 18:23:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelPhaseSuite.java Mon Feb 09 18:39:00 2015 +0100 @@ -28,24 +28,13 @@ import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.lir.gen.*; -public class LowLevelPhaseSuite<C> extends LowLevelPhase<C> { +public abstract class LowLevelPhaseSuite<C> extends LowLevelPhase<C> { private final List<LowLevelPhase<C>> phases; - public LowLevelPhaseSuite(Class<C> contextClass) { - super(getNameFromContext(contextClass)); + public LowLevelPhaseSuite() { phases = new ArrayList<>(); } - private static <C> String getNameFromContext(Class<C> contextClass) { - String className = contextClass.getName(); - String s0 = className.substring(className.lastIndexOf(".") + 1); // strip the package name - String s = s0.substring(s0.lastIndexOf("$") + 1); // strip the enclosing class name - if (s.endsWith("Context")) { - s = s.substring(0, s.length() - "Context".length()); - } - return s; - } - /** * Add a new phase at the beginning of this suite. */