Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/opto/runtime.cpp
          +++ new/src/share/vm/opto/runtime.cpp
↓ open down ↓ 856 lines elided ↑ open up ↑
 857  857          }
 858  858        } else {
 859  859          assert(handler_address == SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, force_unwind, true), "Must be the same");
 860  860        }
 861  861      }
 862  862  
 863  863      thread->set_exception_pc(pc);
 864  864      thread->set_exception_handler_pc(handler_address);
 865  865      thread->set_exception_stack_size(0);
 866  866  
 867      -    // Check if the exception PC is a MethodHandle call.
      867 +    // Check if the exception PC is a MethodHandle call site.
 868  868      thread->set_is_method_handle_exception(nm->is_method_handle_return(pc));
 869  869    }
 870  870  
 871  871    // Restore correct return pc.  Was saved above.
 872  872    thread->set_exception_oop(exception());
 873  873    return handler_address;
 874  874  
 875  875  JRT_END
 876  876  
 877  877  // We are entering here from exception_blob
↓ open down ↓ 67 lines elided ↑ open up ↑
 945  945    assert (exception != NULL, "should have thrown a NULLPointerException");
 946  946  #ifdef ASSERT
 947  947    if (!(exception->is_a(SystemDictionary::Throwable_klass()))) {
 948  948      // should throw an exception here
 949  949      ShouldNotReachHere();
 950  950    }
 951  951  #endif
 952  952  
 953  953    thread->set_vm_result(exception);
 954  954    // Frame not compiled (handles deoptimization blob)
 955      -  return SharedRuntime::raw_exception_handler_for_return_address(ret_pc);
      955 +  return SharedRuntime::raw_exception_handler_for_return_address(thread, ret_pc);
 956  956  }
 957  957  
 958  958  
 959  959  const TypeFunc *OptoRuntime::rethrow_Type() {
 960  960    // create input type (domain)
 961  961    const Type **fields = TypeTuple::fields(1);
 962  962    fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // Exception oop
 963  963    const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1,fields);
 964  964  
 965  965    // create result type (range)
↓ open down ↓ 253 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX