Mercurial > hg > graal-jvmci-8
diff jvmci/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotRegisterConfig.java @ 22786:ac649db7fec4
Use a reserved registers array in initAllocatable.
author | twisti |
---|---|
date | Fri, 22 Jan 2016 12:48:57 -1000 |
parents | 0ab4d816a7f0 |
children | a920338dd4d4 |
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotRegisterConfig.java Fri Jan 22 12:48:29 2016 -1000 +++ b/jvmci/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotRegisterConfig.java Fri Jan 22 12:48:57 2016 -1000 @@ -45,6 +45,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Set; import jdk.vm.ci.code.Architecture; @@ -119,14 +120,17 @@ */ private final boolean needsNativeStackHomeSpace; + private static final Register[] reservedRegisters = {rsp, r15}; + private static Register[] initAllocatable(Architecture arch, boolean reserveForHeapBase) { Register[] allRegisters = arch.getAvailableValueRegisters(); - Register[] registers = new Register[allRegisters.length - (reserveForHeapBase ? 3 : 2)]; + Register[] registers = new Register[allRegisters.length - reservedRegisters.length - (reserveForHeapBase ? 1 : 0)]; + List<Register> reservedRegistersList = Arrays.asList(reservedRegisters); int idx = 0; for (Register reg : allRegisters) { - if (reg.equals(rsp) || reg.equals(r15)) { - // skip stack pointer and thread register + if (reservedRegistersList.contains(reg)) { + // skip reserved registers continue; } if (reserveForHeapBase && reg.equals(r12)) {