Mercurial > hg > graal-compiler
comparison src/cpu/ppc/vm/templateTable_ppc_64.cpp @ 17917:63c5920a038d
8042309: Some bugfixes for the ppc64 port.
Reviewed-by: kvn
author | goetz |
---|---|
date | Fri, 02 May 2014 14:53:06 +0200 |
parents | fd1b9f02cc91 |
children | b384ba33c9a0 |
comparison
equal
deleted
inserted
replaced
17916:34862ced4a87 | 17917:63c5920a038d |
---|---|
62 bool precise, | 62 bool precise, |
63 bool check_null) { | 63 bool check_null) { |
64 assert_different_registers(Rtmp1, Rtmp2, Rtmp3, Rval, Rbase); | 64 assert_different_registers(Rtmp1, Rtmp2, Rtmp3, Rval, Rbase); |
65 | 65 |
66 switch (barrier) { | 66 switch (barrier) { |
67 #ifndef SERIALGC | 67 #if INCLUDE_ALL_GCS |
68 case BarrierSet::G1SATBCT: | 68 case BarrierSet::G1SATBCT: |
69 case BarrierSet::G1SATBCTLogging: | 69 case BarrierSet::G1SATBCTLogging: |
70 { | 70 { |
71 // Load and record the previous value. | 71 // Load and record the previous value. |
72 __ g1_write_barrier_pre(Rbase, offset, | 72 __ g1_write_barrier_pre(Rbase, offset, |
102 } | 102 } |
103 } | 103 } |
104 __ bind(Ldone); | 104 __ bind(Ldone); |
105 } | 105 } |
106 break; | 106 break; |
107 #endif // SERIALGC | 107 #endif // INCLUDE_ALL_GCS |
108 case BarrierSet::CardTableModRef: | 108 case BarrierSet::CardTableModRef: |
109 case BarrierSet::CardTableExtension: | 109 case BarrierSet::CardTableExtension: |
110 { | 110 { |
111 Label Lnull, Ldone; | 111 Label Lnull, Ldone; |
112 if (Rval != noreg) { | 112 if (Rval != noreg) { |
257 static float one = 1.0; | 257 static float one = 1.0; |
258 static float two = 2.0; | 258 static float two = 2.0; |
259 switch (value) { | 259 switch (value) { |
260 default: ShouldNotReachHere(); | 260 default: ShouldNotReachHere(); |
261 case 0: { | 261 case 0: { |
262 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&zero, R0); | 262 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&zero, R0, true); |
263 __ lfs(F15_ftos, simm16_offset, R11_scratch1); | 263 __ lfs(F15_ftos, simm16_offset, R11_scratch1); |
264 break; | 264 break; |
265 } | 265 } |
266 case 1: { | 266 case 1: { |
267 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&one, R0); | 267 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&one, R0, true); |
268 __ lfs(F15_ftos, simm16_offset, R11_scratch1); | 268 __ lfs(F15_ftos, simm16_offset, R11_scratch1); |
269 break; | 269 break; |
270 } | 270 } |
271 case 2: { | 271 case 2: { |
272 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&two, R0); | 272 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&two, R0, true); |
273 __ lfs(F15_ftos, simm16_offset, R11_scratch1); | 273 __ lfs(F15_ftos, simm16_offset, R11_scratch1); |
274 break; | 274 break; |
275 } | 275 } |
276 } | 276 } |
277 } | 277 } |
280 transition(vtos, dtos); | 280 transition(vtos, dtos); |
281 static double zero = 0.0; | 281 static double zero = 0.0; |
282 static double one = 1.0; | 282 static double one = 1.0; |
283 switch (value) { | 283 switch (value) { |
284 case 0: { | 284 case 0: { |
285 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&zero, R0); | 285 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&zero, R0, true); |
286 __ lfd(F15_ftos, simm16_offset, R11_scratch1); | 286 __ lfd(F15_ftos, simm16_offset, R11_scratch1); |
287 break; | 287 break; |
288 } | 288 } |
289 case 1: { | 289 case 1: { |
290 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&one, R0); | 290 int simm16_offset = __ load_const_optimized(R11_scratch1, (address*)&one, R0, true); |
291 __ lfd(F15_ftos, simm16_offset, R11_scratch1); | 291 __ lfd(F15_ftos, simm16_offset, R11_scratch1); |
292 break; | 292 break; |
293 } | 293 } |
294 default: ShouldNotReachHere(); | 294 default: ShouldNotReachHere(); |
295 } | 295 } |
3726 | 3726 |
3727 void TemplateTable::checkcast() { | 3727 void TemplateTable::checkcast() { |
3728 transition(atos, atos); | 3728 transition(atos, atos); |
3729 | 3729 |
3730 Label Ldone, Lis_null, Lquicked, Lresolved; | 3730 Label Ldone, Lis_null, Lquicked, Lresolved; |
3731 Register Roffset = R5_ARG3, | 3731 Register Roffset = R6_ARG4, |
3732 RobjKlass = R4_ARG2, | 3732 RobjKlass = R4_ARG2, |
3733 RspecifiedKlass = R6_ARG4, // Generate_ClassCastException_verbose_handler will expect this register. | 3733 RspecifiedKlass = R5_ARG3, // Generate_ClassCastException_verbose_handler will read value from this register. |
3734 Rcpool = R11_scratch1, | 3734 Rcpool = R11_scratch1, |
3735 Rtags = R12_scratch2; | 3735 Rtags = R12_scratch2; |
3736 | 3736 |
3737 // Null does not pass. | 3737 // Null does not pass. |
3738 __ cmpdi(CCR0, R17_tos, 0); | 3738 __ cmpdi(CCR0, R17_tos, 0); |