< 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 >