src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64MoveFactory.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.core.aarch64/src/org/graalvm/compiler/core/aarch64

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64MoveFactory.java

Print this page




  69     @Override
  70     public LIRInstruction createLoad(AllocatableValue dst, Constant src) {
  71         if (src instanceof JavaConstant) {
  72             JavaConstant javaConstant = (JavaConstant) src;
  73             if (canInlineConstant(javaConstant)) {
  74                 return new AArch64Move.LoadInlineConstant(javaConstant, dst);
  75             } else {
  76                 // return new AArch64Move.LoadConstantFromTable(javaConstant,
  77                 // constantTableBaseProvider.getConstantTableBase(), dst);
  78                 return new AArch64Move.LoadInlineConstant(javaConstant, dst);
  79             }
  80         } else if (src instanceof DataPointerConstant) {
  81             return new AArch64Move.LoadDataOp(dst, (DataPointerConstant) src);
  82         } else {
  83             // throw GraalError.shouldNotReachHere(src.getClass().toString());
  84             throw GraalError.unimplemented();
  85         }
  86     }
  87 
  88     @Override
  89     public boolean canInlineConstant(JavaConstant c) {


  90         switch (c.getJavaKind()) {
  91             case Boolean:
  92             case Byte:
  93             case Char:
  94             case Short:
  95             case Int:
  96                 return AArch64MacroAssembler.isMovableImmediate(c.asInt());
  97             case Long:
  98                 return AArch64MacroAssembler.isMovableImmediate(c.asLong());
  99             case Object:
 100                 return c.isNull();
 101             default:
 102                 return false;
 103         }
 104     }


 105 
 106     @Override
 107     public boolean allowConstantToStackMove(Constant value) {
 108         return false;
 109     }
 110 
 111 }


  69     @Override
  70     public LIRInstruction createLoad(AllocatableValue dst, Constant src) {
  71         if (src instanceof JavaConstant) {
  72             JavaConstant javaConstant = (JavaConstant) src;
  73             if (canInlineConstant(javaConstant)) {
  74                 return new AArch64Move.LoadInlineConstant(javaConstant, dst);
  75             } else {
  76                 // return new AArch64Move.LoadConstantFromTable(javaConstant,
  77                 // constantTableBaseProvider.getConstantTableBase(), dst);
  78                 return new AArch64Move.LoadInlineConstant(javaConstant, dst);
  79             }
  80         } else if (src instanceof DataPointerConstant) {
  81             return new AArch64Move.LoadDataOp(dst, (DataPointerConstant) src);
  82         } else {
  83             // throw GraalError.shouldNotReachHere(src.getClass().toString());
  84             throw GraalError.unimplemented();
  85         }
  86     }
  87 
  88     @Override
  89     public boolean canInlineConstant(Constant con) {
  90         if (con instanceof JavaConstant) {
  91             JavaConstant c = (JavaConstant) con;
  92             switch (c.getJavaKind()) {
  93                 case Boolean:
  94                 case Byte:
  95                 case Char:
  96                 case Short:
  97                 case Int:
  98                     return AArch64MacroAssembler.isMovableImmediate(c.asInt());
  99                 case Long:
 100                     return AArch64MacroAssembler.isMovableImmediate(c.asLong());
 101                 case Object:
 102                     return c.isNull();
 103                 default:
 104                     return false;
 105             }
 106         }
 107         return false;
 108     }
 109 
 110     @Override
 111     public boolean allowConstantToStackMove(Constant value) {
 112         return false;
 113     }
 114 
 115 }
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64MoveFactory.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File