< prev index next >

src/share/vm/memory/iterator.hpp

Print this page




 364 
 365 template <bool use_non_virtual_call>
 366 class Devirtualizer {};
 367 
 368 // Dispatches to the non-virtual functions.
 369 template <> class Devirtualizer<true> {
 370  public:
 371   template <class OopClosureType, typename T> static void do_oop(OopClosureType* closure, T* p);
 372   template <class OopClosureType>             static void do_klass(OopClosureType* closure, Klass* k);
 373   template <class OopClosureType>             static bool do_metadata(OopClosureType* closure);
 374 };
 375 
 376 // Dispatches to the virtual functions.
 377 template <> class Devirtualizer<false> {
 378  public:
 379   template <class OopClosureType, typename T> static void do_oop(OopClosureType* closure, T* p);
 380   template <class OopClosureType>             static void do_klass(OopClosureType* closure, Klass* k);
 381   template <class OopClosureType>             static bool do_metadata(OopClosureType* closure);
 382 };
 383 
 384 // Helper to convert the oop iterate macro suffixes into bool values that can be used by template functions.
 385 #define nvs_nv_to_bool true
 386 #define nvs_v_to_bool  false
 387 #define nvs_to_bool(nv_suffix) nvs##nv_suffix##_to_bool
 388 
 389 #endif // SHARE_VM_MEMORY_ITERATOR_HPP


 364 
 365 template <bool use_non_virtual_call>
 366 class Devirtualizer {};
 367 
 368 // Dispatches to the non-virtual functions.
 369 template <> class Devirtualizer<true> {
 370  public:
 371   template <class OopClosureType, typename T> static void do_oop(OopClosureType* closure, T* p);
 372   template <class OopClosureType>             static void do_klass(OopClosureType* closure, Klass* k);
 373   template <class OopClosureType>             static bool do_metadata(OopClosureType* closure);
 374 };
 375 
 376 // Dispatches to the virtual functions.
 377 template <> class Devirtualizer<false> {
 378  public:
 379   template <class OopClosureType, typename T> static void do_oop(OopClosureType* closure, T* p);
 380   template <class OopClosureType>             static void do_klass(OopClosureType* closure, Klass* k);
 381   template <class OopClosureType>             static bool do_metadata(OopClosureType* closure);
 382 };
 383 





 384 #endif // SHARE_VM_MEMORY_ITERATOR_HPP
< prev index next >