8146551: The output from classresolve tag has been shortened and moved to debug level

The output from classresolve tag has been shortened and moved to debug level.

Reviewed-by: coleenp, rprotacio
This commit is contained in:
Max Ockner 2016-03-10 15:52:56 -05:00
parent fc407c943e
commit 155a64deb4
9 changed files with 33 additions and 38 deletions

View file

@ -5358,12 +5358,12 @@ void ClassFileParser::fill_instance_klass(InstanceKlass* ik, TRAPS) {
ik->print_loading_log(LogLevel::Debug, _loader_data, _stream); ik->print_loading_log(LogLevel::Debug, _loader_data, _stream);
} }
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
ResourceMark rm; ResourceMark rm;
// print out the superclass. // print out the superclass.
const char * from = ik->external_name(); const char * from = ik->external_name();
if (ik->java_super() != NULL) { if (ik->java_super() != NULL) {
log_info(classresolve)("%s %s (super)", log_debug(classresolve)("%s %s (super)",
from, from,
ik->java_super()->external_name()); ik->java_super()->external_name());
} }
@ -5374,7 +5374,7 @@ void ClassFileParser::fill_instance_klass(InstanceKlass* ik, TRAPS) {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
const Klass* const k = local_interfaces->at(i); const Klass* const k = local_interfaces->at(i);
const char * to = k->external_name(); const char * to = k->external_name();
log_info(classresolve)("%s %s (interface)", from, to); log_debug(classresolve)("%s %s (interface)", from, to);
} }
} }
} }

View file

@ -61,7 +61,7 @@ bool VerificationType::is_reference_assignable_from(
Klass* obj = SystemDictionary::resolve_or_fail( Klass* obj = SystemDictionary::resolve_or_fail(
name(), Handle(THREAD, klass->class_loader()), name(), Handle(THREAD, klass->class_loader()),
Handle(THREAD, klass->protection_domain()), true, CHECK_false); Handle(THREAD, klass->protection_domain()), true, CHECK_false);
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
Verifier::trace_class_resolution(obj, klass()); Verifier::trace_class_resolution(obj, klass());
} }
@ -80,7 +80,7 @@ bool VerificationType::is_reference_assignable_from(
Klass* from_class = SystemDictionary::resolve_or_fail( Klass* from_class = SystemDictionary::resolve_or_fail(
from.name(), Handle(THREAD, klass->class_loader()), from.name(), Handle(THREAD, klass->class_loader()),
Handle(THREAD, klass->protection_domain()), true, CHECK_false); Handle(THREAD, klass->protection_domain()), true, CHECK_false);
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
Verifier::trace_class_resolution(from_class, klass()); Verifier::trace_class_resolution(from_class, klass());
} }
return InstanceKlass::cast(from_class)->is_subclass_of(this_class()); return InstanceKlass::cast(from_class)->is_subclass_of(this_class());

View file

@ -107,9 +107,9 @@ void Verifier::trace_class_resolution(Klass* resolve_class, InstanceKlass* verif
const char* resolve = resolve_class->external_name(); const char* resolve = resolve_class->external_name();
// print in a single call to reduce interleaving between threads // print in a single call to reduce interleaving between threads
if (source_file != NULL) { if (source_file != NULL) {
log_info(classresolve)("%s %s %s (verification)", verify, resolve, source_file); log_debug(classresolve)("%s %s %s (verification)", verify, resolve, source_file);
} else { } else {
log_info(classresolve)("%s %s (verification)", verify, resolve); log_debug(classresolve)("%s %s (verification)", verify, resolve);
} }
} }
@ -205,7 +205,7 @@ bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool shoul
ResourceMark rm(THREAD); ResourceMark rm(THREAD);
instanceKlassHandle kls = instanceKlassHandle kls =
SystemDictionary::resolve_or_fail(exception_name, true, CHECK_false); SystemDictionary::resolve_or_fail(exception_name, true, CHECK_false);
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
Verifier::trace_class_resolution(kls(), klass()); Verifier::trace_class_resolution(kls(), klass());
} }
@ -1994,7 +1994,7 @@ Klass* ClassVerifier::load_class(Symbol* name, TRAPS) {
name, Handle(THREAD, loader), Handle(THREAD, protection_domain), name, Handle(THREAD, loader), Handle(THREAD, protection_domain),
true, THREAD); true, THREAD);
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
instanceKlassHandle cur_class = current_class(); instanceKlassHandle cur_class = current_class();
Verifier::trace_class_resolution(kls, cur_class()); Verifier::trace_class_resolution(kls, cur_class());
} }

