< prev index next >

src/share/vm/classfile/loaderConstraints.cpp

Print this page
rev 13180 : imported patch 8181917-refactor-ul-logstream

@@ -23,10 +23,11 @@
  */
 
 #include "precompiled.hpp"
 #include "classfile/classLoaderData.inline.hpp"
 #include "classfile/loaderConstraints.hpp"
+#include "logging/log.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/safepoint.hpp"
 #include "utilities/hashtable.inline.hpp"

@@ -86,40 +87,39 @@
 }
 
 
 void LoaderConstraintTable::purge_loader_constraints() {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
+  LogTarget(Info, class, loader, constraints) lt;
   // Remove unloaded entries from constraint table
   for (int index = 0; index < table_size(); index++) {
     LoaderConstraintEntry** p = bucket_addr(index);
     while(*p) {
       LoaderConstraintEntry* probe = *p;
       InstanceKlass* klass = probe->klass();
       // Remove klass that is no longer alive
       if (klass != NULL &&
           klass->class_loader_data()->is_unloading()) {
         probe->set_klass(NULL);
-        if (log_is_enabled(Info, class, loader, constraints)) {
+        if (lt.is_enabled()) {
           ResourceMark rm;
-          outputStream* out = Log(class, loader, constraints)::info_stream();
-          out->print_cr("purging class object from constraint for name %s,"
+          lt.print("purging class object from constraint for name %s,"
                      " loader list:",
                      probe->name()->as_C_string());
           for (int i = 0; i < probe->num_loaders(); i++) {
-            out->print_cr("    [%d]: %s", i,
+            lt.print("    [%d]: %s", i,
                           probe->loader_data(i)->loader_name());
           }
         }
       }
       // Remove entries no longer alive from loader array
       int n = 0;
       while (n < probe->num_loaders()) {
         if (probe->loader_data(n)->is_unloading()) {
-            if (log_is_enabled(Info, class, loader, constraints)) {
+            if (lt.is_enabled()) {
               ResourceMark rm;
-              outputStream* out = Log(class, loader, constraints)::info_stream();
-              out->print_cr("purging loader %s from constraint for name %s",
+              lt.print("purging loader %s from constraint for name %s",
                             probe->loader_data(n)->loader_name(),
                             probe->name()->as_C_string()
                             );
             }
 

@@ -127,16 +127,15 @@
             int num = probe->num_loaders() - 1;
             probe->set_num_loaders(num);
           probe->set_loader_data(n, probe->loader_data(num));
           probe->set_loader_data(num, NULL);
 
-            if (log_is_enabled(Info, class, loader, constraints)) {
+            if (lt.is_enabled()) {
               ResourceMark rm;
-              outputStream* out = Log(class, loader, constraints)::info_stream();
-              out->print_cr("new loader list:");
+              lt.print("new loader list:");
               for (int i = 0; i < probe->num_loaders(); i++) {
-                out->print_cr("    [%d]: %s", i,
+                lt.print("    [%d]: %s", i,
                               probe->loader_data(i)->loader_name());
               }
             }
 
             continue;  // current element replaced, so restart without

@@ -144,14 +143,13 @@
           }
         n++;
       }
       // Check whether entry should be purged
       if (probe->num_loaders() < 2) {
-            if (log_is_enabled(Info, class, loader, constraints)) {
+            if (lt.is_enabled()) {
               ResourceMark rm;
-              outputStream* out = Log(class, loader, constraints)::info_stream();
-              out->print_cr("purging complete constraint for name %s",
+              lt.print("purging complete constraint for name %s",
                          probe->name()->as_C_string());
             }
 
         // Purge entry
         *p = probe->next();

@@ -172,14 +170,14 @@
   }
 }
 
 void log_ldr_constraint_msg(Symbol* class_name, const char* reason,
                         Handle class_loader1, Handle class_loader2) {
-  if (log_is_enabled(Info, class, loader, constraints)) {
+  LogTarget(Info, class, loader, constraints) lt;
+  if (lt.is_enabled()) {
     ResourceMark rm;
-    outputStream* out = Log(class, loader, constraints)::info_stream();
-    out->print_cr("Failed to add constraint for name: %s, loader[0]: %s,"
+    lt.print("Failed to add constraint for name: %s, loader[0]: %s,"
                   " loader[1]: %s, Reason: %s",
                   class_name->as_C_string(),
                   SystemDictionary::loader_name(class_loader1()),
                   SystemDictionary::loader_name(class_loader2()),
                   reason);

@@ -187,10 +185,11 @@
 }
 
 bool LoaderConstraintTable::add_entry(Symbol* class_name,
                                       InstanceKlass* klass1, Handle class_loader1,
                                       InstanceKlass* klass2, Handle class_loader2) {
+  LogTarget(Info, class, loader, constraints) lt;
   if (klass1 != NULL && klass2 != NULL) {
     if (klass1 == klass2) {
       // Same type already loaded in both places.  There is no need for any constraint.
       return true;
     } else {

@@ -242,28 +241,26 @@
     p->set_loader(0, class_loader1());
     p->set_loader(1, class_loader2());
     p->set_klass(klass);
     p->set_next(bucket(index));
     set_entry(index, p);
-    if (log_is_enabled(Info, class, loader, constraints)) {
+    if (lt.is_enabled()) {
       ResourceMark rm;
-      outputStream* out = Log(class, loader, constraints)::info_stream();
-      out->print_cr("adding new constraint for name: %s, loader[0]: %s,"
+      lt.print("adding new constraint for name: %s, loader[0]: %s,"
                     " loader[1]: %s",
                     class_name->as_C_string(),
                     SystemDictionary::loader_name(class_loader1()),
                     SystemDictionary::loader_name(class_loader2())
                     );
     }
   } else if (*pp1 == *pp2) {
     /* constraint already imposed */
     if ((*pp1)->klass() == NULL) {
       (*pp1)->set_klass(klass);
-      if (log_is_enabled(Info, class, loader, constraints)) {
+      if (lt.is_enabled()) {
         ResourceMark rm;
-        outputStream* out = Log(class, loader, constraints)::info_stream();
-        out->print_cr("setting class object in existing constraint for"
+        lt.print("setting class object in existing constraint for"
                       " name: %s and loader %s",
                       class_name->as_C_string(),
                       SystemDictionary::loader_name(class_loader1())
                       );
       }

@@ -285,28 +282,27 @@
 // return true if the constraint was updated, false if the constraint is
 // violated
 bool LoaderConstraintTable::check_or_update(InstanceKlass* k,
                                             Handle loader,
                                             Symbol* name) {
+  LogTarget(Info, class, loader, constraints) lt;
   LoaderConstraintEntry* p = *(find_loader_constraint(name, loader));
   if (p && p->klass() != NULL && p->klass() != k) {
-    if (log_is_enabled(Info, class, loader, constraints)) {
+    if (lt.is_enabled()) {
       ResourceMark rm;
-      outputStream* out = Log(class, loader, constraints)::info_stream();
-      out->print_cr("constraint check failed for name %s, loader %s: "
+      lt.print("constraint check failed for name %s, loader %s: "
                  "the presented class object differs from that stored",
                  name->as_C_string(),
                  SystemDictionary::loader_name(loader()));
     }
     return false;
   } else {
     if (p && p->klass() == NULL) {
       p->set_klass(k);
-      if (log_is_enabled(Info, class, loader, constraints)) {
+      if (lt.is_enabled()) {
         ResourceMark rm;
-        outputStream* out = Log(class, loader, constraints)::info_stream();
-        out->print_cr("updating constraint for name %s, loader %s, "
+        lt.print("updating constraint for name %s, loader %s, "
                    "by setting class object",
                    name->as_C_string(),
                    SystemDictionary::loader_name(loader()));
       }
     }

@@ -350,14 +346,14 @@
                                                      InstanceKlass* klass) {
   ensure_loader_constraint_capacity(p, 1);
   int num = p->num_loaders();
   p->set_loader(num, loader());
   p->set_num_loaders(num + 1);
-  if (log_is_enabled(Info, class, loader, constraints)) {
+  LogTarget(Info, class, loader, constraints) lt;
+  if (lt.is_enabled()) {
     ResourceMark rm;
-    outputStream* out = Log(class, loader, constraints)::info_stream();
-    out->print_cr("extending constraint for name %s by adding loader[%d]: %s %s",
+    lt.print("extending constraint for name %s by adding loader[%d]: %s %s",
                p->name()->as_C_string(),
                num,
                SystemDictionary::loader_name(loader()),
                (p->klass() == NULL ? " and setting class object" : "")
                );

@@ -390,23 +386,23 @@
     int num = p1->num_loaders();
     p1->set_loader_data(num, p2->loader_data(i));
     p1->set_num_loaders(num + 1);
   }
 
-  if (log_is_enabled(Info, class, loader, constraints)) {
+  LogTarget(Info, class, loader, constraints) lt;
+  if (lt.is_enabled()) {
     ResourceMark rm;
-    outputStream* out = Log(class, loader, constraints)::info_stream();
-    out->print_cr("merged constraints for name %s, new loader list:",
+    lt.print("merged constraints for name %s, new loader list:",
                   p1->name()->as_C_string()
                   );
 
     for (int i = 0; i < p1->num_loaders(); i++) {
-      out->print_cr("    [%d]: %s", i,
+      lt.print("    [%d]: %s", i,
                     p1->loader_data(i)->loader_name());
     }
     if (p1->klass() == NULL) {
-      out->print_cr("... and setting class object");
+      lt.print("... and setting class object");
     }
   }
 
   // p1->klass() will hold NULL if klass, p2->klass(), and old
   // p1->klass() are all NULL.  In addition, all three must have
< prev index next >