1759 static AdvancedHeapWalkContext _advanced_context;
1760 static AdvancedHeapWalkContext* advanced_context() {
1761 assert(_advanced_context.is_valid(), "invalid");
1762 return &_advanced_context;
1763 }
1764
1765 // context needed for all heap walks
1766 static JvmtiTagMap* _tag_map;
1767 static const void* _user_data;
1768 static GrowableArray<oop>* _visit_stack;
1769 static ObjectMarker* _object_marker;
1770
1771 // accessors
1772 static JvmtiTagMap* tag_map() { return _tag_map; }
1773 static const void* user_data() { return _user_data; }
1774 static GrowableArray<oop>* visit_stack() { return _visit_stack; }
1775
1776 // if the object hasn't been visited then push it onto the visit stack
1777 // so that it will be visited later
1778 static inline bool check_for_visit(oop obj) {
1779 if (!_object_marker->visited(obj)) visit_stack()->push(obj);
1780 return true;
1781 }
1782
1783 // invoke basic style callbacks
1784 static inline bool invoke_basic_heap_root_callback
1785 (jvmtiHeapRootKind root_kind, oop obj);
1786 static inline bool invoke_basic_stack_ref_callback
1787 (jvmtiHeapRootKind root_kind, jlong thread_tag, jint depth, jmethodID method,
1788 int slot, oop obj);
1789 static inline bool invoke_basic_object_reference_callback
1790 (jvmtiObjectReferenceKind ref_kind, oop referrer, oop referree, jint index);
1791
1792 // invoke advanced style callbacks
1793 static inline bool invoke_advanced_heap_root_callback
1794 (jvmtiHeapReferenceKind ref_kind, oop obj);
1795 static inline bool invoke_advanced_stack_ref_callback
1796 (jvmtiHeapReferenceKind ref_kind, jlong thread_tag, jlong tid, int depth,
1797 jmethodID method, jlocation bci, jint slot, oop obj);
1798 static inline bool invoke_advanced_object_reference_callback
1799 (jvmtiHeapReferenceKind ref_kind, oop referrer, oop referree, jint index);
|
1759 static AdvancedHeapWalkContext _advanced_context;
1760 static AdvancedHeapWalkContext* advanced_context() {
1761 assert(_advanced_context.is_valid(), "invalid");
1762 return &_advanced_context;
1763 }
1764
1765 // context needed for all heap walks
1766 static JvmtiTagMap* _tag_map;
1767 static const void* _user_data;
1768 static GrowableArray<oop>* _visit_stack;
1769 static ObjectMarker* _object_marker;
1770
1771 // accessors
1772 static JvmtiTagMap* tag_map() { return _tag_map; }
1773 static const void* user_data() { return _user_data; }
1774 static GrowableArray<oop>* visit_stack() { return _visit_stack; }
1775
1776 // if the object hasn't been visited then push it onto the visit stack
1777 // so that it will be visited later
1778 static inline bool check_for_visit(oop obj) {
1779 if (!_object_marker->marked(obj)) visit_stack()->push(obj);
1780 return true;
1781 }
1782
1783 // invoke basic style callbacks
1784 static inline bool invoke_basic_heap_root_callback
1785 (jvmtiHeapRootKind root_kind, oop obj);
1786 static inline bool invoke_basic_stack_ref_callback
1787 (jvmtiHeapRootKind root_kind, jlong thread_tag, jint depth, jmethodID method,
1788 int slot, oop obj);
1789 static inline bool invoke_basic_object_reference_callback
1790 (jvmtiObjectReferenceKind ref_kind, oop referrer, oop referree, jint index);
1791
1792 // invoke advanced style callbacks
1793 static inline bool invoke_advanced_heap_root_callback
1794 (jvmtiHeapReferenceKind ref_kind, oop obj);
1795 static inline bool invoke_advanced_stack_ref_callback
1796 (jvmtiHeapReferenceKind ref_kind, jlong thread_tag, jlong tid, int depth,
1797 jmethodID method, jlocation bci, jint slot, oop obj);
1798 static inline bool invoke_advanced_object_reference_callback
1799 (jvmtiHeapReferenceKind ref_kind, oop referrer, oop referree, jint index);
|