4125 } |
4125 } |
4126 |
4126 |
4127 oop java_lang_ClassLoader::unnamedModule(oop loader) { |
4127 oop java_lang_ClassLoader::unnamedModule(oop loader) { |
4128 assert(is_instance(loader), "loader must be oop"); |
4128 assert(is_instance(loader), "loader must be oop"); |
4129 return loader->obj_field(unnamedModule_offset); |
4129 return loader->obj_field(unnamedModule_offset); |
4130 } |
|
4131 |
|
4132 // Caller needs ResourceMark. |
|
4133 const char* java_lang_ClassLoader::describe_external(const oop loader) { |
|
4134 ClassLoaderData *cld = ClassLoaderData::class_loader_data(loader); |
|
4135 const char* name = cld->loader_name_and_id(); |
|
4136 |
|
4137 // bootstrap loader |
|
4138 if (loader == NULL) { |
|
4139 return name; |
|
4140 } |
|
4141 |
|
4142 bool well_known_loader = SystemDictionary::is_system_class_loader(loader) || |
|
4143 SystemDictionary::is_platform_class_loader(loader); |
|
4144 |
|
4145 stringStream ss; |
|
4146 ss.print("%s (instance of %s", name, loader->klass()->external_name()); |
|
4147 if (!well_known_loader) { |
|
4148 oop pl = java_lang_ClassLoader::parent(loader); |
|
4149 ClassLoaderData *pl_cld = ClassLoaderData::class_loader_data(pl); |
|
4150 const char* parentName = pl_cld->loader_name_and_id(); |
|
4151 if (pl != NULL) { |
|
4152 ss.print(", child of %s %s", parentName, pl->klass()->external_name()); |
|
4153 } else { |
|
4154 // bootstrap loader |
|
4155 ss.print(", child of %s", parentName); |
|
4156 } |
|
4157 } |
|
4158 ss.print(")"); |
|
4159 |
|
4160 return ss.as_string(); |
|
4161 } |
4130 } |
4162 |
4131 |
4163 // Support for java_lang_System |
4132 // Support for java_lang_System |
4164 // |
4133 // |
4165 #define SYSTEM_FIELDS_DO(macro) \ |
4134 #define SYSTEM_FIELDS_DO(macro) \ |