< prev index next >

src/hotspot/share/runtime/vmStructs.cpp

Print this page
rev 50281 : 8195097: Make it possible to process StringTable outside safepoint
Reviewed-by:


 147 // HotSpotTypeDataBase.java, which parses the type strings.
 148 
 149 #ifndef REG_COUNT
 150   #define REG_COUNT 0
 151 #endif
 152 
 153 #if INCLUDE_JVMTI
 154   #define JVMTI_STRUCTS(static_field) \
 155     static_field(JvmtiExport,                     _can_access_local_variables,                  bool)                                  \
 156     static_field(JvmtiExport,                     _can_hotswap_or_post_breakpoint,              bool)                                  \
 157     static_field(JvmtiExport,                     _can_post_on_exceptions,                      bool)                                  \
 158     static_field(JvmtiExport,                     _can_walk_any_space,                          bool)
 159 #else
 160   #define JVMTI_STRUCTS(static_field)
 161 #endif // INCLUDE_JVMTI
 162 
 163 typedef HashtableEntry<intptr_t, mtInternal>  IntptrHashtableEntry;
 164 typedef Hashtable<intptr_t, mtInternal>       IntptrHashtable;
 165 typedef Hashtable<Symbol*, mtSymbol>          SymbolHashtable;
 166 typedef HashtableEntry<Symbol*, mtClass>      SymbolHashtableEntry;
 167 typedef Hashtable<oop, mtSymbol>              StringHashtable;
 168 typedef Hashtable<InstanceKlass*, mtClass>       KlassHashtable;
 169 typedef HashtableEntry<InstanceKlass*, mtClass>  KlassHashtableEntry;
 170 typedef CompactHashtable<Symbol*, char>       SymbolCompactHashTable;
 171 typedef RehashableHashtable<Symbol*, mtSymbol>   RehashableSymbolHashtable;
 172 
 173 typedef PaddedEnd<ObjectMonitor>              PaddedObjectMonitor;
 174 
 175 //--------------------------------------------------------------------------------
 176 // VM_STRUCTS
 177 //
 178 // This list enumerates all of the fields the serviceability agent
 179 // needs to know about. Be sure to see also the type table below this one.
 180 // NOTE that there are platform-specific additions to this table in
 181 // vmStructs_<os>_<cpu>.hpp.
 182 
 183 #define VM_STRUCTS(nonstatic_field,                                                                                                  \
 184                    static_field,                                                                                                     \
 185                    static_ptr_volatile_field,                                                                                        \
 186                    unchecked_nonstatic_field,                                                                                        \
 187                    volatile_nonstatic_field,                                                                                         \


 459   nonstatic_field(PerfDataEntry,               flags,                                         jbyte)                                 \
 460   nonstatic_field(PerfDataEntry,               data_units,                                    jbyte)                                 \
 461   nonstatic_field(PerfDataEntry,               data_variability,                              jbyte)                                 \
 462   nonstatic_field(PerfDataEntry,               data_offset,                                   jint)                                  \
 463                                                                                                                                      \
 464      static_field(PerfMemory,                  _start,                                        char*)                                 \
 465      static_field(PerfMemory,                  _end,                                          char*)                                 \
 466      static_field(PerfMemory,                  _top,                                          char*)                                 \
 467      static_field(PerfMemory,                  _capacity,                                     size_t)                                \
 468      static_field(PerfMemory,                  _prologue,                                     PerfDataPrologue*)                     \
 469      static_field(PerfMemory,                  _initialized,                                  int)                                   \
 470                                                                                                                                      \
 471   /***************/                                                                                                                  \
 472   /* SymbolTable */                                                                                                                  \
 473   /***************/                                                                                                                  \
 474                                                                                                                                      \
 475      static_field(SymbolTable,                 _the_table,                                    SymbolTable*)                          \
 476      static_field(SymbolTable,                 _shared_table,                                 SymbolCompactHashTable)                \
 477      static_field(RehashableSymbolHashtable,   _seed,                                         juint)                                 \
 478                                                                                                                                      \
 479   /***************/                                                                                                                  \
 480   /* StringTable */                                                                                                                  \
 481   /***************/                                                                                                                  \
 482                                                                                                                                      \
 483      static_field(StringTable,                 _the_table,                                    StringTable*)                          \
 484                                                                                                                                      \
 485   /********************/                                                                                                             \
 486   /* CompactHashTable */                                                                                                             \
 487   /********************/                                                                                                             \
 488                                                                                                                                      \
 489   nonstatic_field(SymbolCompactHashTable,      _base_address,                                 address)                               \
 490   nonstatic_field(SymbolCompactHashTable,      _entry_count,                                  u4)                                    \
 491   nonstatic_field(SymbolCompactHashTable,      _bucket_count,                                 u4)                                    \
 492   nonstatic_field(SymbolCompactHashTable,      _buckets,                                      u4*)                                   \
 493   nonstatic_field(SymbolCompactHashTable,      _entries,                                      u4*)                                   \
 494                                                                                                                                      \
 495   /********************/                                                                                                             \
 496   /* SystemDictionary */                                                                                                             \
 497   /********************/                                                                                                             \
 498                                                                                                                                      \
 499      static_field(SystemDictionary,            _shared_dictionary,                            Dictionary*)                           \
 500      static_field(SystemDictionary,            _system_loader_lock_obj,                       oop)                                   \
 501      static_field(SystemDictionary,            WK_KLASS(Object_klass),                        InstanceKlass*)                        \
 502      static_field(SystemDictionary,            WK_KLASS(String_klass),                        InstanceKlass*)                        \
 503      static_field(SystemDictionary,            WK_KLASS(Class_klass),                         InstanceKlass*)                        \
 504      static_field(SystemDictionary,            WK_KLASS(ClassLoader_klass),                   InstanceKlass*)                        \


