Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/runtime/sharedRuntime.cpp
          +++ new/src/share/vm/runtime/sharedRuntime.cpp
↓ open down ↓ 1427 lines elided ↑ open up ↑
1428 1428        //
1429 1429        // bug 6281185. We might get here after resolving a call site to a vanilla
1430 1430        // virtual call. Because the resolvee uses the verified entry it may then
1431 1431        // see compiled code and attempt to patch the site by calling us. This would
1432 1432        // then incorrectly convert the call site to optimized and its downhill from
1433 1433        // there. If you're lucky you'll get the assert in the bugid, if not you've
1434 1434        // just made a call site that could be megamorphic into a monomorphic site
1435 1435        // for the rest of its life! Just another racing bug in the life of
1436 1436        // fixup_callers_callsite ...
1437 1437        //
1438      -      RelocIterator iter(cb, call->instruction_address(), call->next_instruction_address());
     1438 +      RelocIterator iter(nm, call->instruction_address(), call->next_instruction_address());
1439 1439        iter.next();
1440 1440        assert(iter.has_current(), "must have a reloc at java call site");
1441 1441        relocInfo::relocType typ = iter.reloc()->type();
1442 1442        if ( typ != relocInfo::static_call_type &&
1443 1443             typ != relocInfo::opt_virtual_call_type &&
1444 1444             typ != relocInfo::static_stub_type) {
1445 1445          return;
1446 1446        }
1447 1447        address destination = call->destination();
1448 1448        if (destination != entry_point) {
↓ open down ↓ 1204 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX