hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
changeset 38060 954c9575f653
parent 38031 e0b822facc03
parent 37480 291ee208fb72
child 38241 32eab2eb41fd
equal deleted inserted replaced
38059:86ab3f0a9f87 38060:954c9575f653
   342 
   342 
   343   if (use_length && needs_range_check) {
   343   if (use_length && needs_range_check) {
   344     length.set_instruction(x->length());
   344     length.set_instruction(x->length());
   345     length.load_item();
   345     length.load_item();
   346   }
   346   }
   347   if (needs_store_check) {
   347   if (needs_store_check || x->check_boolean()) {
   348     value.load_item();
   348     value.load_item();
   349   } else {
   349   } else {
   350     value.load_for_store(x->elt_type());
   350     value.load_for_store(x->elt_type());
   351   }
   351   }
   352 
   352 
   387   if (obj_store) {
   387   if (obj_store) {
   388     // Needs GC write barriers.
   388     // Needs GC write barriers.
   389     pre_barrier(LIR_OprFact::address(array_addr), LIR_OprFact::illegalOpr /* pre_val */,
   389     pre_barrier(LIR_OprFact::address(array_addr), LIR_OprFact::illegalOpr /* pre_val */,
   390                 true /* do_load */, false /* patch */, NULL);
   390                 true /* do_load */, false /* patch */, NULL);
   391   }
   391   }
   392   __ move(value.result(), array_addr, null_check_info);
   392   LIR_Opr result = maybe_mask_boolean(x, array.result(), value.result(), null_check_info);
       
   393   __ move(result, array_addr, null_check_info);
   393   if (obj_store) {
   394   if (obj_store) {
   394     // Precise card mark
   395     // Precise card mark
   395     post_barrier(LIR_OprFact::address(array_addr), value.result());
   396     post_barrier(LIR_OprFact::address(array_addr), value.result());
   396   }
   397   }
   397 }
   398 }