467 return false; // caller must perform slow path |
467 return false; // caller must perform slow path |
468 |
468 |
469 JRT_END |
469 JRT_END |
470 |
470 |
471 JRT_ENTRY(void, JVMCIRuntime::throw_and_post_jvmti_exception(JavaThread* thread, const char* exception, const char* message)) |
471 JRT_ENTRY(void, JVMCIRuntime::throw_and_post_jvmti_exception(JavaThread* thread, const char* exception, const char* message)) |
472 TempNewSymbol symbol = SymbolTable::new_symbol(exception, CHECK); |
472 TempNewSymbol symbol = SymbolTable::new_symbol(exception); |
473 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, message); |
473 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, message); |
474 JRT_END |
474 JRT_END |
475 |
475 |
476 JRT_ENTRY(void, JVMCIRuntime::throw_klass_external_name_exception(JavaThread* thread, const char* exception, Klass* klass)) |
476 JRT_ENTRY(void, JVMCIRuntime::throw_klass_external_name_exception(JavaThread* thread, const char* exception, Klass* klass)) |
477 ResourceMark rm(thread); |
477 ResourceMark rm(thread); |
478 TempNewSymbol symbol = SymbolTable::new_symbol(exception, CHECK); |
478 TempNewSymbol symbol = SymbolTable::new_symbol(exception); |
479 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, klass->external_name()); |
479 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, klass->external_name()); |
480 JRT_END |
480 JRT_END |
481 |
481 |
482 JRT_ENTRY(void, JVMCIRuntime::throw_class_cast_exception(JavaThread* thread, const char* exception, Klass* caster_klass, Klass* target_klass)) |
482 JRT_ENTRY(void, JVMCIRuntime::throw_class_cast_exception(JavaThread* thread, const char* exception, Klass* caster_klass, Klass* target_klass)) |
483 ResourceMark rm(thread); |
483 ResourceMark rm(thread); |
484 const char* message = SharedRuntime::generate_class_cast_message(caster_klass, target_klass); |
484 const char* message = SharedRuntime::generate_class_cast_message(caster_klass, target_klass); |
485 TempNewSymbol symbol = SymbolTable::new_symbol(exception, CHECK); |
485 TempNewSymbol symbol = SymbolTable::new_symbol(exception); |
486 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, message); |
486 SharedRuntime::throw_and_post_jvmti_exception(thread, symbol, message); |
487 JRT_END |
487 JRT_END |
488 |
488 |
489 JRT_LEAF(void, JVMCIRuntime::log_object(JavaThread* thread, oopDesc* obj, bool as_string, bool newline)) |
489 JRT_LEAF(void, JVMCIRuntime::log_object(JavaThread* thread, oopDesc* obj, bool as_string, bool newline)) |
490 ttyLocker ttyl; |
490 ttyLocker ttyl; |
1009 if (sym->char_at(0) == 'L' && |
1009 if (sym->char_at(0) == 'L' && |
1010 sym->char_at(sym->utf8_length()-1) == ';') { |
1010 sym->char_at(sym->utf8_length()-1) == ';') { |
1011 // This is a name from a signature. Strip off the trimmings. |
1011 // This is a name from a signature. Strip off the trimmings. |
1012 // Call recursive to keep scope of strippedsym. |
1012 // Call recursive to keep scope of strippedsym. |
1013 TempNewSymbol strippedsym = SymbolTable::new_symbol(sym->as_utf8()+1, |
1013 TempNewSymbol strippedsym = SymbolTable::new_symbol(sym->as_utf8()+1, |
1014 sym->utf8_length()-2, |
1014 sym->utf8_length()-2); |
1015 CHECK_NULL); |
|
1016 return get_klass_by_name_impl(accessing_klass, cpool, strippedsym, require_local); |
1015 return get_klass_by_name_impl(accessing_klass, cpool, strippedsym, require_local); |
1017 } |
1016 } |
1018 |
1017 |
1019 Handle loader(THREAD, (oop)NULL); |
1018 Handle loader(THREAD, (oop)NULL); |
1020 Handle domain(THREAD, (oop)NULL); |
1019 Handle domain(THREAD, (oop)NULL); |
1043 if (sym->char_at(0) == '[' && |
1042 if (sym->char_at(0) == '[' && |
1044 (sym->char_at(1) == '[' || sym->char_at(1) == 'L')) { |
1043 (sym->char_at(1) == '[' || sym->char_at(1) == 'L')) { |
1045 // We have an unloaded array. |
1044 // We have an unloaded array. |
1046 // Build it on the fly if the element class exists. |
1045 // Build it on the fly if the element class exists. |
1047 TempNewSymbol elem_sym = SymbolTable::new_symbol(sym->as_utf8()+1, |
1046 TempNewSymbol elem_sym = SymbolTable::new_symbol(sym->as_utf8()+1, |
1048 sym->utf8_length()-1, |
1047 sym->utf8_length()-1); |
1049 CHECK_NULL); |
|
1050 |
1048 |
1051 // Get element Klass recursively. |
1049 // Get element Klass recursively. |
1052 Klass* elem_klass = |
1050 Klass* elem_klass = |
1053 get_klass_by_name_impl(accessing_klass, |
1051 get_klass_by_name_impl(accessing_klass, |
1054 cpool, |
1052 cpool, |