comparison src/share/vm/oops/instanceClassLoaderKlass.cpp @ 20268:4c1b88a53c74

8046670: Make CMS metadata aware closures applicable for other collectors Reviewed-by: ehelin, mgerdin
author stefank
date Tue, 24 Jun 2014 16:20:15 +0200
parents 55fb97c4c58d
children 7848fc12602b
comparison
equal deleted inserted replaced
20267:ff1e37e7eb83 20268:4c1b88a53c74
26 #include "classfile/javaClasses.hpp" 26 #include "classfile/javaClasses.hpp"
27 #include "classfile/systemDictionary.hpp" 27 #include "classfile/systemDictionary.hpp"
28 #include "gc_implementation/shared/markSweep.inline.hpp" 28 #include "gc_implementation/shared/markSweep.inline.hpp"
29 #include "gc_interface/collectedHeap.inline.hpp" 29 #include "gc_interface/collectedHeap.inline.hpp"
30 #include "memory/genOopClosures.inline.hpp" 30 #include "memory/genOopClosures.inline.hpp"
31 #include "memory/iterator.inline.hpp"
31 #include "memory/oopFactory.hpp" 32 #include "memory/oopFactory.hpp"
32 #include "oops/instanceKlass.hpp" 33 #include "oops/instanceKlass.hpp"
33 #include "oops/instanceClassLoaderKlass.hpp" 34 #include "oops/instanceClassLoaderKlass.hpp"
34 #include "oops/instanceMirrorKlass.hpp" 35 #include "oops/instanceMirrorKlass.hpp"
35 #include "oops/instanceOop.hpp" 36 #include "oops/instanceOop.hpp"
41 #include "gc_implementation/parNew/parOopClosures.inline.hpp" 42 #include "gc_implementation/parNew/parOopClosures.inline.hpp"
42 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" 43 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
43 #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" 44 #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
44 #include "oops/oop.pcgc.inline.hpp" 45 #include "oops/oop.pcgc.inline.hpp"
45 #endif // INCLUDE_ALL_GCS 46 #endif // INCLUDE_ALL_GCS
46
47 #define if_do_metadata_checked(closure, nv_suffix) \
48 /* Make sure the non-virtual and the virtual versions match. */ \
49 assert(closure->do_metadata##nv_suffix() == closure->do_metadata(), \
50 "Inconsistency in do_metadata"); \
51 if (closure->do_metadata##nv_suffix())
52 47
53 // Macro to define InstanceClassLoaderKlass::oop_oop_iterate for virtual/nonvirtual for 48 // Macro to define InstanceClassLoaderKlass::oop_oop_iterate for virtual/nonvirtual for
54 // all closures. Macros calling macros above for each oop size. 49 // all closures. Macros calling macros above for each oop size.
55 // Since ClassLoader objects have only a pointer to the loader_data, they are not 50 // Since ClassLoader objects have only a pointer to the loader_data, they are not
56 // compressed nor does the pointer move. 51 // compressed nor does the pointer move.