< prev index next >

src/hotspot/share/runtime/vmStructs.cpp

Print this page
rev 47404 : [mq]: load_ptr_acquire


  44 #include "code/vmreg.hpp"
  45 #include "compiler/compileBroker.hpp"
  46 #include "compiler/oopMap.hpp"
  47 #include "gc/parallel/immutableSpace.hpp"
  48 #include "gc/parallel/mutableSpace.hpp"
  49 #include "gc/serial/defNewGeneration.hpp"
  50 #include "gc/serial/tenuredGeneration.hpp"
  51 #include "gc/shared/cardTableRS.hpp"
  52 #include "gc/shared/collectedHeap.hpp"
  53 #include "gc/shared/genCollectedHeap.hpp"
  54 #include "gc/shared/generation.hpp"
  55 #include "gc/shared/generationSpec.hpp"
  56 #include "gc/shared/space.hpp"
  57 #include "interpreter/bytecodeInterpreter.hpp"
  58 #include "interpreter/bytecodes.hpp"
  59 #include "interpreter/interpreter.hpp"
  60 #include "memory/allocation.hpp"
  61 #include "memory/allocation.inline.hpp"
  62 #include "memory/heap.hpp"
  63 #include "memory/metachunk.hpp"

  64 #include "memory/referenceType.hpp"
  65 #include "memory/universe.hpp"
  66 #include "memory/virtualspace.hpp"
  67 #include "oops/array.hpp"
  68 #include "oops/arrayKlass.hpp"
  69 #include "oops/arrayOop.hpp"
  70 #include "oops/compiledICHolder.hpp"
  71 #include "oops/constMethod.hpp"
  72 #include "oops/constantPool.hpp"
  73 #include "oops/cpCache.hpp"
  74 #include "oops/instanceClassLoaderKlass.hpp"
  75 #include "oops/instanceKlass.hpp"
  76 #include "oops/instanceMirrorKlass.hpp"
  77 #include "oops/instanceOop.hpp"
  78 #include "oops/klass.hpp"
  79 #include "oops/markOop.hpp"
  80 #include "oops/method.hpp"
  81 #include "oops/methodCounters.hpp"
  82 #include "oops/methodData.hpp"
  83 #include "oops/objArrayKlass.hpp"


 181 #if INCLUDE_JVMTI
 182   #define JVMTI_STRUCTS(static_field) \
 183     static_field(JvmtiExport,                     _can_access_local_variables,                  bool)                                  \
 184     static_field(JvmtiExport,                     _can_hotswap_or_post_breakpoint,              bool)                                  \
 185     static_field(JvmtiExport,                     _can_post_on_exceptions,                      bool)                                  \
 186     static_field(JvmtiExport,                     _can_walk_any_space,                          bool)
 187 #else
 188   #define JVMTI_STRUCTS(static_field)
 189 #endif // INCLUDE_JVMTI
 190 
 191 typedef HashtableEntry<intptr_t, mtInternal>  IntptrHashtableEntry;
 192 typedef Hashtable<intptr_t, mtInternal>       IntptrHashtable;
 193 typedef Hashtable<Symbol*, mtSymbol>          SymbolHashtable;
 194 typedef HashtableEntry<Symbol*, mtClass>      SymbolHashtableEntry;
 195 typedef Hashtable<oop, mtSymbol>              StringHashtable;
 196 typedef Hashtable<InstanceKlass*, mtClass>       KlassHashtable;
 197 typedef HashtableEntry<InstanceKlass*, mtClass>  KlassHashtableEntry;
 198 typedef CompactHashtable<Symbol*, char>       SymbolCompactHashTable;
 199 typedef RehashableHashtable<Symbol*, mtSymbol>   RehashableSymbolHashtable;
 200 


 201 //--------------------------------------------------------------------------------
 202 // VM_STRUCTS
 203 //
 204 // This list enumerates all of the fields the serviceability agent
 205 // needs to know about. Be sure to see also the type table below this one.
 206 // NOTE that there are platform-specific additions to this table in
 207 // vmStructs_<os>_<cpu>.hpp.
 208 
 209 #define VM_STRUCTS(nonstatic_field, \
 210                    static_field, \
 211                    static_ptr_volatile_field, \
 212                    unchecked_nonstatic_field, \
 213                    volatile_nonstatic_field, \
 214                    nonproduct_nonstatic_field, \
 215                    c1_nonstatic_field, \
 216                    c2_nonstatic_field, \
 217                    unchecked_c1_static_field, \
 218                    unchecked_c2_static_field) \
 219                                                                                                                                      \
 220   /******************************************************************/                                                               \


