ulclassinit02 Cdiff src/share/vm/classfile/verifier.cpp (original) (raw)
src/share/vm/classfile/verifier.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File ulclassinit02 Cdiff src/share/vm/classfile/verifier.cpp Print this page
*** 46,55 ****
--- 46,56 ----
#include "runtime/orderAccess.inline.hpp"
#include "runtime/os.hpp"
#include "runtime/thread.hpp"
#include "services/threadService.hpp"
#include "utilities/bytes.hpp"
+ #include "logging/log.hpp"
#define NOFAILOVER_MAJOR_VERSION 51
#define NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION 51
#define STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION 52
*** 109,118 **** --- 110,131 ---- } else { tty->print("RESOLVE %s %s (verification)\n", verify, resolve); } }
// Prints the end-verification message to the appropriate output.
void Verifier::log_end_verification(outputStream* st, const char* klassName, Symbol* exception_name, TRAPS) {
if (HAS_PENDING_EXCEPTION) {
st->print("Verification for %s has", klassName);
st->print_cr(" exception pending %s ",
PENDING_EXCEPTION->klass()->external_name());
} else if (exception_name != NULL) {
st->print_cr("Verification for %s failed", klassName);
}
st->print_cr("End class verification for: %s", klassName);
}
bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool should_verify_class, TRAPS) { HandleMark hm; ResourceMark rm(THREAD);
// Eagerly allocate the identity hash code for a klass. This is a fallout
*** 153,176 ****
const char* klassName = klass->external_name();
bool can_failover = FailOverToOldVerifier &&
klass->major_version() < NOFAILOVER_MAJOR_VERSION;
! if (TraceClassInitialization) { ! tty->print_cr("Start class verification for: %s", klassName); ! } if (klass->major_version() >= STACKMAP_ATTRIBUTE_MAJOR_VERSION) { ClassVerifier split_verifier(klass, THREAD); split_verifier.verify_class(THREAD); exception_name = split_verifier.result(); if (can_failover && !HAS_PENDING_EXCEPTION && (exception_name == vmSymbols::java_lang_VerifyError() || exception_name == vmSymbols::java_lang_ClassFormatError())) { ! if (TraceClassInitialization || VerboseVerification) { ! tty->print_cr( ! "Fail over class verification to old verifier for: %s", klassName); } exception_name = inference_verify( klass, message_buffer, message_buffer_len, THREAD); } if (exception_name != NULL) { exception_message = split_verifier.exception_message(); --- 166,187 ----
const char* klassName = klass->external_name();
bool can_failover = FailOverToOldVerifier &&
klass->major_version() < NOFAILOVER_MAJOR_VERSION;
! log_info(classinit)("Start class verification for: %s", klassName); if (klass->major_version() >= STACKMAP_ATTRIBUTE_MAJOR_VERSION) { ClassVerifier split_verifier(klass, THREAD); split_verifier.verify_class(THREAD); exception_name = split_verifier.result(); if (can_failover && !HAS_PENDING_EXCEPTION && (exception_name == vmSymbols::java_lang_VerifyError() || exception_name == vmSymbols::java_lang_ClassFormatError())) { ! if (VerboseVerification) { ! tty->print_cr("Fail over class verification to old verifier for: %s", klassName); }
log_info(classinit)("Fail over class verification to old verifier for: %s", klassName); exception_name = inference_verify( klass, message_buffer, message_buffer_len, THREAD); } if (exception_name != NULL) { exception_message = split_verifier.exception_message();
*** 178,196 **** } else { exception_name = inference_verify( klass, message_buffer, message_buffer_len, THREAD); }
! if (TraceClassInitialization || VerboseVerification) { ! if (HAS_PENDING_EXCEPTION) { ! tty->print("Verification for %s has", klassName); ! tty->print_cr(" exception pending %s ", ! PENDING_EXCEPTION->klass()->external_name()); ! } else if (exception_name != NULL) { ! tty->print_cr("Verification for %s failed", klassName); } ! tty->print_cr("End class verification for: %s", klassName); }
if (HAS_PENDING_EXCEPTION) {
return false; // use the existing exception
} else if (exception_name == NULL) {
--- 189,203 ---- } else { exception_name = inference_verify( klass, message_buffer, message_buffer_len, THREAD); }
! if (log_is_enabled(Info, classinit)){ ! log_end_verification(LogHandle(classinit)::info_stream(), klassName, exception_name, THREAD); } ! if (VerboseVerification){ ! log_end_verification(tty, klassName, exception_name, THREAD); }
if (HAS_PENDING_EXCEPTION) {
return false; // use the existing exception
} else if (exception_name == NULL) {
*** 596,610 **** continue; } verify_method(methodHandle(THREAD, m), CHECK_VERIFY(this)); }
! if (VerboseVerification || TraceClassInitialization) { ! if (was_recursively_verified()) tty->print_cr("Recursive verification detected for: %s", _klass->external_name()); } }
void ClassVerifier::verify_method(const methodHandle& m, TRAPS) { HandleMark hm(THREAD); _method = m; // initialize _method --- 603,620 ---- continue; } verify_method(methodHandle(THREAD, m), CHECK_VERIFY(this)); }
! if (was_recursively_verified()){
! if (VerboseVerification){
tty->print_cr("Recursive verification detected for: %s",
_klass->external_name());
}
log_info(classinit)("Recursive verification detected for: %s",
_klass->external_name());
- } }
void ClassVerifier::verify_method(const methodHandle& m, TRAPS) { HandleMark hm(THREAD); _method = m; // initialize _method
src/share/vm/classfile/verifier.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File