src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGenerator.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/gen

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGenerator.java

Print this page




  30 import static org.graalvm.compiler.lir.LIRValueUtil.isConstantValue;
  31 import static org.graalvm.compiler.lir.LIRValueUtil.isVariable;
  32 import static org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot;
  33 
  34 import java.util.ArrayList;
  35 import java.util.List;
  36 
  37 import org.graalvm.compiler.asm.Label;
  38 import org.graalvm.compiler.core.common.LIRKind;
  39 import org.graalvm.compiler.core.common.calc.Condition;
  40 import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
  41 import org.graalvm.compiler.core.common.spi.CodeGenProviders;
  42 import org.graalvm.compiler.core.common.spi.ForeignCallLinkage;
  43 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
  44 import org.graalvm.compiler.core.common.spi.LIRKindTool;
  45 import org.graalvm.compiler.core.common.type.Stamp;
  46 import org.graalvm.compiler.debug.GraalError;
  47 import org.graalvm.compiler.debug.TTY;
  48 import org.graalvm.compiler.graph.NodeSourcePosition;
  49 import org.graalvm.compiler.lir.ConstantValue;

  50 import org.graalvm.compiler.lir.LIRFrameState;
  51 import org.graalvm.compiler.lir.LIRInstruction;
  52 import org.graalvm.compiler.lir.LIRVerifier;
  53 import org.graalvm.compiler.lir.LabelRef;
  54 import org.graalvm.compiler.lir.StandardOp;
  55 import org.graalvm.compiler.lir.StandardOp.BlockEndOp;
  56 import org.graalvm.compiler.lir.StandardOp.LabelOp;
  57 import org.graalvm.compiler.lir.StandardOp.SaveRegistersOp;
  58 import org.graalvm.compiler.lir.SwitchStrategy;
  59 import org.graalvm.compiler.lir.Variable;
  60 import org.graalvm.compiler.options.Option;
  61 import org.graalvm.compiler.options.OptionKey;
  62 import org.graalvm.compiler.options.OptionType;
  63 import org.graalvm.compiler.options.OptionValues;
  64 
  65 import jdk.vm.ci.code.CallingConvention;
  66 import jdk.vm.ci.code.CodeCacheProvider;
  67 import jdk.vm.ci.code.Register;
  68 import jdk.vm.ci.code.RegisterAttributes;
  69 import jdk.vm.ci.code.StackSlot;


 285      * @param valueKind the backend type of the value being returned
 286      * @return the operand representing the ABI defined location used return a value of kind
 287      *         {@code kind}
 288      */
 289     @Override
 290     public AllocatableValue resultOperandFor(JavaKind javaKind, ValueKind<?> valueKind) {
 291         Register reg = res.getFrameMapBuilder().getRegisterConfig().getReturnRegister(javaKind);
 292         assert target().arch.canStoreValue(reg.getRegisterCategory(), valueKind.getPlatformKind()) : reg.getRegisterCategory() + " " + valueKind.getPlatformKind();
 293         return reg.asValue(valueKind);
 294     }
 295 
 296     NodeSourcePosition currentPosition;
 297 
 298     @Override
 299     public void setSourcePosition(NodeSourcePosition position) {
 300         currentPosition = position;
 301     }
 302 
 303     @Override
 304     public <I extends LIRInstruction> I append(I op) {

 305         if (printIrWithLir) {
 306             TTY.println(op.toStringWithIdPrefix());
 307             TTY.println();
 308         }
 309         assert LIRVerifier.verify(op);
 310         ArrayList<LIRInstruction> lirForBlock = res.getLIR().getLIRforBlock(getCurrentBlock());
 311         op.setPosition(currentPosition);
 312         lirForBlock.add(op);
 313         return op;
 314     }
 315 
 316     @Override
 317     public boolean hasBlockEnd(AbstractBlockBase<?> block) {
 318         ArrayList<LIRInstruction> ops = getResult().getLIR().getLIRforBlock(block);
 319         if (ops.size() == 0) {
 320             return false;
 321         }
 322         return ops.get(ops.size() - 1) instanceof BlockEndOp;
 323     }
 324 
 325     private final class BlockScopeImpl extends BlockScope {
 326 
 327         private BlockScopeImpl(AbstractBlockBase<?> block) {
 328             currentBlock = block;
 329         }
 330 




  30 import static org.graalvm.compiler.lir.LIRValueUtil.isConstantValue;
  31 import static org.graalvm.compiler.lir.LIRValueUtil.isVariable;
  32 import static org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot;
  33 
  34 import java.util.ArrayList;
  35 import java.util.List;
  36 
  37 import org.graalvm.compiler.asm.Label;
  38 import org.graalvm.compiler.core.common.LIRKind;
  39 import org.graalvm.compiler.core.common.calc.Condition;
  40 import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
  41 import org.graalvm.compiler.core.common.spi.CodeGenProviders;
  42 import org.graalvm.compiler.core.common.spi.ForeignCallLinkage;
  43 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
  44 import org.graalvm.compiler.core.common.spi.LIRKindTool;
  45 import org.graalvm.compiler.core.common.type.Stamp;
  46 import org.graalvm.compiler.debug.GraalError;
  47 import org.graalvm.compiler.debug.TTY;
  48 import org.graalvm.compiler.graph.NodeSourcePosition;
  49 import org.graalvm.compiler.lir.ConstantValue;
  50 import org.graalvm.compiler.lir.LIR;
  51 import org.graalvm.compiler.lir.LIRFrameState;
  52 import org.graalvm.compiler.lir.LIRInstruction;
  53 import org.graalvm.compiler.lir.LIRVerifier;
  54 import org.graalvm.compiler.lir.LabelRef;
  55 import org.graalvm.compiler.lir.StandardOp;
  56 import org.graalvm.compiler.lir.StandardOp.BlockEndOp;
  57 import org.graalvm.compiler.lir.StandardOp.LabelOp;
  58 import org.graalvm.compiler.lir.StandardOp.SaveRegistersOp;
  59 import org.graalvm.compiler.lir.SwitchStrategy;
  60 import org.graalvm.compiler.lir.Variable;
  61 import org.graalvm.compiler.options.Option;
  62 import org.graalvm.compiler.options.OptionKey;
  63 import org.graalvm.compiler.options.OptionType;
  64 import org.graalvm.compiler.options.OptionValues;
  65 
  66 import jdk.vm.ci.code.CallingConvention;
  67 import jdk.vm.ci.code.CodeCacheProvider;
  68 import jdk.vm.ci.code.Register;
  69 import jdk.vm.ci.code.RegisterAttributes;
  70 import jdk.vm.ci.code.StackSlot;


 286      * @param valueKind the backend type of the value being returned
 287      * @return the operand representing the ABI defined location used return a value of kind
 288      *         {@code kind}
 289      */
 290     @Override
 291     public AllocatableValue resultOperandFor(JavaKind javaKind, ValueKind<?> valueKind) {
 292         Register reg = res.getFrameMapBuilder().getRegisterConfig().getReturnRegister(javaKind);
 293         assert target().arch.canStoreValue(reg.getRegisterCategory(), valueKind.getPlatformKind()) : reg.getRegisterCategory() + " " + valueKind.getPlatformKind();
 294         return reg.asValue(valueKind);
 295     }
 296 
 297     NodeSourcePosition currentPosition;
 298 
 299     @Override
 300     public void setSourcePosition(NodeSourcePosition position) {
 301         currentPosition = position;
 302     }
 303 
 304     @Override
 305     public <I extends LIRInstruction> I append(I op) {
 306         LIR lir = res.getLIR();
 307         if (printIrWithLir) {
 308             TTY.println(op.toStringWithIdPrefix());
 309             TTY.println();
 310         }
 311         assert LIRVerifier.verify(op);
 312         ArrayList<LIRInstruction> lirForBlock = lir.getLIRforBlock(getCurrentBlock());
 313         op.setPosition(currentPosition);
 314         lirForBlock.add(op);
 315         return op;
 316     }
 317 
 318     @Override
 319     public boolean hasBlockEnd(AbstractBlockBase<?> block) {
 320         ArrayList<LIRInstruction> ops = getResult().getLIR().getLIRforBlock(block);
 321         if (ops.size() == 0) {
 322             return false;
 323         }
 324         return ops.get(ops.size() - 1) instanceof BlockEndOp;
 325     }
 326 
 327     private final class BlockScopeImpl extends BlockScope {
 328 
 329         private BlockScopeImpl(AbstractBlockBase<?> block) {
 330             currentBlock = block;
 331         }
 332 


src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File