src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGenerator.java
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 54328 37648a9c4a6a
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
    57 import org.graalvm.compiler.lir.LIRVerifier;
    57 import org.graalvm.compiler.lir.LIRVerifier;
    58 import org.graalvm.compiler.lir.LabelRef;
    58 import org.graalvm.compiler.lir.LabelRef;
    59 import org.graalvm.compiler.lir.StandardOp;
    59 import org.graalvm.compiler.lir.StandardOp;
    60 import org.graalvm.compiler.lir.StandardOp.BlockEndOp;
    60 import org.graalvm.compiler.lir.StandardOp.BlockEndOp;
    61 import org.graalvm.compiler.lir.StandardOp.LabelOp;
    61 import org.graalvm.compiler.lir.StandardOp.LabelOp;
    62 import org.graalvm.compiler.lir.StandardOp.SaveRegistersOp;
    62 import org.graalvm.compiler.lir.StandardOp.ZapRegistersOp;
    63 import org.graalvm.compiler.lir.hashing.Hasher;
       
    64 import org.graalvm.compiler.lir.SwitchStrategy;
    63 import org.graalvm.compiler.lir.SwitchStrategy;
    65 import org.graalvm.compiler.lir.Variable;
    64 import org.graalvm.compiler.lir.Variable;
       
    65 import org.graalvm.compiler.lir.hashing.Hasher;
    66 import org.graalvm.compiler.options.Option;
    66 import org.graalvm.compiler.options.Option;
    67 import org.graalvm.compiler.options.OptionKey;
    67 import org.graalvm.compiler.options.OptionKey;
    68 import org.graalvm.compiler.options.OptionType;
    68 import org.graalvm.compiler.options.OptionType;
    69 import org.graalvm.compiler.options.OptionValues;
    69 import org.graalvm.compiler.options.OptionValues;
    70 
    70 
   228     public void emitMove(AllocatableValue dst, Value src) {
   228     public void emitMove(AllocatableValue dst, Value src) {
   229         append(moveFactory.createMove(dst, src));
   229         append(moveFactory.createMove(dst, src));
   230     }
   230     }
   231 
   231 
   232     @Override
   232     @Override
       
   233     public Variable emitReadRegister(Register register, ValueKind<?> kind) {
       
   234         return emitMove(register.asValue(kind));
       
   235     }
       
   236 
       
   237     @Override
       
   238     public void emitWriteRegister(Register dst, Value src, ValueKind<?> kind) {
       
   239         emitMove(dst.asValue(kind), src);
       
   240     }
       
   241 
       
   242     @Override
   233     public void emitMoveConstant(AllocatableValue dst, Constant src) {
   243     public void emitMoveConstant(AllocatableValue dst, Constant src) {
   234         append(moveFactory.createLoad(dst, src));
   244         append(moveFactory.createLoad(dst, src));
       
   245     }
       
   246 
       
   247     @Override
       
   248     public boolean canInlineConstant(Constant constant) {
       
   249         return moveFactory.canInlineConstant(constant);
       
   250     }
       
   251 
       
   252     @Override
       
   253     public boolean mayEmbedConstantLoad(Constant constant) {
       
   254         return moveFactory.mayEmbedConstantLoad(constant);
   235     }
   255     }
   236 
   256 
   237     @Override
   257     @Override
   238     public Value emitConstant(LIRKind kind, Constant constant) {
   258     public Value emitConstant(LIRKind kind, Constant constant) {
   239         if (moveFactory.canInlineConstant(constant)) {
   259         if (moveFactory.canInlineConstant(constant)) {
   582     public LIRInstruction createMultiBenchmarkCounter(String[] names, String[] groups, Value[] increments) {
   602     public LIRInstruction createMultiBenchmarkCounter(String[] names, String[] groups, Value[] increments) {
   583         throw GraalError.unimplemented();
   603         throw GraalError.unimplemented();
   584     }
   604     }
   585 
   605 
   586     @Override
   606     @Override
   587     public abstract SaveRegistersOp createZapRegisters(Register[] zappedRegisters, JavaConstant[] zapValues);
   607     public abstract ZapRegistersOp createZapRegisters(Register[] zappedRegisters, JavaConstant[] zapValues);
   588 
   608 
   589     @Override
   609     @Override
   590     public SaveRegistersOp createZapRegisters() {
   610     public ZapRegistersOp createZapRegisters() {
   591         Register[] zappedRegisters = getResult().getFrameMap().getRegisterConfig().getAllocatableRegisters().toArray();
   611         Register[] zappedRegisters = getResult().getFrameMap().getRegisterConfig().getAllocatableRegisters().toArray();
       
   612         return createZapRegisters(zappedRegisters);
       
   613     }
       
   614 
       
   615     @Override
       
   616     public ZapRegistersOp createZapRegisters(Register[] zappedRegisters) {
   592         JavaConstant[] zapValues = new JavaConstant[zappedRegisters.length];
   617         JavaConstant[] zapValues = new JavaConstant[zappedRegisters.length];
   593         for (int i = 0; i < zappedRegisters.length; i++) {
   618         for (int i = 0; i < zappedRegisters.length; i++) {
   594             PlatformKind kind = target().arch.getLargestStorableKind(zappedRegisters[i].getRegisterCategory());
   619             PlatformKind kind = target().arch.getLargestStorableKind(zappedRegisters[i].getRegisterCategory());
   595             zapValues[i] = zapValueForKind(kind);
   620             zapValues[i] = zapValueForKind(kind);
   596         }
   621         }