< prev index next >

src/share/vm/oops/instanceKlass.cpp

Print this page
rev 7183 : autospecialized oop_iterate using SFINAE and templates

*** 38,48 **** #include "memory/iterator.inline.hpp" #include "memory/metadataFactory.hpp" #include "memory/oopFactory.hpp" #include "oops/fieldStreams.hpp" #include "oops/instanceClassLoaderKlass.hpp" ! #include "oops/instanceKlass.hpp" #include "oops/instanceMirrorKlass.hpp" #include "oops/instanceOop.hpp" #include "oops/klass.inline.hpp" #include "oops/method.hpp" #include "oops/oop.inline.hpp" --- 38,48 ---- #include "memory/iterator.inline.hpp" #include "memory/metadataFactory.hpp" #include "memory/oopFactory.hpp" #include "oops/fieldStreams.hpp" #include "oops/instanceClassLoaderKlass.hpp" ! #include "oops/instanceKlass.inline.hpp" #include "oops/instanceMirrorKlass.hpp" #include "oops/instanceOop.hpp" #include "oops/klass.inline.hpp" #include "oops/method.hpp" #include "oops/oop.inline.hpp"
*** 1964,2004 **** #endif //PRODUCT // Garbage collection ! #ifdef ASSERT ! template <class T> void assert_is_in(T *p) { ! T heap_oop = oopDesc::load_heap_oop(p); ! if (!oopDesc::is_null(heap_oop)) { ! oop o = oopDesc::decode_heap_oop_not_null(heap_oop); ! assert(Universe::heap()->is_in(o), "should be in heap"); ! } ! } ! template <class T> void assert_is_in_closed_subset(T *p) { ! T heap_oop = oopDesc::load_heap_oop(p); ! if (!oopDesc::is_null(heap_oop)) { ! oop o = oopDesc::decode_heap_oop_not_null(heap_oop); ! assert(Universe::heap()->is_in_closed_subset(o), ! err_msg("should be in closed *p " INTPTR_FORMAT " " INTPTR_FORMAT, (address)p, (address)o)); ! } ! } ! template <class T> void assert_is_in_reserved(T *p) { ! T heap_oop = oopDesc::load_heap_oop(p); ! if (!oopDesc::is_null(heap_oop)) { ! oop o = oopDesc::decode_heap_oop_not_null(heap_oop); ! assert(Universe::heap()->is_in_reserved(o), "should be in reserved"); ! } ! } ! template <class T> void assert_nothing(T *p) {} ! ! #else ! template <class T> void assert_is_in(T *p) {} ! template <class T> void assert_is_in_closed_subset(T *p) {} ! template <class T> void assert_is_in_reserved(T *p) {} ! template <class T> void assert_nothing(T *p) {} ! #endif // ASSERT // // Macros that iterate over areas of oops which are specialized on type of // oop pointer either narrow or wide, depending on UseCompressedOops // --- 1964,1979 ---- #endif //PRODUCT // Garbage collection ! int InstanceKlass::get_linear_oop_intervals(oop obj, OopInterval* &start, int &size) { ! assert(sizeof(OopMapBlock) == sizeof(OopInterval), "auto closure specialization assumes same data layout for speed"); ! start = (OopInterval*)start_of_nonstatic_oop_maps(); ! size = size_helper(); ! return nonstatic_oop_map_count(); ! } // // Macros that iterate over areas of oops which are specialized on type of // oop pointer either narrow or wide, depending on UseCompressedOops //
< prev index next >