< prev index next >

hotspot/src/share/vm/classfile/classLoaderData.cpp

Print this page
rev 6909 : 8065361: Fixup headers and definitions for INCLUDE_TRACE
Reviewed-by: sla, stefank


  47 // the singleton class the_null_class_loader_data().
  48 
  49 #include "precompiled.hpp"
  50 #include "classfile/classLoaderData.hpp"
  51 #include "classfile/classLoaderData.inline.hpp"
  52 #include "classfile/javaClasses.hpp"
  53 #include "classfile/metadataOnStackMark.hpp"
  54 #include "classfile/systemDictionary.hpp"
  55 #include "code/codeCache.hpp"
  56 #include "memory/gcLocker.hpp"
  57 #include "memory/metadataFactory.hpp"
  58 #include "memory/metaspaceShared.hpp"
  59 #include "memory/oopFactory.hpp"
  60 #include "runtime/jniHandles.hpp"
  61 #include "runtime/mutex.hpp"
  62 #include "runtime/safepoint.hpp"
  63 #include "runtime/synchronizer.hpp"
  64 #include "utilities/growableArray.hpp"
  65 #include "utilities/macros.hpp"
  66 #include "utilities/ostream.hpp"
  67 
  68 #if INCLUDE_TRACE
  69  #include "trace/tracing.hpp"
  70 #endif
  71 
  72 ClassLoaderData * ClassLoaderData::_the_null_class_loader_data = NULL;
  73 
  74 ClassLoaderData::ClassLoaderData(Handle h_class_loader, bool is_anonymous, Dependencies dependencies) :
  75   _class_loader(h_class_loader()),
  76   _is_anonymous(is_anonymous),
  77   // An anonymous class loader data doesn't have anything to keep
  78   // it from being unloaded during parsing of the anonymous class.
  79   // The null-class-loader should always be kept alive.
  80   _keep_alive(is_anonymous || h_class_loader.is_null()),
  81   _metaspace(NULL), _unloading(false), _klasses(NULL),
  82   _claimed(0), _jmethod_ids(NULL), _handles(NULL), _deallocate_list(NULL),
  83   _next(NULL), _dependencies(dependencies),
  84   _metaspace_lock(new Mutex(Monitor::leaf+1, "Metaspace allocation lock", true)) {
  85     // empty
  86 }
  87 
  88 void ClassLoaderData::init_dependencies(TRAPS) {
  89   assert(!Universe::is_fully_initialized(), "should only be called when initializing");


 967     class_loader()->print_value_on(out);
 968   }
 969 }
 970 
 971 #if INCLUDE_TRACE
 972 
 973 Ticks ClassLoaderDataGraph::_class_unload_time;
 974 
 975 void ClassLoaderDataGraph::class_unload_event(Klass* const k) {
 976 
 977   // post class unload event
 978   EventClassUnload event(UNTIMED);
 979   event.set_endtime(_class_unload_time);
 980   event.set_unloadedClass(k);
 981   oop defining_class_loader = k->class_loader();
 982   event.set_definingClassLoader(defining_class_loader != NULL ?
 983                                 defining_class_loader->klass() : (Klass*)NULL);
 984   event.commit();
 985 }
 986 
 987 #endif /* INCLUDE_TRACE */


  47 // the singleton class the_null_class_loader_data().
  48 
  49 #include "precompiled.hpp"
  50 #include "classfile/classLoaderData.hpp"
  51 #include "classfile/classLoaderData.inline.hpp"
  52 #include "classfile/javaClasses.hpp"
  53 #include "classfile/metadataOnStackMark.hpp"
  54 #include "classfile/systemDictionary.hpp"
  55 #include "code/codeCache.hpp"
  56 #include "memory/gcLocker.hpp"
  57 #include "memory/metadataFactory.hpp"
  58 #include "memory/metaspaceShared.hpp"
  59 #include "memory/oopFactory.hpp"
  60 #include "runtime/jniHandles.hpp"
  61 #include "runtime/mutex.hpp"
  62 #include "runtime/safepoint.hpp"
  63 #include "runtime/synchronizer.hpp"
  64 #include "utilities/growableArray.hpp"
  65 #include "utilities/macros.hpp"
  66 #include "utilities/ostream.hpp"

  67 #if INCLUDE_TRACE
  68 #include "trace/tracing.hpp"
  69 #endif
  70 
  71 ClassLoaderData * ClassLoaderData::_the_null_class_loader_data = NULL;
  72 
  73 ClassLoaderData::ClassLoaderData(Handle h_class_loader, bool is_anonymous, Dependencies dependencies) :
  74   _class_loader(h_class_loader()),
  75   _is_anonymous(is_anonymous),
  76   // An anonymous class loader data doesn't have anything to keep
  77   // it from being unloaded during parsing of the anonymous class.
  78   // The null-class-loader should always be kept alive.
  79   _keep_alive(is_anonymous || h_class_loader.is_null()),
  80   _metaspace(NULL), _unloading(false), _klasses(NULL),
  81   _claimed(0), _jmethod_ids(NULL), _handles(NULL), _deallocate_list(NULL),
  82   _next(NULL), _dependencies(dependencies),
  83   _metaspace_lock(new Mutex(Monitor::leaf+1, "Metaspace allocation lock", true)) {
  84     // empty
  85 }
  86 
  87 void ClassLoaderData::init_dependencies(TRAPS) {
  88   assert(!Universe::is_fully_initialized(), "should only be called when initializing");


 966     class_loader()->print_value_on(out);
 967   }
 968 }
 969 
 970 #if INCLUDE_TRACE
 971 
 972 Ticks ClassLoaderDataGraph::_class_unload_time;
 973 
 974 void ClassLoaderDataGraph::class_unload_event(Klass* const k) {
 975 
 976   // post class unload event
 977   EventClassUnload event(UNTIMED);
 978   event.set_endtime(_class_unload_time);
 979   event.set_unloadedClass(k);
 980   oop defining_class_loader = k->class_loader();
 981   event.set_definingClassLoader(defining_class_loader != NULL ?
 982                                 defining_class_loader->klass() : (Klass*)NULL);
 983   event.commit();
 984 }
 985 
 986 #endif // INCLUDE_TRACE
< prev index next >