< prev index next >

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java

Print this page




 109     @Override
 110     public RegisterAttributes[] getAttributesMap() {
 111         return attributesMap.clone();
 112     }
 113 
 114     private final RegisterArray javaGeneralParameterRegisters = new RegisterArray(r1, r2, r3, r4, r5, r6, r7, r0);
 115     private final RegisterArray nativeGeneralParameterRegisters = new RegisterArray(r0, r1, r2, r3, r4, r5, r6, r7);
 116     private final RegisterArray simdParameterRegisters = new RegisterArray(v0, v1, v2, v3, v4, v5, v6, v7);
 117 
 118     public static final Register inlineCacheRegister = rscratch2;
 119 
 120     /**
 121      * Vtable stubs expect the metaspace Method in r12.
 122      */
 123     public static final Register metaspaceMethodRegister = r12;
 124 
 125     public static final Register heapBaseRegister = r27;
 126     public static final Register threadRegister = r28;
 127     public static final Register fp = r29;
 128 
 129     private static final RegisterArray reservedRegisters
 130         = new RegisterArray(rscratch1, rscratch2, threadRegister, fp, lr, r31, zr, sp);
 131 
 132     private static RegisterArray initAllocatable(Architecture arch, boolean reserveForHeapBase) {
 133         RegisterArray allRegisters = arch.getAvailableValueRegisters();
 134         Register[] registers = new Register[allRegisters.size() - reservedRegisters.size() - (reserveForHeapBase ? 1 : 0)];
 135         List<Register> reservedRegistersList = reservedRegisters.asList();
 136 
 137         int idx = 0;
 138         for (Register reg : allRegisters) {
 139             if (reservedRegistersList.contains(reg)) {
 140                 // skip reserved registers
 141                 continue;
 142             }
 143             assert !(reg.equals(threadRegister) || reg.equals(fp) || reg.equals(lr) || reg.equals(r31) || reg.equals(zr) || reg.equals(sp));
 144             if (reserveForHeapBase && reg.equals(heapBaseRegister)) {
 145                 // skip heap base register
 146                 continue;
 147             }
 148 
 149             registers[idx++] = reg;
 150         }




 109     @Override
 110     public RegisterAttributes[] getAttributesMap() {
 111         return attributesMap.clone();
 112     }
 113 
 114     private final RegisterArray javaGeneralParameterRegisters = new RegisterArray(r1, r2, r3, r4, r5, r6, r7, r0);
 115     private final RegisterArray nativeGeneralParameterRegisters = new RegisterArray(r0, r1, r2, r3, r4, r5, r6, r7);
 116     private final RegisterArray simdParameterRegisters = new RegisterArray(v0, v1, v2, v3, v4, v5, v6, v7);
 117 
 118     public static final Register inlineCacheRegister = rscratch2;
 119 
 120     /**
 121      * Vtable stubs expect the metaspace Method in r12.
 122      */
 123     public static final Register metaspaceMethodRegister = r12;
 124 
 125     public static final Register heapBaseRegister = r27;
 126     public static final Register threadRegister = r28;
 127     public static final Register fp = r29;
 128 
 129     private static final RegisterArray reservedRegisters = new RegisterArray(rscratch1, rscratch2, threadRegister, fp, lr, r31, zr, sp);

 130 
 131     private static RegisterArray initAllocatable(Architecture arch, boolean reserveForHeapBase) {
 132         RegisterArray allRegisters = arch.getAvailableValueRegisters();
 133         Register[] registers = new Register[allRegisters.size() - reservedRegisters.size() - (reserveForHeapBase ? 1 : 0)];
 134         List<Register> reservedRegistersList = reservedRegisters.asList();
 135 
 136         int idx = 0;
 137         for (Register reg : allRegisters) {
 138             if (reservedRegistersList.contains(reg)) {
 139                 // skip reserved registers
 140                 continue;
 141             }
 142             assert !(reg.equals(threadRegister) || reg.equals(fp) || reg.equals(lr) || reg.equals(r31) || reg.equals(zr) || reg.equals(sp));
 143             if (reserveForHeapBase && reg.equals(heapBaseRegister)) {
 144                 // skip heap base register
 145                 continue;
 146             }
 147 
 148             registers[idx++] = reg;
 149         }


< prev index next >