View file

@ -208,11 +208,11 @@ void ConstantPool::trace_class_resolution(const constantPoolHandle& this_cp, Kla
if (k() != this_cp->pool_holder()) { if (k() != this_cp->pool_holder()) {
// only print something if the classes are different // only print something if the classes are different
if (source_file != NULL) { if (source_file != NULL) {
log_info(classresolve)("%s %s %s:%d", log_debug(classresolve)("%s %s %s:%d",
this_cp->pool_holder()->external_name(), this_cp->pool_holder()->external_name(),
k->external_name(), source_file, line_number); k->external_name(), source_file, line_number);
} else { } else {
log_info(classresolve)("%s %s", log_debug(classresolve)("%s %s",
this_cp->pool_holder()->external_name(), this_cp->pool_holder()->external_name(),
k->external_name()); k->external_name());
} }
@ -281,15 +281,10 @@ Klass* ConstantPool::klass_at_impl(const constantPoolHandle& this_cp, int which,
ClassLoaderData* this_key = this_cp->pool_holder()->class_loader_data(); ClassLoaderData* this_key = this_cp->pool_holder()->class_loader_data();
this_key->record_dependency(k(), CHECK_NULL); // Can throw OOM this_key->record_dependency(k(), CHECK_NULL); // Can throw OOM
if (log_is_enabled(Info, classresolve) && !k->is_array_klass()) { // logging for classresolve tag.
// skip resolving the constant pool so that this code gets trace_class_resolution(this_cp, k);
// called the next time some bytecodes refer to this class.
trace_class_resolution(this_cp, k);
return k();
} else {
this_cp->klass_at_put(which, k());
}
this_cp->klass_at_put(which, k());
entry = this_cp->resolved_klass_at(which); entry = this_cp->resolved_klass_at(which);
assert(entry.is_resolved() && entry.get_klass()->is_klass(), "must be resolved at this point"); assert(entry.is_resolved() && entry.get_klass()->is_klass(), "must be resolved at this point");
return entry.get_klass(); return entry.get_klass();

View file

@ -347,7 +347,7 @@ JNI_ENTRY(jclass, jni_DefineClass(JNIEnv *env, const char *name, jobject loaderR
&st, &st,
CHECK_NULL); CHECK_NULL);
if (log_is_enabled(Info, classresolve) && k != NULL) { if (log_is_enabled(Debug, classresolve) && k != NULL) {
trace_class_resolution(k); trace_class_resolution(k);
} }
@ -417,7 +417,7 @@ JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name))
result = find_class_from_class_loader(env, sym, true, loader, result = find_class_from_class_loader(env, sym, true, loader,
protection_domain, true, thread); protection_domain, true, thread);
if (log_is_enabled(Info, classresolve) && result != NULL) { if (log_is_enabled(Debug, classresolve) && result != NULL) {
trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result))); trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
} }
@ -3269,7 +3269,7 @@ static jclass lookupOne(JNIEnv* env, const char* name, TRAPS) {
TempNewSymbol sym = SymbolTable::new_symbol(name, CHECK_NULL); TempNewSymbol sym = SymbolTable::new_symbol(name, CHECK_NULL);
jclass result = find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL); jclass result = find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL);
if (log_is_enabled(Info, classresolve) && result != NULL) { if (log_is_enabled(Debug, classresolve) && result != NULL) {
trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result))); trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
} }
return result; return result;

View file

