< prev index next >

src/share/vm/classfile/verifier.cpp

Print this page




  71     void *lib_handle = os::native_java_library();
  72     void *func = os::dll_lookup(lib_handle, "VerifyClassCodesForMajorVersion");
  73     OrderAccess::release_store_ptr(&_verify_byte_codes_fn, func);
  74     if (func == NULL) {
  75       OrderAccess::release_store(&_is_new_verify_byte_codes_fn, false);
  76       func = os::dll_lookup(lib_handle, "VerifyClassCodes");
  77       OrderAccess::release_store_ptr(&_verify_byte_codes_fn, func);
  78     }
  79   }
  80   return (void*)_verify_byte_codes_fn;
  81 }
  82 
  83 
  84 // Methods in Verifier
  85 
  86 bool Verifier::should_verify_for(oop class_loader, bool should_verify_class) {
  87   return (class_loader == NULL || !should_verify_class) ?
  88     BytecodeVerificationLocal : BytecodeVerificationRemote;
  89 }
  90 
  91 bool Verifier::relax_verify_for(oop loader) {
  92   bool trusted = java_lang_ClassLoader::is_trusted_loader(loader);
  93   bool need_verify =
  94     // verifyAll
  95     (BytecodeVerificationLocal && BytecodeVerificationRemote) ||
  96     // verifyRemote
  97     (!BytecodeVerificationLocal && BytecodeVerificationRemote && !trusted);
  98   return !need_verify;
  99 }
 100 
 101 void Verifier::trace_class_resolution(Klass* resolve_class, InstanceKlass* verify_class) {
 102   assert(verify_class != NULL, "Unexpected null verify_class");
 103   ResourceMark rm;
 104   Symbol* s = verify_class->source_file_name();
 105   const char* source_file = (s != NULL ? s->as_C_string() : NULL);
 106   const char* verify = verify_class->external_name();
 107   const char* resolve = resolve_class->external_name();
 108   // print in a single call to reduce interleaving between threads
 109   if (source_file != NULL) {
 110     log_debug(class, resolve)("%s %s %s (verification)", verify, resolve, source_file);
 111   } else {




  71     void *lib_handle = os::native_java_library();
  72     void *func = os::dll_lookup(lib_handle, "VerifyClassCodesForMajorVersion");
  73     OrderAccess::release_store_ptr(&_verify_byte_codes_fn, func);
  74     if (func == NULL) {
  75       OrderAccess::release_store(&_is_new_verify_byte_codes_fn, false);
  76       func = os::dll_lookup(lib_handle, "VerifyClassCodes");
  77       OrderAccess::release_store_ptr(&_verify_byte_codes_fn, func);
  78     }
  79   }
  80   return (void*)_verify_byte_codes_fn;
  81 }
  82 
  83 
  84 // Methods in Verifier
  85 
  86 bool Verifier::should_verify_for(oop class_loader, bool should_verify_class) {
  87   return (class_loader == NULL || !should_verify_class) ?
  88     BytecodeVerificationLocal : BytecodeVerificationRemote;
  89 }
  90 
  91 bool Verifier::relax_access_for(oop loader) {
  92   bool trusted = java_lang_ClassLoader::is_trusted_loader(loader);
  93   bool need_verify =
  94     // verifyAll
  95     (BytecodeVerificationLocal && BytecodeVerificationRemote) ||
  96     // verifyRemote
  97     (!BytecodeVerificationLocal && BytecodeVerificationRemote && !trusted);
  98   return !need_verify;
  99 }
 100 
 101 void Verifier::trace_class_resolution(Klass* resolve_class, InstanceKlass* verify_class) {
 102   assert(verify_class != NULL, "Unexpected null verify_class");
 103   ResourceMark rm;
 104   Symbol* s = verify_class->source_file_name();
 105   const char* source_file = (s != NULL ? s->as_C_string() : NULL);
 106   const char* verify = verify_class->external_name();
 107   const char* resolve = resolve_class->external_name();
 108   // print in a single call to reduce interleaving between threads
 109   if (source_file != NULL) {
 110     log_debug(class, resolve)("%s %s %s (verification)", verify, resolve, source_file);
 111   } else {


< prev index next >