equal
deleted
inserted
replaced
369 // Needs GC write barriers. |
369 // Needs GC write barriers. |
370 pre_barrier(LIR_OprFact::address(array_addr), false, NULL); |
370 pre_barrier(LIR_OprFact::address(array_addr), false, NULL); |
371 } |
371 } |
372 __ move(value.result(), array_addr, null_check_info); |
372 __ move(value.result(), array_addr, null_check_info); |
373 if (obj_store) { |
373 if (obj_store) { |
374 // Is this precise? |
374 // Precise card mark |
375 post_barrier(LIR_OprFact::address(array_addr), value.result()); |
375 post_barrier(LIR_OprFact::address(array_addr), value.result()); |
376 } |
376 } |
377 } |
377 } |
378 |
378 |
379 |
379 |
683 |
683 |
684 // generate conditional move of boolean result |
684 // generate conditional move of boolean result |
685 LIR_Opr result = rlock_result(x); |
685 LIR_Opr result = rlock_result(x); |
686 __ cmove(lir_cond_equal, LIR_OprFact::intConst(1), LIR_OprFact::intConst(0), result); |
686 __ cmove(lir_cond_equal, LIR_OprFact::intConst(1), LIR_OprFact::intConst(0), result); |
687 if (type == objectType) { // Write-barrier needed for Object fields. |
687 if (type == objectType) { // Write-barrier needed for Object fields. |
688 #ifdef PRECISE_CARDMARK |
688 // Precise card mark since could either be object or array |
689 post_barrier(addr, val.result()); |
689 post_barrier(addr, val.result()); |
690 #else |
|
691 post_barrier(obj.result(), val.result()); |
|
692 #endif // PRECISE_CARDMARK |
|
693 } |
690 } |
694 } |
691 } |
695 |
692 |
696 |
693 |
697 void LIRGenerator::do_MathIntrinsic(Intrinsic* x) { |
694 void LIRGenerator::do_MathIntrinsic(Intrinsic* x) { |