< prev index next >

src/hotspot/share/prims/jvmtiTagMap.cpp

Print this page




1744 };
1745 
1746 
1747 // helper to map a jvmtiHeapReferenceKind to an old style jvmtiHeapRootKind
1748 // (not performance critical as only used for roots)
1749 static jvmtiHeapRootKind toJvmtiHeapRootKind(jvmtiHeapReferenceKind kind) {
1750   switch (kind) {
1751     case JVMTI_HEAP_REFERENCE_JNI_GLOBAL:   return JVMTI_HEAP_ROOT_JNI_GLOBAL;
1752     case JVMTI_HEAP_REFERENCE_SYSTEM_CLASS: return JVMTI_HEAP_ROOT_SYSTEM_CLASS;
1753     case JVMTI_HEAP_REFERENCE_MONITOR:      return JVMTI_HEAP_ROOT_MONITOR;
1754     case JVMTI_HEAP_REFERENCE_STACK_LOCAL:  return JVMTI_HEAP_ROOT_STACK_LOCAL;
1755     case JVMTI_HEAP_REFERENCE_JNI_LOCAL:    return JVMTI_HEAP_ROOT_JNI_LOCAL;
1756     case JVMTI_HEAP_REFERENCE_THREAD:       return JVMTI_HEAP_ROOT_THREAD;
1757     case JVMTI_HEAP_REFERENCE_OTHER:        return JVMTI_HEAP_ROOT_OTHER;
1758     default: ShouldNotReachHere();          return JVMTI_HEAP_ROOT_OTHER;
1759   }
1760 }
1761 
1762 // Base class for all heap walk contexts. The base class maintains a flag
1763 // to indicate if the context is valid or not.
1764 class HeapWalkContext VALUE_OBJ_CLASS_SPEC {
1765  private:
1766   bool _valid;
1767  public:
1768   HeapWalkContext(bool valid)                   { _valid = valid; }
1769   void invalidate()                             { _valid = false; }
1770   bool is_valid() const                         { return _valid; }
1771 };
1772 
1773 // A basic heap walk context for the deprecated heap walking functions.
1774 // The context for a basic heap walk are the callbacks and fields used by
1775 // the referrer caching scheme.
1776 class BasicHeapWalkContext: public HeapWalkContext {
1777  private:
1778   jvmtiHeapRootCallback _heap_root_callback;
1779   jvmtiStackReferenceCallback _stack_ref_callback;
1780   jvmtiObjectReferenceCallback _object_ref_callback;
1781 
1782   // used for caching
1783   oop _last_referrer;
1784   jlong _last_referrer_tag;




1744 };
1745 
1746 
1747 // helper to map a jvmtiHeapReferenceKind to an old style jvmtiHeapRootKind
1748 // (not performance critical as only used for roots)
1749 static jvmtiHeapRootKind toJvmtiHeapRootKind(jvmtiHeapReferenceKind kind) {
1750   switch (kind) {
1751     case JVMTI_HEAP_REFERENCE_JNI_GLOBAL:   return JVMTI_HEAP_ROOT_JNI_GLOBAL;
1752     case JVMTI_HEAP_REFERENCE_SYSTEM_CLASS: return JVMTI_HEAP_ROOT_SYSTEM_CLASS;
1753     case JVMTI_HEAP_REFERENCE_MONITOR:      return JVMTI_HEAP_ROOT_MONITOR;
1754     case JVMTI_HEAP_REFERENCE_STACK_LOCAL:  return JVMTI_HEAP_ROOT_STACK_LOCAL;
1755     case JVMTI_HEAP_REFERENCE_JNI_LOCAL:    return JVMTI_HEAP_ROOT_JNI_LOCAL;
1756     case JVMTI_HEAP_REFERENCE_THREAD:       return JVMTI_HEAP_ROOT_THREAD;
1757     case JVMTI_HEAP_REFERENCE_OTHER:        return JVMTI_HEAP_ROOT_OTHER;
1758     default: ShouldNotReachHere();          return JVMTI_HEAP_ROOT_OTHER;
1759   }
1760 }
1761 
1762 // Base class for all heap walk contexts. The base class maintains a flag
1763 // to indicate if the context is valid or not.
1764 class HeapWalkContext {
1765  private:
1766   bool _valid;
1767  public:
1768   HeapWalkContext(bool valid)                   { _valid = valid; }
1769   void invalidate()                             { _valid = false; }
1770   bool is_valid() const                         { return _valid; }
1771 };
1772 
1773 // A basic heap walk context for the deprecated heap walking functions.
1774 // The context for a basic heap walk are the callbacks and fields used by
1775 // the referrer caching scheme.
1776 class BasicHeapWalkContext: public HeapWalkContext {
1777  private:
1778   jvmtiHeapRootCallback _heap_root_callback;
1779   jvmtiStackReferenceCallback _stack_ref_callback;
1780   jvmtiObjectReferenceCallback _object_ref_callback;
1781 
1782   // used for caching
1783   oop _last_referrer;
1784   jlong _last_referrer_tag;


< prev index next >