68 #include "oops/instanceClassLoaderKlass.hpp" |
68 #include "oops/instanceClassLoaderKlass.hpp" |
69 #include "oops/instanceKlass.hpp" |
69 #include "oops/instanceKlass.hpp" |
70 #include "oops/instanceMirrorKlass.hpp" |
70 #include "oops/instanceMirrorKlass.hpp" |
71 #include "oops/instanceOop.hpp" |
71 #include "oops/instanceOop.hpp" |
72 #include "oops/klass.hpp" |
72 #include "oops/klass.hpp" |
73 #include "oops/markOop.hpp" |
73 #include "oops/markWord.hpp" |
74 #include "oops/method.hpp" |
74 #include "oops/method.hpp" |
75 #include "oops/methodCounters.hpp" |
75 #include "oops/methodCounters.hpp" |
76 #include "oops/methodData.hpp" |
76 #include "oops/methodData.hpp" |
77 #include "oops/objArrayKlass.hpp" |
77 #include "oops/objArrayKlass.hpp" |
78 #include "oops/objArrayOop.hpp" |
78 #include "oops/objArrayOop.hpp" |
86 #include "runtime/deoptimization.hpp" |
86 #include "runtime/deoptimization.hpp" |
87 #include "runtime/flags/jvmFlag.hpp" |
87 #include "runtime/flags/jvmFlag.hpp" |
88 #include "runtime/globals.hpp" |
88 #include "runtime/globals.hpp" |
89 #include "runtime/java.hpp" |
89 #include "runtime/java.hpp" |
90 #include "runtime/javaCalls.hpp" |
90 #include "runtime/javaCalls.hpp" |
|
91 #include "runtime/notificationThread.hpp" |
91 #include "runtime/os.hpp" |
92 #include "runtime/os.hpp" |
92 #include "runtime/perfMemory.hpp" |
93 #include "runtime/perfMemory.hpp" |
93 #include "runtime/serviceThread.hpp" |
94 #include "runtime/serviceThread.hpp" |
94 #include "runtime/sharedRuntime.hpp" |
95 #include "runtime/sharedRuntime.hpp" |
95 #include "runtime/stubRoutines.hpp" |
96 #include "runtime/stubRoutines.hpp" |
165 typedef HashtableEntry<intptr_t, mtInternal> IntptrHashtableEntry; |
166 typedef HashtableEntry<intptr_t, mtInternal> IntptrHashtableEntry; |
166 typedef Hashtable<intptr_t, mtInternal> IntptrHashtable; |
167 typedef Hashtable<intptr_t, mtInternal> IntptrHashtable; |
167 typedef Hashtable<InstanceKlass*, mtClass> KlassHashtable; |
168 typedef Hashtable<InstanceKlass*, mtClass> KlassHashtable; |
168 typedef HashtableEntry<InstanceKlass*, mtClass> KlassHashtableEntry; |
169 typedef HashtableEntry<InstanceKlass*, mtClass> KlassHashtableEntry; |
169 |
170 |
170 typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor; |
|
171 |
|
172 //-------------------------------------------------------------------------------- |
171 //-------------------------------------------------------------------------------- |
173 // VM_STRUCTS |
172 // VM_STRUCTS |
174 // |
173 // |
175 // This list enumerates all of the fields the serviceability agent |
174 // This list enumerates all of the fields the serviceability agent |
176 // needs to know about. Be sure to see also the type table below this one. |
175 // needs to know about. Be sure to see also the type table below this one. |
199 \ |
198 \ |
200 /******************************************************************/ \ |
199 /******************************************************************/ \ |
201 /* OopDesc and Klass hierarchies (NOTE: MethodData* incomplete) */ \ |
200 /* OopDesc and Klass hierarchies (NOTE: MethodData* incomplete) */ \ |
202 /******************************************************************/ \ |
201 /******************************************************************/ \ |
203 \ |
202 \ |
204 volatile_nonstatic_field(oopDesc, _mark, markOop) \ |
203 volatile_nonstatic_field(oopDesc, _mark, markWord) \ |
205 volatile_nonstatic_field(oopDesc, _metadata._klass, Klass*) \ |
204 volatile_nonstatic_field(oopDesc, _metadata._klass, Klass*) \ |
206 volatile_nonstatic_field(oopDesc, _metadata._compressed_klass, narrowKlass) \ |
205 volatile_nonstatic_field(oopDesc, _metadata._compressed_klass, narrowKlass) \ |
207 static_field(BarrierSet, _barrier_set, BarrierSet*) \ |
206 static_field(BarrierSet, _barrier_set, BarrierSet*) \ |
208 nonstatic_field(ArrayKlass, _dimension, int) \ |
207 nonstatic_field(ArrayKlass, _dimension, int) \ |
209 volatile_nonstatic_field(ArrayKlass, _higher_dimension, Klass*) \ |
208 volatile_nonstatic_field(ArrayKlass, _higher_dimension, Klass*) \ |
262 nonstatic_field(Klass, _super, Klass*) \ |
261 nonstatic_field(Klass, _super, Klass*) \ |
263 volatile_nonstatic_field(Klass, _subklass, Klass*) \ |
262 volatile_nonstatic_field(Klass, _subklass, Klass*) \ |
264 nonstatic_field(Klass, _layout_helper, jint) \ |
263 nonstatic_field(Klass, _layout_helper, jint) \ |
265 nonstatic_field(Klass, _name, Symbol*) \ |
264 nonstatic_field(Klass, _name, Symbol*) \ |
266 nonstatic_field(Klass, _access_flags, AccessFlags) \ |
265 nonstatic_field(Klass, _access_flags, AccessFlags) \ |
267 nonstatic_field(Klass, _prototype_header, markOop) \ |
266 nonstatic_field(Klass, _prototype_header, markWord) \ |
268 volatile_nonstatic_field(Klass, _next_sibling, Klass*) \ |
267 volatile_nonstatic_field(Klass, _next_sibling, Klass*) \ |
269 nonstatic_field(Klass, _next_link, Klass*) \ |
268 nonstatic_field(Klass, _next_link, Klass*) \ |
270 nonstatic_field(Klass, _vtable_len, int) \ |
269 nonstatic_field(Klass, _vtable_len, int) \ |
271 nonstatic_field(Klass, _class_loader_data, ClassLoaderData*) \ |
270 nonstatic_field(Klass, _class_loader_data, ClassLoaderData*) \ |
272 nonstatic_field(vtableEntry, _method, Method*) \ |
271 nonstatic_field(vtableEntry, _method, Method*) \ |
524 nonstatic_field(ClassLoaderData, _next, ClassLoaderData*) \ |
523 nonstatic_field(ClassLoaderData, _next, ClassLoaderData*) \ |
525 volatile_nonstatic_field(ClassLoaderData, _klasses, Klass*) \ |
524 volatile_nonstatic_field(ClassLoaderData, _klasses, Klass*) \ |
526 nonstatic_field(ClassLoaderData, _is_unsafe_anonymous, bool) \ |
525 nonstatic_field(ClassLoaderData, _is_unsafe_anonymous, bool) \ |
527 volatile_nonstatic_field(ClassLoaderData, _dictionary, Dictionary*) \ |
526 volatile_nonstatic_field(ClassLoaderData, _dictionary, Dictionary*) \ |
528 \ |
527 \ |
529 static_field(ClassLoaderDataGraph, _head, ClassLoaderData*) \ |
528 static_ptr_volatile_field(ClassLoaderDataGraph, _head, ClassLoaderData*) \ |
530 \ |
529 \ |
531 /**********/ \ |
530 /**********/ \ |
532 /* Arrays */ \ |
531 /* Arrays */ \ |
533 /**********/ \ |
532 /**********/ \ |
534 \ |
533 \ |
590 static_field(StubRoutines, _call_stub_return_address, address) \ |
589 static_field(StubRoutines, _call_stub_return_address, address) \ |
591 static_field(StubRoutines, _aescrypt_encryptBlock, address) \ |
590 static_field(StubRoutines, _aescrypt_encryptBlock, address) \ |
592 static_field(StubRoutines, _aescrypt_decryptBlock, address) \ |
591 static_field(StubRoutines, _aescrypt_decryptBlock, address) \ |
593 static_field(StubRoutines, _cipherBlockChaining_encryptAESCrypt, address) \ |
592 static_field(StubRoutines, _cipherBlockChaining_encryptAESCrypt, address) \ |
594 static_field(StubRoutines, _cipherBlockChaining_decryptAESCrypt, address) \ |
593 static_field(StubRoutines, _cipherBlockChaining_decryptAESCrypt, address) \ |
|
594 static_field(StubRoutines, _electronicCodeBook_encryptAESCrypt, address) \ |
|
595 static_field(StubRoutines, _electronicCodeBook_decryptAESCrypt, address) \ |
595 static_field(StubRoutines, _counterMode_AESCrypt, address) \ |
596 static_field(StubRoutines, _counterMode_AESCrypt, address) \ |
596 static_field(StubRoutines, _ghash_processBlocks, address) \ |
597 static_field(StubRoutines, _ghash_processBlocks, address) \ |
597 static_field(StubRoutines, _base64_encodeBlock, address) \ |
598 static_field(StubRoutines, _base64_encodeBlock, address) \ |
598 static_field(StubRoutines, _updateBytesCRC32, address) \ |
599 static_field(StubRoutines, _updateBytesCRC32, address) \ |
599 static_field(StubRoutines, _crc_table_adr, address) \ |
600 static_field(StubRoutines, _crc_table_adr, address) \ |
838 \ |
839 \ |
839 /**************/ \ |
840 /**************/ \ |
840 /* CI */ \ |
841 /* CI */ \ |
841 /************/ \ |
842 /************/ \ |
842 \ |
843 \ |
843 nonstatic_field(ciEnv, _system_dictionary_modification_counter, int) \ |
|
844 nonstatic_field(ciEnv, _compiler_data, void*) \ |
844 nonstatic_field(ciEnv, _compiler_data, void*) \ |
845 nonstatic_field(ciEnv, _failure_reason, const char*) \ |
845 nonstatic_field(ciEnv, _failure_reason, const char*) \ |
846 nonstatic_field(ciEnv, _factory, ciObjectFactory*) \ |
846 nonstatic_field(ciEnv, _factory, ciObjectFactory*) \ |
847 nonstatic_field(ciEnv, _dependencies, Dependencies*) \ |
847 nonstatic_field(ciEnv, _dependencies, Dependencies*) \ |
848 nonstatic_field(ciEnv, _task, CompileTask*) \ |
848 nonstatic_field(ciEnv, _task, CompileTask*) \ |
905 \ |
905 \ |
906 /************/ \ |
906 /************/ \ |
907 /* Monitors */ \ |
907 /* Monitors */ \ |
908 /************/ \ |
908 /************/ \ |
909 \ |
909 \ |
910 volatile_nonstatic_field(ObjectMonitor, _header, markOop) \ |
910 volatile_nonstatic_field(ObjectMonitor, _header, markWord) \ |
911 unchecked_nonstatic_field(ObjectMonitor, _object, sizeof(void *)) /* NOTE: no type */ \ |
911 unchecked_nonstatic_field(ObjectMonitor, _object, sizeof(void *)) /* NOTE: no type */ \ |
912 unchecked_nonstatic_field(ObjectMonitor, _owner, sizeof(void *)) /* NOTE: no type */ \ |
912 unchecked_nonstatic_field(ObjectMonitor, _owner, sizeof(void *)) /* NOTE: no type */ \ |
913 volatile_nonstatic_field(ObjectMonitor, _contentions, jint) \ |
913 volatile_nonstatic_field(ObjectMonitor, _contentions, jint) \ |
914 volatile_nonstatic_field(ObjectMonitor, _waiters, jint) \ |
914 volatile_nonstatic_field(ObjectMonitor, _waiters, jint) \ |
915 volatile_nonstatic_field(ObjectMonitor, _recursions, intptr_t) \ |
915 volatile_nonstatic_field(ObjectMonitor, _recursions, intptr_t) \ |
916 nonstatic_field(ObjectMonitor, FreeNext, ObjectMonitor*) \ |
916 nonstatic_field(ObjectMonitor, _next_om, ObjectMonitor*) \ |
917 volatile_nonstatic_field(BasicLock, _displaced_header, markOop) \ |
917 volatile_nonstatic_field(BasicLock, _displaced_header, markWord) \ |
918 nonstatic_field(BasicObjectLock, _lock, BasicLock) \ |
918 nonstatic_field(BasicObjectLock, _lock, BasicLock) \ |
919 nonstatic_field(BasicObjectLock, _obj, oop) \ |
919 nonstatic_field(BasicObjectLock, _obj, oop) \ |
920 static_ptr_volatile_field(ObjectSynchronizer, gBlockList, PaddedObjectMonitor*) \ |
920 static_ptr_volatile_field(ObjectSynchronizer, g_block_list, PaddedObjectMonitor*) \ |
921 \ |
921 \ |
922 /*********************/ \ |
922 /*********************/ \ |
923 /* Matcher (C2 only) */ \ |
923 /* Matcher (C2 only) */ \ |
924 /*********************/ \ |
924 /*********************/ \ |
925 \ |
925 \ |
1367 declare_type(NamedThread, NonJavaThread) \ |
1365 declare_type(NamedThread, NonJavaThread) \ |
1368 declare_type(WatcherThread, NonJavaThread) \ |
1366 declare_type(WatcherThread, NonJavaThread) \ |
1369 declare_type(JavaThread, Thread) \ |
1367 declare_type(JavaThread, Thread) \ |
1370 declare_type(JvmtiAgentThread, JavaThread) \ |
1368 declare_type(JvmtiAgentThread, JavaThread) \ |
1371 declare_type(ServiceThread, JavaThread) \ |
1369 declare_type(ServiceThread, JavaThread) \ |
|
1370 declare_type(NotificationThread, JavaThread) \ |
1372 declare_type(CompilerThread, JavaThread) \ |
1371 declare_type(CompilerThread, JavaThread) \ |
1373 declare_type(CodeCacheSweeperThread, JavaThread) \ |
1372 declare_type(CodeCacheSweeperThread, JavaThread) \ |
1374 declare_toplevel_type(OSThread) \ |
1373 declare_toplevel_type(OSThread) \ |
1375 declare_toplevel_type(JavaFrameAnchor) \ |
1374 declare_toplevel_type(JavaFrameAnchor) \ |
1376 \ |
1375 \ |
1593 declare_c2_type(DecodeNNode, TypeNode) \ |
1592 declare_c2_type(DecodeNNode, TypeNode) \ |
1594 declare_c2_type(EncodePKlassNode, TypeNode) \ |
1593 declare_c2_type(EncodePKlassNode, TypeNode) \ |
1595 declare_c2_type(DecodeNKlassNode, TypeNode) \ |
1594 declare_c2_type(DecodeNKlassNode, TypeNode) \ |
1596 declare_c2_type(ConstraintCastNode, TypeNode) \ |
1595 declare_c2_type(ConstraintCastNode, TypeNode) \ |
1597 declare_c2_type(CastIINode, ConstraintCastNode) \ |
1596 declare_c2_type(CastIINode, ConstraintCastNode) \ |
|
1597 declare_c2_type(CastLLNode, ConstraintCastNode) \ |
1598 declare_c2_type(CastPPNode, ConstraintCastNode) \ |
1598 declare_c2_type(CastPPNode, ConstraintCastNode) \ |
1599 declare_c2_type(CheckCastPPNode, TypeNode) \ |
1599 declare_c2_type(CheckCastPPNode, TypeNode) \ |
1600 declare_c2_type(Conv2BNode, Node) \ |
1600 declare_c2_type(Conv2BNode, Node) \ |
1601 declare_c2_type(ConvD2FNode, Node) \ |
1601 declare_c2_type(ConvD2FNode, Node) \ |
1602 declare_c2_type(ConvD2INode, Node) \ |
1602 declare_c2_type(ConvD2INode, Node) \ |
1954 declare_type(Array<Method*>, MetaspaceObj) \ |
1954 declare_type(Array<Method*>, MetaspaceObj) \ |
1955 \ |
1955 \ |
1956 declare_toplevel_type(BitMap) \ |
1956 declare_toplevel_type(BitMap) \ |
1957 declare_type(BitMapView, BitMap) \ |
1957 declare_type(BitMapView, BitMap) \ |
1958 \ |
1958 \ |
1959 declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\ |
1959 declare_integer_type(markWord) \ |
|
1960 declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\ |
1960 declare_toplevel_type(address) /* FIXME: should this be an integer type? */\ |
1961 declare_toplevel_type(address) /* FIXME: should this be an integer type? */\ |
1961 declare_integer_type(BasicType) /* FIXME: wrong type (not integer) */\ |
1962 declare_integer_type(BasicType) /* FIXME: wrong type (not integer) */ \ |
1962 declare_toplevel_type(BreakpointInfo) \ |
1963 declare_toplevel_type(BreakpointInfo) \ |
1963 declare_toplevel_type(BreakpointInfo*) \ |
1964 declare_toplevel_type(BreakpointInfo*) \ |
1964 declare_toplevel_type(CodeBlob*) \ |
1965 declare_toplevel_type(CodeBlob*) \ |
1965 declare_toplevel_type(RuntimeBlob*) \ |
1966 declare_toplevel_type(RuntimeBlob*) \ |
1966 declare_toplevel_type(CompressedWriteStream*) \ |
1967 declare_toplevel_type(CompressedWriteStream*) \ |
2386 declare_constant(Deoptimization::Reason_intrinsic) \ |
2387 declare_constant(Deoptimization::Reason_intrinsic) \ |
2387 declare_constant(Deoptimization::Reason_bimorphic) \ |
2388 declare_constant(Deoptimization::Reason_bimorphic) \ |
2388 declare_constant(Deoptimization::Reason_profile_predicate) \ |
2389 declare_constant(Deoptimization::Reason_profile_predicate) \ |
2389 declare_constant(Deoptimization::Reason_unloaded) \ |
2390 declare_constant(Deoptimization::Reason_unloaded) \ |
2390 declare_constant(Deoptimization::Reason_uninitialized) \ |
2391 declare_constant(Deoptimization::Reason_uninitialized) \ |
|
2392 declare_constant(Deoptimization::Reason_initialized) \ |
2391 declare_constant(Deoptimization::Reason_unreached) \ |
2393 declare_constant(Deoptimization::Reason_unreached) \ |
2392 declare_constant(Deoptimization::Reason_unhandled) \ |
2394 declare_constant(Deoptimization::Reason_unhandled) \ |
2393 declare_constant(Deoptimization::Reason_constraint) \ |
2395 declare_constant(Deoptimization::Reason_constraint) \ |
2394 declare_constant(Deoptimization::Reason_div0_check) \ |
2396 declare_constant(Deoptimization::Reason_div0_check) \ |
2395 declare_constant(Deoptimization::Reason_age) \ |
2397 declare_constant(Deoptimization::Reason_age) \ |
2628 /****************/ \ |
2630 /****************/ \ |
2629 \ |
2631 \ |
2630 VM_LONG_CONSTANTS_GC(declare_constant) \ |
2632 VM_LONG_CONSTANTS_GC(declare_constant) \ |
2631 \ |
2633 \ |
2632 /*********************/ \ |
2634 /*********************/ \ |
2633 /* MarkOop constants */ \ |
2635 /* markWord constants */ \ |
2634 /*********************/ \ |
2636 /*********************/ \ |
2635 \ |
2637 \ |
2636 /* Note: some of these are declared as long constants just for */ \ |
2638 /* Note: some of these are declared as long constants just for */ \ |
2637 /* consistency. The mask constants are the only ones requiring */ \ |
2639 /* consistency. The mask constants are the only ones requiring */ \ |
2638 /* 64 bits (on 64-bit platforms). */ \ |
2640 /* 64 bits (on 64-bit platforms). */ \ |
2639 \ |
2641 \ |
2640 declare_constant(markOopDesc::age_bits) \ |
2642 declare_constant(markWord::age_bits) \ |
2641 declare_constant(markOopDesc::lock_bits) \ |
2643 declare_constant(markWord::lock_bits) \ |
2642 declare_constant(markOopDesc::biased_lock_bits) \ |
2644 declare_constant(markWord::biased_lock_bits) \ |
2643 declare_constant(markOopDesc::max_hash_bits) \ |
2645 declare_constant(markWord::max_hash_bits) \ |
2644 declare_constant(markOopDesc::hash_bits) \ |
2646 declare_constant(markWord::hash_bits) \ |
2645 \ |
2647 \ |
2646 declare_constant(markOopDesc::lock_shift) \ |
2648 declare_constant(markWord::lock_shift) \ |
2647 declare_constant(markOopDesc::biased_lock_shift) \ |
2649 declare_constant(markWord::biased_lock_shift) \ |
2648 declare_constant(markOopDesc::age_shift) \ |
2650 declare_constant(markWord::age_shift) \ |
2649 declare_constant(markOopDesc::hash_shift) \ |
2651 declare_constant(markWord::hash_shift) \ |
2650 \ |
2652 \ |
2651 declare_constant(markOopDesc::lock_mask) \ |
2653 declare_constant(markWord::lock_mask) \ |
2652 declare_constant(markOopDesc::lock_mask_in_place) \ |
2654 declare_constant(markWord::lock_mask_in_place) \ |
2653 declare_constant(markOopDesc::biased_lock_mask) \ |
2655 declare_constant(markWord::biased_lock_mask) \ |
2654 declare_constant(markOopDesc::biased_lock_mask_in_place) \ |
2656 declare_constant(markWord::biased_lock_mask_in_place) \ |
2655 declare_constant(markOopDesc::biased_lock_bit_in_place) \ |
2657 declare_constant(markWord::biased_lock_bit_in_place) \ |
2656 declare_constant(markOopDesc::age_mask) \ |
2658 declare_constant(markWord::age_mask) \ |
2657 declare_constant(markOopDesc::age_mask_in_place) \ |
2659 declare_constant(markWord::age_mask_in_place) \ |
2658 declare_constant(markOopDesc::epoch_mask) \ |
2660 declare_constant(markWord::epoch_mask) \ |
2659 declare_constant(markOopDesc::epoch_mask_in_place) \ |
2661 declare_constant(markWord::epoch_mask_in_place) \ |
2660 declare_constant(markOopDesc::hash_mask) \ |
2662 declare_constant(markWord::hash_mask) \ |
2661 declare_constant(markOopDesc::hash_mask_in_place) \ |
2663 declare_constant(markWord::hash_mask_in_place) \ |
2662 declare_constant(markOopDesc::biased_lock_alignment) \ |
2664 declare_constant(markWord::biased_lock_alignment) \ |
2663 \ |
2665 \ |
2664 declare_constant(markOopDesc::locked_value) \ |
2666 declare_constant(markWord::locked_value) \ |
2665 declare_constant(markOopDesc::unlocked_value) \ |
2667 declare_constant(markWord::unlocked_value) \ |
2666 declare_constant(markOopDesc::monitor_value) \ |
2668 declare_constant(markWord::monitor_value) \ |
2667 declare_constant(markOopDesc::marked_value) \ |
2669 declare_constant(markWord::marked_value) \ |
2668 declare_constant(markOopDesc::biased_lock_pattern) \ |
2670 declare_constant(markWord::biased_lock_pattern) \ |
2669 \ |
2671 \ |
2670 declare_constant(markOopDesc::no_hash) \ |
2672 declare_constant(markWord::no_hash) \ |
2671 declare_constant(markOopDesc::no_hash_in_place) \ |
2673 declare_constant(markWord::no_hash_in_place) \ |
2672 declare_constant(markOopDesc::no_lock_in_place) \ |
2674 declare_constant(markWord::no_lock_in_place) \ |
2673 declare_constant(markOopDesc::max_age) \ |
2675 declare_constant(markWord::max_age) \ |
2674 \ |
2676 \ |
2675 /* Constants in markOop used by CMS. */ \ |
2677 /* Constants in markWord used by CMS. */ \ |
2676 declare_constant(markOopDesc::cms_shift) \ |
2678 declare_constant(markWord::cms_shift) \ |
2677 declare_constant(markOopDesc::cms_mask) \ |
2679 declare_constant(markWord::cms_mask) \ |
2678 declare_constant(markOopDesc::size_shift) \ |
2680 declare_constant(markWord::size_shift) \ |
2679 \ |
2681 \ |
2680 /* InvocationCounter constants */ \ |
2682 /* InvocationCounter constants */ \ |
2681 declare_constant(InvocationCounter::count_increment) \ |
2683 declare_constant(InvocationCounter::count_increment) \ |
2682 declare_constant(InvocationCounter::count_shift) |
2684 declare_constant(InvocationCounter::count_shift) |
2683 |
2685 |