src/share/vm/code/relocInfo.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/code/relocInfo.cpp

src/share/vm/code/relocInfo.cpp

Print this page

        

*** 563,580 **** void static_stub_Relocation::pack_data_to(CodeSection* dest) { short* p = (short*) dest->locs_end(); CodeSection* insts = dest->outer()->insts(); normalize_address(_static_call, insts); ! p = pack_1_int_to(p, scaled_offset(_static_call, insts->start())); dest->set_locs_end((relocInfo*) p); } void static_stub_Relocation::unpack_data() { address base = binding()->section_start(CodeBuffer::SECT_INSTS); ! jint offset = unpack_1_int(); _static_call = address_from_scaled_offset(offset, base); } void trampoline_stub_Relocation::pack_data_to(CodeSection* dest ) { short* p = (short*) dest->locs_end(); CodeSection* insts = dest->outer()->insts(); --- 563,584 ---- void static_stub_Relocation::pack_data_to(CodeSection* dest) { short* p = (short*) dest->locs_end(); CodeSection* insts = dest->outer()->insts(); normalize_address(_static_call, insts); ! jint is_aot = _is_aot ? 1 : 0; ! p = pack_2_ints_to(p, scaled_offset(_static_call, insts->start()), is_aot); dest->set_locs_end((relocInfo*) p); } void static_stub_Relocation::unpack_data() { address base = binding()->section_start(CodeBuffer::SECT_INSTS); ! jint offset; ! jint is_aot; ! unpack_2_ints(offset, is_aot); _static_call = address_from_scaled_offset(offset, base); + _is_aot = (is_aot == 1); } void trampoline_stub_Relocation::pack_data_to(CodeSection* dest ) { short* p = (short*) dest->locs_end(); CodeSection* insts = dest->outer()->insts();
*** 794,811 **** CompiledIC* icache = CompiledIC_at(this); icache->set_to_clean(); } ! address opt_virtual_call_Relocation::static_stub() { // search for the static stub who points back to this static call address static_call_addr = addr(); RelocIterator iter(code()); while (iter.next()) { if (iter.type() == relocInfo::static_stub_type) { static_stub_Relocation* stub_reloc = iter.static_stub_reloc(); ! if (stub_reloc->static_call() == static_call_addr) { return iter.addr(); } } } return NULL; --- 798,815 ---- CompiledIC* icache = CompiledIC_at(this); icache->set_to_clean(); } ! address opt_virtual_call_Relocation::static_stub(bool is_aot) { // search for the static stub who points back to this static call address static_call_addr = addr(); RelocIterator iter(code()); while (iter.next()) { if (iter.type() == relocInfo::static_stub_type) { static_stub_Relocation* stub_reloc = iter.static_stub_reloc(); ! if (stub_reloc->static_call() == static_call_addr && stub_reloc->is_aot() == is_aot) { return iter.addr(); } } } return NULL;
*** 830,852 **** _method_index = unpack_1_int(); } void static_call_Relocation::clear_inline_cache() { // Safe call site info ! CompiledStaticCall* handler = compiledStaticCall_at(this); handler->set_to_clean(); } ! address static_call_Relocation::static_stub() { // search for the static stub who points back to this static call address static_call_addr = addr(); RelocIterator iter(code()); while (iter.next()) { if (iter.type() == relocInfo::static_stub_type) { static_stub_Relocation* stub_reloc = iter.static_stub_reloc(); ! if (stub_reloc->static_call() == static_call_addr) { return iter.addr(); } } } return NULL; --- 834,856 ---- _method_index = unpack_1_int(); } void static_call_Relocation::clear_inline_cache() { // Safe call site info ! CompiledStaticCall* handler = this->code()->compiledStaticCall_at(this); handler->set_to_clean(); } ! address static_call_Relocation::static_stub(bool is_aot) { // search for the static stub who points back to this static call address static_call_addr = addr(); RelocIterator iter(code()); while (iter.next()) { if (iter.type() == relocInfo::static_stub_type) { static_stub_Relocation* stub_reloc = iter.static_stub_reloc(); ! if (stub_reloc->static_call() == static_call_addr && stub_reloc->is_aot() == is_aot) { return iter.addr(); } } } return NULL;
*** 873,883 **** } void static_stub_Relocation::clear_inline_cache() { // Call stub is only used when calling the interpreted code. // It does not really need to be cleared, except that we want to clean out the methodoop. ! CompiledStaticCall::set_stub_to_clean(this); } void external_word_Relocation::fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) { address target = _target; --- 877,887 ---- } void static_stub_Relocation::clear_inline_cache() { // Call stub is only used when calling the interpreted code. // It does not really need to be cleared, except that we want to clean out the methodoop. ! CompiledDirectStaticCall::set_stub_to_clean(this); } void external_word_Relocation::fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) { address target = _target;
src/share/vm/code/relocInfo.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File