@ -206,9 +206,9 @@ static void trace_class_resolution_impl(Klass* to_class, TRAPS) {
const char * to = to_class->external_name(); const char * to = to_class->external_name();
// print in a single call to reduce interleaving between threads // print in a single call to reduce interleaving between threads
if (source_file != NULL) { if (source_file != NULL) {
log_info(classresolve)("%s %s %s:%d (%s)", from, to, source_file, line_number, trace); log_debug(classresolve)("%s %s %s:%d (%s)", from, to, source_file, line_number, trace);
} else { } else {
log_info(classresolve)("%s %s (%s)", from, to, trace); log_debug(classresolve)("%s %s (%s)", from, to, trace);
} }
} }
} }
@ -835,7 +835,7 @@ JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env,
return NULL; return NULL;
} }
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
trace_class_resolution(k); trace_class_resolution(k);
} }
return (jclass) JNIHandles::make_local(env, k->java_mirror()); return (jclass) JNIHandles::make_local(env, k->java_mirror());
@ -872,7 +872,7 @@ JVM_ENTRY(jclass, JVM_FindClassFromCaller(JNIEnv* env, const char* name,
jclass result = find_class_from_class_loader(env, h_name, init, h_loader, jclass result = find_class_from_class_loader(env, h_name, init, h_loader,
h_prot, false, THREAD); h_prot, false, THREAD);
if (log_is_enabled(Info, classresolve) && result != NULL) { if (log_is_enabled(Debug, classresolve) && result != NULL) {
trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result))); trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
} }
return result; return result;
@ -902,7 +902,7 @@ JVM_ENTRY(jclass, JVM_FindClassFromClass(JNIEnv *env, const char *name,
jclass result = find_class_from_class_loader(env, h_name, init, h_loader, jclass result = find_class_from_class_loader(env, h_name, init, h_loader,
h_prot, true, thread); h_prot, true, thread);
if (log_is_enabled(Info, classresolve) && result != NULL) { if (log_is_enabled(Debug, classresolve) && result != NULL) {
// this function is generally only used for class loading during verification. // this function is generally only used for class loading during verification.
ResourceMark rm; ResourceMark rm;
oop from_mirror = JNIHandles::resolve_non_null(from); oop from_mirror = JNIHandles::resolve_non_null(from);
@ -912,7 +912,7 @@ JVM_ENTRY(jclass, JVM_FindClassFromClass(JNIEnv *env, const char *name,
oop mirror = JNIHandles::resolve_non_null(result); oop mirror = JNIHandles::resolve_non_null(result);
Klass* to_class = java_lang_Class::as_Klass(mirror); Klass* to_class = java_lang_Class::as_Klass(mirror);
const char * to = to_class->external_name(); const char * to = to_class->external_name();
log_info(classresolve)("%s %s (verification)", from_name, to); log_debug(classresolve)("%s %s (verification)", from_name, to);
} }
return result; return result;
@ -980,7 +980,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
&st, &st,
CHECK_NULL); CHECK_NULL);
if (log_is_enabled(Info, classresolve) && k != NULL) { if (log_is_enabled(Debug, classresolve) && k != NULL) {
trace_class_resolution(k); trace_class_resolution(k);
} }

View file

@ -408,7 +408,7 @@ static AliasedLoggingFlag const aliased_logging_flags[] = {
{ "TraceBiasedLocking", LogLevel::Info, true, LogTag::_biasedlocking }, { "TraceBiasedLocking", LogLevel::Info, true, LogTag::_biasedlocking },
{ "TraceClassLoading", LogLevel::Info, true, LogTag::_classload }, { "TraceClassLoading", LogLevel::Info, true, LogTag::_classload },
{ "TraceClassPaths", LogLevel::Info, true, LogTag::_classpath }, { "TraceClassPaths", LogLevel::Info, true, LogTag::_classpath },
{ "TraceClassResolution", LogLevel::Info, true, LogTag::_classresolve }, { "TraceClassResolution", LogLevel::Debug, true, LogTag::_classresolve },
{ "TraceClassUnloading", LogLevel::Info, true, LogTag::_classunload }, { "TraceClassUnloading", LogLevel::Info, true, LogTag::_classunload },
{ "TraceExceptions", LogLevel::Info, true, LogTag::_exceptions }, { "TraceExceptions", LogLevel::Info, true, LogTag::_exceptions },
{ "TraceMonitorInflation", LogLevel::Debug, true, LogTag::_monitorinflation }, { "TraceMonitorInflation", LogLevel::Debug, true, LogTag::_monitorinflation },

View file

@ -74,9 +74,9 @@ static void trace_class_resolution(const Klass* to_class) {
const char * to = to_class->external_name(); const char * to = to_class->external_name();
// print in a single call to reduce interleaving between threads // print in a single call to reduce interleaving between threads
if (source_file != NULL) { if (source_file != NULL) {
log_info(classresolve)("%s %s %s:%d (reflection)", from, to, source_file, line_number); log_debug(classresolve)("%s %s %s:%d (reflection)", from, to, source_file, line_number);
} else { } else {
log_info(classresolve)("%s %s (reflection)", from, to); log_debug(classresolve)("%s %s (reflection)", from, to);
} }
} }
} }
@ -599,7 +599,7 @@ static oop get_mirror_from_signature(methodHandle method,
Handle(THREAD, protection_domain), Handle(THREAD, protection_domain),
true, true,
CHECK_NULL); CHECK_NULL);
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
trace_class_resolution(k); trace_class_resolution(k);
} }
return k->java_mirror(); return k->java_mirror();
@ -654,7 +654,7 @@ static Handle new_type(Symbol* signature, KlassHandle k, TRAPS) {
Handle(THREAD, k->protection_domain()), Handle(THREAD, k->protection_domain()),
true, CHECK_(Handle())); true, CHECK_(Handle()));
if (log_is_enabled(Info, classresolve)) { if (log_is_enabled(Debug, classresolve)) {
trace_class_resolution(result); trace_class_resolution(result);
} }

