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
|