< prev index next >

src/share/vm/classfile/systemDictionary.cpp

Print this page
rev 13288 : 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/jvm.h"
  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"


 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   if (log_is_enabled(Debug, protectiondomain)) {

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




  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/jvm.h"
  63 #include "prims/jvmtiEnvBase.hpp"
  64 #include "prims/resolvedMethodTable.hpp"
  65 #include "prims/methodHandles.hpp"
  66 #include "runtime/arguments.hpp"
  67 #include "runtime/biasedLocking.hpp"
  68 #include "runtime/fieldType.hpp"
  69 #include "runtime/handles.inline.hpp"


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


< prev index next >