1035   nonstatic_field(ciConstant,                  _value._int,                                   jint)                                  \
1036   nonstatic_field(ciConstant,                  _value._long,                                  jlong)                                 \
1037   nonstatic_field(ciConstant,                  _value._float,                                 jfloat)                                \
1038   nonstatic_field(ciConstant,                  _value._double,                                jdouble)                               \
1039   nonstatic_field(ciConstant,                  _value._object,                                ciObject*)                             \
1040                                                                                                                                      \
1041   /************/                                                                                                                     \
1042   /* Monitors */                                                                                                                     \
1043   /************/                                                                                                                     \
1044                                                                                                                                      \
1045   volatile_nonstatic_field(ObjectMonitor,      _header,                                       markOop)                               \
1046   unchecked_nonstatic_field(ObjectMonitor,     _object,                                       sizeof(void *)) /* NOTE: no type */    \
1047   unchecked_nonstatic_field(ObjectMonitor,     _owner,                                        sizeof(void *)) /* NOTE: no type */    \
1048   volatile_nonstatic_field(ObjectMonitor,      _count,                                        jint)                                  \
1049   volatile_nonstatic_field(ObjectMonitor,      _waiters,                                      jint)                                  \
1050   volatile_nonstatic_field(ObjectMonitor,      _recursions,                                   intptr_t)                              \
1051   nonstatic_field(ObjectMonitor,               FreeNext,                                      ObjectMonitor*)                        \
1052   volatile_nonstatic_field(BasicLock,          _displaced_header,                             markOop)                               \
1053   nonstatic_field(BasicObjectLock,             _lock,                                         BasicLock)                             \
1054   nonstatic_field(BasicObjectLock,             _obj,                                          oop)                                   \
1055   static_ptr_volatile_field(ObjectSynchronizer, gBlockList,                                   ObjectMonitor*)                        \
1056                                                                                                                                      \
1057   /*********************/                                                                                                            \
1058   /* Matcher (C2 only) */                                                                                                            \
1059   /*********************/                                                                                                            \
1060                                                                                                                                      \
1061   unchecked_c2_static_field(Matcher,           _regEncode,                          sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
1062                                                                                                                                      \
1063   c2_nonstatic_field(Node,                     _in,                                           Node**)                                \
1064   c2_nonstatic_field(Node,                     _out,                                          Node**)                                \
1065   c2_nonstatic_field(Node,                     _cnt,                                          node_idx_t)                            \
1066   c2_nonstatic_field(Node,                     _max,                                          node_idx_t)                            \
1067   c2_nonstatic_field(Node,                     _outcnt,                                       node_idx_t)                            \
1068   c2_nonstatic_field(Node,                     _outmax,                                       node_idx_t)                            \
1069   c2_nonstatic_field(Node,                     _idx,                                          const node_idx_t)                      \
1070   c2_nonstatic_field(Node,                     _class_id,                                     jushort)                               \
1071   c2_nonstatic_field(Node,                     _flags,                                        jushort)                               \
1072                                                                                                                                      \
1073   c2_nonstatic_field(Compile,                  _root,                                         RootNode*)                             \
1074   c2_nonstatic_field(Compile,                  _unique,                                       uint)                                  \
1075   c2_nonstatic_field(Compile,                  _entry_bci,                                    int)                                   \


1663                                                                           \
1664   /*********************************/                                     \
1665   /* JNIHandles and JNIHandleBlock */                                     \
1666   /*********************************/                                     \
1667                                                                           \
1668   declare_toplevel_type(JNIHandles)                                       \
1669   declare_toplevel_type(JNIHandleBlock)                                   \
1670   declare_toplevel_type(jobject)                                          \
1671                                                                           \
1672   /**********************/                                                \
1673   /* Runtime1 (C1 only) */                                                \
1674   /**********************/                                                \
1675                                                                           \
1676   declare_c1_toplevel_type(Runtime1)                                      \
1677                                                                           \
1678   /************/                                                          \
1679   /* Monitors */                                                          \
1680   /************/                                                          \
1681                                                                           \
1682   declare_toplevel_type(ObjectMonitor)                                    \

1683   declare_toplevel_type(ObjectSynchronizer)                               \
1684   declare_toplevel_type(BasicLock)                                        \
1685   declare_toplevel_type(BasicObjectLock)                                  \
1686                                                                           \
1687   /*********************/                                                 \
1688   /* Matcher (C2 only) */                                                 \
1689   /*********************/                                                 \
1690                                                                           \
1691   declare_c2_toplevel_type(Matcher)                                       \
1692   declare_c2_toplevel_type(Compile)                                       \
1693   declare_c2_toplevel_type(InlineTree)                                    \
1694   declare_c2_toplevel_type(OptoRegPair)                                   \
1695   declare_c2_toplevel_type(JVMState)                                      \
1696   declare_c2_toplevel_type(Phase)                                         \
1697     declare_c2_type(PhaseCFG, Phase)                                      \
1698     declare_c2_type(PhaseRegAlloc, Phase)                                 \
1699     declare_c2_type(PhaseChaitin, PhaseRegAlloc)                          \
1700   declare_c2_toplevel_type(CFGElement)                                    \
1701     declare_c2_type(Block, CFGElement)                                    \
1702   declare_c2_toplevel_type(Block_Array)                                   \


2137   declare_toplevel_type(intptr_t*)                                        \
2138    declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \
2139   declare_toplevel_type(JavaThread*)                                      \
2140   declare_toplevel_type(java_lang_Class)                                  \
2141   declare_integer_type(JavaThread::AsyncRequests)                         \
2142   declare_integer_type(JavaThread::TerminatedTypes)                       \
2143   declare_toplevel_type(jbyte*)                                           \
2144   declare_toplevel_type(jbyte**)                                          \
2145   declare_toplevel_type(jint*)                                            \
2146   declare_toplevel_type(jniIdMapBase*)                                    \
2147   declare_unsigned_integer_type(juint)                                    \
2148   declare_unsigned_integer_type(julong)                                   \
2149   declare_toplevel_type(JNIHandleBlock*)                                  \
2150   declare_toplevel_type(JNIid)                                            \
2151   declare_toplevel_type(JNIid*)                                           \
2152   declare_toplevel_type(jmethodID*)                                       \
2153   declare_toplevel_type(Mutex*)                                           \
2154   declare_toplevel_type(nmethod*)                                         \
2155   COMPILER2_PRESENT(declare_unsigned_integer_type(node_idx_t))            \
2156   declare_toplevel_type(ObjectMonitor*)                                   \

2157   declare_toplevel_type(oop*)                                             \
2158   declare_toplevel_type(OopMap**)                                         \
2159   declare_toplevel_type(OopMapCache*)                                     \
2160   declare_toplevel_type(OopMapSet*)                                       \
2161   declare_toplevel_type(VMReg)                                            \
2162   declare_toplevel_type(OSThread*)                                        \
2163    declare_integer_type(ReferenceType)                                    \
2164   declare_toplevel_type(StubQueue*)                                       \
2165   declare_toplevel_type(Thread*)                                          \
2166   declare_toplevel_type(Universe)                                         \
2167   declare_toplevel_type(os)                                               \
2168   declare_toplevel_type(vframeArray)                                      \
2169   declare_toplevel_type(vframeArrayElement)                               \
2170   declare_toplevel_type(Annotations*)                                     \
2171                                                                           \
2172   /***************/                                                       \
2173   /* Miscellaneous types */                                               \
2174   /***************/                                                       \
2175                                                                           \
2176   /* freelist */                                                          \




  44 #include "code/vmreg.hpp"
  45 #include "compiler/compileBroker.hpp"
  46 #include "compiler/oopMap.hpp"
  47 #include "gc/parallel/immutableSpace.hpp"
  48 #include "gc/parallel/mutableSpace.hpp"
  49 #include "gc/serial/defNewGeneration.hpp"
  50 #include "gc/serial/tenuredGeneration.hpp"
  51 #include "gc/shared/cardTableRS.hpp"
  52 #include "gc/shared/collectedHeap.hpp"
  53 #include "gc/shared/genCollectedHeap.hpp"
  54 #include "gc/shared/generation.hpp"
  55 #include "gc/shared/generationSpec.hpp"
  56 #include "gc/shared/space.hpp"
  57 #include "interpreter/bytecodeInterpreter.hpp"
  58 #include "interpreter/bytecodes.hpp"
  59 #include "interpreter/interpreter.hpp"
  60 #include "memory/allocation.hpp"
  61 #include "memory/allocation.inline.hpp"
  62 #include "memory/heap.hpp"
  63 #include "memory/metachunk.hpp"
  64 #include "memory/padded.hpp"
  65 #include "memory/referenceType.hpp"
  66 #include "memory/universe.hpp"
  67 #include "memory/virtualspace.hpp"
  68 #include "oops/array.hpp"
  69 #include "oops/arrayKlass.hpp"
  70 #include "oops/arrayOop.hpp"
  71 #include "oops/compiledICHolder.hpp"
  72 #include "oops/constMethod.hpp"
  73 #include "oops/constantPool.hpp"
  74 #include "oops/cpCache.hpp"
  75 #include "oops/instanceClassLoaderKlass.hpp"
  76 #include "oops/instanceKlass.hpp"
  77 #include "oops/instanceMirrorKlass.hpp"
  78 #include "oops/instanceOop.hpp"
  79 #include "oops/klass.hpp"
  80 #include "oops/markOop.hpp"
  81 #include "oops/method.hpp"
  82 #include "oops/methodCounters.hpp"
  83 #include "oops/methodData.hpp"
  84 #include "oops/objArrayKlass.hpp"


 182 #if INCLUDE_JVMTI
 183   #define JVMTI_STRUCTS(static_field) \
 184     static_field(JvmtiExport,                     _can_access_local_variables,                  bool)                                  \
 185     static_field(JvmtiExport,                     _can_hotswap_or_post_breakpoint,              bool)                                  \
 186     static_field(JvmtiExport,                     _can_post_on_exceptions,                      bool)                                  \
 187     static_field(JvmtiExport,                     _can_walk_any_space,                          bool)
 188 #else
 189   #define JVMTI_STRUCTS(static_field)
 190 #endif // INCLUDE_JVMTI
 191 
 192 typedef HashtableEntry<intptr_t, mtInternal>  IntptrHashtableEntry;
 193 typedef Hashtable<intptr_t, mtInternal>       IntptrHashtable;
 194 typedef Hashtable<Symbol*, mtSymbol>          SymbolHashtable;
 195 typedef HashtableEntry<Symbol*, mtClass>      SymbolHashtableEntry;
 196 typedef Hashtable<oop, mtSymbol>              StringHashtable;
 197 typedef Hashtable<InstanceKlass*, mtClass>       KlassHashtable;
 198 typedef HashtableEntry<InstanceKlass*, mtClass>  KlassHashtableEntry;
 199 typedef CompactHashtable<Symbol*, char>       SymbolCompactHashTable;
 200 typedef RehashableHashtable<Symbol*, mtSymbol>   RehashableSymbolHashtable;
 201 
 202 typedef PaddedEnd<ObjectMonitor>              PaddedObjectMonitor;
 203 
 204 //--------------------------------------------------------------------------------
 205 // VM_STRUCTS
 206 //
 207 // This list enumerates all of the fields the serviceability agent
 208 // needs to know about. Be sure to see also the type table below this one.
 209 // NOTE that there are platform-specific additions to this table in
 210 // vmStructs_<os>_<cpu>.hpp.
 211 
 212 #define VM_STRUCTS(nonstatic_field, \
 213                    static_field, \
 214                    static_ptr_volatile_field, \
 215                    unchecked_nonstatic_field, \
 216                    volatile_nonstatic_field, \
 217                    nonproduct_nonstatic_field, \
 218                    c1_nonstatic_field, \
 219                    c2_nonstatic_field, \
 220                    unchecked_c1_static_field, \
 221                    unchecked_c2_static_field) \
 222                                                                                                                                      \
 223   /******************************************************************/                                                               \


