mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-16 21:35:25 +00:00
Merge
This commit is contained in:
commit
88f4fdeddc
@ -5373,12 +5373,12 @@ void ClassFileParser::fill_instance_klass(InstanceKlass* ik, TRAPS) {
|
||||
}
|
||||
}
|
||||
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
ResourceMark rm;
|
||||
// print out the superclass.
|
||||
const char * from = ik->external_name();
|
||||
if (ik->java_super() != NULL) {
|
||||
tty->print("RESOLVE %s %s (super)\n",
|
||||
log_info(classresolve)("%s %s (super)",
|
||||
from,
|
||||
ik->java_super()->external_name());
|
||||
}
|
||||
@ -5389,7 +5389,7 @@ void ClassFileParser::fill_instance_klass(InstanceKlass* ik, TRAPS) {
|
||||
for (int i = 0; i < length; i++) {
|
||||
const Klass* const k = local_interfaces->at(i);
|
||||
const char * to = k->external_name();
|
||||
tty->print("RESOLVE %s %s (interface)\n", from, to);
|
||||
log_info(classresolve)("%s %s (interface)", from, to);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ bool VerificationType::is_reference_assignable_from(
|
||||
Klass* obj = SystemDictionary::resolve_or_fail(
|
||||
name(), Handle(THREAD, klass->class_loader()),
|
||||
Handle(THREAD, klass->protection_domain()), true, CHECK_false);
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
Verifier::trace_class_resolution(obj, klass());
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@ bool VerificationType::is_reference_assignable_from(
|
||||
Klass* from_class = SystemDictionary::resolve_or_fail(
|
||||
from.name(), Handle(THREAD, klass->class_loader()),
|
||||
Handle(THREAD, klass->protection_domain()), true, CHECK_false);
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
Verifier::trace_class_resolution(from_class, klass());
|
||||
}
|
||||
return InstanceKlass::cast(from_class)->is_subclass_of(this_class());
|
||||
|
||||
@ -106,9 +106,9 @@ void Verifier::trace_class_resolution(Klass* resolve_class, InstanceKlass* verif
|
||||
const char* resolve = resolve_class->external_name();
|
||||
// print in a single call to reduce interleaving between threads
|
||||
if (source_file != NULL) {
|
||||
tty->print("RESOLVE %s %s %s (verification)\n", verify, resolve, source_file);
|
||||
log_info(classresolve)("%s %s %s (verification)", verify, resolve, source_file);
|
||||
} else {
|
||||
tty->print("RESOLVE %s %s (verification)\n", verify, resolve);
|
||||
log_info(classresolve)("%s %s (verification)", verify, resolve);
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,7 +206,7 @@ bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool shoul
|
||||
ResourceMark rm(THREAD);
|
||||
instanceKlassHandle kls =
|
||||
SystemDictionary::resolve_or_fail(exception_name, true, CHECK_false);
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
Verifier::trace_class_resolution(kls(), klass());
|
||||
}
|
||||
|
||||
@ -1992,7 +1992,7 @@ Klass* ClassVerifier::load_class(Symbol* name, TRAPS) {
|
||||
name, Handle(THREAD, loader), Handle(THREAD, protection_domain),
|
||||
true, THREAD);
|
||||
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
instanceKlassHandle cur_class = current_class();
|
||||
Verifier::trace_class_resolution(kls, cur_class());
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ class Verifier : AllStatic {
|
||||
// Relax certain verifier checks to enable some broken 1.1 apps to run on 1.2.
|
||||
static bool relax_verify_for(oop class_loader);
|
||||
|
||||
// Print output for -XX:+TraceClassResolution
|
||||
// Print output for classresolve
|
||||
static void trace_class_resolution(Klass* resolve_class, InstanceKlass* verify_class);
|
||||
|
||||
private:
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
LOG_TAG(bot) \
|
||||
LOG_TAG(census) \
|
||||
LOG_TAG(classhisto) \
|
||||
LOG_TAG(classresolve) \
|
||||
LOG_TAG(classinit) \
|
||||
LOG_TAG(comp) \
|
||||
LOG_TAG(compaction) \
|
||||
|
||||
@ -204,11 +204,11 @@ void ConstantPool::trace_class_resolution(const constantPoolHandle& this_cp, Kla
|
||||
if (k() != this_cp->pool_holder()) {
|
||||
// only print something if the classes are different
|
||||
if (source_file != NULL) {
|
||||
tty->print("RESOLVE %s %s %s:%d\n",
|
||||
log_info(classresolve)("%s %s %s:%d",
|
||||
this_cp->pool_holder()->external_name(),
|
||||
k->external_name(), source_file, line_number);
|
||||
} else {
|
||||
tty->print("RESOLVE %s %s\n",
|
||||
log_info(classresolve)("%s %s",
|
||||
this_cp->pool_holder()->external_name(),
|
||||
k->external_name());
|
||||
}
|
||||
@ -277,7 +277,7 @@ Klass* ConstantPool::klass_at_impl(const constantPoolHandle& this_cp, int which,
|
||||
ClassLoaderData* this_key = this_cp->pool_holder()->class_loader_data();
|
||||
this_key->record_dependency(k(), CHECK_NULL); // Can throw OOM
|
||||
|
||||
if (TraceClassResolution && !k->is_array_klass()) {
|
||||
if (log_is_enabled(Info, classresolve) && !k->is_array_klass()) {
|
||||
// skip resolving the constant pool so that this code gets
|
||||
// called the next time some bytecodes refer to this class.
|
||||
trace_class_resolution(this_cp, k);
|
||||
|
||||
@ -345,7 +345,7 @@ JNI_ENTRY(jclass, jni_DefineClass(JNIEnv *env, const char *name, jobject loaderR
|
||||
&st,
|
||||
CHECK_NULL);
|
||||
|
||||
if (TraceClassResolution && k != NULL) {
|
||||
if (log_is_enabled(Info, classresolve) && k != NULL) {
|
||||
trace_class_resolution(k);
|
||||
}
|
||||
|
||||
@ -415,7 +415,7 @@ JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name))
|
||||
result = find_class_from_class_loader(env, sym, true, loader,
|
||||
protection_domain, true, thread);
|
||||
|
||||
if (TraceClassResolution && result != NULL) {
|
||||
if (log_is_enabled(Info, classresolve) && result != NULL) {
|
||||
trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
|
||||
}
|
||||
|
||||
@ -3277,7 +3277,7 @@ static jclass lookupOne(JNIEnv* env, const char* name, TRAPS) {
|
||||
TempNewSymbol sym = SymbolTable::new_symbol(name, CHECK_NULL);
|
||||
jclass result = find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL);
|
||||
|
||||
if (TraceClassResolution && result != NULL) {
|
||||
if (log_is_enabled(Info, classresolve) && result != NULL) {
|
||||
trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
|
||||
}
|
||||
return result;
|
||||
|
||||
@ -206,9 +206,9 @@ static void trace_class_resolution_impl(Klass* to_class, TRAPS) {
|
||||
const char * to = to_class->external_name();
|
||||
// print in a single call to reduce interleaving between threads
|
||||
if (source_file != NULL) {
|
||||
tty->print("RESOLVE %s %s %s:%d (%s)\n", from, to, source_file, line_number, trace);
|
||||
log_info(classresolve)("%s %s %s:%d (%s)", from, to, source_file, line_number, trace);
|
||||
} else {
|
||||
tty->print("RESOLVE %s %s (%s)\n", from, to, trace);
|
||||
log_info(classresolve)("%s %s (%s)", from, to, trace);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -835,7 +835,7 @@ JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
trace_class_resolution(k);
|
||||
}
|
||||
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,
|
||||
h_prot, false, THREAD);
|
||||
|
||||
if (TraceClassResolution && result != NULL) {
|
||||
if (log_is_enabled(Info, classresolve) && result != NULL) {
|
||||
trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(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,
|
||||
h_prot, true, thread);
|
||||
|
||||
if (TraceClassResolution && result != NULL) {
|
||||
if (log_is_enabled(Info, classresolve) && result != NULL) {
|
||||
// this function is generally only used for class loading during verification.
|
||||
ResourceMark rm;
|
||||
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);
|
||||
Klass* to_class = java_lang_Class::as_Klass(mirror);
|
||||
const char * to = to_class->external_name();
|
||||
tty->print("RESOLVE %s %s (verification)\n", from_name, to);
|
||||
log_info(classresolve)("%s %s (verification)", from_name, to);
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -980,7 +980,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
|
||||
&st,
|
||||
CHECK_NULL);
|
||||
|
||||
if (TraceClassResolution && k != NULL) {
|
||||
if (log_is_enabled(Info, classresolve) && k != NULL) {
|
||||
trace_class_resolution(k);
|
||||
}
|
||||
|
||||
|
||||
@ -400,6 +400,8 @@ static AliasedFlag const aliased_jvm_flags[] = {
|
||||
};
|
||||
|
||||
static AliasedFlag const aliased_jvm_logging_flags[] = {
|
||||
{ "-XX:+TraceClassResolution", "-Xlog:classresolve=info"},
|
||||
{ "-XX:-TraceClassResolution", "-Xlog:classresolve=off"},
|
||||
{ "-XX:+TraceExceptions", "-Xlog:exceptions=info" },
|
||||
{ "-XX:-TraceExceptions", "-Xlog:exceptions=off" },
|
||||
{ "-XX:+TraceMonitorInflation", "-Xlog:monitorinflation=debug" },
|
||||
|
||||
@ -1496,9 +1496,6 @@ public:
|
||||
develop(bool, TraceClearedExceptions, false, \
|
||||
"Print when an exception is forcibly cleared") \
|
||||
\
|
||||
product(bool, TraceClassResolution, false, \
|
||||
"Trace all constant pool resolutions (for debugging)") \
|
||||
\
|
||||
product(bool, TraceBiasedLocking, false, \
|
||||
"Trace biased locking in JVM") \
|
||||
\
|
||||
|
||||
@ -74,9 +74,9 @@ static void trace_class_resolution(const Klass* to_class) {
|
||||
const char * to = to_class->external_name();
|
||||
// print in a single call to reduce interleaving between threads
|
||||
if (source_file != NULL) {
|
||||
tty->print("RESOLVE %s %s %s:%d (reflection)\n", from, to, source_file, line_number);
|
||||
log_info(classresolve)("%s %s %s:%d (reflection)", from, to, source_file, line_number);
|
||||
} else {
|
||||
tty->print("RESOLVE %s %s (reflection)\n", from, to);
|
||||
log_info(classresolve)("%s %s (reflection)", from, to);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -599,7 +599,7 @@ static oop get_mirror_from_signature(methodHandle method,
|
||||
Handle(THREAD, protection_domain),
|
||||
true,
|
||||
CHECK_NULL);
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
trace_class_resolution(k);
|
||||
}
|
||||
return k->java_mirror();
|
||||
@ -654,7 +654,7 @@ static Handle new_type(Symbol* signature, KlassHandle k, TRAPS) {
|
||||
Handle(THREAD, k->protection_domain()),
|
||||
true, CHECK_(Handle()));
|
||||
|
||||
if (TraceClassResolution) {
|
||||
if (log_is_enabled(Info, classresolve)) {
|
||||
trace_class_resolution(result);
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ public class TraceClassRes {
|
||||
"-XX:+TraceClassResolution", "-verify", "-Xshare:off", "-version");
|
||||
|
||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
||||
output.shouldContain("RESOLVE java.lang.ClassLoader java.lang.Throwable ClassLoader.java (verification)");
|
||||
output.shouldContain("[classresolve] java.lang.ClassLoader java.lang.Throwable ClassLoader.java (verification)");
|
||||
output.shouldHaveExitValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user