# HG changeset patch # User Josef Eisl # Date 1423503540 -3600 # Node ID a0c292287e3171822da9fcdbc5f216d6830d2d0a # Parent 6340d851894b7e6699d9c303f52110ae96552ae9 Introduce LowLevelHighTier, LowLevelMidTier, LowLevelLowTier. diff -r 6340d851894b -r a0c292287e31 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/DefaultLowLevelCompilerConfiguration.java --- 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 createHighTier() { - LowLevelPhaseSuite suite = new LowLevelPhaseSuite<>(LowLevelHighTierContext.class); - if (ConstantLoadOptimization.Options.ConstantLoadOptimization.getValue()) { - suite.appendPhase(new ConstantLoadOptimization()); - } - return suite; + return new LowLevelHighTier(); } public LowLevelPhaseSuite createMidTier() { - LowLevelPhaseSuite 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 createLowTier() { - LowLevelPhaseSuite 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(); } } diff -r 6340d851894b -r a0c292287e31 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelHighTier.java --- /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 { + public LowLevelHighTier() { + if (ConstantLoadOptimization.Options.ConstantLoadOptimization.getValue()) { + appendPhase(new ConstantLoadOptimization()); + } + } +} \ No newline at end of file diff -r 6340d851894b -r a0c292287e31 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTier.java --- /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 { + public LowLevelLowTier() { + appendPhase(new EdgeMoveOptimizer()); + appendPhase(new ControlFlowOptimizer()); + appendPhase(new RedundantMoveElimination()); + appendPhase(new NullCheckOptimizer()); + } +} \ No newline at end of file diff -r 6340d851894b -r a0c292287e31 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelMidTier.java --- /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 { + 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 diff -r 6340d851894b -r a0c292287e31 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelPhaseSuite.java --- 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 extends LowLevelPhase { +public abstract class LowLevelPhaseSuite extends LowLevelPhase { private final List> phases; - public LowLevelPhaseSuite(Class contextClass) { - super(getNameFromContext(contextClass)); + public LowLevelPhaseSuite() { phases = new ArrayList<>(); } - private static String getNameFromContext(Class 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. */