< 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 >