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 |