View file

@ -58,13 +58,13 @@ public class ClassResolutionTest {
public static void main(String... args) throws Exception { public static void main(String... args) throws Exception {
// (1) classresolve should turn on. // (1) classresolve should turn on.
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xlog:classresolve=info", ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xlog:classresolve=debug",
ClassResolutionTestMain.class.getName()); ClassResolutionTestMain.class.getName());
OutputAnalyzer o = new OutputAnalyzer(pb.start()); OutputAnalyzer o = new OutputAnalyzer(pb.start());
o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1"); o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1");
// (2) classresolve should turn off. // (2) classresolve should turn off.
pb = ProcessTools.createJavaProcessBuilder("-Xlog", pb = ProcessTools.createJavaProcessBuilder("-Xlog:classresolve=debug",
"-Xlog:classresolve=off", "-Xlog:classresolve=off",
ClassResolutionTestMain.class.getName()); ClassResolutionTestMain.class.getName());
o = new OutputAnalyzer(pb.start()); o = new OutputAnalyzer(pb.start());
@ -77,12 +77,12 @@ public class ClassResolutionTest {
o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1"); o.shouldContain("[classresolve] ClassResolutionTest$ClassResolutionTestMain$Thing1Handler ClassResolutionTest$ClassResolutionTestMain$Thing1");
// (4) TraceClassResolution should turn off. // (4) TraceClassResolution should turn off.
pb = ProcessTools.createJavaProcessBuilder("-Xlog", pb = ProcessTools.createJavaProcessBuilder("-Xlog:classresolve=debug",
"-XX:-TraceClassResolution", "-XX:-TraceClassResolution",
ClassResolutionTestMain.class.getName()); ClassResolutionTestMain.class.getName());
o = new OutputAnalyzer(pb.start()); o = new OutputAnalyzer(pb.start());
o.shouldNotContain("[classresolve]"); o.shouldNotContain("[classresolve]");
}; };
} }