1038   nonstatic_field(ciConstant,                  _value._int,                                   jint)                                  \
1039   nonstatic_field(ciConstant,                  _value._long,                                  jlong)                                 \
1040   nonstatic_field(ciConstant,                  _value._float,                                 jfloat)                                \
1041   nonstatic_field(ciConstant,                  _value._double,                                jdouble)                               \
1042   nonstatic_field(ciConstant,                  _value._object,                                ciObject*)                             \
1043                                                                                                                                      \
1044   /************/                                                                                                                     \
1045   /* Monitors */                                                                                                                     \
1046   /************/                                                                                                                     \
1047                                                                                                                                      \
1048   volatile_nonstatic_field(ObjectMonitor,      _header,                                       markOop)                               \
1049   unchecked_nonstatic_field(ObjectMonitor,     _object,                                       sizeof(void *)) /* NOTE: no type */    \
1050   unchecked_nonstatic_field(ObjectMonitor,     _owner,                                        sizeof(void *)) /* NOTE: no type */    \
1051   volatile_nonstatic_field(ObjectMonitor,      _count,                                        jint)                                  \
1052   volatile_nonstatic_field(ObjectMonitor,      _waiters,                                      jint)                                  \
1053   volatile_nonstatic_field(ObjectMonitor,      _recursions,                                   intptr_t)                              \
1054   nonstatic_field(ObjectMonitor,               FreeNext,                                      ObjectMonitor*)                        \
1055   volatile_nonstatic_field(BasicLock,          _displaced_header,                             markOop)                               \
1056   nonstatic_field(BasicObjectLock,             _lock,                                         BasicLock)                             \
1057   nonstatic_field(BasicObjectLock,             _obj,                                          oop)                                   \
1058   static_ptr_volatile_field(ObjectSynchronizer, gBlockList,                                   PaddedObjectMonitor*)                  \
1059                                                                                                                                      \
1060   /*********************/                                                                                                            \
1061   /* Matcher (C2 only) */                                                                                                            \
1062   /*********************/                                                                                                            \
1063                                                                                                                                      \
1064   unchecked_c2_static_field(Matcher,           _regEncode,                          sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
1065                                                                                                                                      \
1066   c2_nonstatic_field(Node,                     _in,                                           Node**)                                \
1067   c2_nonstatic_field(Node,                     _out,                                          Node**)                                \
1068   c2_nonstatic_field(Node,                     _cnt,                                          node_idx_t)                            \
1069   c2_nonstatic_field(Node,                     _max,                                          node_idx_t)                            \
1070   c2_nonstatic_field(Node,                     _outcnt,                                       node_idx_t)                            \
1071   c2_nonstatic_field(Node,                     _outmax,                                       node_idx_t)                            \
1072   c2_nonstatic_field(Node,                     _idx,                                          const node_idx_t)                      \
1073   c2_nonstatic_field(Node,                     _class_id,                                     jushort)                               \
1074   c2_nonstatic_field(Node,                     _flags,                                        jushort)                               \
1075                                                                                                                                      \
1076   c2_nonstatic_field(Compile,                  _root,                                         RootNode*)                             \
1077   c2_nonstatic_field(Compile,                  _unique,                                       uint)                                  \
1078   c2_nonstatic_field(Compile,                  _entry_bci,                                    int)                                   \


1666                                                                           \
1667   /*********************************/                                     \
1668   /* JNIHandles and JNIHandleBlock */                                     \
1669   /*********************************/                                     \
1670                                                                           \
1671   declare_toplevel_type(JNIHandles)                                       \
1672   declare_toplevel_type(JNIHandleBlock)                                   \
1673   declare_toplevel_type(jobject)                                          \
1674                                                                           \
1675   /**********************/                                                \
1676   /* Runtime1 (C1 only) */                                                \
1677   /**********************/                                                \
1678                                                                           \
1679   declare_c1_toplevel_type(Runtime1)                                      \
1680                                                                           \
1681   /************/                                                          \
1682   /* Monitors */                                                          \
1683   /************/                                                          \
1684                                                                           \
1685   declare_toplevel_type(ObjectMonitor)                                    \
1686   declare_toplevel_type(PaddedObjectMonitor)                              \
1687   declare_toplevel_type(ObjectSynchronizer)                               \
1688   declare_toplevel_type(BasicLock)                                        \
1689   declare_toplevel_type(BasicObjectLock)                                  \
1690                                                                           \
1691   /*********************/                                                 \
1692   /* Matcher (C2 only) */                                                 \
1693   /*********************/                                                 \
1694                                                                           \
1695   declare_c2_toplevel_type(Matcher)                                       \
1696   declare_c2_toplevel_type(Compile)                                       \
1697   declare_c2_toplevel_type(InlineTree)                                    \
1698   declare_c2_toplevel_type(OptoRegPair)                                   \
1699   declare_c2_toplevel_type(JVMState)                                      \
1700   declare_c2_toplevel_type(Phase)                                         \
1701     declare_c2_type(PhaseCFG, Phase)                                      \
1702     declare_c2_type(PhaseRegAlloc, Phase)                                 \
1703     declare_c2_type(PhaseChaitin, PhaseRegAlloc)                          \
1704   declare_c2_toplevel_type(CFGElement)                                    \
1705     declare_c2_type(Block, CFGElement)                                    \
1706   declare_c2_toplevel_type(Block_Array)                                   \


2141   declare_toplevel_type(intptr_t*)                                        \
2142    declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \
2143   declare_toplevel_type(JavaThread*)                                      \
2144   declare_toplevel_type(java_lang_Class)                                  \
2145   declare_integer_type(JavaThread::AsyncRequests)                         \
2146   declare_integer_type(JavaThread::TerminatedTypes)                       \
2147   declare_toplevel_type(jbyte*)                                           \
2148   declare_toplevel_type(jbyte**)                                          \
2149   declare_toplevel_type(jint*)                                            \
2150   declare_toplevel_type(jniIdMapBase*)                                    \
2151   declare_unsigned_integer_type(juint)                                    \
2152   declare_unsigned_integer_type(julong)                                   \
2153   declare_toplevel_type(JNIHandleBlock*)                                  \
2154   declare_toplevel_type(JNIid)                                            \
2155   declare_toplevel_type(JNIid*)                                           \
2156   declare_toplevel_type(jmethodID*)                                       \
2157   declare_toplevel_type(Mutex*)                                           \
2158   declare_toplevel_type(nmethod*)                                         \
2159   COMPILER2_PRESENT(declare_unsigned_integer_type(node_idx_t))            \
2160   declare_toplevel_type(ObjectMonitor*)                                   \
2161   declare_toplevel_type(PaddedObjectMonitor*)                             \
2162   declare_toplevel_type(oop*)                                             \
2163   declare_toplevel_type(OopMap**)                                         \
2164   declare_toplevel_type(OopMapCache*)                                     \
2165   declare_toplevel_type(OopMapSet*)                                       \
2166   declare_toplevel_type(VMReg)                                            \
2167   declare_toplevel_type(OSThread*)                                        \
2168    declare_integer_type(ReferenceType)                                    \
2169   declare_toplevel_type(StubQueue*)                                       \
2170   declare_toplevel_type(Thread*)                                          \
2171   declare_toplevel_type(Universe)                                         \
2172   declare_toplevel_type(os)                                               \
2173   declare_toplevel_type(vframeArray)                                      \
2174   declare_toplevel_type(vframeArrayElement)                               \
2175   declare_toplevel_type(Annotations*)                                     \
2176                                                                           \
2177   /***************/                                                       \
2178   /* Miscellaneous types */                                               \
2179   /***************/                                                       \
2180                                                                           \
2181   /* freelist */                                                          \


< prev index next >