src/hotspot/share/jvmci/jvmciRuntime.cpp
changeset 54847 59ea39bb2809
parent 54786 ebf733a324d4
child 54973 0927d8c7296f
equal deleted inserted replaced
54846:e4049522b074 54847:59ea39bb2809
   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,