diff src/share/vm/classfile/classLoaderData.inline.hpp @ 8667:1f9994892f89

8008549: NPG: SystemDictionary::find(...) unnecessarily keeps class loaders alive Summary: SystemDictionary::find(...) should not create and register ClassLoaderData objects for class loaders. Reviewed-by: coleenp, acorn Contributed-by: Stefan Karlsson <stefan.karlsson@oracle.com>, Erik Helin <erik.helin@oracle.com>
author stefank
date Thu, 21 Feb 2013 17:22:15 +0100
parents 90273fc0a981
children 1cb4795305b9
line wrap: on
line diff
--- a/src/share/vm/classfile/classLoaderData.inline.hpp	Tue Feb 26 14:09:52 2013 +0100
+++ b/src/share/vm/classfile/classLoaderData.inline.hpp	Thu Feb 21 17:22:15 2013 +0100
@@ -25,9 +25,15 @@
 #include "classfile/classLoaderData.hpp"
 #include "classfile/javaClasses.hpp"
 
+inline ClassLoaderData* ClassLoaderData::class_loader_data_or_null(oop loader) {
+  if (loader == NULL) {
+    return ClassLoaderData::the_null_class_loader_data();
+  }
+  return java_lang_ClassLoader::loader_data(loader);
+}
+
 inline ClassLoaderData* ClassLoaderData::class_loader_data(oop loader) {
-  if (loader == NULL) return ClassLoaderData::the_null_class_loader_data();
-  ClassLoaderData* loader_data = java_lang_ClassLoader::loader_data(loader);
+  ClassLoaderData* loader_data = class_loader_data_or_null(loader);
   assert(loader_data != NULL, "Must be");
   return loader_data;
 }