src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/LinearScanAssignLocationsPhase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/LinearScanAssignLocationsPhase.java

Print this page




  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.lir.alloc.lsra;
  24 
  25 import static jdk.vm.ci.code.ValueUtil.isIllegal;
  26 import static org.graalvm.compiler.lir.LIRValueUtil.isJavaConstant;
  27 import static org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue;
  28 import static org.graalvm.compiler.lir.LIRValueUtil.isVariable;
  29 import static org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot;
  30 
  31 import java.util.ArrayList;
  32 import java.util.Collections;
  33 import java.util.EnumSet;
  34 
  35 import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
  36 import org.graalvm.compiler.debug.Debug;
  37 import org.graalvm.compiler.debug.Indent;
  38 import org.graalvm.compiler.lir.ConstantValue;
  39 import org.graalvm.compiler.lir.InstructionValueProcedure;
  40 import org.graalvm.compiler.lir.LIRInstruction;
  41 import org.graalvm.compiler.lir.LIRInstruction.OperandFlag;
  42 import org.graalvm.compiler.lir.LIRInstruction.OperandMode;
  43 import org.graalvm.compiler.lir.StandardOp;
  44 import org.graalvm.compiler.lir.StandardOp.MoveOp;
  45 import org.graalvm.compiler.lir.StandardOp.ValueMoveOp;
  46 import org.graalvm.compiler.lir.Variable;
  47 import org.graalvm.compiler.lir.gen.LIRGenerationResult;
  48 import org.graalvm.compiler.lir.phases.AllocationPhase.AllocationContext;
  49 
  50 import jdk.vm.ci.code.TargetDescription;
  51 import jdk.vm.ci.meta.AllocatableValue;
  52 import jdk.vm.ci.meta.Value;
  53 
  54 /**
  55  * Phase 7: Assign register numbers back to LIR.
  56  */


 213         op.forEachInput(assignProc);
 214         op.forEachAlive(assignProc);
 215         op.forEachTemp(assignProc);
 216         op.forEachOutput(assignProc);
 217 
 218         // compute reference map and debug information
 219         op.forEachState(debugInfoProc);
 220 
 221         // remove useless moves
 222         if (ValueMoveOp.isValueMoveOp(op)) {
 223             ValueMoveOp move = ValueMoveOp.asValueMoveOp(op);
 224             if (move.getInput().equals(move.getResult())) {
 225                 return true;
 226             }
 227         }
 228         return false;
 229     }
 230 
 231     @SuppressWarnings("try")
 232     private void assignLocations() {
 233         try (Indent indent = Debug.logAndIndent("assign locations")) {

 234             for (AbstractBlockBase<?> block : allocator.sortedBlocks()) {
 235                 try (Indent indent2 = Debug.logAndIndent("assign locations in block B%d", block.getId())) {
 236                     assignLocations(allocator.getLIR().getLIRforBlock(block));
 237                 }
 238             }
 239         }
 240     }
 241 }


  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.lir.alloc.lsra;
  24 
  25 import static jdk.vm.ci.code.ValueUtil.isIllegal;
  26 import static org.graalvm.compiler.lir.LIRValueUtil.isJavaConstant;
  27 import static org.graalvm.compiler.lir.LIRValueUtil.isStackSlotValue;
  28 import static org.graalvm.compiler.lir.LIRValueUtil.isVariable;
  29 import static org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot;
  30 
  31 import java.util.ArrayList;
  32 import java.util.Collections;
  33 import java.util.EnumSet;
  34 
  35 import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
  36 import org.graalvm.compiler.debug.DebugContext;
  37 import org.graalvm.compiler.debug.Indent;
  38 import org.graalvm.compiler.lir.ConstantValue;
  39 import org.graalvm.compiler.lir.InstructionValueProcedure;
  40 import org.graalvm.compiler.lir.LIRInstruction;
  41 import org.graalvm.compiler.lir.LIRInstruction.OperandFlag;
  42 import org.graalvm.compiler.lir.LIRInstruction.OperandMode;
  43 import org.graalvm.compiler.lir.StandardOp;
  44 import org.graalvm.compiler.lir.StandardOp.MoveOp;
  45 import org.graalvm.compiler.lir.StandardOp.ValueMoveOp;
  46 import org.graalvm.compiler.lir.Variable;
  47 import org.graalvm.compiler.lir.gen.LIRGenerationResult;
  48 import org.graalvm.compiler.lir.phases.AllocationPhase.AllocationContext;
  49 
  50 import jdk.vm.ci.code.TargetDescription;
  51 import jdk.vm.ci.meta.AllocatableValue;
  52 import jdk.vm.ci.meta.Value;
  53 
  54 /**
  55  * Phase 7: Assign register numbers back to LIR.
  56  */


 213         op.forEachInput(assignProc);
 214         op.forEachAlive(assignProc);
 215         op.forEachTemp(assignProc);
 216         op.forEachOutput(assignProc);
 217 
 218         // compute reference map and debug information
 219         op.forEachState(debugInfoProc);
 220 
 221         // remove useless moves
 222         if (ValueMoveOp.isValueMoveOp(op)) {
 223             ValueMoveOp move = ValueMoveOp.asValueMoveOp(op);
 224             if (move.getInput().equals(move.getResult())) {
 225                 return true;
 226             }
 227         }
 228         return false;
 229     }
 230 
 231     @SuppressWarnings("try")
 232     private void assignLocations() {
 233         DebugContext debug = allocator.getDebug();
 234         try (Indent indent = debug.logAndIndent("assign locations")) {
 235             for (AbstractBlockBase<?> block : allocator.sortedBlocks()) {
 236                 try (Indent indent2 = debug.logAndIndent("assign locations in block B%d", block.getId())) {
 237                     assignLocations(allocator.getLIR().getLIRforBlock(block));
 238                 }
 239             }
 240         }
 241     }
 242 }
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/alloc/lsra/LinearScanAssignLocationsPhase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File