< prev index next >
src/share/vm/oops/klass.hpp
Print this page
rev 7183 : autospecialized oop_iterate using SFINAE and templates
*** 26,36 ****
#define SHARE_VM_OOPS_KLASS_HPP
#include "memory/genOopClosures.hpp"
#include "memory/iterator.hpp"
#include "memory/memRegion.hpp"
! #include "memory/specialized_oop_closures.hpp"
#include "oops/klassPS.hpp"
#include "oops/metadata.hpp"
#include "oops/oop.hpp"
#include "trace/traceMacros.hpp"
#include "utilities/accessFlags.hpp"
--- 26,36 ----
#define SHARE_VM_OOPS_KLASS_HPP
#include "memory/genOopClosures.hpp"
#include "memory/iterator.hpp"
#include "memory/memRegion.hpp"
! #include "memory/specialized_oop_closures.inline.hpp"
#include "oops/klassPS.hpp"
#include "oops/metadata.hpp"
#include "oops/oop.hpp"
#include "trace/traceMacros.hpp"
#include "utilities/accessFlags.hpp"
*** 575,584 ****
--- 575,593 ----
static void clean_weak_klass_links(BoolObjectClosure* is_alive, bool clean_alive_klasses = true);
static void clean_subklass_tree(BoolObjectClosure* is_alive) {
clean_weak_klass_links(is_alive, false /* clean_alive_klasses */);
}
+ struct OopInterval {
+ int _offset;
+ uint _size;
+ };
+
+ // Returns positive value if oop maps could be returned and the klass doesn't need to know closure type.
+ // Otherwise returns a negative value corresponding to which klass implementation is being used (DispatchTag).
+ virtual int get_linear_oop_intervals(oop obj, OopInterval* &start, int &size) { return _unknown_klass; }
+
// iterators
virtual int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) = 0;
virtual int oop_oop_iterate_v(oop obj, ExtendedOopClosure* blk) {
return oop_oop_iterate(obj, blk);
}
< prev index next >