1348                                                                           \
1349   /************************/                                              \
1350   /* PerfMemory - jvmstat */                                              \
1351   /************************/                                              \
1352                                                                           \
1353   declare_toplevel_type(PerfDataPrologue)                                 \
1354   declare_toplevel_type(PerfDataPrologue*)                                \
1355   declare_toplevel_type(PerfDataEntry)                                    \
1356   declare_toplevel_type(PerfMemory)                                       \
1357   declare_type(PerfData, CHeapObj<mtInternal>)                            \
1358                                                                           \
1359   /*********************************/                                     \
1360   /* SymbolTable, SystemDictionary */                                     \
1361   /*********************************/                                     \
1362                                                                           \
1363   declare_toplevel_type(BasicHashtable<mtInternal>)                       \
1364     declare_type(IntptrHashtable, BasicHashtable<mtInternal>)             \
1365   declare_toplevel_type(BasicHashtable<mtSymbol>)                         \
1366     declare_type(RehashableSymbolHashtable, BasicHashtable<mtSymbol>)     \
1367   declare_type(SymbolTable, SymbolHashtable)                              \
1368   declare_type(StringTable, StringHashtable)                              \
1369     declare_type(Dictionary, KlassHashtable)                              \
1370   declare_toplevel_type(BasicHashtableEntry<mtInternal>)                  \
1371   declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>)     \
1372     declare_type(DictionaryEntry, KlassHashtableEntry)                    \
1373   declare_toplevel_type(HashtableBucket<mtInternal>)                      \
1374   declare_toplevel_type(SystemDictionary)                                 \
1375   declare_toplevel_type(vmSymbols)                                        \
1376                                                                           \
1377   declare_toplevel_type(GenericGrowableArray)                             \
1378   declare_toplevel_type(GrowableArray<int>)                               \
1379   declare_toplevel_type(Arena)                                            \
1380     declare_type(ResourceArea, Arena)                                     \
1381                                                                           \
1382   declare_toplevel_type(SymbolCompactHashTable)                           \
1383                                                                           \
1384   /***********************************************************/           \
1385   /* Thread hierarchy (needed for run-time type information) */           \
1386   /***********************************************************/           \
1387                                                                           \
1388   declare_toplevel_type(Threads)                                          \




 147 // HotSpotTypeDataBase.java, which parses the type strings.
 148 
 149 #ifndef REG_COUNT
 150   #define REG_COUNT 0
 151 #endif
 152 
 153 #if INCLUDE_JVMTI
 154   #define JVMTI_STRUCTS(static_field) \
 155     static_field(JvmtiExport,                     _can_access_local_variables,                  bool)                                  \
 156     static_field(JvmtiExport,                     _can_hotswap_or_post_breakpoint,              bool)                                  \
 157     static_field(JvmtiExport,                     _can_post_on_exceptions,                      bool)                                  \
 158     static_field(JvmtiExport,                     _can_walk_any_space,                          bool)
 159 #else
 160   #define JVMTI_STRUCTS(static_field)
 161 #endif // INCLUDE_JVMTI
 162 
 163 typedef HashtableEntry<intptr_t, mtInternal>  IntptrHashtableEntry;
 164 typedef Hashtable<intptr_t, mtInternal>       IntptrHashtable;
 165 typedef Hashtable<Symbol*, mtSymbol>          SymbolHashtable;
 166 typedef HashtableEntry<Symbol*, mtClass>      SymbolHashtableEntry;

 167 typedef Hashtable<InstanceKlass*, mtClass>       KlassHashtable;
 168 typedef HashtableEntry<InstanceKlass*, mtClass>  KlassHashtableEntry;
 169 typedef CompactHashtable<Symbol*, char>       SymbolCompactHashTable;
 170 typedef RehashableHashtable<Symbol*, mtSymbol>   RehashableSymbolHashtable;
 171 
 172 typedef PaddedEnd<ObjectMonitor>              PaddedObjectMonitor;
 173 
 174 //--------------------------------------------------------------------------------
 175 // VM_STRUCTS
 176 //
 177 // This list enumerates all of the fields the serviceability agent
 178 // needs to know about. Be sure to see also the type table below this one.
 179 // NOTE that there are platform-specific additions to this table in
 180 // vmStructs_<os>_<cpu>.hpp.
 181 
 182 #define VM_STRUCTS(nonstatic_field,                                                                                                  \
 183                    static_field,                                                                                                     \
 184                    static_ptr_volatile_field,                                                                                        \
 185                    unchecked_nonstatic_field,                                                                                        \
 186                    volatile_nonstatic_field,                                                                                         \


 458   nonstatic_field(PerfDataEntry,               flags,                                         jbyte)                                 \
 459   nonstatic_field(PerfDataEntry,               data_units,                                    jbyte)                                 \
 460   nonstatic_field(PerfDataEntry,               data_variability,                              jbyte)                                 \
 461   nonstatic_field(PerfDataEntry,               data_offset,                                   jint)                                  \
 462                                                                                                                                      \
 463      static_field(PerfMemory,                  _start,                                        char*)                                 \
 464      static_field(PerfMemory,                  _end,                                          char*)                                 \
 465      static_field(PerfMemory,                  _top,                                          char*)                                 \
 466      static_field(PerfMemory,                  _capacity,                                     size_t)                                \
 467      static_field(PerfMemory,                  _prologue,                                     PerfDataPrologue*)                     \
 468      static_field(PerfMemory,                  _initialized,                                  int)                                   \
 469                                                                                                                                      \
 470   /***************/                                                                                                                  \
 471   /* SymbolTable */                                                                                                                  \
 472   /***************/                                                                                                                  \
 473                                                                                                                                      \
 474      static_field(SymbolTable,                 _the_table,                                    SymbolTable*)                          \
 475      static_field(SymbolTable,                 _shared_table,                                 SymbolCompactHashTable)                \
 476      static_field(RehashableSymbolHashtable,   _seed,                                         juint)                                 \
 477                                                                                                                                      \






 478   /********************/                                                                                                             \
 479   /* CompactHashTable */                                                                                                             \
 480   /********************/                                                                                                             \
 481                                                                                                                                      \
 482   nonstatic_field(SymbolCompactHashTable,      _base_address,                                 address)                               \
 483   nonstatic_field(SymbolCompactHashTable,      _entry_count,                                  u4)                                    \
 484   nonstatic_field(SymbolCompactHashTable,      _bucket_count,                                 u4)                                    \
 485   nonstatic_field(SymbolCompactHashTable,      _buckets,                                      u4*)                                   \
 486   nonstatic_field(SymbolCompactHashTable,      _entries,                                      u4*)                                   \
 487                                                                                                                                      \
 488   /********************/                                                                                                             \
 489   /* SystemDictionary */                                                                                                             \
 490   /********************/                                                                                                             \
 491                                                                                                                                      \
 492      static_field(SystemDictionary,            _shared_dictionary,                            Dictionary*)                           \
 493      static_field(SystemDictionary,            _system_loader_lock_obj,                       oop)                                   \
 494      static_field(SystemDictionary,            WK_KLASS(Object_klass),                        InstanceKlass*)                        \
 495      static_field(SystemDictionary,            WK_KLASS(String_klass),                        InstanceKlass*)                        \
 496      static_field(SystemDictionary,            WK_KLASS(Class_klass),                         InstanceKlass*)                        \
 497      static_field(SystemDictionary,            WK_KLASS(ClassLoader_klass),                   InstanceKlass*)                        \


