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 open 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.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;
  54 import org.graalvm.compiler.lir.LIRFrameState;


 185                 localA = load(localA);
 186             }
 187         }
 188         if (isConstantValue(b)) {
 189             Constant c = asConstant(b);
 190             if (HotSpotCompressedNullConstant.COMPRESSED_NULL.equals(c)) {
 191                 localB = AArch64.zr.asValue(LIRKind.value(AArch64Kind.DWORD));
 192             } else if (c instanceof HotSpotObjectConstant) {
 193                 localB = load(localB);
 194             }
 195         }
 196         return super.emitCompare(cmpKind, localA, localB, condition, unorderedIsTrue);
 197     }
 198 
 199     @Override
 200     public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
 201         LIRKind inputKind = pointer.getValueKind(LIRKind.class);
 202         assert inputKind.getPlatformKind() == AArch64Kind.QWORD;
 203         if (inputKind.isReference(0)) {
 204             // oop
 205             Variable result = newVariable(LIRKind.reference(AArch64Kind.DWORD));
 206             append(new AArch64HotSpotMove.CompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
 207             return result;
 208         } else {
 209             // metaspace pointer
 210             Variable result = newVariable(LIRKind.value(AArch64Kind.DWORD));
 211             AllocatableValue base = Value.ILLEGAL;
 212             if (encoding.hasBase()) {
 213                 base = emitLoadConstant(LIRKind.value(AArch64Kind.QWORD), JavaConstant.forLong(encoding.getBase()));
 214             }
 215             append(new AArch64HotSpotMove.CompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
 216             return result;
 217         }
 218     }
 219 
 220     @Override
 221     public Value emitUncompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
 222         LIRKind inputKind = pointer.getValueKind(LIRKind.class);
 223         assert inputKind.getPlatformKind() == AArch64Kind.DWORD;
 224         if (inputKind.isReference(0)) {
 225             // oop




  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.asm.aarch64.AArch64Assembler.PrefetchMode;
  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;
  54 import org.graalvm.compiler.lir.LIRFrameState;


 185                 localA = load(localA);
 186             }
 187         }
 188         if (isConstantValue(b)) {
 189             Constant c = asConstant(b);
 190             if (HotSpotCompressedNullConstant.COMPRESSED_NULL.equals(c)) {
 191                 localB = AArch64.zr.asValue(LIRKind.value(AArch64Kind.DWORD));
 192             } else if (c instanceof HotSpotObjectConstant) {
 193                 localB = load(localB);
 194             }
 195         }
 196         return super.emitCompare(cmpKind, localA, localB, condition, unorderedIsTrue);
 197     }
 198 
 199     @Override
 200     public Value emitCompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
 201         LIRKind inputKind = pointer.getValueKind(LIRKind.class);
 202         assert inputKind.getPlatformKind() == AArch64Kind.QWORD;
 203         if (inputKind.isReference(0)) {
 204             // oop
 205             Variable result = newVariable(LIRKind.compressedReference(AArch64Kind.DWORD));
 206             append(new AArch64HotSpotMove.CompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding, nonNull));
 207             return result;
 208         } else {
 209             // metaspace pointer
 210             Variable result = newVariable(LIRKind.value(AArch64Kind.DWORD));
 211             AllocatableValue base = Value.ILLEGAL;
 212             if (encoding.hasBase()) {
 213                 base = emitLoadConstant(LIRKind.value(AArch64Kind.QWORD), JavaConstant.forLong(encoding.getBase()));
 214             }
 215             append(new AArch64HotSpotMove.CompressPointer(result, asAllocatable(pointer), base, encoding, nonNull));
 216             return result;
 217         }
 218     }
 219 
 220     @Override
 221     public Value emitUncompress(Value pointer, CompressEncoding encoding, boolean nonNull) {
 222         LIRKind inputKind = pointer.getValueKind(LIRKind.class);
 223         assert inputKind.getPlatformKind() == AArch64Kind.DWORD;
 224         if (inputKind.isReference(0)) {
 225             // oop


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