src/hotspot/share/classfile/javaClasses.cpp
changeset 53212 bccff579c2ff
parent 53205 8f79bae1a535
child 53274 cf80666df79a
equal deleted inserted replaced
53211:eda4c6456efb 53212:bccff579c2ff
  1342 void java_lang_Class::set_module(oop java_class, oop module) {
  1342 void java_lang_Class::set_module(oop java_class, oop module) {
  1343   assert(_module_offset != 0, "must be set");
  1343   assert(_module_offset != 0, "must be set");
  1344   java_class->obj_field_put(_module_offset, module);
  1344   java_class->obj_field_put(_module_offset, module);
  1345 }
  1345 }
  1346 
  1346 
       
  1347 oop java_lang_Class::name(Handle java_class, TRAPS) {
       
  1348   assert(_name_offset != 0, "must be set");
       
  1349   oop o = java_class->obj_field(_name_offset);
       
  1350   if (o == NULL) {
       
  1351     o = StringTable::intern(java_lang_Class::as_external_name(java_class()), THREAD);
       
  1352     java_class->obj_field_put(_name_offset, o);
       
  1353   }
       
  1354   return o;
       
  1355 }
       
  1356 
  1347 oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS) {
  1357 oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS) {
  1348   // This should be improved by adding a field at the Java level or by
  1358   // This should be improved by adding a field at the Java level or by
  1349   // introducing a new VM klass (see comment in ClassFileParser)
  1359   // introducing a new VM klass (see comment in ClassFileParser)
  1350   oop java_class = InstanceMirrorKlass::cast(SystemDictionary::Class_klass())->allocate_instance(NULL, CHECK_0);
  1360   oop java_class = InstanceMirrorKlass::cast(SystemDictionary::Class_klass())->allocate_instance(NULL, CHECK_0);
  1351   if (type != T_VOID) {
  1361   if (type != T_VOID) {
  1502 
  1512 
  1503 #define CLASS_FIELDS_DO(macro) \
  1513 #define CLASS_FIELDS_DO(macro) \
  1504   macro(classRedefinedCount_offset, k, "classRedefinedCount", int_signature,         false) ; \
  1514   macro(classRedefinedCount_offset, k, "classRedefinedCount", int_signature,         false) ; \
  1505   macro(_class_loader_offset,       k, "classLoader",         classloader_signature, false); \
  1515   macro(_class_loader_offset,       k, "classLoader",         classloader_signature, false); \
  1506   macro(_component_mirror_offset,   k, "componentType",       class_signature,       false); \
  1516   macro(_component_mirror_offset,   k, "componentType",       class_signature,       false); \
  1507   macro(_module_offset,             k, "module",              module_signature,      false)
  1517   macro(_module_offset,             k, "module",              module_signature,      false); \
       
  1518   macro(_name_offset,               k, "name",                string_signature,      false); \
  1508 
  1519 
  1509 void java_lang_Class::compute_offsets() {
  1520 void java_lang_Class::compute_offsets() {
  1510   if (offsets_computed) {
  1521   if (offsets_computed) {
  1511     return;
  1522     return;
  1512   }
  1523   }
  2548 void java_lang_StackTraceElement::fill_in(Handle element,
  2559 void java_lang_StackTraceElement::fill_in(Handle element,
  2549                                           InstanceKlass* holder, const methodHandle& method,
  2560                                           InstanceKlass* holder, const methodHandle& method,
  2550                                           int version, int bci, Symbol* name, TRAPS) {
  2561                                           int version, int bci, Symbol* name, TRAPS) {
  2551   assert(element->is_a(SystemDictionary::StackTraceElement_klass()), "sanity check");
  2562   assert(element->is_a(SystemDictionary::StackTraceElement_klass()), "sanity check");
  2552 
  2563 
       
  2564   ResourceMark rm(THREAD);
       
  2565   HandleMark hm(THREAD);
       
  2566 
  2553   // Fill in class name
  2567   // Fill in class name
  2554   ResourceMark rm(THREAD);
  2568   Handle java_class(THREAD, holder->java_mirror());
  2555   const char* str = holder->external_name();
  2569   oop classname = java_lang_Class::name(java_class, CHECK);
  2556   oop classname = StringTable::intern(str, CHECK);
       
  2557   java_lang_StackTraceElement::set_declaringClass(element(), classname);
  2570   java_lang_StackTraceElement::set_declaringClass(element(), classname);
  2558   java_lang_StackTraceElement::set_declaringClassObject(element(), holder->java_mirror());
  2571   java_lang_StackTraceElement::set_declaringClassObject(element(), java_class());
  2559 
  2572 
  2560   oop loader = holder->class_loader();
  2573   oop loader = holder->class_loader();
  2561   if (loader != NULL) {
  2574   if (loader != NULL) {
  2562     oop loader_name = java_lang_ClassLoader::name(loader);
  2575     oop loader_name = java_lang_ClassLoader::name(loader);
  2563     if (loader_name != NULL)
  2576     if (loader_name != NULL)
  3964 int java_lang_Class::_module_offset;
  3977 int java_lang_Class::_module_offset;
  3965 int java_lang_Class::_protection_domain_offset;
  3978 int java_lang_Class::_protection_domain_offset;
  3966 int java_lang_Class::_component_mirror_offset;
  3979 int java_lang_Class::_component_mirror_offset;
  3967 int java_lang_Class::_init_lock_offset;
  3980 int java_lang_Class::_init_lock_offset;
  3968 int java_lang_Class::_signers_offset;
  3981 int java_lang_Class::_signers_offset;
       
  3982 int java_lang_Class::_name_offset;
  3969 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
  3983 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
  3970 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
  3984 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
  3971 int java_lang_Throwable::backtrace_offset;
  3985 int java_lang_Throwable::backtrace_offset;
  3972 int java_lang_Throwable::detailMessage_offset;
  3986 int java_lang_Throwable::detailMessage_offset;
  3973 int java_lang_Throwable::stackTrace_offset;
  3987 int java_lang_Throwable::stackTrace_offset;