hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
changeset 3172 ad4ba6ce75a5
parent 1394 43b4b8b54e65
child 3261 c7d5aae8d3f7
equal deleted inserted replaced
3171:aa289b22b577 3172:ad4ba6ce75a5
   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) {