24
25 #include "precompiled.hpp"
26 #include "classfile/javaClasses.hpp"
27 #include "classfile/systemDictionary.hpp"
28 #include "gc_implementation/shared/markSweep.inline.hpp"
29 #include "gc_interface/collectedHeap.inline.hpp"
30 #include "memory/genOopClosures.inline.hpp"
31 #include "memory/iterator.inline.hpp"
32 #include "memory/oopFactory.hpp"
33 #include "oops/instanceKlass.hpp"
34 #include "oops/instanceClassLoaderKlass.hpp"
35 #include "oops/instanceMirrorKlass.hpp"
36 #include "oops/instanceOop.hpp"
37 #include "oops/oop.inline.hpp"
38 #include "oops/symbol.hpp"
39 #include "runtime/handles.inline.hpp"
40 #include "utilities/macros.hpp"
41 #if INCLUDE_ALL_GCS
42 #include "gc_implementation/parNew/parOopClosures.inline.hpp"
43 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
44 #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
45 #include "oops/oop.pcgc.inline.hpp"
46 #endif // INCLUDE_ALL_GCS
47
48 // Macro to define InstanceClassLoaderKlass::oop_oop_iterate for virtual/nonvirtual for
49 // all closures. Macros calling macros above for each oop size.
50 // Since ClassLoader objects have only a pointer to the loader_data, they are not
51 // compressed nor does the pointer move.
52
53 #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)\
54 \
55 int InstanceClassLoaderKlass:: \
56 oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) { \
57 /* Get size before changing pointers */ \
58 SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
59 int size = InstanceKlass::oop_oop_iterate##nv_suffix(obj, closure); \
60 \
61 if_do_metadata_checked(closure, nv_suffix) { \
62 ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj); \
63 /* cld can be null if we have a non-registered class loader. */ \
64 if (cld != NULL) { \
|
24
25 #include "precompiled.hpp"
26 #include "classfile/javaClasses.hpp"
27 #include "classfile/systemDictionary.hpp"
28 #include "gc_implementation/shared/markSweep.inline.hpp"
29 #include "gc_interface/collectedHeap.inline.hpp"
30 #include "memory/genOopClosures.inline.hpp"
31 #include "memory/iterator.inline.hpp"
32 #include "memory/oopFactory.hpp"
33 #include "oops/instanceKlass.hpp"
34 #include "oops/instanceClassLoaderKlass.hpp"
35 #include "oops/instanceMirrorKlass.hpp"
36 #include "oops/instanceOop.hpp"
37 #include "oops/oop.inline.hpp"
38 #include "oops/symbol.hpp"
39 #include "runtime/handles.inline.hpp"
40 #include "utilities/macros.hpp"
41 #if INCLUDE_ALL_GCS
42 #include "gc_implementation/parNew/parOopClosures.inline.hpp"
43 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
44 #include "oops/oop.pcgc.inline.hpp"
45 #endif // INCLUDE_ALL_GCS
46
47 // Macro to define InstanceClassLoaderKlass::oop_oop_iterate for virtual/nonvirtual for
48 // all closures. Macros calling macros above for each oop size.
49 // Since ClassLoader objects have only a pointer to the loader_data, they are not
50 // compressed nor does the pointer move.
51
52 #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)\
53 \
54 int InstanceClassLoaderKlass:: \
55 oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) { \
56 /* Get size before changing pointers */ \
57 SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
58 int size = InstanceKlass::oop_oop_iterate##nv_suffix(obj, closure); \
59 \
60 if_do_metadata_checked(closure, nv_suffix) { \
61 ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj); \
62 /* cld can be null if we have a non-registered class loader. */ \
63 if (cld != NULL) { \
|