Mercurial > hg > graal-compiler
comparison src/cpu/ppc/vm/templateTable_ppc_64.cpp @ 20508:f6bde7889409
8059592: Recent bugfixes in ppc64 port.
Reviewed-by: kvn
author | goetz |
---|---|
date | Thu, 02 Oct 2014 09:32:53 +0200 |
parents | b384ba33c9a0 |
children | c5e86c5cd22e |
comparison
equal
deleted
inserted
replaced
20507:43ce58b4717b | 20508:f6bde7889409 |
---|---|
350 __ bind(notClass); | 350 __ bind(notClass); |
351 __ addi(Rcpool, Rcpool, base_offset); | 351 __ addi(Rcpool, Rcpool, base_offset); |
352 __ sldi(Rscratch1, Rscratch1, LogBytesPerWord); | 352 __ sldi(Rscratch1, Rscratch1, LogBytesPerWord); |
353 __ cmpdi(CCR0, Rscratch2, JVM_CONSTANT_Integer); | 353 __ cmpdi(CCR0, Rscratch2, JVM_CONSTANT_Integer); |
354 __ bne(CCR0, notInt); | 354 __ bne(CCR0, notInt); |
355 __ isync(); // Order load of constant wrt. tags. | |
356 __ lwax(R17_tos, Rcpool, Rscratch1); | 355 __ lwax(R17_tos, Rcpool, Rscratch1); |
357 __ push(itos); | 356 __ push(itos); |
358 __ b(exit); | 357 __ b(exit); |
359 | 358 |
360 __ align(32, 12); | 359 __ align(32, 12); |
362 #ifdef ASSERT | 361 #ifdef ASSERT |
363 // String and Object are rewritten to fast_aldc | 362 // String and Object are rewritten to fast_aldc |
364 __ cmpdi(CCR0, Rscratch2, JVM_CONSTANT_Float); | 363 __ cmpdi(CCR0, Rscratch2, JVM_CONSTANT_Float); |
365 __ asm_assert_eq("unexpected type", 0x8765); | 364 __ asm_assert_eq("unexpected type", 0x8765); |
366 #endif | 365 #endif |
367 __ isync(); // Order load of constant wrt. tags. | |
368 __ lfsx(F15_ftos, Rcpool, Rscratch1); | 366 __ lfsx(F15_ftos, Rcpool, Rscratch1); |
369 __ push(ftos); | 367 __ push(ftos); |
370 | 368 |
371 __ align(32, 12); | 369 __ align(32, 12); |
372 __ bind(exit); | 370 __ bind(exit); |
421 __ bne(CCR0, Llong); | 419 __ bne(CCR0, Llong); |
422 // A double can be placed at word-aligned locations in the constant pool. | 420 // A double can be placed at word-aligned locations in the constant pool. |
423 // Check out Conversions.java for an example. | 421 // Check out Conversions.java for an example. |
424 // Also ConstantPool::header_size() is 20, which makes it very difficult | 422 // Also ConstantPool::header_size() is 20, which makes it very difficult |
425 // to double-align double on the constant pool. SG, 11/7/97 | 423 // to double-align double on the constant pool. SG, 11/7/97 |
426 __ isync(); // Order load of constant wrt. tags. | |
427 __ lfdx(F15_ftos, Rcpool, Rindex); | 424 __ lfdx(F15_ftos, Rcpool, Rindex); |
428 __ push(dtos); | 425 __ push(dtos); |
429 __ b(Lexit); | 426 __ b(Lexit); |
430 | 427 |
431 __ bind(Llong); | 428 __ bind(Llong); |
432 __ isync(); // Order load of constant wrt. tags. | |
433 __ ldx(R17_tos, Rcpool, Rindex); | 429 __ ldx(R17_tos, Rcpool, Rindex); |
434 __ push(ltos); | 430 __ push(ltos); |
435 | 431 |
436 __ bind(Lexit); | 432 __ bind(Lexit); |
437 } | 433 } |