src/share/vm/oops/instanceClassLoaderKlass.cpp
Print this page
rev 6796 : [mq]: templateOopIterate
rev 6799 : [mq]: latestChanges
*** 30,120 ****
#include "memory/genOopClosures.inline.hpp"
#include "memory/iterator.inline.hpp"
#include "memory/oopFactory.hpp"
#include "oops/instanceKlass.hpp"
#include "oops/instanceClassLoaderKlass.hpp"
- #include "oops/instanceMirrorKlass.hpp"
- #include "oops/instanceOop.hpp"
- #include "oops/oop.inline.hpp"
- #include "oops/symbol.hpp"
- #include "runtime/handles.inline.hpp"
- #include "utilities/macros.hpp"
#if INCLUDE_ALL_GCS
! #include "gc_implementation/parNew/parOopClosures.inline.hpp"
! #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
! #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
! #include "oops/oop.pcgc.inline.hpp"
! #endif // INCLUDE_ALL_GCS
!
! // Macro to define InstanceClassLoaderKlass::oop_oop_iterate for virtual/nonvirtual for
! // all closures. Macros calling macros above for each oop size.
! // Since ClassLoader objects have only a pointer to the loader_data, they are not
! // compressed nor does the pointer move.
!
! #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)\
! \
! int InstanceClassLoaderKlass:: \
! oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) { \
! /* Get size before changing pointers */ \
! SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
! int size = InstanceKlass::oop_oop_iterate##nv_suffix(obj, closure); \
! \
! if_do_metadata_checked(closure, nv_suffix) { \
! ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj); \
! /* cld can be null if we have a non-registered class loader. */ \
! if (cld != NULL) { \
! closure->do_class_loader_data(cld); \
! } \
! } \
! \
! return size; \
! }
!
! #if INCLUDE_ALL_GCS
! #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix) \
! \
! int InstanceClassLoaderKlass:: \
! oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) { \
! /* Get size before changing pointers */ \
! SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
! int size = InstanceKlass::oop_oop_iterate_backwards##nv_suffix(obj, closure); \
! return size; \
! }
! #endif // INCLUDE_ALL_GCS
!
! #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN_m(OopClosureType, nv_suffix) \
! \
! int InstanceClassLoaderKlass:: \
! oop_oop_iterate##nv_suffix##_m(oop obj, \
! OopClosureType* closure, \
! MemRegion mr) { \
! SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
! \
! int size = InstanceKlass::oop_oop_iterate##nv_suffix##_m(obj, closure, mr); \
! \
! if_do_metadata_checked(closure, nv_suffix) { \
! if (mr.contains(obj)) { \
! ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj); \
! /* cld can be null if we have a non-registered class loader. */ \
! if (cld != NULL) { \
! closure->do_class_loader_data(cld); \
! } \
! } \
! } \
! \
! return size; \
! }
!
! ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN)
! ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN)
! #if INCLUDE_ALL_GCS
! ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN)
! ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN)
! #endif // INCLUDE_ALL_GCS
! ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN_m)
! ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN_m)
void InstanceClassLoaderKlass::oop_follow_contents(oop obj) {
InstanceKlass::oop_follow_contents(obj);
ClassLoaderData * const loader_data = java_lang_ClassLoader::loader_data(obj);
--- 30,45 ----
#include "memory/genOopClosures.inline.hpp"
#include "memory/iterator.inline.hpp"
#include "memory/oopFactory.hpp"
#include "oops/instanceKlass.hpp"
#include "oops/instanceClassLoaderKlass.hpp"
#if INCLUDE_ALL_GCS
! #include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
! #endif
! InstanceClassLoaderKlass::InstanceClassLoaderKlass(int vtable_len, int itable_len, int static_field_size, int nonstatic_oop_map_size, ReferenceType rt, AccessFlags access_flags, bool is_anonymous)
! : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous, _instance_class_loader) {}
void InstanceClassLoaderKlass::oop_follow_contents(oop obj) {
InstanceKlass::oop_follow_contents(obj);
ClassLoaderData * const loader_data = java_lang_ClassLoader::loader_data(obj);
*** 145,151 ****
--- 70,77 ----
int InstanceClassLoaderKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
InstanceKlass::oop_update_pointers(cm, obj);
return size_helper();
}
+
#endif // INCLUDE_ALL_GCS