comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRegisterConfig.java @ 1468:e4cd5d2de7e1

Changes to sync with CRI changes.
author Doug Simon <doug.simon@oracle.com>
date Fri, 19 Nov 2010 00:26:51 +0100
parents 43a93774d24f
children ef7761803480
comparison
equal deleted inserted replaced
1467:c0de7306803c 1468:e4cd5d2de7e1
65 65
66 private final CiRegister[] generalParameterRegisters; 66 private final CiRegister[] generalParameterRegisters;
67 private final CiRegister[] xmmParameterRegisters = {xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7}; 67 private final CiRegister[] xmmParameterRegisters = {xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7};
68 private final CiRegister[] allParameterRegisters; 68 private final CiRegister[] allParameterRegisters;
69 69
70 public static final CiRegisterSaveArea RSA; 70 public static final CiCalleeSaveArea RSA;
71 static { 71 static {
72 int offset = 0;
73 CiRegister[] rsaRegs = { 72 CiRegister[] rsaRegs = {
74 rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi, 73 rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi,
75 r8, r9, r10, r11, r12, r13, r14, r15, 74 r8, r9, r10, r11, r12, r13, r14, r15,
76 xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, 75 xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
77 xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15 76 xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15
78 }; 77 };
79 Map<CiRegister, Integer> registerOffsets = new HashMap<CiRegister, Integer>(rsaRegs.length); 78 RSA = new CiCalleeSaveArea(-1, rsaRegs, 8);
80 for (CiRegister reg : rsaRegs) {
81 registerOffsets.put(reg, offset);
82 offset += reg.isFpu() ? 16 : 8;
83 }
84 RSA = new CiRegisterSaveArea(offset, registerOffsets, 8);
85 } 79 }
86 80
87 public HotSpotRegisterConfig(HotSpotVMConfig config) { 81 public HotSpotRegisterConfig(HotSpotVMConfig config) {
88 if (config.windowsOs) { 82 if (config.windowsOs) {
89 generalParameterRegisters = new CiRegister[] {rdx, r8, r9, rdi, rsi, rcx}; 83 generalParameterRegisters = new CiRegister[] {rdx, r8, r9, rdi, rsi, rcx};
96 } 90 }
97 91
98 @Override 92 @Override
99 public CiRegister[] getCallerSaveRegisters() { 93 public CiRegister[] getCallerSaveRegisters() {
100 return getAllocatableRegisters(); 94 return getAllocatableRegisters();
101 }
102
103 private final CiRegister[] none = {};
104
105 @Override
106 public CiRegister[] getCalleeSaveRegisters() {
107 return none;
108 } 95 }
109 96
110 @Override 97 @Override
111 public CiRegister getRegister(int index) { 98 public CiRegister getRegister(int index) {
112 throw new UnsupportedOperationException(); 99 throw new UnsupportedOperationException();
200 @Override 187 @Override
201 public CiRegister getFrameRegister() { 188 public CiRegister getFrameRegister() {
202 return rsp; 189 return rsp;
203 } 190 }
204 191
205 public CiRegisterSaveArea getRSA() { 192 public CiCalleeSaveArea getCalleeSaveArea() {
206 return RSA; 193 return RSA;
207 } 194 }
208 195
209 @Override 196 @Override
210 public String toString() { 197 public String toString() {
211 String res = String.format( 198 String res = String.format(
212 "Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" + 199 "Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" +
213 "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n" + 200 "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n" +
214 "CalleeSave: " + Arrays.toString(getCalleeSaveRegisters()) + "%n" + 201 "CalleeSave: " + getCalleeSaveArea() + "%n" +
215 "Scratch: " + getScratchRegister() + "%n"); 202 "Scratch: " + getScratchRegister() + "%n");
216 return res; 203 return res;
217 } 204 }
218 } 205 }