14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "ci/ciField.hpp"
27 #include "ci/ciInstance.hpp"
28 #include "ci/ciMethodData.hpp"
29 #include "ci/ciObjArrayKlass.hpp"
30 #include "ci/ciSymbol.hpp"
31 #include "classfile/compactHashtable.hpp"
32 #include "classfile/dictionary.hpp"
33 #include "classfile/javaClasses.hpp"
34 #include "classfile/loaderConstraints.hpp"
35 #include "classfile/placeholders.hpp"
36 #include "classfile/stringTable.hpp"
37 #include "classfile/systemDictionary.hpp"
38 #include "code/codeBlob.hpp"
39 #include "code/codeCache.hpp"
40 #include "code/compressedStream.hpp"
41 #include "code/location.hpp"
42 #include "code/nmethod.hpp"
43 #include "code/pcDesc.hpp"
44 #include "code/stubs.hpp"
45 #include "code/vmreg.hpp"
46 #include "compiler/compileBroker.hpp"
47 #include "compiler/oopMap.hpp"
48 #include "gc/parallel/immutableSpace.hpp"
49 #include "gc/parallel/mutableSpace.hpp"
50 #include "gc/serial/defNewGeneration.hpp"
51 #include "gc/serial/tenuredGeneration.hpp"
52 #include "gc/shared/cardTableRS.hpp"
53 #include "gc/shared/collectedHeap.hpp"
54 #include "gc/shared/genCollectedHeap.hpp"
55 #include "gc/shared/generation.hpp"
176
177 #ifndef REG_COUNT
178 #define REG_COUNT 0
179 #endif
180
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 TwoOopHashtable<InstanceKlass*, mtClass> KlassTwoOopHashtable;
197 typedef Hashtable<InstanceKlass*, mtClass> KlassHashtable;
198 typedef HashtableEntry<InstanceKlass*, mtClass> KlassHashtableEntry;
199 typedef TwoOopHashtable<Symbol*, mtClass> SymbolTwoOopHashtable;
200 typedef CompactHashtable<Symbol*, char> SymbolCompactHashTable;
201 typedef RehashableHashtable<Symbol*, mtSymbol> RehashableSymbolHashtable;
202
203 //--------------------------------------------------------------------------------
204 // VM_STRUCTS
205 //
206 // This list enumerates all of the fields the serviceability agent
207 // needs to know about. Be sure to see also the type table below this one.
208 // NOTE that there are platform-specific additions to this table in
209 // vmStructs_<os>_<cpu>.hpp.
210
211 #define VM_STRUCTS(nonstatic_field, \
212 static_field, \
213 static_ptr_volatile_field, \
214 unchecked_nonstatic_field, \
215 volatile_nonstatic_field, \
216 nonproduct_nonstatic_field, \
217 c1_nonstatic_field, \
218 c2_nonstatic_field, \
219 unchecked_c1_static_field, \
233 nonstatic_field(CompiledICHolder, _holder_method, Method*) \
234 nonstatic_field(CompiledICHolder, _holder_klass, Klass*) \
235 nonstatic_field(ConstantPool, _tags, Array<u1>*) \
236 nonstatic_field(ConstantPool, _cache, ConstantPoolCache*) \
237 nonstatic_field(ConstantPool, _pool_holder, InstanceKlass*) \
238 nonstatic_field(ConstantPool, _operands, Array<u2>*) \
239 nonstatic_field(ConstantPool, _resolved_klasses, Array<Klass*>*) \
240 nonstatic_field(ConstantPool, _length, int) \
241 nonstatic_field(ConstantPoolCache, _resolved_references, jobject) \
242 nonstatic_field(ConstantPoolCache, _reference_map, Array<u2>*) \
243 nonstatic_field(ConstantPoolCache, _length, int) \
244 nonstatic_field(ConstantPoolCache, _constant_pool, ConstantPool*) \
245 volatile_nonstatic_field(InstanceKlass, _array_klasses, Klass*) \
246 nonstatic_field(InstanceKlass, _methods, Array<Method*>*) \
247 nonstatic_field(InstanceKlass, _default_methods, Array<Method*>*) \
248 nonstatic_field(InstanceKlass, _local_interfaces, Array<Klass*>*) \
249 nonstatic_field(InstanceKlass, _transitive_interfaces, Array<Klass*>*) \
250 nonstatic_field(InstanceKlass, _fields, Array<u2>*) \
251 nonstatic_field(InstanceKlass, _java_fields_count, u2) \
252 nonstatic_field(InstanceKlass, _constants, ConstantPool*) \
253 nonstatic_field(InstanceKlass, _class_loader_data, ClassLoaderData*) \
254 nonstatic_field(InstanceKlass, _source_file_name_index, u2) \
255 nonstatic_field(InstanceKlass, _source_debug_extension, const char*) \
256 nonstatic_field(InstanceKlass, _inner_classes, Array<jushort>*) \
257 nonstatic_field(InstanceKlass, _nonstatic_field_size, int) \
258 nonstatic_field(InstanceKlass, _static_field_size, int) \
259 nonstatic_field(InstanceKlass, _static_oop_field_count, u2) \
260 nonstatic_field(InstanceKlass, _nonstatic_oop_map_size, int) \
261 nonstatic_field(InstanceKlass, _is_marked_dependent, bool) \
262 nonstatic_field(InstanceKlass, _misc_flags, u2) \
263 nonstatic_field(InstanceKlass, _minor_version, u2) \
264 nonstatic_field(InstanceKlass, _major_version, u2) \
265 nonstatic_field(InstanceKlass, _init_state, u1) \
266 nonstatic_field(InstanceKlass, _init_thread, Thread*) \
267 nonstatic_field(InstanceKlass, _itable_len, int) \
268 nonstatic_field(InstanceKlass, _reference_type, u1) \
269 volatile_nonstatic_field(InstanceKlass, _oop_map_cache, OopMapCache*) \
270 nonstatic_field(InstanceKlass, _jni_ids, JNIid*) \
271 nonstatic_field(InstanceKlass, _osr_nmethods_head, nmethod*) \
272 JVMTI_ONLY(nonstatic_field(InstanceKlass, _breakpoints, BreakpointInfo*)) \
273 nonstatic_field(InstanceKlass, _generic_signature_index, u2) \
274 volatile_nonstatic_field(InstanceKlass, _methods_jmethod_ids, jmethodID*) \
275 volatile_nonstatic_field(InstanceKlass, _idnum_allocated_count, u2) \
276 nonstatic_field(InstanceKlass, _annotations, Annotations*) \
277 nonstatic_field(InstanceKlass, _method_ordering, Array<int>*) \
278 nonstatic_field(InstanceKlass, _default_vtable_indices, Array<int>*) \
279 nonstatic_field(Klass, _super_check_offset, juint) \
280 nonstatic_field(Klass, _secondary_super_cache, Klass*) \
281 nonstatic_field(Klass, _secondary_supers, Array<Klass*>*) \
282 nonstatic_field(Klass, _primary_supers[0], Klass*) \
283 nonstatic_field(Klass, _java_mirror, oop) \
284 nonstatic_field(Klass, _modifier_flags, jint) \
285 nonstatic_field(Klass, _super, Klass*) \
286 nonstatic_field(Klass, _subklass, Klass*) \
287 nonstatic_field(Klass, _layout_helper, jint) \
288 nonstatic_field(Klass, _name, Symbol*) \
289 nonstatic_field(Klass, _access_flags, AccessFlags) \
290 nonstatic_field(Klass, _prototype_header, markOop) \
291 nonstatic_field(Klass, _next_sibling, Klass*) \
292 nonstatic_field(Klass, _next_link, Klass*) \
293 nonstatic_field(Klass, _vtable_len, int) \
294 nonstatic_field(vtableEntry, _method, Method*) \
295 nonstatic_field(MethodData, _size, int) \
296 nonstatic_field(MethodData, _method, Method*) \
297 nonstatic_field(MethodData, _data_size, int) \
298 nonstatic_field(MethodData, _data[0], intptr_t) \
299 nonstatic_field(MethodData, _parameters_type_data_di, int) \
300 nonstatic_field(MethodData, _nof_decompiles, uint) \
301 nonstatic_field(MethodData, _nof_overflow_recompiles, uint) \
302 nonstatic_field(MethodData, _nof_overflow_traps, uint) \
303 nonstatic_field(MethodData, _trap_hist._array[0], u1) \
304 nonstatic_field(MethodData, _eflags, intx) \
305 nonstatic_field(MethodData, _arg_local, intx) \
306 nonstatic_field(MethodData, _arg_stack, intx) \
307 nonstatic_field(MethodData, _arg_returned, intx) \
308 nonstatic_field(MethodData, _tenure_traps, uint) \
309 nonstatic_field(MethodData, _invoke_mask, int) \
310 nonstatic_field(MethodData, _backedge_mask, int) \
311 nonstatic_field(DataLayout, _header._struct._tag, u1) \
312 nonstatic_field(DataLayout, _header._struct._flags, u1) \
313 nonstatic_field(DataLayout, _header._struct._bci, u2) \
590 /***************/ \
591 /* StringTable */ \
592 /***************/ \
593 \
594 static_field(StringTable, _the_table, StringTable*) \
595 \
596 /********************/ \
597 /* CompactHashTable */ \
598 /********************/ \
599 \
600 nonstatic_field(SymbolCompactHashTable, _base_address, address) \
601 nonstatic_field(SymbolCompactHashTable, _entry_count, u4) \
602 nonstatic_field(SymbolCompactHashTable, _bucket_count, u4) \
603 nonstatic_field(SymbolCompactHashTable, _buckets, u4*) \
604 nonstatic_field(SymbolCompactHashTable, _entries, u4*) \
605 \
606 /********************/ \
607 /* SystemDictionary */ \
608 /********************/ \
609 \
610 static_field(SystemDictionary, _dictionary, Dictionary*) \
611 static_field(SystemDictionary, _placeholders, PlaceholderTable*) \
612 static_field(SystemDictionary, _shared_dictionary, Dictionary*) \
613 static_field(SystemDictionary, _system_loader_lock_obj, oop) \
614 static_field(SystemDictionary, _loader_constraints, LoaderConstraintTable*) \
615 static_field(SystemDictionary, WK_KLASS(Object_klass), InstanceKlass*) \
616 static_field(SystemDictionary, WK_KLASS(String_klass), InstanceKlass*) \
617 static_field(SystemDictionary, WK_KLASS(Class_klass), InstanceKlass*) \
618 static_field(SystemDictionary, WK_KLASS(Cloneable_klass), InstanceKlass*) \
619 static_field(SystemDictionary, WK_KLASS(ClassLoader_klass), InstanceKlass*) \
620 static_field(SystemDictionary, WK_KLASS(Serializable_klass), InstanceKlass*) \
621 static_field(SystemDictionary, WK_KLASS(System_klass), InstanceKlass*) \
622 static_field(SystemDictionary, WK_KLASS(Throwable_klass), InstanceKlass*) \
623 static_field(SystemDictionary, WK_KLASS(ThreadDeath_klass), InstanceKlass*) \
624 static_field(SystemDictionary, WK_KLASS(Error_klass), InstanceKlass*) \
625 static_field(SystemDictionary, WK_KLASS(Exception_klass), InstanceKlass*) \
626 static_field(SystemDictionary, WK_KLASS(RuntimeException_klass), InstanceKlass*) \
627 static_field(SystemDictionary, WK_KLASS(ClassNotFoundException_klass), InstanceKlass*) \
628 static_field(SystemDictionary, WK_KLASS(NoClassDefFoundError_klass), InstanceKlass*) \
629 static_field(SystemDictionary, WK_KLASS(LinkageError_klass), InstanceKlass*) \
630 static_field(SystemDictionary, WK_KLASS(ClassCastException_klass), InstanceKlass*) \
631 static_field(SystemDictionary, WK_KLASS(ArrayStoreException_klass), InstanceKlass*) \
632 static_field(SystemDictionary, WK_KLASS(VirtualMachineError_klass), InstanceKlass*) \
633 static_field(SystemDictionary, WK_KLASS(OutOfMemoryError_klass), InstanceKlass*) \
634 static_field(SystemDictionary, WK_KLASS(StackOverflowError_klass), InstanceKlass*) \
635 static_field(SystemDictionary, WK_KLASS(ProtectionDomain_klass), InstanceKlass*) \
636 static_field(SystemDictionary, WK_KLASS(AccessControlContext_klass), InstanceKlass*) \
637 static_field(SystemDictionary, WK_KLASS(SecureClassLoader_klass), InstanceKlass*) \
638 static_field(SystemDictionary, WK_KLASS(Reference_klass), InstanceKlass*) \
639 static_field(SystemDictionary, WK_KLASS(SoftReference_klass), InstanceKlass*) \
640 static_field(SystemDictionary, WK_KLASS(WeakReference_klass), InstanceKlass*) \
641 static_field(SystemDictionary, WK_KLASS(FinalReference_klass), InstanceKlass*) \
642 static_field(SystemDictionary, WK_KLASS(PhantomReference_klass), InstanceKlass*) \
643 static_field(SystemDictionary, WK_KLASS(Finalizer_klass), InstanceKlass*) \
644 static_field(SystemDictionary, WK_KLASS(Thread_klass), InstanceKlass*) \
645 static_field(SystemDictionary, WK_KLASS(ThreadGroup_klass), InstanceKlass*) \
646 static_field(SystemDictionary, WK_KLASS(Properties_klass), InstanceKlass*) \
647 static_field(SystemDictionary, WK_KLASS(StringBuffer_klass), InstanceKlass*) \
648 static_field(SystemDictionary, WK_KLASS(MethodHandle_klass), InstanceKlass*) \
649 static_field(SystemDictionary, _box_klasses[0], InstanceKlass*) \
650 static_field(SystemDictionary, _java_system_loader, oop) \
651 \
652 /*************/ \
653 /* vmSymbols */ \
654 /*************/ \
655 \
656 static_field(vmSymbols, _symbols[0], Symbol*) \
657 \
658 /*******************/ \
659 /* HashtableBucket */ \
660 /*******************/ \
661 \
662 nonstatic_field(HashtableBucket<mtInternal>, _entry, BasicHashtableEntry<mtInternal>*) \
663 \
664 /******************/ \
665 /* HashtableEntry */ \
666 /******************/ \
667 \
668 nonstatic_field(BasicHashtableEntry<mtInternal>, _next, BasicHashtableEntry<mtInternal>*) \
669 nonstatic_field(BasicHashtableEntry<mtInternal>, _hash, unsigned int) \
670 nonstatic_field(IntptrHashtableEntry, _literal, intptr_t) \
671 \
672 /*************/ \
673 /* Hashtable */ \
674 /*************/ \
675 \
676 nonstatic_field(BasicHashtable<mtInternal>, _table_size, int) \
677 nonstatic_field(BasicHashtable<mtInternal>, _buckets, HashtableBucket<mtInternal>*) \
678 volatile_nonstatic_field(BasicHashtable<mtInternal>, _free_list, BasicHashtableEntry<mtInternal>*) \
679 nonstatic_field(BasicHashtable<mtInternal>, _first_free_entry, char*) \
680 nonstatic_field(BasicHashtable<mtInternal>, _end_block, char*) \
681 nonstatic_field(BasicHashtable<mtInternal>, _entry_size, int) \
682 \
683 /*******************/ \
684 /* DictionaryEntry */ \
685 /*******************/ \
686 \
687 nonstatic_field(DictionaryEntry, _loader_data, ClassLoaderData*) \
688 nonstatic_field(DictionaryEntry, _pd_set, ProtectionDomainEntry*) \
689 \
690 /********************/ \
691 \
692 nonstatic_field(PlaceholderEntry, _loader_data, ClassLoaderData*) \
693 \
694 /**************************/ \
695 /* ProtectionDomainEntry */ \
696 /**************************/ \
697 \
698 nonstatic_field(ProtectionDomainEntry, _next, ProtectionDomainEntry*) \
699 nonstatic_field(ProtectionDomainEntry, _pd_cache, ProtectionDomainCacheEntry*) \
700 \
701 /*******************************/ \
702 /* ProtectionDomainCacheEntry */ \
703 /*******************************/ \
704 \
705 nonstatic_field(ProtectionDomainCacheEntry, _literal, oop) \
706 \
707 /*************************/ \
708 /* LoaderConstraintEntry */ \
709 /*************************/ \
710 \
711 nonstatic_field(LoaderConstraintEntry, _name, Symbol*) \
712 nonstatic_field(LoaderConstraintEntry, _num_loaders, int) \
713 nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \
714 nonstatic_field(LoaderConstraintEntry, _loaders, ClassLoaderData**) \
715 \
716 nonstatic_field(ClassLoaderData, _class_loader, oop) \
717 nonstatic_field(ClassLoaderData, _next, ClassLoaderData*) \
718 volatile_nonstatic_field(ClassLoaderData, _klasses, Klass*) \
719 nonstatic_field(ClassLoaderData, _is_anonymous, bool) \
720 \
721 static_field(ClassLoaderDataGraph, _head, ClassLoaderData*) \
722 \
723 /**********/ \
724 /* Arrays */ \
725 /**********/ \
726 \
727 nonstatic_field(Array<Klass*>, _length, int) \
728 nonstatic_field(Array<Klass*>, _data[0], Klass*) \
729 \
730 /*******************/ \
731 /* GrowableArrays */ \
732 /*******************/ \
733 \
734 nonstatic_field(GenericGrowableArray, _len, int) \
735 nonstatic_field(GenericGrowableArray, _max, int) \
736 nonstatic_field(GenericGrowableArray, _arena, Arena*) \
737 nonstatic_field(GrowableArray<int>, _data, int*) \
738 \
739 /********************************/ \
1593 \
1594 /************************/ \
1595 /* PerfMemory - jvmstat */ \
1596 /************************/ \
1597 \
1598 declare_toplevel_type(PerfDataPrologue) \
1599 declare_toplevel_type(PerfDataPrologue*) \
1600 declare_toplevel_type(PerfDataEntry) \
1601 declare_toplevel_type(PerfMemory) \
1602 \
1603 /*********************************/ \
1604 /* SymbolTable, SystemDictionary */ \
1605 /*********************************/ \
1606 \
1607 declare_toplevel_type(BasicHashtable<mtInternal>) \
1608 declare_type(IntptrHashtable, BasicHashtable<mtInternal>) \
1609 declare_toplevel_type(BasicHashtable<mtSymbol>) \
1610 declare_type(RehashableSymbolHashtable, BasicHashtable<mtSymbol>) \
1611 declare_type(SymbolTable, SymbolHashtable) \
1612 declare_type(StringTable, StringHashtable) \
1613 declare_type(LoaderConstraintTable, KlassHashtable) \
1614 declare_type(KlassTwoOopHashtable, KlassHashtable) \
1615 declare_type(Dictionary, KlassTwoOopHashtable) \
1616 declare_type(PlaceholderTable, SymbolTwoOopHashtable) \
1617 declare_toplevel_type(BasicHashtableEntry<mtInternal>) \
1618 declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>) \
1619 declare_type(DictionaryEntry, KlassHashtableEntry) \
1620 declare_type(PlaceholderEntry, SymbolHashtableEntry) \
1621 declare_type(LoaderConstraintEntry, KlassHashtableEntry) \
1622 declare_toplevel_type(HashtableBucket<mtInternal>) \
1623 declare_toplevel_type(SystemDictionary) \
1624 declare_toplevel_type(vmSymbols) \
1625 declare_toplevel_type(ProtectionDomainEntry) \
1626 declare_toplevel_type(ProtectionDomainCacheEntry) \
1627 \
1628 declare_toplevel_type(GenericGrowableArray) \
1629 declare_toplevel_type(GrowableArray<int>) \
1630 declare_toplevel_type(Arena) \
1631 declare_type(ResourceArea, Arena) \
1632 declare_toplevel_type(Chunk) \
1633 \
1634 declare_toplevel_type(SymbolCompactHashTable) \
1635 \
1636 /***********************************************************/ \
1637 /* Thread hierarchy (needed for run-time type information) */ \
1638 /***********************************************************/ \
1639 \
1640 declare_toplevel_type(Threads) \
1641 declare_toplevel_type(ThreadShadow) \
1642 declare_type(Thread, ThreadShadow) \
1643 declare_type(NamedThread, Thread) \
1644 declare_type(WatcherThread, Thread) \
1645 declare_type(JavaThread, Thread) \
1646 declare_type(JvmtiAgentThread, JavaThread) \
2338 declare_constant(Generation::DefNew) \
2339 declare_constant(Generation::MarkSweepCompact) \
2340 declare_constant(Generation::Other) \
2341 \
2342 declare_constant(Generation::LogOfGenGrain) \
2343 declare_constant(Generation::GenGrain) \
2344 \
2345 declare_constant(HeapWordSize) \
2346 declare_constant(LogHeapWordSize) \
2347 \
2348 \
2349 /************************/ \
2350 /* PerfMemory - jvmstat */ \
2351 /************************/ \
2352 \
2353 declare_preprocessor_constant("PERFDATA_MAJOR_VERSION", PERFDATA_MAJOR_VERSION) \
2354 declare_preprocessor_constant("PERFDATA_MINOR_VERSION", PERFDATA_MINOR_VERSION) \
2355 declare_preprocessor_constant("PERFDATA_BIG_ENDIAN", PERFDATA_BIG_ENDIAN) \
2356 declare_preprocessor_constant("PERFDATA_LITTLE_ENDIAN", PERFDATA_LITTLE_ENDIAN) \
2357 \
2358 /***********************************/ \
2359 /* LoaderConstraintTable constants */ \
2360 /***********************************/ \
2361 \
2362 declare_constant(LoaderConstraintTable::_loader_constraint_size) \
2363 declare_constant(LoaderConstraintTable::_nof_buckets) \
2364 \
2365 /************************************************************/ \
2366 /* HotSpot specific JVM_ACC constants from global anon enum */ \
2367 /************************************************************/ \
2368 \
2369 declare_constant(JVM_ACC_WRITTEN_FLAGS) \
2370 declare_constant(JVM_ACC_MONITOR_MATCH) \
2371 declare_constant(JVM_ACC_HAS_MONITOR_BYTECODES) \
2372 declare_constant(JVM_ACC_HAS_LOOPS) \
2373 declare_constant(JVM_ACC_LOOPS_FLAG_INIT) \
2374 declare_constant(JVM_ACC_QUEUED) \
2375 declare_constant(JVM_ACC_NOT_C2_OSR_COMPILABLE) \
2376 declare_constant(JVM_ACC_HAS_LINE_NUMBER_TABLE) \
2377 declare_constant(JVM_ACC_HAS_CHECKED_EXCEPTIONS) \
2378 declare_constant(JVM_ACC_HAS_JSRS) \
2379 declare_constant(JVM_ACC_IS_OLD) \
2380 declare_constant(JVM_ACC_IS_OBSOLETE) \
2381 declare_constant(JVM_ACC_IS_PREFIXED_NATIVE) \
2382 declare_constant(JVM_ACC_HAS_MIRANDA_METHODS) \
2383 declare_constant(JVM_ACC_HAS_VANILLA_CONSTRUCTOR) \
|
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "ci/ciField.hpp"
27 #include "ci/ciInstance.hpp"
28 #include "ci/ciMethodData.hpp"
29 #include "ci/ciObjArrayKlass.hpp"
30 #include "ci/ciSymbol.hpp"
31 #include "classfile/compactHashtable.hpp"
32 #include "classfile/dictionary.hpp"
33 #include "classfile/javaClasses.hpp"
34 #include "classfile/stringTable.hpp"
35 #include "classfile/systemDictionary.hpp"
36 #include "code/codeBlob.hpp"
37 #include "code/codeCache.hpp"
38 #include "code/compressedStream.hpp"
39 #include "code/location.hpp"
40 #include "code/nmethod.hpp"
41 #include "code/pcDesc.hpp"
42 #include "code/stubs.hpp"
43 #include "code/vmreg.hpp"
44 #include "compiler/compileBroker.hpp"
45 #include "compiler/oopMap.hpp"
46 #include "gc/parallel/immutableSpace.hpp"
47 #include "gc/parallel/mutableSpace.hpp"
48 #include "gc/serial/defNewGeneration.hpp"
49 #include "gc/serial/tenuredGeneration.hpp"
50 #include "gc/shared/cardTableRS.hpp"
51 #include "gc/shared/collectedHeap.hpp"
52 #include "gc/shared/genCollectedHeap.hpp"
53 #include "gc/shared/generation.hpp"
174
175 #ifndef REG_COUNT
176 #define REG_COUNT 0
177 #endif
178
179 #if INCLUDE_JVMTI
180 #define JVMTI_STRUCTS(static_field) \
181 static_field(JvmtiExport, _can_access_local_variables, bool) \
182 static_field(JvmtiExport, _can_hotswap_or_post_breakpoint, bool) \
183 static_field(JvmtiExport, _can_post_on_exceptions, bool) \
184 static_field(JvmtiExport, _can_walk_any_space, bool)
185 #else
186 #define JVMTI_STRUCTS(static_field)
187 #endif // INCLUDE_JVMTI
188
189 typedef HashtableEntry<intptr_t, mtInternal> IntptrHashtableEntry;
190 typedef Hashtable<intptr_t, mtInternal> IntptrHashtable;
191 typedef Hashtable<Symbol*, mtSymbol> SymbolHashtable;
192 typedef HashtableEntry<Symbol*, mtClass> SymbolHashtableEntry;
193 typedef Hashtable<oop, mtSymbol> StringHashtable;
194 typedef Hashtable<InstanceKlass*, mtClass> KlassHashtable;
195 typedef HashtableEntry<InstanceKlass*, mtClass> KlassHashtableEntry;
196 typedef CompactHashtable<Symbol*, char> SymbolCompactHashTable;
197 typedef RehashableHashtable<Symbol*, mtSymbol> RehashableSymbolHashtable;
198
199 //--------------------------------------------------------------------------------
200 // VM_STRUCTS
201 //
202 // This list enumerates all of the fields the serviceability agent
203 // needs to know about. Be sure to see also the type table below this one.
204 // NOTE that there are platform-specific additions to this table in
205 // vmStructs_<os>_<cpu>.hpp.
206
207 #define VM_STRUCTS(nonstatic_field, \
208 static_field, \
209 static_ptr_volatile_field, \
210 unchecked_nonstatic_field, \
211 volatile_nonstatic_field, \
212 nonproduct_nonstatic_field, \
213 c1_nonstatic_field, \
214 c2_nonstatic_field, \
215 unchecked_c1_static_field, \
229 nonstatic_field(CompiledICHolder, _holder_method, Method*) \
230 nonstatic_field(CompiledICHolder, _holder_klass, Klass*) \
231 nonstatic_field(ConstantPool, _tags, Array<u1>*) \
232 nonstatic_field(ConstantPool, _cache, ConstantPoolCache*) \
233 nonstatic_field(ConstantPool, _pool_holder, InstanceKlass*) \
234 nonstatic_field(ConstantPool, _operands, Array<u2>*) \
235 nonstatic_field(ConstantPool, _resolved_klasses, Array<Klass*>*) \
236 nonstatic_field(ConstantPool, _length, int) \
237 nonstatic_field(ConstantPoolCache, _resolved_references, jobject) \
238 nonstatic_field(ConstantPoolCache, _reference_map, Array<u2>*) \
239 nonstatic_field(ConstantPoolCache, _length, int) \
240 nonstatic_field(ConstantPoolCache, _constant_pool, ConstantPool*) \
241 volatile_nonstatic_field(InstanceKlass, _array_klasses, Klass*) \
242 nonstatic_field(InstanceKlass, _methods, Array<Method*>*) \
243 nonstatic_field(InstanceKlass, _default_methods, Array<Method*>*) \
244 nonstatic_field(InstanceKlass, _local_interfaces, Array<Klass*>*) \
245 nonstatic_field(InstanceKlass, _transitive_interfaces, Array<Klass*>*) \
246 nonstatic_field(InstanceKlass, _fields, Array<u2>*) \
247 nonstatic_field(InstanceKlass, _java_fields_count, u2) \
248 nonstatic_field(InstanceKlass, _constants, ConstantPool*) \
249 nonstatic_field(InstanceKlass, _source_file_name_index, u2) \
250 nonstatic_field(InstanceKlass, _source_debug_extension, const char*) \
251 nonstatic_field(InstanceKlass, _inner_classes, Array<jushort>*) \
252 nonstatic_field(InstanceKlass, _nonstatic_field_size, int) \
253 nonstatic_field(InstanceKlass, _static_field_size, int) \
254 nonstatic_field(InstanceKlass, _static_oop_field_count, u2) \
255 nonstatic_field(InstanceKlass, _nonstatic_oop_map_size, int) \
256 nonstatic_field(InstanceKlass, _is_marked_dependent, bool) \
257 nonstatic_field(InstanceKlass, _misc_flags, u2) \
258 nonstatic_field(InstanceKlass, _minor_version, u2) \
259 nonstatic_field(InstanceKlass, _major_version, u2) \
260 nonstatic_field(InstanceKlass, _init_state, u1) \
261 nonstatic_field(InstanceKlass, _init_thread, Thread*) \
262 nonstatic_field(InstanceKlass, _itable_len, int) \
263 nonstatic_field(InstanceKlass, _reference_type, u1) \
264 volatile_nonstatic_field(InstanceKlass, _oop_map_cache, OopMapCache*) \
265 nonstatic_field(InstanceKlass, _jni_ids, JNIid*) \
266 nonstatic_field(InstanceKlass, _osr_nmethods_head, nmethod*) \
267 JVMTI_ONLY(nonstatic_field(InstanceKlass, _breakpoints, BreakpointInfo*)) \
268 nonstatic_field(InstanceKlass, _generic_signature_index, u2) \
269 volatile_nonstatic_field(InstanceKlass, _methods_jmethod_ids, jmethodID*) \
270 volatile_nonstatic_field(InstanceKlass, _idnum_allocated_count, u2) \
271 nonstatic_field(InstanceKlass, _annotations, Annotations*) \
272 nonstatic_field(InstanceKlass, _method_ordering, Array<int>*) \
273 nonstatic_field(InstanceKlass, _default_vtable_indices, Array<int>*) \
274 nonstatic_field(Klass, _super_check_offset, juint) \
275 nonstatic_field(Klass, _secondary_super_cache, Klass*) \
276 nonstatic_field(Klass, _secondary_supers, Array<Klass*>*) \
277 nonstatic_field(Klass, _primary_supers[0], Klass*) \
278 nonstatic_field(Klass, _java_mirror, oop) \
279 nonstatic_field(Klass, _modifier_flags, jint) \
280 nonstatic_field(Klass, _super, Klass*) \
281 nonstatic_field(Klass, _subklass, Klass*) \
282 nonstatic_field(Klass, _layout_helper, jint) \
283 nonstatic_field(Klass, _name, Symbol*) \
284 nonstatic_field(Klass, _access_flags, AccessFlags) \
285 nonstatic_field(Klass, _prototype_header, markOop) \
286 nonstatic_field(Klass, _next_sibling, Klass*) \
287 nonstatic_field(Klass, _next_link, Klass*) \
288 nonstatic_field(Klass, _vtable_len, int) \
289 nonstatic_field(Klass, _class_loader_data, ClassLoaderData*) \
290 nonstatic_field(vtableEntry, _method, Method*) \
291 nonstatic_field(MethodData, _size, int) \
292 nonstatic_field(MethodData, _method, Method*) \
293 nonstatic_field(MethodData, _data_size, int) \
294 nonstatic_field(MethodData, _data[0], intptr_t) \
295 nonstatic_field(MethodData, _parameters_type_data_di, int) \
296 nonstatic_field(MethodData, _nof_decompiles, uint) \
297 nonstatic_field(MethodData, _nof_overflow_recompiles, uint) \
298 nonstatic_field(MethodData, _nof_overflow_traps, uint) \
299 nonstatic_field(MethodData, _trap_hist._array[0], u1) \
300 nonstatic_field(MethodData, _eflags, intx) \
301 nonstatic_field(MethodData, _arg_local, intx) \
302 nonstatic_field(MethodData, _arg_stack, intx) \
303 nonstatic_field(MethodData, _arg_returned, intx) \
304 nonstatic_field(MethodData, _tenure_traps, uint) \
305 nonstatic_field(MethodData, _invoke_mask, int) \
306 nonstatic_field(MethodData, _backedge_mask, int) \
307 nonstatic_field(DataLayout, _header._struct._tag, u1) \
308 nonstatic_field(DataLayout, _header._struct._flags, u1) \
309 nonstatic_field(DataLayout, _header._struct._bci, u2) \
586 /***************/ \
587 /* StringTable */ \
588 /***************/ \
589 \
590 static_field(StringTable, _the_table, StringTable*) \
591 \
592 /********************/ \
593 /* CompactHashTable */ \
594 /********************/ \
595 \
596 nonstatic_field(SymbolCompactHashTable, _base_address, address) \
597 nonstatic_field(SymbolCompactHashTable, _entry_count, u4) \
598 nonstatic_field(SymbolCompactHashTable, _bucket_count, u4) \
599 nonstatic_field(SymbolCompactHashTable, _buckets, u4*) \
600 nonstatic_field(SymbolCompactHashTable, _entries, u4*) \
601 \
602 /********************/ \
603 /* SystemDictionary */ \
604 /********************/ \
605 \
606 static_field(SystemDictionary, _shared_dictionary, Dictionary*) \
607 static_field(SystemDictionary, _system_loader_lock_obj, oop) \
608 static_field(SystemDictionary, WK_KLASS(Object_klass), InstanceKlass*) \
609 static_field(SystemDictionary, WK_KLASS(String_klass), InstanceKlass*) \
610 static_field(SystemDictionary, WK_KLASS(Class_klass), InstanceKlass*) \
611 static_field(SystemDictionary, WK_KLASS(ClassLoader_klass), InstanceKlass*) \
612 static_field(SystemDictionary, WK_KLASS(System_klass), InstanceKlass*) \
613 static_field(SystemDictionary, WK_KLASS(Thread_klass), InstanceKlass*) \
614 static_field(SystemDictionary, WK_KLASS(ThreadGroup_klass), InstanceKlass*) \
615 static_field(SystemDictionary, WK_KLASS(MethodHandle_klass), InstanceKlass*) \
616 static_field(SystemDictionary, _java_system_loader, oop) \
617 \
618 /*************/ \
619 /* vmSymbols */ \
620 /*************/ \
621 \
622 static_field(vmSymbols, _symbols[0], Symbol*) \
623 \
624 /*******************/ \
625 /* HashtableBucket */ \
626 /*******************/ \
627 \
628 nonstatic_field(HashtableBucket<mtInternal>, _entry, BasicHashtableEntry<mtInternal>*) \
629 \
630 /******************/ \
631 /* HashtableEntry */ \
632 /******************/ \
633 \
634 nonstatic_field(BasicHashtableEntry<mtInternal>, _next, BasicHashtableEntry<mtInternal>*) \
635 nonstatic_field(BasicHashtableEntry<mtInternal>, _hash, unsigned int) \
636 nonstatic_field(IntptrHashtableEntry, _literal, intptr_t) \
637 \
638 /*************/ \
639 /* Hashtable */ \
640 /*************/ \
641 \
642 nonstatic_field(BasicHashtable<mtInternal>, _table_size, int) \
643 nonstatic_field(BasicHashtable<mtInternal>, _buckets, HashtableBucket<mtInternal>*) \
644 volatile_nonstatic_field(BasicHashtable<mtInternal>, _free_list, BasicHashtableEntry<mtInternal>*) \
645 nonstatic_field(BasicHashtable<mtInternal>, _first_free_entry, char*) \
646 nonstatic_field(BasicHashtable<mtInternal>, _end_block, char*) \
647 nonstatic_field(BasicHashtable<mtInternal>, _entry_size, int) \
648 \
649 /*******************/ \
650 /* ClassLoaderData */ \
651 /*******************/ \
652 nonstatic_field(ClassLoaderData, _class_loader, oop) \
653 nonstatic_field(ClassLoaderData, _next, ClassLoaderData*) \
654 volatile_nonstatic_field(ClassLoaderData, _klasses, Klass*) \
655 nonstatic_field(ClassLoaderData, _is_anonymous, bool) \
656 volatile_nonstatic_field(ClassLoaderData, _dictionary, Dictionary*) \
657 \
658 static_field(ClassLoaderDataGraph, _head, ClassLoaderData*) \
659 \
660 /**********/ \
661 /* Arrays */ \
662 /**********/ \
663 \
664 nonstatic_field(Array<Klass*>, _length, int) \
665 nonstatic_field(Array<Klass*>, _data[0], Klass*) \
666 \
667 /*******************/ \
668 /* GrowableArrays */ \
669 /*******************/ \
670 \
671 nonstatic_field(GenericGrowableArray, _len, int) \
672 nonstatic_field(GenericGrowableArray, _max, int) \
673 nonstatic_field(GenericGrowableArray, _arena, Arena*) \
674 nonstatic_field(GrowableArray<int>, _data, int*) \
675 \
676 /********************************/ \
1530 \
1531 /************************/ \
1532 /* PerfMemory - jvmstat */ \
1533 /************************/ \
1534 \
1535 declare_toplevel_type(PerfDataPrologue) \
1536 declare_toplevel_type(PerfDataPrologue*) \
1537 declare_toplevel_type(PerfDataEntry) \
1538 declare_toplevel_type(PerfMemory) \
1539 \
1540 /*********************************/ \
1541 /* SymbolTable, SystemDictionary */ \
1542 /*********************************/ \
1543 \
1544 declare_toplevel_type(BasicHashtable<mtInternal>) \
1545 declare_type(IntptrHashtable, BasicHashtable<mtInternal>) \
1546 declare_toplevel_type(BasicHashtable<mtSymbol>) \
1547 declare_type(RehashableSymbolHashtable, BasicHashtable<mtSymbol>) \
1548 declare_type(SymbolTable, SymbolHashtable) \
1549 declare_type(StringTable, StringHashtable) \
1550 declare_type(Dictionary, KlassHashtable) \
1551 declare_toplevel_type(BasicHashtableEntry<mtInternal>) \
1552 declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>) \
1553 declare_type(DictionaryEntry, KlassHashtableEntry) \
1554 declare_toplevel_type(HashtableBucket<mtInternal>) \
1555 declare_toplevel_type(SystemDictionary) \
1556 declare_toplevel_type(vmSymbols) \
1557 \
1558 declare_toplevel_type(GenericGrowableArray) \
1559 declare_toplevel_type(GrowableArray<int>) \
1560 declare_toplevel_type(Arena) \
1561 declare_type(ResourceArea, Arena) \
1562 declare_toplevel_type(Chunk) \
1563 \
1564 declare_toplevel_type(SymbolCompactHashTable) \
1565 \
1566 /***********************************************************/ \
1567 /* Thread hierarchy (needed for run-time type information) */ \
1568 /***********************************************************/ \
1569 \
1570 declare_toplevel_type(Threads) \
1571 declare_toplevel_type(ThreadShadow) \
1572 declare_type(Thread, ThreadShadow) \
1573 declare_type(NamedThread, Thread) \
1574 declare_type(WatcherThread, Thread) \
1575 declare_type(JavaThread, Thread) \
1576 declare_type(JvmtiAgentThread, JavaThread) \
2268 declare_constant(Generation::DefNew) \
2269 declare_constant(Generation::MarkSweepCompact) \
2270 declare_constant(Generation::Other) \
2271 \
2272 declare_constant(Generation::LogOfGenGrain) \
2273 declare_constant(Generation::GenGrain) \
2274 \
2275 declare_constant(HeapWordSize) \
2276 declare_constant(LogHeapWordSize) \
2277 \
2278 \
2279 /************************/ \
2280 /* PerfMemory - jvmstat */ \
2281 /************************/ \
2282 \
2283 declare_preprocessor_constant("PERFDATA_MAJOR_VERSION", PERFDATA_MAJOR_VERSION) \
2284 declare_preprocessor_constant("PERFDATA_MINOR_VERSION", PERFDATA_MINOR_VERSION) \
2285 declare_preprocessor_constant("PERFDATA_BIG_ENDIAN", PERFDATA_BIG_ENDIAN) \
2286 declare_preprocessor_constant("PERFDATA_LITTLE_ENDIAN", PERFDATA_LITTLE_ENDIAN) \
2287 \
2288 \
2289 /************************************************************/ \
2290 /* HotSpot specific JVM_ACC constants from global anon enum */ \
2291 /************************************************************/ \
2292 \
2293 declare_constant(JVM_ACC_WRITTEN_FLAGS) \
2294 declare_constant(JVM_ACC_MONITOR_MATCH) \
2295 declare_constant(JVM_ACC_HAS_MONITOR_BYTECODES) \
2296 declare_constant(JVM_ACC_HAS_LOOPS) \
2297 declare_constant(JVM_ACC_LOOPS_FLAG_INIT) \
2298 declare_constant(JVM_ACC_QUEUED) \
2299 declare_constant(JVM_ACC_NOT_C2_OSR_COMPILABLE) \
2300 declare_constant(JVM_ACC_HAS_LINE_NUMBER_TABLE) \
2301 declare_constant(JVM_ACC_HAS_CHECKED_EXCEPTIONS) \
2302 declare_constant(JVM_ACC_HAS_JSRS) \
2303 declare_constant(JVM_ACC_IS_OLD) \
2304 declare_constant(JVM_ACC_IS_OBSOLETE) \
2305 declare_constant(JVM_ACC_IS_PREFIXED_NATIVE) \
2306 declare_constant(JVM_ACC_HAS_MIRANDA_METHODS) \
2307 declare_constant(JVM_ACC_HAS_VANILLA_CONSTRUCTOR) \
|