src/hotspot/share/classfile/loaderConstraints.cpp
changeset 50634 c349d409262a
parent 49821 02c08e20d66c
child 51375 b812a85b3aa4
equal deleted inserted replaced
50633:b8055b38b252 50634:c349d409262a
   106           lt.print("purging class object from constraint for name %s,"
   106           lt.print("purging class object from constraint for name %s,"
   107                      " loader list:",
   107                      " loader list:",
   108                      probe->name()->as_C_string());
   108                      probe->name()->as_C_string());
   109           for (int i = 0; i < probe->num_loaders(); i++) {
   109           for (int i = 0; i < probe->num_loaders(); i++) {
   110             lt.print("    [%d]: %s", i,
   110             lt.print("    [%d]: %s", i,
   111                           probe->loader_data(i)->loader_name());
   111                           probe->loader_data(i)->loader_name_and_id());
   112           }
   112           }
   113         }
   113         }
   114       }
   114       }
   115       // Remove entries no longer alive from loader array
   115       // Remove entries no longer alive from loader array
   116       int n = 0;
   116       int n = 0;
   117       while (n < probe->num_loaders()) {
   117       while (n < probe->num_loaders()) {
   118         if (probe->loader_data(n)->is_unloading()) {
   118         if (probe->loader_data(n)->is_unloading()) {
   119           if (lt.is_enabled()) {
   119           if (lt.is_enabled()) {
   120             ResourceMark rm;
   120             ResourceMark rm;
   121             lt.print("purging loader %s from constraint for name %s",
   121             lt.print("purging loader %s from constraint for name %s",
   122                      probe->loader_data(n)->loader_name(),
   122                      probe->loader_data(n)->loader_name_and_id(),
   123                      probe->name()->as_C_string()
   123                      probe->name()->as_C_string()
   124                      );
   124                      );
   125           }
   125           }
   126 
   126 
   127           // Compact array
   127           // Compact array
   133           if (lt.is_enabled()) {
   133           if (lt.is_enabled()) {
   134             ResourceMark rm;
   134             ResourceMark rm;
   135             lt.print("new loader list:");
   135             lt.print("new loader list:");
   136             for (int i = 0; i < probe->num_loaders(); i++) {
   136             for (int i = 0; i < probe->num_loaders(); i++) {
   137               lt.print("    [%d]: %s", i,
   137               lt.print("    [%d]: %s", i,
   138                             probe->loader_data(i)->loader_name());
   138                             probe->loader_data(i)->loader_name_and_id());
   139             }
   139             }
   140           }
   140           }
   141 
   141 
   142           continue;  // current element replaced, so restart without
   142           continue;  // current element replaced, so restart without
   143                      // incrementing n
   143                      // incrementing n
   175   if (lt.is_enabled()) {
   175   if (lt.is_enabled()) {
   176     ResourceMark rm;
   176     ResourceMark rm;
   177     lt.print("Failed to add constraint for name: %s, loader[0]: %s,"
   177     lt.print("Failed to add constraint for name: %s, loader[0]: %s,"
   178                 " loader[1]: %s, Reason: %s",
   178                 " loader[1]: %s, Reason: %s",
   179                   class_name->as_C_string(),
   179                   class_name->as_C_string(),
   180                   SystemDictionary::loader_name(class_loader1()),
   180                   ClassLoaderData::class_loader_data(class_loader1())->loader_name_and_id(),
   181                   SystemDictionary::loader_name(class_loader2()),
   181                   ClassLoaderData::class_loader_data(class_loader2())->loader_name_and_id(),
   182                   reason);
   182                   reason);
   183   }
   183   }
   184 }
   184 }
   185 
   185 
   186 bool LoaderConstraintTable::add_entry(Symbol* class_name,
   186 bool LoaderConstraintTable::add_entry(Symbol* class_name,
   245     if (lt.is_enabled()) {
   245     if (lt.is_enabled()) {
   246       ResourceMark rm;
   246       ResourceMark rm;
   247       lt.print("adding new constraint for name: %s, loader[0]: %s,"
   247       lt.print("adding new constraint for name: %s, loader[0]: %s,"
   248                     " loader[1]: %s",
   248                     " loader[1]: %s",
   249                     class_name->as_C_string(),
   249                     class_name->as_C_string(),
   250                     SystemDictionary::loader_name(class_loader1()),
   250                     ClassLoaderData::class_loader_data(class_loader1())->loader_name_and_id(),
   251                     SystemDictionary::loader_name(class_loader2())
   251                     ClassLoaderData::class_loader_data(class_loader2())->loader_name_and_id()
   252                     );
   252                     );
   253     }
   253     }
   254   } else if (*pp1 == *pp2) {
   254   } else if (*pp1 == *pp2) {
   255     /* constraint already imposed */
   255     /* constraint already imposed */
   256     if ((*pp1)->klass() == NULL) {
   256     if ((*pp1)->klass() == NULL) {
   258       if (lt.is_enabled()) {
   258       if (lt.is_enabled()) {
   259         ResourceMark rm;
   259         ResourceMark rm;
   260         lt.print("setting class object in existing constraint for"
   260         lt.print("setting class object in existing constraint for"
   261                       " name: %s and loader %s",
   261                       " name: %s and loader %s",
   262                       class_name->as_C_string(),
   262                       class_name->as_C_string(),
   263                       SystemDictionary::loader_name(class_loader1())
   263                       ClassLoaderData::class_loader_data(class_loader1())->loader_name_and_id()
   264                       );
   264                       );
   265       }
   265       }
   266     } else {
   266     } else {
   267       assert((*pp1)->klass() == klass, "loader constraints corrupted");
   267       assert((*pp1)->klass() == klass, "loader constraints corrupted");
   268     }
   268     }
   289     if (lt.is_enabled()) {
   289     if (lt.is_enabled()) {
   290       ResourceMark rm;
   290       ResourceMark rm;
   291       lt.print("constraint check failed for name %s, loader %s: "
   291       lt.print("constraint check failed for name %s, loader %s: "
   292                  "the presented class object differs from that stored",
   292                  "the presented class object differs from that stored",
   293                  name->as_C_string(),
   293                  name->as_C_string(),
   294                  SystemDictionary::loader_name(loader()));
   294                  ClassLoaderData::class_loader_data(loader())->loader_name_and_id());
   295     }
   295     }
   296     return false;
   296     return false;
   297   } else {
   297   } else {
   298     if (p && p->klass() == NULL) {
   298     if (p && p->klass() == NULL) {
   299       p->set_klass(k);
   299       p->set_klass(k);
   300       if (lt.is_enabled()) {
   300       if (lt.is_enabled()) {
   301         ResourceMark rm;
   301         ResourceMark rm;
   302         lt.print("updating constraint for name %s, loader %s, "
   302         lt.print("updating constraint for name %s, loader %s, "
   303                    "by setting class object",
   303                    "by setting class object",
   304                    name->as_C_string(),
   304                    name->as_C_string(),
   305                    SystemDictionary::loader_name(loader()));
   305                    ClassLoaderData::class_loader_data(loader())->loader_name_and_id());
   306       }
   306       }
   307     }
   307     }
   308     return true;
   308     return true;
   309   }
   309   }
   310 }
   310 }
   351   if (lt.is_enabled()) {
   351   if (lt.is_enabled()) {
   352     ResourceMark rm;
   352     ResourceMark rm;
   353     lt.print("extending constraint for name %s by adding loader[%d]: %s %s",
   353     lt.print("extending constraint for name %s by adding loader[%d]: %s %s",
   354                p->name()->as_C_string(),
   354                p->name()->as_C_string(),
   355                num,
   355                num,
   356                SystemDictionary::loader_name(loader()),
   356                ClassLoaderData::class_loader_data(loader())->loader_name_and_id(),
   357                (p->klass() == NULL ? " and setting class object" : "")
   357                (p->klass() == NULL ? " and setting class object" : "")
   358                );
   358                );
   359   }
   359   }
   360   if (p->klass() == NULL) {
   360   if (p->klass() == NULL) {
   361     p->set_klass(klass);
   361     p->set_klass(klass);
   394                   p1->name()->as_C_string()
   394                   p1->name()->as_C_string()
   395                   );
   395                   );
   396 
   396 
   397     for (int i = 0; i < p1->num_loaders(); i++) {
   397     for (int i = 0; i < p1->num_loaders(); i++) {
   398       lt.print("    [%d]: %s", i,
   398       lt.print("    [%d]: %s", i,
   399                     p1->loader_data(i)->loader_name());
   399                     p1->loader_data(i)->loader_name_and_id());
   400     }
   400     }
   401     if (p1->klass() == NULL) {
   401     if (p1->klass() == NULL) {
   402       lt.print("... and setting class object");
   402       lt.print("... and setting class object");
   403     }
   403     }
   404   }
   404   }