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 */ \
|