src/share/vm/code/compiledIC.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8058737 Cdiff src/share/vm/code/compiledIC.cpp

src/share/vm/code/compiledIC.cpp

Print this page

        

*** 153,162 **** --- 153,170 ---- address CompiledIC::stub_address() const { assert(is_in_transition_state(), "should only be called when we are in a transition state"); return _ic_call->destination(); } + // Clears the IC stub if the compiled IC is in transition state + void CompiledIC::clear_ic_stub() { + if (is_in_transition_state()) { + ICStub* stub = ICStub_from_destination_address(stub_address()); + stub->clear(); + } + } + //----------------------------------------------------------------------------- // High-level access to an inline cache. Guaranteed to be MT-safe. void CompiledIC::initialize_from_iter(RelocIterator* iter) {
*** 331,344 **** // we only need to patch the destination bool safe_transition = is_optimized() || SafepointSynchronize::is_at_safepoint(); if (safe_transition) { // Kill any leftover stub we might have too ! if (is_in_transition_state()) { ! ICStub* old_stub = ICStub_from_destination_address(stub_address()); ! old_stub->clear(); ! } if (is_optimized()) { set_ic_destination(entry); } else { set_ic_destination_and_value(entry, (void*)NULL); } --- 339,349 ---- // we only need to patch the destination bool safe_transition = is_optimized() || SafepointSynchronize::is_at_safepoint(); if (safe_transition) { // Kill any leftover stub we might have too ! clear_ic_stub(); if (is_optimized()) { set_ic_destination(entry); } else { set_ic_destination_and_value(entry, (void*)NULL); }
src/share/vm/code/compiledIC.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File