comparison src/share/vm/runtime/sharedRuntime.cpp @ 7469:0c8717a92b2d

8001341: SIGSEGV in methodOopDesc::fast_exception_handler_bci_for(KlassHandle,int,Thread*)+0x3e9. Summary: Use methodHandle. Reviewed-by: coleenp, acorn, twisti, sspitsyn
author jiangli
date Tue, 08 Jan 2013 13:01:19 -0500
parents cd3d6a6b95d9
children 989155e2d07a 9fae07c31641 db9981fd3124
comparison
equal deleted inserted replaced
7468:608b2e8a0063 7469:0c8717a92b2d
641 bool recursive_exception = false; 641 bool recursive_exception = false;
642 do { 642 do {
643 bool skip_scope_increment = false; 643 bool skip_scope_increment = false;
644 // exception handler lookup 644 // exception handler lookup
645 KlassHandle ek (THREAD, exception->klass()); 645 KlassHandle ek (THREAD, exception->klass());
646 handler_bci = sd->method()->fast_exception_handler_bci_for(ek, bci, THREAD); 646 methodHandle mh(THREAD, sd->method());
647 handler_bci = Method::fast_exception_handler_bci_for(mh, ek, bci, THREAD);
647 if (HAS_PENDING_EXCEPTION) { 648 if (HAS_PENDING_EXCEPTION) {
648 recursive_exception = true; 649 recursive_exception = true;
649 // We threw an exception while trying to find the exception handler. 650 // We threw an exception while trying to find the exception handler.
650 // Transfer the new exception to the exception handle which will 651 // Transfer the new exception to the exception handle which will
651 // be set into thread local storage, and do another lookup for an 652 // be set into thread local storage, and do another lookup for an