mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
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:
parent
fc407c943e
commit
155a64deb4
9 changed files with 33 additions and 38 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 },
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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]");
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue