comparison src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp @ 819:c6386080541b

6849574: VM crash using NonBlockingHashMap (high_scale_lib) Reviewed-by: kvn
author never
date Wed, 10 Jun 2009 12:19:48 -0700
parents f8199438385b
children bd02caa94611
comparison
equal deleted inserted replaced
818:b109e761e927 819:c6386080541b
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) {