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); } }


*** 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); }


*** 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()); }

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