< prev index next >

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

Print this page
rev 56282 : [mq]: graal


  42 import org.graalvm.compiler.core.common.calc.Condition;
  43 import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
  44 import org.graalvm.compiler.core.common.spi.CodeGenProviders;
  45 import org.graalvm.compiler.core.common.spi.ForeignCallLinkage;
  46 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
  47 import org.graalvm.compiler.core.common.spi.LIRKindTool;
  48 import org.graalvm.compiler.core.common.type.Stamp;
  49 import org.graalvm.compiler.debug.DebugCloseable;
  50 import org.graalvm.compiler.debug.GraalError;
  51 import org.graalvm.compiler.debug.TTY;
  52 import org.graalvm.compiler.graph.NodeSourcePosition;
  53 import org.graalvm.compiler.lir.ConstantValue;
  54 import org.graalvm.compiler.lir.LIR;
  55 import org.graalvm.compiler.lir.LIRFrameState;
  56 import org.graalvm.compiler.lir.LIRInstruction;
  57 import org.graalvm.compiler.lir.LIRVerifier;
  58 import org.graalvm.compiler.lir.LabelRef;
  59 import org.graalvm.compiler.lir.StandardOp;
  60 import org.graalvm.compiler.lir.StandardOp.BlockEndOp;
  61 import org.graalvm.compiler.lir.StandardOp.LabelOp;
  62 import org.graalvm.compiler.lir.StandardOp.SaveRegistersOp;
  63 import org.graalvm.compiler.lir.SwitchStrategy;
  64 import org.graalvm.compiler.lir.Variable;
  65 import org.graalvm.compiler.lir.hashing.Hasher;
  66 import org.graalvm.compiler.options.Option;
  67 import org.graalvm.compiler.options.OptionKey;
  68 import org.graalvm.compiler.options.OptionType;
  69 import org.graalvm.compiler.options.OptionValues;
  70 
  71 import jdk.vm.ci.code.CallingConvention;
  72 import jdk.vm.ci.code.CodeCacheProvider;
  73 import jdk.vm.ci.code.Register;
  74 import jdk.vm.ci.code.RegisterAttributes;
  75 import jdk.vm.ci.code.RegisterConfig;
  76 import jdk.vm.ci.code.StackSlot;
  77 import jdk.vm.ci.code.TargetDescription;
  78 import jdk.vm.ci.meta.AllocatableValue;
  79 import jdk.vm.ci.meta.Constant;
  80 import jdk.vm.ci.meta.JavaConstant;
  81 import jdk.vm.ci.meta.JavaKind;
  82 import jdk.vm.ci.meta.MetaAccessProvider;


 587     public LIRGenerationResult getResult() {
 588         return res;
 589     }
 590 
 591     @Override
 592     public void emitBlackhole(Value operand) {
 593         append(new StandardOp.BlackholeOp(operand));
 594     }
 595 
 596     @Override
 597     public LIRInstruction createBenchmarkCounter(String name, String group, Value increment) {
 598         throw GraalError.unimplemented();
 599     }
 600 
 601     @Override
 602     public LIRInstruction createMultiBenchmarkCounter(String[] names, String[] groups, Value[] increments) {
 603         throw GraalError.unimplemented();
 604     }
 605 
 606     @Override
 607     public abstract SaveRegistersOp createZapRegisters(Register[] zappedRegisters, JavaConstant[] zapValues);
 608 
 609     @Override
 610     public SaveRegistersOp createZapRegisters() {
 611         Register[] zappedRegisters = getResult().getFrameMap().getRegisterConfig().getAllocatableRegisters().toArray();





 612         JavaConstant[] zapValues = new JavaConstant[zappedRegisters.length];
 613         for (int i = 0; i < zappedRegisters.length; i++) {
 614             PlatformKind kind = target().arch.getLargestStorableKind(zappedRegisters[i].getRegisterCategory());
 615             zapValues[i] = zapValueForKind(kind);
 616         }
 617         return createZapRegisters(zappedRegisters, zapValues);
 618     }
 619 
 620     @Override
 621     public abstract LIRInstruction createZapArgumentSpace(StackSlot[] zappedStack, JavaConstant[] zapValues);
 622 
 623     @Override
 624     public LIRInstruction zapArgumentSpace() {
 625         List<StackSlot> slots = null;
 626         for (AllocatableValue arg : res.getCallingConvention().getArguments()) {
 627             if (isStackSlot(arg)) {
 628                 if (slots == null) {
 629                     slots = new ArrayList<>();
 630                 }
 631                 slots.add((StackSlot) arg);


  42 import org.graalvm.compiler.core.common.calc.Condition;
  43 import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
  44 import org.graalvm.compiler.core.common.spi.CodeGenProviders;
  45 import org.graalvm.compiler.core.common.spi.ForeignCallLinkage;
  46 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
  47 import org.graalvm.compiler.core.common.spi.LIRKindTool;
  48 import org.graalvm.compiler.core.common.type.Stamp;
  49 import org.graalvm.compiler.debug.DebugCloseable;
  50 import org.graalvm.compiler.debug.GraalError;
  51 import org.graalvm.compiler.debug.TTY;
  52 import org.graalvm.compiler.graph.NodeSourcePosition;
  53 import org.graalvm.compiler.lir.ConstantValue;
  54 import org.graalvm.compiler.lir.LIR;
  55 import org.graalvm.compiler.lir.LIRFrameState;
  56 import org.graalvm.compiler.lir.LIRInstruction;
  57 import org.graalvm.compiler.lir.LIRVerifier;
  58 import org.graalvm.compiler.lir.LabelRef;
  59 import org.graalvm.compiler.lir.StandardOp;
  60 import org.graalvm.compiler.lir.StandardOp.BlockEndOp;
  61 import org.graalvm.compiler.lir.StandardOp.LabelOp;
  62 import org.graalvm.compiler.lir.StandardOp.ZapRegistersOp;
  63 import org.graalvm.compiler.lir.SwitchStrategy;
  64 import org.graalvm.compiler.lir.Variable;
  65 import org.graalvm.compiler.lir.hashing.Hasher;
  66 import org.graalvm.compiler.options.Option;
  67 import org.graalvm.compiler.options.OptionKey;
  68 import org.graalvm.compiler.options.OptionType;
  69 import org.graalvm.compiler.options.OptionValues;
  70 
  71 import jdk.vm.ci.code.CallingConvention;
  72 import jdk.vm.ci.code.CodeCacheProvider;
  73 import jdk.vm.ci.code.Register;
  74 import jdk.vm.ci.code.RegisterAttributes;
  75 import jdk.vm.ci.code.RegisterConfig;
  76 import jdk.vm.ci.code.StackSlot;
  77 import jdk.vm.ci.code.TargetDescription;
  78 import jdk.vm.ci.meta.AllocatableValue;
  79 import jdk.vm.ci.meta.Constant;
  80 import jdk.vm.ci.meta.JavaConstant;
  81 import jdk.vm.ci.meta.JavaKind;
  82 import jdk.vm.ci.meta.MetaAccessProvider;


 587     public LIRGenerationResult getResult() {
 588         return res;
 589     }
 590 
 591     @Override
 592     public void emitBlackhole(Value operand) {
 593         append(new StandardOp.BlackholeOp(operand));
 594     }
 595 
 596     @Override
 597     public LIRInstruction createBenchmarkCounter(String name, String group, Value increment) {
 598         throw GraalError.unimplemented();
 599     }
 600 
 601     @Override
 602     public LIRInstruction createMultiBenchmarkCounter(String[] names, String[] groups, Value[] increments) {
 603         throw GraalError.unimplemented();
 604     }
 605 
 606     @Override
 607     public abstract ZapRegistersOp createZapRegisters(Register[] zappedRegisters, JavaConstant[] zapValues);
 608 
 609     @Override
 610     public ZapRegistersOp createZapRegisters() {
 611         Register[] zappedRegisters = getResult().getFrameMap().getRegisterConfig().getAllocatableRegisters().toArray();
 612         return createZapRegisters(zappedRegisters);
 613     }
 614 
 615     @Override
 616     public ZapRegistersOp createZapRegisters(Register[] zappedRegisters) {
 617         JavaConstant[] zapValues = new JavaConstant[zappedRegisters.length];
 618         for (int i = 0; i < zappedRegisters.length; i++) {
 619             PlatformKind kind = target().arch.getLargestStorableKind(zappedRegisters[i].getRegisterCategory());
 620             zapValues[i] = zapValueForKind(kind);
 621         }
 622         return createZapRegisters(zappedRegisters, zapValues);
 623     }
 624 
 625     @Override
 626     public abstract LIRInstruction createZapArgumentSpace(StackSlot[] zappedStack, JavaConstant[] zapValues);
 627 
 628     @Override
 629     public LIRInstruction zapArgumentSpace() {
 630         List<StackSlot> slots = null;
 631         for (AllocatableValue arg : res.getCallingConvention().getArguments()) {
 632             if (isStackSlot(arg)) {
 633                 if (slots == null) {
 634                     slots = new ArrayList<>();
 635                 }
 636                 slots.add((StackSlot) arg);
< prev index next >