408 } 409 thread->print_stack_on(tty); 410 assert(false, "invalid lock object pointer dected"); 411 } 412 #endif 413 414 if (JVMCIUseFastLocking) { 415 // When using fast locking, the compiled code has already tried the fast case 416 ObjectSynchronizer::slow_exit(obj, lock, THREAD); 417 } else { 418 ObjectSynchronizer::fast_exit(obj, lock, THREAD); 419 } 420 IF_TRACE_jvmci_3 { 421 char type[O_BUFLEN]; 422 obj->klass()->name()->as_C_string(type, O_BUFLEN); 423 TRACE_jvmci_3("%s: exited locking slow case with obj=" INTPTR_FORMAT ", type=%s, mark=" INTPTR_FORMAT ", lock=" INTPTR_FORMAT, thread->name(), p2i(obj), type, p2i(obj->mark()), p2i(lock)); 424 tty->flush(); 425 } 426 JRT_END 427 428 JRT_ENTRY(void, JVMCIRuntime::throw_and_post_jvmti_exception(JavaThread* thread, Symbol* name, const char* message)) 429 SharedRuntime::throw_and_post_jvmti_exception(thread, name, message); 430 JRT_END 431 432 JRT_ENTRY(void, JVMCIRuntime::throw_klass_external_name_exception(JavaThread* thread, Symbol* exception, Klass* klass)) 433 ResourceMark rm(thread); 434 SharedRuntime::throw_and_post_jvmti_exception(thread, exception, klass->external_name()); 435 JRT_END 436 437 JRT_ENTRY(void, JVMCIRuntime::throw_class_cast_exception(JavaThread* thread, Symbol* exception, Klass* caster_klass, Klass* target_klass)) 438 ResourceMark rm(thread); 439 const char* message = SharedRuntime::generate_class_cast_message(caster_klass, target_klass); 440 SharedRuntime::throw_and_post_jvmti_exception(thread, exception, message); 441 JRT_END 442 443 JRT_LEAF(void, JVMCIRuntime::log_object(JavaThread* thread, oopDesc* obj, bool as_string, bool newline)) 444 ttyLocker ttyl; 445 446 if (obj == NULL) { 447 tty->print("NULL"); 448 } else if (obj->is_oop_or_null(true) && (!as_string || !java_lang_String::is_instance(obj))) { 449 if (obj->is_oop_or_null(true)) { 450 char buf[O_BUFLEN]; 451 tty->print("%s@" INTPTR_FORMAT, obj->klass()->name()->as_C_string(buf, O_BUFLEN), p2i(obj)); 452 } else { 453 tty->print(INTPTR_FORMAT, p2i(obj)); 454 } 455 } else { 456 ResourceMark rm; 457 assert(obj != NULL && java_lang_String::is_instance(obj), "must be"); 458 char *buf = java_lang_String::as_utf8_string(obj); 459 tty->print_raw(buf); 460 } | 408 } 409 thread->print_stack_on(tty); 410 assert(false, "invalid lock object pointer dected"); 411 } 412 #endif 413 414 if (JVMCIUseFastLocking) { 415 // When using fast locking, the compiled code has already tried the fast case 416 ObjectSynchronizer::slow_exit(obj, lock, THREAD); 417 } else { 418 ObjectSynchronizer::fast_exit(obj, lock, THREAD); 419 } 420 IF_TRACE_jvmci_3 { 421 char type[O_BUFLEN]; 422 obj->klass()->name()->as_C_string(type, O_BUFLEN); 423 TRACE_jvmci_3("%s: exited locking slow case with obj=" INTPTR_FORMAT ", type=%s, mark=" INTPTR_FORMAT ", lock=" INTPTR_FORMAT, thread->name(), p2i(obj), type, p2i(obj->mark()), p2i(lock)); 424 tty->flush(); 425 } 426 JRT_END 427 428 JRT_ENTRY(void, JVMCIRuntime::throw_and_post_jvmti_exception(JavaThread* thread, const char* exception, const char* message)) 429 TempNewSymbol symbol = SymbolTable::new_symbol(exception, CHECK); 430 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, message); 431 JRT_END 432 433 JRT_ENTRY(void, JVMCIRuntime::throw_klass_external_name_exception(JavaThread* thread, const char* exception, Klass* klass)) 434 ResourceMark rm(thread); 435 TempNewSymbol symbol = SymbolTable::new_symbol(exception, CHECK); 436 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, klass->external_name()); 437 JRT_END 438 439 JRT_ENTRY(void, JVMCIRuntime::throw_class_cast_exception(JavaThread* thread, const char* exception, Klass* caster_klass, Klass* target_klass)) 440 ResourceMark rm(thread); 441 const char* message = SharedRuntime::generate_class_cast_message(caster_klass, target_klass); 442 TempNewSymbol symbol = SymbolTable::new_symbol(exception, CHECK); 443 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, message); 444 JRT_END 445 446 JRT_LEAF(void, JVMCIRuntime::log_object(JavaThread* thread, oopDesc* obj, bool as_string, bool newline)) 447 ttyLocker ttyl; 448 449 if (obj == NULL) { 450 tty->print("NULL"); 451 } else if (obj->is_oop_or_null(true) && (!as_string || !java_lang_String::is_instance(obj))) { 452 if (obj->is_oop_or_null(true)) { 453 char buf[O_BUFLEN]; 454 tty->print("%s@" INTPTR_FORMAT, obj->klass()->name()->as_C_string(buf, O_BUFLEN), p2i(obj)); 455 } else { 456 tty->print(INTPTR_FORMAT, p2i(obj)); 457 } 458 } else { 459 ResourceMark rm; 460 assert(obj != NULL && java_lang_String::is_instance(obj), "must be"); 461 char *buf = java_lang_String::as_utf8_string(obj); 462 tty->print_raw(buf); 463 } |