comparison src/cpu/x86/vm/c1_LIRGenerator_x86.cpp @ 3957:5cceda753a4a

7091764: Tiered: enable aastore profiling Summary: Turn on aastore profiling Reviewed-by: jrose, twisti
author iveresov
date Mon, 19 Sep 2011 15:21:03 -0700
parents e1162778c1c8
children 6759698e3140
comparison
equal deleted inserted replaced
3953:77e1a9153757 3957:5cceda753a4a
265 assert(x->is_pinned(),""); 265 assert(x->is_pinned(),"");
266 bool needs_range_check = true; 266 bool needs_range_check = true;
267 bool use_length = x->length() != NULL; 267 bool use_length = x->length() != NULL;
268 bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT; 268 bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT;
269 bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL || 269 bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL ||
270 !get_jobject_constant(x->value())->is_null_object()); 270 !get_jobject_constant(x->value())->is_null_object() ||
271 x->should_profile());
271 272
272 LIRItem array(x->array(), this); 273 LIRItem array(x->array(), this);
273 LIRItem index(x->index(), this); 274 LIRItem index(x->index(), this);
274 LIRItem value(x->value(), this); 275 LIRItem value(x->value(), this);
275 LIRItem length(this); 276 LIRItem length(this);
319 LIR_Opr tmp1 = new_register(objectType); 320 LIR_Opr tmp1 = new_register(objectType);
320 LIR_Opr tmp2 = new_register(objectType); 321 LIR_Opr tmp2 = new_register(objectType);
321 LIR_Opr tmp3 = new_register(objectType); 322 LIR_Opr tmp3 = new_register(objectType);
322 323
323 CodeEmitInfo* store_check_info = new CodeEmitInfo(range_check_info); 324 CodeEmitInfo* store_check_info = new CodeEmitInfo(range_check_info);
324 __ store_check(value.result(), array.result(), tmp1, tmp2, tmp3, store_check_info); 325 __ store_check(value.result(), array.result(), tmp1, tmp2, tmp3, store_check_info, x->profiled_method(), x->profiled_bci());
325 } 326 }
326 327
327 if (obj_store) { 328 if (obj_store) {
328 // Needs GC write barriers. 329 // Needs GC write barriers.
329 pre_barrier(LIR_OprFact::address(array_addr), LIR_OprFact::illegalOpr /* pre_val */, 330 pre_barrier(LIR_OprFact::address(array_addr), LIR_OprFact::illegalOpr /* pre_val */,