< prev index next >

src/cpu/x86/vm/c1_MacroAssembler_x86.cpp

Print this page

        

*** 21,30 **** --- 21,31 ---- * questions. * */ #include "precompiled.hpp" + #include "assembler_x86.hpp" #include "c1/c1_MacroAssembler.hpp" #include "c1/c1_Runtime1.hpp" #include "classfile/systemDictionary.hpp" #include "gc/shared/collectedHeap.hpp" #include "interpreter/interpreter.hpp"
*** 199,208 **** --- 200,213 ---- assert(header_size >= 0 && object_size >= header_size, "illegal sizes"); try_allocate(obj, noreg, object_size * BytesPerWord, t1, t2, slow_case); initialize_object(obj, klass, noreg, object_size * HeapWordSize, t1, t2, UseTLAB); + + HEAP_MONITORING(this, noreg, noreg, object_size * HeapWordSize, obj, + t1, t2, call(RuntimeAddress(Runtime1::entry_for( + Runtime1::heap_object_sample_id)));); } void C1_MacroAssembler::initialize_object(Register obj, Register klass, Register var_size_in_bytes, int con_size_in_bytes, Register t1, Register t2, bool is_tlab_allocated) { assert((con_size_in_bytes & MinObjAlignmentInBytesMask) == 0, "con_size_in_bytes is not multiple of alignment");
*** 275,291 **** --- 280,302 ---- initialize_header(obj, klass, len, t1, t2); // clear rest of allocated space const Register len_zero = len; + // Initialize body destroys arr_size so remember it. + push(arr_size); initialize_body(obj, arr_size, header_size * BytesPerWord, len_zero); + pop(arr_size); if (CURRENT_ENV->dtrace_alloc_probes()) { assert(obj == rax, "must be"); call(RuntimeAddress(Runtime1::entry_for(Runtime1::dtrace_object_alloc_id))); } + HEAP_MONITORING(this, noreg, arr_size, 0, obj, t1, noreg, + call(RuntimeAddress(Runtime1::entry_for( + Runtime1::heap_object_sample_id)));); verify_oop(obj); }
< prev index next >