Mercurial > hg > graal-jvmci-8
changeset 22786:ac649db7fec4
Use a reserved registers array in initAllocatable.
author | twisti |
---|---|
date | Fri, 22 Jan 2016 12:48:57 -1000 |
parents | 7d014b014ce7 |
children | dd9cc155639c |
files | jvmci/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotRegisterConfig.java jvmci/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotRegisterConfig.java |
diffstat | 2 files changed, 14 insertions(+), 6 deletions(-) [+] |
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)) {
--- a/jvmci/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotRegisterConfig.java Fri Jan 22 12:48:29 2016 -1000 +++ b/jvmci/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotRegisterConfig.java Fri Jan 22 12:48:57 2016 -1000 @@ -68,6 +68,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.List; import jdk.vm.ci.code.Architecture; import jdk.vm.ci.code.CallingConvention; @@ -140,14 +141,17 @@ i0, i1, i2, i3, i4, i5, i6, i7}; // @formatter:on + private static final Register[] reservedRegisters = {sp, g0, g2}; + private static Register[] initAllocatable(Architecture arch, boolean reserveForHeapBase) { Register[] allRegisters = arch.getAvailableValueRegisters(); - Register[] registers = new Register[allRegisters.length - (reserveForHeapBase ? 4 : 3)]; + 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(sp) || reg.equals(g2) || reg.equals(g0)) { - // skip g0, stack pointer and thread register + if (reservedRegistersList.contains(reg)) { + // skip reserved registers continue; } if (reserveForHeapBase && reg.equals(g6)) {