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

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotLIRGenerator.java

Print this page




  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  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 
  24 package org.graalvm.compiler.hotspot.aarch64;
  25 
  26 import static org.graalvm.compiler.lir.LIRValueUtil.asConstant;
  27 import static org.graalvm.compiler.lir.LIRValueUtil.isConstantValue;
  28 
  29 import java.util.function.Function;
  30 
  31 import org.graalvm.compiler.asm.Label;
  32 import org.graalvm.compiler.asm.aarch64.AArch64Address.AddressingMode;

  33 import org.graalvm.compiler.asm.aarch64.AArch64Assembler.ConditionFlag;
  34 import org.graalvm.compiler.core.aarch64.AArch64ArithmeticLIRGenerator;
  35 import org.graalvm.compiler.core.aarch64.AArch64LIRGenerator;
  36 import org.graalvm.compiler.core.aarch64.AArch64LIRKindTool;
  37 import org.graalvm.compiler.core.common.CompressEncoding;
  38 import org.graalvm.compiler.core.common.LIRKind;
  39 import org.graalvm.compiler.core.common.calc.Condition;
  40 import org.graalvm.compiler.core.common.spi.ForeignCallLinkage;
  41 import org.graalvm.compiler.core.common.spi.LIRKindTool;
  42 import org.graalvm.compiler.debug.GraalError;
  43 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  44 import org.graalvm.compiler.hotspot.HotSpotBackend;
  45 import org.graalvm.compiler.hotspot.HotSpotDebugInfoBuilder;
  46 import org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage;
  47 import org.graalvm.compiler.hotspot.HotSpotLIRGenerationResult;
  48 import org.graalvm.compiler.hotspot.HotSpotLIRGenerator;
  49 import org.graalvm.compiler.hotspot.HotSpotLockStack;
  50 import org.graalvm.compiler.hotspot.meta.HotSpotProviders;
  51 import org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider;
  52 import org.graalvm.compiler.hotspot.stubs.Stub;


 233                 base = emitLoadConstant(LIRKind.value(AArch64Kind.QWORD), JavaConstant.forLong(encoding.getBase()));
 234             }
 235             append(new AArch64HotSpotMove.UncompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
 236             return result;
 237         }
 238     }
 239 
 240     @Override
 241     public void emitNullCheck(Value address, LIRFrameState state) {
 242         if (address.getValueKind().getPlatformKind() == AArch64Kind.DWORD) {
 243             CompressEncoding encoding = config.getOopEncoding();
 244             Value uncompressed = emitUncompress(address, encoding, false);
 245             append(new AArch64Move.NullCheckOp(asAddressValue(uncompressed), state));
 246         } else {
 247             super.emitNullCheck(address, state);
 248         }
 249     }
 250 
 251     @Override
 252     public void emitPrefetchAllocate(Value address) {
 253         append(new AArch64PrefetchOp(asAddressValue(address), config.allocatePrefetchInstr));
 254     }
 255 
 256     @Override
 257     public void beforeRegisterAllocation() {
 258         super.beforeRegisterAllocation();
 259         boolean hasDebugInfo = getResult().getLIR().hasDebugInfo();
 260         if (hasDebugInfo) {
 261             getResult().setDeoptimizationRescueSlot(((AArch64FrameMapBuilder) getResult().getFrameMapBuilder()).allocateDeoptimizationRescueSlot());
 262         }
 263 
 264         getResult().setMaxInterpreterFrameSize(debugInfoBuilder.maxInterpreterFrameSize());
 265     }
 266 
 267     private Label label;
 268 
 269     @Override
 270     public Variable emitForeignCall(ForeignCallLinkage linkage, LIRFrameState state, Value... args) {
 271         HotSpotForeignCallLinkage hotspotLinkage = (HotSpotForeignCallLinkage) linkage;
 272         Variable result;
 273         LIRFrameState debugInfo = null;




  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  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 
  24 package org.graalvm.compiler.hotspot.aarch64;
  25 
  26 import static org.graalvm.compiler.lir.LIRValueUtil.asConstant;
  27 import static org.graalvm.compiler.lir.LIRValueUtil.isConstantValue;
  28 
  29 import java.util.function.Function;
  30 
  31 import org.graalvm.compiler.asm.Label;
  32 import org.graalvm.compiler.asm.aarch64.AArch64Address.AddressingMode;
  33 import org.graalvm.compiler.asm.aarch64.AArch64Assembler.PrefetchMode;
  34 import org.graalvm.compiler.asm.aarch64.AArch64Assembler.ConditionFlag;
  35 import org.graalvm.compiler.core.aarch64.AArch64ArithmeticLIRGenerator;
  36 import org.graalvm.compiler.core.aarch64.AArch64LIRGenerator;
  37 import org.graalvm.compiler.core.aarch64.AArch64LIRKindTool;
  38 import org.graalvm.compiler.core.common.CompressEncoding;
  39 import org.graalvm.compiler.core.common.LIRKind;
  40 import org.graalvm.compiler.core.common.calc.Condition;
  41 import org.graalvm.compiler.core.common.spi.ForeignCallLinkage;
  42 import org.graalvm.compiler.core.common.spi.LIRKindTool;
  43 import org.graalvm.compiler.debug.GraalError;
  44 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  45 import org.graalvm.compiler.hotspot.HotSpotBackend;
  46 import org.graalvm.compiler.hotspot.HotSpotDebugInfoBuilder;
  47 import org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage;
  48 import org.graalvm.compiler.hotspot.HotSpotLIRGenerationResult;
  49 import org.graalvm.compiler.hotspot.HotSpotLIRGenerator;
  50 import org.graalvm.compiler.hotspot.HotSpotLockStack;
  51 import org.graalvm.compiler.hotspot.meta.HotSpotProviders;
  52 import org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider;
  53 import org.graalvm.compiler.hotspot.stubs.Stub;


 234                 base = emitLoadConstant(LIRKind.value(AArch64Kind.QWORD), JavaConstant.forLong(encoding.getBase()));
 235             }
 236             append(new AArch64HotSpotMove.UncompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
 237             return result;
 238         }
 239     }
 240 
 241     @Override
 242     public void emitNullCheck(Value address, LIRFrameState state) {
 243         if (address.getValueKind().getPlatformKind() == AArch64Kind.DWORD) {
 244             CompressEncoding encoding = config.getOopEncoding();
 245             Value uncompressed = emitUncompress(address, encoding, false);
 246             append(new AArch64Move.NullCheckOp(asAddressValue(uncompressed), state));
 247         } else {
 248             super.emitNullCheck(address, state);
 249         }
 250     }
 251 
 252     @Override
 253     public void emitPrefetchAllocate(Value address) {
 254         append(new AArch64PrefetchOp(asAddressValue(address), PrefetchMode.PSTL1KEEP));
 255     }
 256 
 257     @Override
 258     public void beforeRegisterAllocation() {
 259         super.beforeRegisterAllocation();
 260         boolean hasDebugInfo = getResult().getLIR().hasDebugInfo();
 261         if (hasDebugInfo) {
 262             getResult().setDeoptimizationRescueSlot(((AArch64FrameMapBuilder) getResult().getFrameMapBuilder()).allocateDeoptimizationRescueSlot());
 263         }
 264 
 265         getResult().setMaxInterpreterFrameSize(debugInfoBuilder.maxInterpreterFrameSize());
 266     }
 267 
 268     private Label label;
 269 
 270     @Override
 271     public Variable emitForeignCall(ForeignCallLinkage linkage, LIRFrameState state, Value... args) {
 272         HotSpotForeignCallLinkage hotspotLinkage = (HotSpotForeignCallLinkage) linkage;
 273         Variable result;
 274         LIRFrameState debugInfo = null;


src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotLIRGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File