Mercurial > hg > graal-jvmci-8
changeset 19534:9299e71df12a
[SPARC] Save all registers for foreign calls
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Sun, 22 Feb 2015 07:42:06 +0100 |
parents | 863c42893cc4 |
children | fac54d234f30 |
files | graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java |
diffstat | 2 files changed, 10 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Sat Feb 21 22:26:55 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Sun Feb 22 07:42:06 2015 +0100 @@ -93,10 +93,14 @@ @SuppressWarnings("unused") private static Value[] createNativeABICallerSaveRegisters(HotSpotVMConfig config, RegisterConfig regConfig) { - Register[] calleeSaveRegisters = regConfig.getCallerSaveRegisters(); - Value[] nativeABICallerSaveRegisters = new Value[calleeSaveRegisters.length]; - for (int i = 0; i < calleeSaveRegisters.length; i++) { - nativeABICallerSaveRegisters[i] = calleeSaveRegisters[i].asValue(); + List<Register> callerSaveRegisters = new ArrayList<>(); + Collections.addAll(callerSaveRegisters, regConfig.getCallerSaveRegisters()); + // TODO: Saving callee saved registers as well seems unneccessary, however as of now it does + // not work without; needs further investigation + Collections.addAll(callerSaveRegisters, regConfig.getCalleeSaveLayout().registers); + Value[] nativeABICallerSaveRegisters = new Value[callerSaveRegisters.size()]; + for (int i = 0; i < callerSaveRegisters.size(); i++) { + nativeABICallerSaveRegisters[i] = callerSaveRegisters.get(i).asValue(); } return nativeABICallerSaveRegisters; }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java Sat Feb 21 22:26:55 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java Sun Feb 22 07:42:06 2015 +0100 @@ -92,7 +92,8 @@ private final Register[] fpuParameterRegisters = {f0, f1, f2, f3, f4, f5, f6, f7}; // @formatter:off private final Register[] callerSaveRegisters = - {g1, g3, g4, g5, o0, o1, o2, o3, o4, o5, o7, + {g1, g2, g3, g4, g5, g6, g7, + o0, o1, o2, o3, o4, o5, o7, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23,