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