src/share/vm/code/vtableStubs.cpp

Print this page

        

*** 60,75 **** return NULL; } _chunk = blob->content_begin(); _chunk_end = _chunk + bytes; Forte::register_stub("vtable stub", _chunk, _chunk_end); - // Notify JVMTI about this stub. The event will be recorded by the enclosing - // JvmtiDynamicCodeEventCollector and posted when this thread has released - // all locks. - if (JvmtiExport::should_post_dynamic_code_generated()) { - JvmtiExport::post_dynamic_code_generated_while_holding_locks("vtable stub", _chunk, _chunk_end); - } align_chunk(); } assert(_chunk + real_size <= _chunk_end, "bad allocation"); void* res = _chunk; _chunk += real_size; --- 60,69 ----
*** 128,138 **** --- 122,139 ---- if (PrintAdapterHandlers) { tty->print_cr("Decoding VtableStub %s[%d]@%d", is_vtable_stub? "vtbl": "itbl", vtable_index, VtableStub::receiver_location()); Disassembler::decode(s->code_begin(), s->code_end()); } + // Notify JVMTI about this stub. The event will be recorded by the enclosing + // JvmtiDynamicCodeEventCollector and posted when this thread has released + // all locks. + if (JvmtiExport::should_post_dynamic_code_generated()) { + JvmtiExport::post_dynamic_code_generated_while_holding_locks(is_vtable_stub? "vtable stub": "itable stub", + s->code_begin(), s->code_end()); } + } return s->entry_point(); } inline uint VtableStubs::hash(bool is_vtable_stub, int vtable_index){
*** 193,202 **** --- 194,211 ---- void vtableStubs_init() { VtableStubs::initialize(); } + void VtableStubs::vtable_stub_do(void f(VtableStub*)) { + for (int i = 0; i < N; i++) { + for (VtableStub* s = _table[i]; s != NULL; s = s->next()) { + f(s); + } + } + } + //----------------------------------------------------------------------------------------------------- // Non-product code #ifndef PRODUCT