374 |
374 |
375 void SharedRuntime::throw_and_post_jvmti_exception(JavaThread *thread, symbolOop name, const char *message) { |
375 void SharedRuntime::throw_and_post_jvmti_exception(JavaThread *thread, symbolOop name, const char *message) { |
376 Handle h_exception = Exceptions::new_exception(thread, name, message); |
376 Handle h_exception = Exceptions::new_exception(thread, name, message); |
377 throw_and_post_jvmti_exception(thread, h_exception); |
377 throw_and_post_jvmti_exception(thread, h_exception); |
378 } |
378 } |
|
379 |
|
380 // The interpreter code to call this tracing function is only |
|
381 // called/generated when TraceRedefineClasses has the right bits |
|
382 // set. Since obsolete methods are never compiled, we don't have |
|
383 // to modify the compilers to generate calls to this function. |
|
384 // |
|
385 JRT_LEAF(int, SharedRuntime::rc_trace_method_entry( |
|
386 JavaThread* thread, methodOopDesc* method)) |
|
387 assert(RC_TRACE_IN_RANGE(0x00001000, 0x00002000), "wrong call"); |
|
388 |
|
389 if (method->is_obsolete()) { |
|
390 // We are calling an obsolete method, but this is not necessarily |
|
391 // an error. Our method could have been redefined just after we |
|
392 // fetched the methodOop from the constant pool. |
|
393 |
|
394 // RC_TRACE macro has an embedded ResourceMark |
|
395 RC_TRACE_WITH_THREAD(0x00001000, thread, |
|
396 ("calling obsolete method '%s'", |
|
397 method->name_and_sig_as_C_string())); |
|
398 if (RC_TRACE_ENABLED(0x00002000)) { |
|
399 // this option is provided to debug calls to obsolete methods |
|
400 guarantee(false, "faulting at call to an obsolete method."); |
|
401 } |
|
402 } |
|
403 return 0; |
|
404 JRT_END |
379 |
405 |
380 // ret_pc points into caller; we are returning caller's exception handler |
406 // ret_pc points into caller; we are returning caller's exception handler |
381 // for given exception |
407 // for given exception |
382 address SharedRuntime::compute_compiled_exc_handler(nmethod* nm, address ret_pc, Handle& exception, |
408 address SharedRuntime::compute_compiled_exc_handler(nmethod* nm, address ret_pc, Handle& exception, |
383 bool force_unwind, bool top_frame_only) { |
409 bool force_unwind, bool top_frame_only) { |