comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRegisterConfig.java @ 1455:43a93774d24f

Syncing changes with C1X.
author Doug Simon <doug.simon@oracle.com>
date Fri, 12 Nov 2010 16:11:41 +0100
parents 9196a2b32950
children e4cd5d2de7e1
comparison
equal deleted inserted replaced
1448:9196a2b32950 1455:43a93774d24f
64 } 64 }
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
70 public static final CiRegisterSaveArea RSA;
71 static {
72 int offset = 0;
73 CiRegister[] rsaRegs = {
74 rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi,
75 r8, r9, r10, r11, r12, r13, r14, r15,
76 xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
77 xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15
78 };
79 Map<CiRegister, Integer> registerOffsets = new HashMap<CiRegister, Integer>(rsaRegs.length);
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 }
69 86
70 public HotSpotRegisterConfig(HotSpotVMConfig config) { 87 public HotSpotRegisterConfig(HotSpotVMConfig config) {
71 if (config.windowsOs) { 88 if (config.windowsOs) {
72 generalParameterRegisters = new CiRegister[] {rdx, r8, r9, rdi, rsi, rcx}; 89 generalParameterRegisters = new CiRegister[] {rdx, r8, r9, rdi, rsi, rcx};
73 } else { 90 } else {
183 @Override 200 @Override
184 public CiRegister getFrameRegister() { 201 public CiRegister getFrameRegister() {
185 return rsp; 202 return rsp;
186 } 203 }
187 204
205 public CiRegisterSaveArea getRSA() {
206 return RSA;
207 }
208
188 @Override 209 @Override
189 public String toString() { 210 public String toString() {
190 String res = String.format( 211 String res = String.format(
191 "Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" + 212 "Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" +
192 "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n" + 213 "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n" +