Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_FrameMap_x86.cpp @ 2002:ac637b7220d1
6985015: C1 needs to support compressed oops
Summary: This change implements compressed oops for C1 for x64 and sparc. The changes are mostly on the codegen level, with a few exceptions when we do access things outside of the heap that are uncompressed from the IR. Compressed oops are now also enabled with tiered.
Reviewed-by: twisti, kvn, never, phh
author | iveresov |
---|---|
date | Tue, 30 Nov 2010 23:23:40 -0800 |
parents | f95d63e2154a |
children | 8a02ca5e5576 |
comparison
equal
deleted
inserted
replaced
1972:f95d63e2154a | 2002:ac637b7220d1 |
---|---|
156 map_register(7, rbp); | 156 map_register(7, rbp); |
157 #else | 157 #else |
158 map_register( 6, r8); r8_opr = LIR_OprFact::single_cpu(6); | 158 map_register( 6, r8); r8_opr = LIR_OprFact::single_cpu(6); |
159 map_register( 7, r9); r9_opr = LIR_OprFact::single_cpu(7); | 159 map_register( 7, r9); r9_opr = LIR_OprFact::single_cpu(7); |
160 map_register( 8, r11); r11_opr = LIR_OprFact::single_cpu(8); | 160 map_register( 8, r11); r11_opr = LIR_OprFact::single_cpu(8); |
161 map_register( 9, r12); r12_opr = LIR_OprFact::single_cpu(9); | 161 map_register( 9, r13); r13_opr = LIR_OprFact::single_cpu(9); |
162 map_register(10, r13); r13_opr = LIR_OprFact::single_cpu(10); | 162 map_register(10, r14); r14_opr = LIR_OprFact::single_cpu(10); |
163 map_register(11, r14); r14_opr = LIR_OprFact::single_cpu(11); | 163 // r12 is allocated conditionally. With compressed oops it holds |
164 // the heapbase value and is not visible to the allocator. | |
165 map_register(11, r12); r12_opr = LIR_OprFact::single_cpu(11); | |
164 // The unallocatable registers are at the end | 166 // The unallocatable registers are at the end |
165 map_register(12, r10); r10_opr = LIR_OprFact::single_cpu(12); | 167 map_register(12, r10); r10_opr = LIR_OprFact::single_cpu(12); |
166 map_register(13, r15); r15_opr = LIR_OprFact::single_cpu(13); | 168 map_register(13, r15); r15_opr = LIR_OprFact::single_cpu(13); |
167 map_register(14, rsp); | 169 map_register(14, rsp); |
168 map_register(15, rbp); | 170 map_register(15, rbp); |
189 | 191 |
190 #ifdef _LP64 | 192 #ifdef _LP64 |
191 _caller_save_cpu_regs[6] = r8_opr; | 193 _caller_save_cpu_regs[6] = r8_opr; |
192 _caller_save_cpu_regs[7] = r9_opr; | 194 _caller_save_cpu_regs[7] = r9_opr; |
193 _caller_save_cpu_regs[8] = r11_opr; | 195 _caller_save_cpu_regs[8] = r11_opr; |
194 _caller_save_cpu_regs[9] = r12_opr; | 196 _caller_save_cpu_regs[9] = r13_opr; |
195 _caller_save_cpu_regs[10] = r13_opr; | 197 _caller_save_cpu_regs[10] = r14_opr; |
196 _caller_save_cpu_regs[11] = r14_opr; | 198 _caller_save_cpu_regs[11] = r12_opr; |
197 #endif // _LP64 | 199 #endif // _LP64 |
198 | 200 |
199 | 201 |
200 _xmm_regs[0] = xmm0; | 202 _xmm_regs[0] = xmm0; |
201 _xmm_regs[1] = xmm1; | 203 _xmm_regs[1] = xmm1; |