< prev index next >

src/share/vm/classfile/systemDictionary.cpp

Print this page
rev 13113 : imported patch 8181917-refactor-ul-logstream


  29 #include "classfile/classLoader.hpp"
  30 #include "classfile/classLoaderData.inline.hpp"
  31 #include "classfile/classLoaderExt.hpp"
  32 #include "classfile/dictionary.hpp"
  33 #include "classfile/javaClasses.inline.hpp"
  34 #include "classfile/klassFactory.hpp"
  35 #include "classfile/loaderConstraints.hpp"
  36 #include "classfile/packageEntry.hpp"
  37 #include "classfile/placeholders.hpp"
  38 #include "classfile/resolutionErrors.hpp"
  39 #include "classfile/stringTable.hpp"
  40 #include "classfile/systemDictionary.hpp"
  41 #include "classfile/vmSymbols.hpp"
  42 #include "code/codeCache.hpp"
  43 #include "compiler/compileBroker.hpp"
  44 #include "gc/shared/gcLocker.hpp"
  45 #include "gc/shared/gcTraceTime.inline.hpp"
  46 #include "interpreter/bytecodeStream.hpp"
  47 #include "interpreter/interpreter.hpp"
  48 #include "logging/log.hpp"

  49 #include "memory/filemap.hpp"
  50 #include "memory/oopFactory.hpp"
  51 #include "memory/resourceArea.hpp"
  52 #include "oops/instanceKlass.hpp"
  53 #include "oops/instanceRefKlass.hpp"
  54 #include "oops/klass.inline.hpp"
  55 #include "oops/methodData.hpp"
  56 #include "oops/objArrayKlass.hpp"
  57 #include "oops/objArrayOop.inline.hpp"
  58 #include "oops/oop.inline.hpp"
  59 #include "oops/symbol.hpp"
  60 #include "oops/typeArrayKlass.hpp"
  61 #include "prims/jvmtiEnvBase.hpp"
  62 #include "prims/resolvedMethodTable.hpp"
  63 #include "prims/methodHandles.hpp"
  64 #include "runtime/arguments.hpp"
  65 #include "runtime/biasedLocking.hpp"
  66 #include "runtime/fieldType.hpp"
  67 #include "runtime/handles.inline.hpp"
  68 #include "runtime/java.hpp"


 414     MutexLocker mu(SystemDictionary_lock, THREAD);
 415     placeholders()->find_and_remove(p_index, p_hash, child_name, loader_data, PlaceholderTable::LOAD_SUPER, THREAD);
 416     SystemDictionary_lock->notify_all();
 417   }
 418   if (HAS_PENDING_EXCEPTION || superk == NULL) {
 419     // can null superk
 420     superk = handle_resolution_exception(class_name, true, superk, THREAD);
 421   }
 422 
 423   return superk;
 424 }
 425 
 426 void SystemDictionary::validate_protection_domain(InstanceKlass* klass,
 427                                                   Handle class_loader,
 428                                                   Handle protection_domain,
 429                                                   TRAPS) {
 430   if(!has_checkPackageAccess()) return;
 431 
 432   // Now we have to call back to java to check if the initating class has access
 433   JavaValue result(T_VOID);
 434   if (log_is_enabled(Debug, protectiondomain)) {

 435     ResourceMark rm;
 436     // Print out trace information
 437     outputStream* log = Log(protectiondomain)::debug_stream();
 438     log->print_cr("Checking package access");
 439     log->print("class loader: "); class_loader()->print_value_on(log);
 440     log->print(" protection domain: "); protection_domain()->print_value_on(log);
 441     log->print(" loading: "); klass->print_value_on(log);
 442     log->cr();
 443   }
 444 
 445   InstanceKlass* system_loader = SystemDictionary::ClassLoader_klass();
 446   JavaCalls::call_special(&result,
 447                          class_loader,
 448                          system_loader,
 449                          vmSymbols::checkPackageAccess_name(),
 450                          vmSymbols::class_protectiondomain_signature(),
 451                          Handle(THREAD, klass->java_mirror()),
 452                          protection_domain,
 453                          THREAD);
 454 
 455   if (HAS_PENDING_EXCEPTION) {
 456     log_debug(protectiondomain)("DENIED !!!!!!!!!!!!!!!!!!!!!");
 457   } else {
 458    log_debug(protectiondomain)("granted");
 459   }
 460 
 461   if (HAS_PENDING_EXCEPTION) return;
 462 




  29 #include "classfile/classLoader.hpp"
  30 #include "classfile/classLoaderData.inline.hpp"
  31 #include "classfile/classLoaderExt.hpp"
  32 #include "classfile/dictionary.hpp"
  33 #include "classfile/javaClasses.inline.hpp"
  34 #include "classfile/klassFactory.hpp"
  35 #include "classfile/loaderConstraints.hpp"
  36 #include "classfile/packageEntry.hpp"
  37 #include "classfile/placeholders.hpp"
  38 #include "classfile/resolutionErrors.hpp"
  39 #include "classfile/stringTable.hpp"
  40 #include "classfile/systemDictionary.hpp"
  41 #include "classfile/vmSymbols.hpp"
  42 #include "code/codeCache.hpp"
  43 #include "compiler/compileBroker.hpp"
  44 #include "gc/shared/gcLocker.hpp"
  45 #include "gc/shared/gcTraceTime.inline.hpp"
  46 #include "interpreter/bytecodeStream.hpp"
  47 #include "interpreter/interpreter.hpp"
  48 #include "logging/log.hpp"
  49 #include "logging/logStream.hpp"
  50 #include "memory/filemap.hpp"
  51 #include "memory/oopFactory.hpp"
  52 #include "memory/resourceArea.hpp"
  53 #include "oops/instanceKlass.hpp"
  54 #include "oops/instanceRefKlass.hpp"
  55 #include "oops/klass.inline.hpp"
  56 #include "oops/methodData.hpp"
  57 #include "oops/objArrayKlass.hpp"
  58 #include "oops/objArrayOop.inline.hpp"
  59 #include "oops/oop.inline.hpp"
  60 #include "oops/symbol.hpp"
  61 #include "oops/typeArrayKlass.hpp"
  62 #include "prims/jvmtiEnvBase.hpp"
  63 #include "prims/resolvedMethodTable.hpp"
  64 #include "prims/methodHandles.hpp"
  65 #include "runtime/arguments.hpp"
  66 #include "runtime/biasedLocking.hpp"
  67 #include "runtime/fieldType.hpp"
  68 #include "runtime/handles.inline.hpp"
  69 #include "runtime/java.hpp"


 415     MutexLocker mu(SystemDictionary_lock, THREAD);
 416     placeholders()->find_and_remove(p_index, p_hash, child_name, loader_data, PlaceholderTable::LOAD_SUPER, THREAD);
 417     SystemDictionary_lock->notify_all();
 418   }
 419   if (HAS_PENDING_EXCEPTION || superk == NULL) {
 420     // can null superk
 421     superk = handle_resolution_exception(class_name, true, superk, THREAD);
 422   }
 423 
 424   return superk;
 425 }
 426 
 427 void SystemDictionary::validate_protection_domain(InstanceKlass* klass,
 428                                                   Handle class_loader,
 429                                                   Handle protection_domain,
 430                                                   TRAPS) {
 431   if(!has_checkPackageAccess()) return;
 432 
 433   // Now we have to call back to java to check if the initating class has access
 434   JavaValue result(T_VOID);
 435   LogTarget(Debug, protectiondomain) lt;
 436   if (lt.is_enabled()) {
 437     ResourceMark rm;
 438     // Print out trace information
 439     LogStream ls(lt);
 440     ls.print_cr("Checking package access");
 441     ls.print("class loader: "); class_loader()->print_value_on(&ls);
 442     ls.print(" protection domain: "); protection_domain()->print_value_on(&ls);
 443     ls.print(" loading: "); klass->print_value_on(&ls);
 444     ls.cr();
 445   }
 446 
 447   InstanceKlass* system_loader = SystemDictionary::ClassLoader_klass();
 448   JavaCalls::call_special(&result,
 449                          class_loader,
 450                          system_loader,
 451                          vmSymbols::checkPackageAccess_name(),
 452                          vmSymbols::class_protectiondomain_signature(),
 453                          Handle(THREAD, klass->java_mirror()),
 454                          protection_domain,
 455                          THREAD);
 456 
 457   if (HAS_PENDING_EXCEPTION) {
 458     log_debug(protectiondomain)("DENIED !!!!!!!!!!!!!!!!!!!!!");
 459   } else {
 460    log_debug(protectiondomain)("granted");
 461   }
 462 
 463   if (HAS_PENDING_EXCEPTION) return;
 464 


< prev index next >