RFR (M) JDK-8202605: Standardize on ClassLoaderData::loader_name() throughout the VM to obtain a class loader's name
Lindenmaier, Goetz
goetz.lindenmaier at sap.com
Thu Jun 14 12:23:38 UTC 2018
Hi Lois,
thanks for doing this change!
I appreciate a clear guidance on the naming of classloaders.
Adding a new field to ClassLoader is the best way to
assure this is used widely.
Some comments on the format:
* I would skip the space between the name and the @.
* If two loaders have the same name, it might be helpful
to see the classname. But I guess this will mostly
happen if the loaders are of the same class, too.
(like loading the same library twice. In this case
the id helps).
In detail:
classLoaderData.cpp:
Please use external_name():
+ _class_loader_name_id = _class_loader_klass->name();
I would rename loader_name() to loader_nameAndId().
classLoaderData.hpp:
Line 400: eventually adapt the comment to use ' ' instead of <>.
classLoaderHierarchyDCmd.cpp:
I would remove the double quotes from this output.
But you can leave this to a follow up I guess.
classLoaderStats.cpp:
Maybe you want to adapt classLoaderStats.cpp:114 to say
'bootstrap' instead of <boot class loader>.
javaClasses.cpp:
+// Returns the name of this class loader or null if this class loader is not named.
"the name" is ambiguous now. Maybe say "Returns the name _field_ of ..."
+java_lang_ClassLoader::nameAndId(oop loader)
I would add to the comment:
// Use ClassLoaderData::loader_name() to obtain this String as a char* for internal use.
jfrTypeSetUtils.hpp:
Don't you want to put this field into classLoaderData.hpp?
Then you can use it in loader_name(), too.
ClassLoaderHierarchyTest.java:
I think you need to edit the other names, too: "Kevin" --> "'Kevin'" etc.
Or, if you followed my above comment, remove the double quotes altogether.
Best regards,
Goetz.
> -----Original Message-----
> From: hotspot-dev [mailto:hotspot-dev-bounces at openjdk.java.net] On
> Behalf Of Lois Foltan
> Sent: Donnerstag, 14. Juni 2018 00:59
> To: hotspot-dev developers <hotspot-dev at openjdk.java.net>
> Subject: RFR (M) JDK-8202605: Standardize on
> ClassLoaderData::loader_name() throughout the VM to obtain a class
> loader's name
>
> Please review this change to standardize on how to obtain a class
> loader's name within the VM. SystemDictionary::loader_name() methods
> have been removed in favor of ClassLoaderData::loader_name().
>
> Since the loader name is largely used in the VM for display purposes
> (error messages, logging, jcmd, JFR) this change also adopts a new
> format to append to a class loader's name its identityHashCode and if
> the loader has not been explicitly named it's qualified class name is
> used instead.
>
> 391 /**
> 392 * If the defining loader has a name explicitly set then
> 393 * '<loader-name>' @<id>
> 394 * If the defining loader has no name then
> 395 * <qualified-class-name> @<id>
> 396 * If it's built-in loader then omit `@<id>` as there is only one
> instance.
> 397 */
>
> The names for the builtin loaders are 'bootstrap', 'app' and 'platform'.
>
> open webrev at
> http://cr.openjdk.java.net/~lfoltan/bug_jdk8202605/webrev/
> bug link at https://bugs.openjdk.java.net/browse/JDK-8202605
>
> Testing: hs-tier(1-2), jdk-tier(1-2) complete
> hs-tier(3-5), jdk-tier(3) in progress
>
> Thanks,
> Lois
More information about the hotspot-dev
mailing list