1.1 --- a/src/share/vm/runtime/sharedRuntime.cpp Wed Apr 07 12:39:27 2010 -0700 1.2 +++ b/src/share/vm/runtime/sharedRuntime.cpp Thu Apr 08 10:55:40 2010 +0200 1.3 @@ -259,13 +259,16 @@ 1.4 address SharedRuntime::raw_exception_handler_for_return_address(JavaThread* thread, address return_address) { 1.5 assert(frame::verify_return_pc(return_address), "must be a return pc"); 1.6 1.7 + // Reset MethodHandle flag. 1.8 + thread->set_is_method_handle_return(false); 1.9 + 1.10 // the fastest case first 1.11 CodeBlob* blob = CodeCache::find_blob(return_address); 1.12 if (blob != NULL && blob->is_nmethod()) { 1.13 nmethod* code = (nmethod*)blob; 1.14 assert(code != NULL, "nmethod must be present"); 1.15 // Check if the return address is a MethodHandle call site. 1.16 - thread->set_is_method_handle_exception(code->is_method_handle_return(return_address)); 1.17 + thread->set_is_method_handle_return(code->is_method_handle_return(return_address)); 1.18 // native nmethods don't have exception handlers 1.19 assert(!code->is_native_method(), "no exception handler"); 1.20 assert(code->header_begin() != code->exception_begin(), "no exception handler"); 1.21 @@ -292,7 +295,7 @@ 1.22 nmethod* code = (nmethod*)blob; 1.23 assert(code != NULL, "nmethod must be present"); 1.24 // Check if the return address is a MethodHandle call site. 1.25 - thread->set_is_method_handle_exception(code->is_method_handle_return(return_address)); 1.26 + thread->set_is_method_handle_return(code->is_method_handle_return(return_address)); 1.27 assert(code->header_begin() != code->exception_begin(), "no exception handler"); 1.28 return code->exception_begin(); 1.29 }