1341                                                                           \
1342   /************************/                                              \
1343   /* PerfMemory - jvmstat */                                              \
1344   /************************/                                              \
1345                                                                           \
1346   declare_toplevel_type(PerfDataPrologue)                                 \
1347   declare_toplevel_type(PerfDataPrologue*)                                \
1348   declare_toplevel_type(PerfDataEntry)                                    \
1349   declare_toplevel_type(PerfMemory)                                       \
1350   declare_type(PerfData, CHeapObj<mtInternal>)                            \
1351                                                                           \
1352   /*********************************/                                     \
1353   /* SymbolTable, SystemDictionary */                                     \
1354   /*********************************/                                     \
1355                                                                           \
1356   declare_toplevel_type(BasicHashtable<mtInternal>)                       \
1357     declare_type(IntptrHashtable, BasicHashtable<mtInternal>)             \
1358   declare_toplevel_type(BasicHashtable<mtSymbol>)                         \
1359     declare_type(RehashableSymbolHashtable, BasicHashtable<mtSymbol>)     \
1360   declare_type(SymbolTable, SymbolHashtable)                              \

1361     declare_type(Dictionary, KlassHashtable)                              \
1362   declare_toplevel_type(BasicHashtableEntry<mtInternal>)                  \
1363   declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>)     \
1364     declare_type(DictionaryEntry, KlassHashtableEntry)                    \
1365   declare_toplevel_type(HashtableBucket<mtInternal>)                      \
1366   declare_toplevel_type(SystemDictionary)                                 \
1367   declare_toplevel_type(vmSymbols)                                        \
1368                                                                           \
1369   declare_toplevel_type(GenericGrowableArray)                             \
1370   declare_toplevel_type(GrowableArray<int>)                               \
1371   declare_toplevel_type(Arena)                                            \
1372     declare_type(ResourceArea, Arena)                                     \
1373                                                                           \
1374   declare_toplevel_type(SymbolCompactHashTable)                           \
1375                                                                           \
1376   /***********************************************************/           \
1377   /* Thread hierarchy (needed for run-time type information) */           \
1378   /***********************************************************/           \
1379                                                                           \
1380   declare_toplevel_type(Threads)                                          \


< prev index next >