Mercurial > hg > graal-jvmci-8
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 } |