src/share/vm/runtime/sharedRuntime.cpp

changeset 1803
93767e6a2dfd
parent 1734
9eba43136cb5
child 1813
9f5b60a14736
     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      }

mercurial