changeset 19599:3ba5b1c55996

[SPARC] Configure caller saved register with FPU registers
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Thu, 26 Feb 2015 11:26:34 +0100
parents 15ef24874df7
children b92530cb27df
files graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java
diffstat 1 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java	Wed Feb 25 19:13:16 2015 -0800
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java	Thu Feb 26 11:26:34 2015 +0100
@@ -93,14 +93,14 @@
 
     @SuppressWarnings("unused")
     private static Value[] createNativeABICallerSaveRegisters(HotSpotVMConfig config, RegisterConfig regConfig) {
-        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();
+        Set<Register> callerSavedRegisters = new HashSet<>();
+        Collections.addAll(callerSavedRegisters, regConfig.getCalleeSaveLayout().registers);
+        Collections.addAll(callerSavedRegisters, SPARC.fpuRegisters);
+        Value[] nativeABICallerSaveRegisters = new Value[callerSavedRegisters.size()];
+        int i = 0;
+        for (Register reg : callerSavedRegisters) {
+            nativeABICallerSaveRegisters[i] = reg.asValue();
+            i++;
         }
         return nativeABICallerSaveRegisters;
     }