12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
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 "classfile/dictionary.hpp"
27 #include "classfile/javaClasses.hpp"
28 #include "classfile/loaderConstraints.hpp"
29 #include "classfile/placeholders.hpp"
30 #include "classfile/symbolTable.hpp"
31 #include "classfile/systemDictionary.hpp"
32 #include "code/codeBlob.hpp"
33 #include "code/codeCache.hpp"
34 #include "code/compressedStream.hpp"
35 #include "code/location.hpp"
36 #include "code/nmethod.hpp"
37 #include "code/pcDesc.hpp"
38 #include "code/stubs.hpp"
39 #include "code/vmreg.hpp"
40 #include "compiler/oopMap.hpp"
41 #include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
42 #include "gc_implementation/shared/immutableSpace.hpp"
43 #include "gc_implementation/shared/markSweep.hpp"
44 #include "gc_implementation/shared/mutableSpace.hpp"
45 #include "gc_interface/collectedHeap.hpp"
46 #include "interpreter/bytecodeInterpreter.hpp"
47 #include "interpreter/bytecodes.hpp"
48 #include "interpreter/interpreter.hpp"
49 #include "memory/cardTableRS.hpp"
50 #include "memory/compactPermGen.hpp"
51 #include "memory/defNewGeneration.hpp"
52 #include "memory/genCollectedHeap.hpp"
53 #include "memory/generation.hpp"
54 #include "memory/generationSpec.hpp"
55 #include "memory/heap.hpp"
56 #include "memory/permGen.hpp"
57 #include "memory/space.hpp"
58 #include "memory/tenuredGeneration.hpp"
59 #include "memory/universe.hpp"
60 #include "memory/watermark.hpp"
73 #include "oops/instanceMirrorKlass.hpp"
74 #include "oops/instanceKlassKlass.hpp"
75 #include "oops/instanceOop.hpp"
76 #include "oops/klass.hpp"
77 #include "oops/klassOop.hpp"
78 #include "oops/markOop.hpp"
79 #include "oops/methodDataKlass.hpp"
80 #include "oops/methodDataOop.hpp"
81 #include "oops/methodKlass.hpp"
82 #include "oops/methodOop.hpp"
83 #include "oops/objArrayKlass.hpp"
84 #include "oops/objArrayKlassKlass.hpp"
85 #include "oops/objArrayOop.hpp"
86 #include "oops/oop.inline.hpp"
87 #include "oops/symbol.hpp"
88 #include "oops/typeArrayKlass.hpp"
89 #include "oops/typeArrayKlassKlass.hpp"
90 #include "oops/typeArrayOop.hpp"
91 #include "prims/jvmtiAgentThread.hpp"
92 #include "runtime/arguments.hpp"
93 #include "runtime/globals.hpp"
94 #include "runtime/java.hpp"
95 #include "runtime/javaCalls.hpp"
96 #include "runtime/perfMemory.hpp"
97 #include "runtime/serviceThread.hpp"
98 #include "runtime/sharedRuntime.hpp"
99 #include "runtime/stubRoutines.hpp"
100 #include "runtime/virtualspace.hpp"
101 #include "runtime/vmStructs.hpp"
102 #include "utilities/globalDefinitions.hpp"
103 #include "utilities/hashtable.hpp"
104 #ifdef TARGET_ARCH_x86
105 # include "vmStructs_x86.hpp"
106 #endif
107 #ifdef TARGET_ARCH_sparc
108 # include "vmStructs_sparc.hpp"
109 #endif
110 #ifdef TARGET_ARCH_zero
111 # include "vmStructs_zero.hpp"
112 #endif
150 # include "vmStructs_linux_ppc.hpp"
151 #endif
152 #ifndef SERIALGC
153 #include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
154 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
155 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
156 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
157 #include "gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp"
158 #include "gc_implementation/parNew/parNewGeneration.hpp"
159 #include "gc_implementation/parNew/vmStructs_parNew.hpp"
160 #include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
161 #include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
162 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
163 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
164 #include "gc_implementation/parallelScavenge/psPermGen.hpp"
165 #include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
166 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
167 #include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
168 #endif
169 #ifdef COMPILER2
170 #include "opto/matcher.hpp"
171 #ifdef TARGET_ARCH_MODEL_x86_32
172 # include "adfiles/adGlobals_x86_32.hpp"
173 #endif
174 #ifdef TARGET_ARCH_MODEL_x86_64
175 # include "adfiles/adGlobals_x86_64.hpp"
176 #endif
177 #ifdef TARGET_ARCH_MODEL_sparc
178 # include "adfiles/adGlobals_sparc.hpp"
179 #endif
180 #ifdef TARGET_ARCH_MODEL_zero
181 # include "adfiles/adGlobals_zero.hpp"
182 #endif
183 #ifdef TARGET_ARCH_MODEL_arm
184 # include "adfiles/adGlobals_arm.hpp"
185 #endif
186 #ifdef TARGET_ARCH_MODEL_ppc
187 # include "adfiles/adGlobals_ppc.hpp"
188 #endif
189 #endif
190
276 nonstatic_field(instanceKlass, _minor_version, u2) \
277 nonstatic_field(instanceKlass, _major_version, u2) \
278 nonstatic_field(instanceKlass, _init_state, instanceKlass::ClassState) \
279 nonstatic_field(instanceKlass, _init_thread, Thread*) \
280 nonstatic_field(instanceKlass, _vtable_len, int) \
281 nonstatic_field(instanceKlass, _itable_len, int) \
282 nonstatic_field(instanceKlass, _reference_type, ReferenceType) \
283 volatile_nonstatic_field(instanceKlass, _oop_map_cache, OopMapCache*) \
284 nonstatic_field(instanceKlass, _jni_ids, JNIid*) \
285 nonstatic_field(instanceKlass, _osr_nmethods_head, nmethod*) \
286 nonstatic_field(instanceKlass, _breakpoints, BreakpointInfo*) \
287 nonstatic_field(instanceKlass, _generic_signature, Symbol*) \
288 nonstatic_field(instanceKlass, _methods_jmethod_ids, jmethodID*) \
289 nonstatic_field(instanceKlass, _methods_cached_itable_indices, int*) \
290 volatile_nonstatic_field(instanceKlass, _idnum_allocated_count, u2) \
291 nonstatic_field(instanceKlass, _class_annotations, typeArrayOop) \
292 nonstatic_field(instanceKlass, _fields_annotations, objArrayOop) \
293 nonstatic_field(instanceKlass, _methods_annotations, objArrayOop) \
294 nonstatic_field(instanceKlass, _methods_parameter_annotations, objArrayOop) \
295 nonstatic_field(instanceKlass, _methods_default_annotations, objArrayOop) \
296 nonstatic_field(Klass, _super_check_offset, juint) \
297 nonstatic_field(Klass, _secondary_super_cache, klassOop) \
298 nonstatic_field(Klass, _secondary_supers, objArrayOop) \
299 nonstatic_field(Klass, _primary_supers[0], klassOop) \
300 nonstatic_field(Klass, _java_mirror, oop) \
301 nonstatic_field(Klass, _modifier_flags, jint) \
302 nonstatic_field(Klass, _super, klassOop) \
303 nonstatic_field(Klass, _layout_helper, jint) \
304 nonstatic_field(Klass, _name, Symbol*) \
305 nonstatic_field(Klass, _access_flags, AccessFlags) \
306 nonstatic_field(Klass, _subklass, klassOop) \
307 nonstatic_field(Klass, _next_sibling, klassOop) \
308 nonproduct_nonstatic_field(Klass, _verify_count, int) \
309 nonstatic_field(Klass, _alloc_count, juint) \
310 nonstatic_field(klassKlass, _alloc_size, juint) \
311 nonstatic_field(methodKlass, _alloc_size, juint) \
312 nonstatic_field(methodDataOopDesc, _size, int) \
313 nonstatic_field(methodDataOopDesc, _method, methodOop) \
314 nonstatic_field(methodOopDesc, _constMethod, constMethodOop) \
315 nonstatic_field(methodOopDesc, _constants, constantPoolOop) \
316 c2_nonstatic_field(methodOopDesc, _method_data, methodDataOop) \
317 c2_nonstatic_field(methodOopDesc, _interpreter_invocation_count, int) \
318 nonstatic_field(methodOopDesc, _access_flags, AccessFlags) \
319 nonstatic_field(methodOopDesc, _vtable_index, int) \
320 nonstatic_field(methodOopDesc, _method_size, u2) \
321 nonstatic_field(methodOopDesc, _max_stack, u2) \
322 nonstatic_field(methodOopDesc, _max_locals, u2) \
323 nonstatic_field(methodOopDesc, _size_of_parameters, u2) \
324 c2_nonstatic_field(methodOopDesc, _interpreter_throwout_count, u2) \
325 nonstatic_field(methodOopDesc, _number_of_breakpoints, u2) \
326 nonstatic_field(methodOopDesc, _invocation_counter, InvocationCounter) \
327 nonstatic_field(methodOopDesc, _backedge_counter, InvocationCounter) \
328 nonproduct_nonstatic_field(methodOopDesc, _compiled_invocation_count, int) \
329 volatile_nonstatic_field(methodOopDesc, _code, nmethod*) \
330 nonstatic_field(methodOopDesc, _i2i_entry, address) \
331 nonstatic_field(methodOopDesc, _adapter, AdapterHandlerEntry*) \
332 volatile_nonstatic_field(methodOopDesc, _from_compiled_entry, address) \
333 volatile_nonstatic_field(methodOopDesc, _from_interpreted_entry, address) \
334 volatile_nonstatic_field(constMethodOopDesc, _fingerprint, uint64_t) \
335 nonstatic_field(constMethodOopDesc, _method, methodOop) \
336 nonstatic_field(constMethodOopDesc, _stackmap_data, typeArrayOop) \
337 nonstatic_field(constMethodOopDesc, _exception_table, typeArrayOop) \
338 nonstatic_field(constMethodOopDesc, _constMethod_size, int) \
339 nonstatic_field(constMethodOopDesc, _interpreter_kind, jbyte) \
340 nonstatic_field(constMethodOopDesc, _flags, jbyte) \
341 nonstatic_field(constMethodOopDesc, _code_size, u2) \
342 nonstatic_field(constMethodOopDesc, _name_index, u2) \
343 nonstatic_field(constMethodOopDesc, _signature_index, u2) \
344 nonstatic_field(constMethodOopDesc, _method_idnum, u2) \
691 /********************/ \
692 \
693 nonstatic_field(PlaceholderEntry, _loader, oop) \
694 \
695 /**************************/ \
696 /* ProctectionDomainEntry */ \
697 /**************************/ \
698 \
699 nonstatic_field(ProtectionDomainEntry, _next, ProtectionDomainEntry*) \
700 nonstatic_field(ProtectionDomainEntry, _protection_domain, oop) \
701 \
702 /*************************/ \
703 /* LoaderConstraintEntry */ \
704 /*************************/ \
705 \
706 nonstatic_field(LoaderConstraintEntry, _name, Symbol*) \
707 nonstatic_field(LoaderConstraintEntry, _num_loaders, int) \
708 nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \
709 nonstatic_field(LoaderConstraintEntry, _loaders, oop*) \
710 \
711 /********************************/ \
712 /* CodeCache (NOTE: incomplete) */ \
713 /********************************/ \
714 \
715 static_field(CodeCache, _heap, CodeHeap*) \
716 static_field(CodeCache, _scavenge_root_nmethods, nmethod*) \
717 \
718 /*******************************/ \
719 /* CodeHeap (NOTE: incomplete) */ \
720 /*******************************/ \
721 \
722 nonstatic_field(CodeHeap, _memory, VirtualSpace) \
723 nonstatic_field(CodeHeap, _segmap, VirtualSpace) \
724 nonstatic_field(CodeHeap, _log2_segment_size, int) \
725 nonstatic_field(HeapBlock, _header, HeapBlock::Header) \
726 nonstatic_field(HeapBlock::Header, _length, size_t) \
727 nonstatic_field(HeapBlock::Header, _used, bool) \
728 \
729 /**********************************/ \
730 /* Interpreter (NOTE: incomplete) */ \
796 nonstatic_field(nmethod, _state, unsigned char) \
797 nonstatic_field(nmethod, _exception_offset, int) \
798 nonstatic_field(nmethod, _deoptimize_offset, int) \
799 nonstatic_field(nmethod, _deoptimize_mh_offset, int) \
800 nonstatic_field(nmethod, _orig_pc_offset, int) \
801 nonstatic_field(nmethod, _stub_offset, int) \
802 nonstatic_field(nmethod, _consts_offset, int) \
803 nonstatic_field(nmethod, _oops_offset, int) \
804 nonstatic_field(nmethod, _scopes_data_offset, int) \
805 nonstatic_field(nmethod, _scopes_pcs_offset, int) \
806 nonstatic_field(nmethod, _dependencies_offset, int) \
807 nonstatic_field(nmethod, _handler_table_offset, int) \
808 nonstatic_field(nmethod, _nul_chk_table_offset, int) \
809 nonstatic_field(nmethod, _nmethod_end_offset, int) \
810 nonstatic_field(nmethod, _entry_point, address) \
811 nonstatic_field(nmethod, _verified_entry_point, address) \
812 nonstatic_field(nmethod, _osr_entry_point, address) \
813 nonstatic_field(nmethod, _lock_count, jint) \
814 nonstatic_field(nmethod, _stack_traversal_mark, long) \
815 nonstatic_field(nmethod, _compile_id, int) \
816 nonstatic_field(nmethod, _marked_for_deoptimization, bool) \
817 \
818 nonstatic_field(RicochetBlob, _bounce_offset, int) \
819 nonstatic_field(RicochetBlob, _exception_offset, int) \
820 \
821 /********************************/ \
822 /* JavaCalls (NOTE: incomplete) */ \
823 /********************************/ \
824 \
825 nonstatic_field(JavaCallWrapper, _anchor, JavaFrameAnchor) \
826 /********************************/ \
827 /* JavaFrameAnchor (NOTE: incomplete) */ \
828 /********************************/ \
829 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_sp, intptr_t*) \
830 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_pc, address) \
831 \
832 /******************************/ \
833 /* Threads (NOTE: incomplete) */ \
834 /******************************/ \
835 \
836 static_field(Threads, _thread_list, JavaThread*) \
837 static_field(Threads, _number_of_threads, int) \
838 static_field(Threads, _number_of_non_daemon_threads, int) \
839 static_field(Threads, _return_code, int) \
840 \
841 volatile_nonstatic_field(Thread, _suspend_flags, uint32_t) \
842 nonstatic_field(Thread, _active_handles, JNIHandleBlock*) \
843 nonstatic_field(Thread, _tlab, ThreadLocalAllocBuffer) \
844 nonstatic_field(Thread, _current_pending_monitor, ObjectMonitor*) \
845 nonstatic_field(Thread, _current_pending_monitor_is_from_java, bool) \
846 nonstatic_field(Thread, _current_waiting_monitor, ObjectMonitor*) \
847 nonstatic_field(NamedThread, _name, char*) \
848 nonstatic_field(NamedThread, _processed_thread, JavaThread*) \
849 nonstatic_field(JavaThread, _next, JavaThread*) \
850 nonstatic_field(JavaThread, _threadObj, oop) \
851 nonstatic_field(JavaThread, _anchor, JavaFrameAnchor) \
852 volatile_nonstatic_field(JavaThread, _thread_state, JavaThreadState) \
853 nonstatic_field(JavaThread, _osthread, OSThread*) \
854 nonstatic_field(JavaThread, _stack_base, address) \
855 nonstatic_field(JavaThread, _stack_size, size_t) \
856 \
857 /************/ \
858 /* OSThread */ \
859 /************/ \
860 \
861 volatile_nonstatic_field(OSThread, _interrupted, jint) \
862 \
863 /************************/ \
864 /* OopMap and OopMapSet */ \
865 /************************/ \
866 \
867 nonstatic_field(OopMap, _pc_offset, int) \
868 nonstatic_field(OopMap, _omv_count, int) \
869 nonstatic_field(OopMap, _omv_data_size, int) \
870 nonstatic_field(OopMap, _omv_data, unsigned char*) \
871 nonstatic_field(OopMap, _write_stream, CompressedWriteStream*) \
872 nonstatic_field(OopMapSet, _om_count, int) \
873 nonstatic_field(OopMapSet, _om_size, int) \
874 nonstatic_field(OopMapSet, _om_data, OopMap**) \
875 \
887 /********************/ \
888 /* CompressedStream */ \
889 /********************/ \
890 \
891 nonstatic_field(CompressedStream, _buffer, u_char*) \
892 nonstatic_field(CompressedStream, _position, int) \
893 \
894 /*********************************/ \
895 /* VMRegImpl (NOTE: incomplete) */ \
896 /*********************************/ \
897 \
898 static_field(VMRegImpl, regName[0], const char*) \
899 static_field(VMRegImpl, stack0, VMReg) \
900 \
901 /*******************************/ \
902 /* Runtime1 (NOTE: incomplete) */ \
903 /*******************************/ \
904 \
905 unchecked_c1_static_field(Runtime1, _blobs, sizeof(Runtime1::_blobs)) /* NOTE: no type */ \
906 \
907 /************/ \
908 /* Monitors */ \
909 /************/ \
910 \
911 volatile_nonstatic_field(ObjectMonitor, _header, markOop) \
912 unchecked_nonstatic_field(ObjectMonitor, _object, sizeof(void *)) /* NOTE: no type */ \
913 unchecked_nonstatic_field(ObjectMonitor, _owner, sizeof(void *)) /* NOTE: no type */ \
914 volatile_nonstatic_field(ObjectMonitor, _count, intptr_t) \
915 volatile_nonstatic_field(ObjectMonitor, _waiters, intptr_t) \
916 volatile_nonstatic_field(ObjectMonitor, _recursions, intptr_t) \
917 nonstatic_field(ObjectMonitor, FreeNext, ObjectMonitor*) \
918 volatile_nonstatic_field(BasicLock, _displaced_header, markOop) \
919 nonstatic_field(BasicObjectLock, _lock, BasicLock) \
920 nonstatic_field(BasicObjectLock, _obj, oop) \
921 static_field(ObjectSynchronizer, gBlockList, ObjectMonitor*) \
922 \
923 /*********************/ \
924 /* Matcher (C2 only) */ \
925 /*********************/ \
926 \
927 unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
928 \
929 /*********************/ \
930 /* -XX flags */ \
931 /*********************/ \
932 \
933 nonstatic_field(Flag, type, const char*) \
934 nonstatic_field(Flag, name, const char*) \
935 unchecked_nonstatic_field(Flag, addr, sizeof(void*)) /* NOTE: no type */ \
936 nonstatic_field(Flag, kind, const char*) \
937 static_field(Flag, flags, Flag*) \
938 static_field(Flag, numFlags, size_t) \
939 \
940 /*************************/ \
941 /* JDK / VM version info */ \
942 /*************************/ \
943 \
944 static_field(Abstract_VM_Version, _s_vm_release, const char*) \
945 static_field(Abstract_VM_Version, _s_internal_vm_info_string, const char*) \
946 static_field(Abstract_VM_Version, _vm_major_version, int) \
947 static_field(Abstract_VM_Version, _vm_minor_version, int) \
948 static_field(Abstract_VM_Version, _vm_build_number, int) \
949 \
950 static_field(JDK_Version, _current, JDK_Version) \
951 nonstatic_field(JDK_Version, _partially_initialized, bool) \
952 nonstatic_field(JDK_Version, _major, unsigned char) \
953 \
954 \
955 \
956 /*************/ \
957 /* Arguments */ \
958 /*************/ \
959 \
960 static_field(Arguments, _jvm_flags_array, char**) \
961 static_field(Arguments, _num_jvm_flags, int) \
962 static_field(Arguments, _jvm_args_array, char**) \
963 static_field(Arguments, _num_jvm_args, int) \
964 static_field(Arguments, _java_command, char*) \
965 \
966 /*********************************/ \
967 /* java_lang_Class fields */ \
968 /*********************************/ \
969 \
970 static_field(java_lang_Class, klass_offset, int) \
971 static_field(java_lang_Class, resolved_constructor_offset, int) \
972 static_field(java_lang_Class, array_klass_offset, int) \
973 static_field(java_lang_Class, oop_size_offset, int) \
974 static_field(java_lang_Class, static_oop_field_count_offset, int) \
975 \
976 /************************/ \
977 /* Miscellaneous fields */ \
978 /************************/ \
979 \
980 nonstatic_field(AccessFlags, _flags, jint) \
981 nonstatic_field(elapsedTimer, _counter, jlong) \
982 nonstatic_field(elapsedTimer, _active, bool) \
983 nonstatic_field(InvocationCounter, _counter, unsigned int)
984
985 /* NOTE that we do not use the last_entry() macro here; it is used */
986 /* in vmStructs_<os>_<cpu>.hpp's VM_STRUCTS_OS_CPU macro (and must */
987 /* be present there) */
988
989 //--------------------------------------------------------------------------------
990 // VM_TYPES
991 //
992 // This list must enumerate at least all of the types in the above
993 // list. For the types in the above list, the entry below must have
994 // exactly the same spacing since string comparisons are done in the
995 // code which verifies the consistency of these tables (in the debug
996 // build).
997 //
998 // In addition to the above types, this list is required to enumerate
999 // the JNI's java types, which are used to indicate the size of Java
1043 /*************************************************************/ \
1044 \
1045 declare_toplevel_type(jboolean) \
1046 declare_toplevel_type(jbyte) \
1047 declare_toplevel_type(jchar) \
1048 declare_toplevel_type(jdouble) \
1049 declare_toplevel_type(jfloat) \
1050 declare_toplevel_type(jint) \
1051 declare_toplevel_type(jlong) \
1052 declare_toplevel_type(jshort) \
1053 \
1054 /*********************************************************************/ \
1055 /* C integer types. User-defined typedefs (like "size_t" or */ \
1056 /* "intptr_t") are guaranteed to be present with the same names over */ \
1057 /* in the SA's type database. Names like "unsigned short" are not */ \
1058 /* guaranteed to be visible through the SA's type database lookup */ \
1059 /* mechanism, though they will have a Type object created for them */ \
1060 /* and are valid types for Fields. */ \
1061 /*********************************************************************/ \
1062 declare_integer_type(bool) \
1063 declare_integer_type(int) \
1064 declare_integer_type(long) \
1065 declare_integer_type(char) \
1066 declare_unsigned_integer_type(unsigned char) \
1067 declare_unsigned_integer_type(unsigned int) \
1068 declare_unsigned_integer_type(unsigned short) \
1069 declare_unsigned_integer_type(unsigned long) \
1070 /* The compiler thinks this is a different type than */ \
1071 /* unsigned short on Win32 */ \
1072 declare_unsigned_integer_type(u2) \
1073 declare_unsigned_integer_type(unsigned) \
1074 \
1075 /*****************************/ \
1076 /* C primitive pointer types */ \
1077 /*****************************/ \
1078 \
1079 declare_toplevel_type(int*) \
1080 declare_toplevel_type(char*) \
1081 declare_toplevel_type(char**) \
1082 declare_toplevel_type(const char*) \
1083 declare_toplevel_type(u_char*) \
1084 declare_toplevel_type(unsigned char*) \
1085 \
1086 /*******************************************************************/ \
1087 /* Types which it will be handy to have available over in the SA */ \
1088 /* in order to do platform-independent address -> integer coercion */ \
1089 /* (note: these will be looked up by name) */ \
1090 /*******************************************************************/ \
1091 \
1092 declare_unsigned_integer_type(size_t) \
1093 declare_integer_type(ssize_t) \
1094 declare_unsigned_integer_type(const size_t) \
1095 declare_integer_type(intx) \
1096 declare_integer_type(intptr_t) \
1097 declare_unsigned_integer_type(uintx) \
1098 declare_unsigned_integer_type(uintptr_t) \
1099 declare_unsigned_integer_type(uint32_t) \
1100 declare_unsigned_integer_type(uint64_t) \
1101 declare_integer_type(const int) \
1102 \
1103 /*******************************************************************************/ \
1104 /* OopDesc and Klass hierarchies (NOTE: missing methodDataOop-related classes) */ \
1105 /*******************************************************************************/ \
1106 \
1107 declare_toplevel_type(oopDesc) \
1108 declare_toplevel_type(Klass_vtbl) \
1109 declare_type(Klass, Klass_vtbl) \
1110 declare_type(arrayKlass, Klass) \
1111 declare_type(arrayKlassKlass, klassKlass) \
1112 declare_type(arrayOopDesc, oopDesc) \
1113 declare_type(compiledICHolderKlass, Klass) \
1114 declare_type(compiledICHolderOopDesc, oopDesc) \
1115 declare_type(constantPoolKlass, Klass) \
1116 declare_type(constantPoolOopDesc, oopDesc) \
1117 declare_type(constantPoolCacheKlass, Klass) \
1118 declare_type(constantPoolCacheOopDesc, oopDesc) \
1119 declare_type(instanceKlass, Klass) \
1120 declare_type(instanceKlassKlass, klassKlass) \
1121 declare_type(instanceOopDesc, oopDesc) \
1122 declare_type(instanceMirrorKlass, instanceKlass) \
1123 declare_type(instanceRefKlass, instanceKlass) \
1124 declare_type(klassKlass, Klass) \
1125 declare_type(klassOopDesc, oopDesc) \
1126 declare_type(markOopDesc, oopDesc) \
1127 declare_type(methodDataKlass, Klass) \
1128 declare_type(methodDataOopDesc, oopDesc) \
1129 declare_type(methodKlass, Klass) \
1130 declare_type(constMethodKlass, Klass) \
1131 declare_type(methodOopDesc, oopDesc) \
1132 declare_type(objArrayKlass, arrayKlass) \
1133 declare_type(objArrayKlassKlass, arrayKlassKlass) \
1134 declare_type(objArrayOopDesc, arrayOopDesc) \
1135 declare_type(constMethodOopDesc, oopDesc) \
1136 declare_type(typeArrayKlass, arrayKlass) \
1137 declare_type(typeArrayKlassKlass, arrayKlassKlass) \
1138 declare_type(typeArrayOopDesc, arrayOopDesc) \
1139 declare_toplevel_type(Symbol) \
1140 declare_toplevel_type(Symbol*) \
1141 \
1142 /********/ \
1143 /* Oops */ \
1144 /********/ \
1145 \
1146 declare_oop_type(constantPoolOop) \
1147 declare_oop_type(constantPoolCacheOop) \
1148 declare_oop_type(klassOop) \
1149 declare_oop_type(markOop) \
1150 declare_oop_type(methodOop) \
1151 declare_oop_type(methodDataOop) \
1152 declare_oop_type(objArrayOop) \
1153 declare_oop_type(oop) \
1154 declare_oop_type(narrowOop) \
1155 declare_oop_type(wideKlassOop) \
1156 declare_oop_type(constMethodOop) \
1157 declare_oop_type(typeArrayOop) \
1158 \
1159 /*************************************/ \
1160 /* MethodOop-related data structures */ \
1161 /*************************************/ \
1189 declare_type(CompactingPermGen, PermGen) \
1190 declare_toplevel_type(BarrierSet) \
1191 declare_type(ModRefBarrierSet, BarrierSet) \
1192 declare_type(CardTableModRefBS, ModRefBarrierSet) \
1193 declare_type(CardTableModRefBSForCTRS, CardTableModRefBS) \
1194 declare_toplevel_type(GenRemSet) \
1195 declare_type(CardTableRS, GenRemSet) \
1196 declare_toplevel_type(BlockOffsetSharedArray) \
1197 declare_toplevel_type(BlockOffsetTable) \
1198 declare_type(BlockOffsetArray, BlockOffsetTable) \
1199 declare_type(BlockOffsetArrayContigSpace, BlockOffsetArray) \
1200 declare_type(BlockOffsetArrayNonContigSpace, BlockOffsetArray) \
1201 \
1202 /* Miscellaneous other GC types */ \
1203 \
1204 declare_toplevel_type(ageTable) \
1205 declare_toplevel_type(Generation::StatRecord) \
1206 declare_toplevel_type(GenerationSpec) \
1207 declare_toplevel_type(HeapWord) \
1208 declare_toplevel_type(MemRegion) \
1209 declare_toplevel_type(const MemRegion) \
1210 declare_toplevel_type(PermanentGenerationSpec) \
1211 declare_toplevel_type(ThreadLocalAllocBuffer) \
1212 declare_toplevel_type(VirtualSpace) \
1213 declare_toplevel_type(WaterMark) \
1214 \
1215 /* Pointers to Garbage Collection types */ \
1216 \
1217 declare_toplevel_type(BarrierSet*) \
1218 declare_toplevel_type(BlockOffsetSharedArray*) \
1219 declare_toplevel_type(GenRemSet*) \
1220 declare_toplevel_type(CardTableRS*) \
1221 declare_toplevel_type(CardTableModRefBS*) \
1222 declare_toplevel_type(CardTableModRefBS**) \
1223 declare_toplevel_type(CardTableModRefBSForCTRS*) \
1224 declare_toplevel_type(CardTableModRefBSForCTRS**) \
1225 declare_toplevel_type(CollectedHeap*) \
1226 declare_toplevel_type(ContiguousSpace*) \
1227 declare_toplevel_type(DefNewGeneration*) \
1228 declare_toplevel_type(EdenSpace*) \
1229 declare_toplevel_type(GenCollectedHeap*) \
1250 /* SymbolTable, SystemDictionary */ \
1251 /*********************************/ \
1252 \
1253 declare_toplevel_type(BasicHashtable) \
1254 declare_type(Hashtable<intptr_t>, BasicHashtable) \
1255 declare_type(SymbolTable, Hashtable<Symbol*>) \
1256 declare_type(StringTable, Hashtable<oop>) \
1257 declare_type(LoaderConstraintTable, Hashtable<klassOop>) \
1258 declare_type(TwoOopHashtable<klassOop>, Hashtable<klassOop>) \
1259 declare_type(Dictionary, TwoOopHashtable<klassOop>) \
1260 declare_type(PlaceholderTable, TwoOopHashtable<Symbol*>) \
1261 declare_toplevel_type(BasicHashtableEntry) \
1262 declare_type(HashtableEntry<intptr_t>, BasicHashtableEntry) \
1263 declare_type(DictionaryEntry, HashtableEntry<klassOop>) \
1264 declare_type(PlaceholderEntry, HashtableEntry<Symbol*>) \
1265 declare_type(LoaderConstraintEntry, HashtableEntry<klassOop>) \
1266 declare_toplevel_type(HashtableBucket) \
1267 declare_toplevel_type(SystemDictionary) \
1268 declare_toplevel_type(ProtectionDomainEntry) \
1269 \
1270 /***********************************************************/ \
1271 /* Thread hierarchy (needed for run-time type information) */ \
1272 /***********************************************************/ \
1273 \
1274 declare_toplevel_type(Threads) \
1275 declare_toplevel_type(ThreadShadow) \
1276 declare_type(Thread, ThreadShadow) \
1277 declare_type(NamedThread, Thread) \
1278 declare_type(WatcherThread, Thread) \
1279 declare_type(JavaThread, Thread) \
1280 declare_type(JvmtiAgentThread, JavaThread) \
1281 declare_type(ServiceThread, JavaThread) \
1282 declare_type(CompilerThread, JavaThread) \
1283 declare_toplevel_type(OSThread) \
1284 declare_toplevel_type(JavaFrameAnchor) \
1285 \
1286 /***************/ \
1287 /* Interpreter */ \
1288 /***************/ \
1289 \
1328 X86_ONLY(declare_toplevel_type(MethodHandles::RicochetFrame)) \
1329 \
1330 declare_toplevel_type(CodeBlob) \
1331 declare_type(BufferBlob, CodeBlob) \
1332 declare_type(AdapterBlob, BufferBlob) \
1333 declare_type(MethodHandlesAdapterBlob, BufferBlob) \
1334 declare_type(nmethod, CodeBlob) \
1335 declare_type(RuntimeStub, CodeBlob) \
1336 declare_type(SingletonBlob, CodeBlob) \
1337 declare_type(SafepointBlob, SingletonBlob) \
1338 declare_type(DeoptimizationBlob, SingletonBlob) \
1339 declare_type(RicochetBlob, SingletonBlob) \
1340 declare_c2_type(ExceptionBlob, SingletonBlob) \
1341 declare_c2_type(UncommonTrapBlob, CodeBlob) \
1342 \
1343 /***************************************/ \
1344 /* PcDesc and other compiled code info */ \
1345 /***************************************/ \
1346 \
1347 declare_toplevel_type(PcDesc) \
1348 \
1349 /************************/ \
1350 /* OopMap and OopMapSet */ \
1351 /************************/ \
1352 \
1353 declare_toplevel_type(OopMap) \
1354 declare_toplevel_type(OopMapSet) \
1355 \
1356 /********************/ \
1357 /* CompressedStream */ \
1358 /********************/ \
1359 \
1360 declare_toplevel_type(CompressedStream) \
1361 \
1362 /**************/ \
1363 /* VMRegImpl */ \
1364 /**************/ \
1365 \
1366 declare_toplevel_type(VMRegImpl) \
1367 \
1368 /*********************************/ \
1369 /* JNIHandles and JNIHandleBlock */ \
1370 /*********************************/ \
1371 \
1372 declare_toplevel_type(JNIHandles) \
1373 declare_toplevel_type(JNIHandleBlock) \
1374 \
1375 /**********************/ \
1376 /* Runtime1 (C1 only) */ \
1377 /**********************/ \
1378 \
1379 declare_c1_toplevel_type(Runtime1) \
1380 \
1381 /************/ \
1382 /* Monitors */ \
1383 /************/ \
1384 \
1385 declare_toplevel_type(ObjectMonitor) \
1386 declare_toplevel_type(ObjectSynchronizer) \
1387 declare_toplevel_type(BasicLock) \
1388 declare_toplevel_type(BasicObjectLock) \
1389 \
1390 /*********************/ \
1391 /* Matcher (C2 only) */ \
1392 /*********************/ \
1393 \
1394 /* NOTE: this is not really a toplevel type, but we only need */ \
1395 /* this one -- FIXME later if necessary */ \
1396 declare_c2_toplevel_type(Matcher) \
1397 \
1398 /*********************/ \
1399 /* Adapter Blob Entries */ \
1400 /*********************/ \
1401 declare_toplevel_type(AdapterHandlerEntry) \
1402 declare_toplevel_type(AdapterHandlerEntry*) \
1403 \
1404 /********************/ \
1405 /* -XX flags */ \
1406 /********************/ \
1407 \
1408 declare_toplevel_type(Flag) \
1409 declare_toplevel_type(Flag*) \
1410 \
1411 /********************/ \
1412 /* JDK/VM version */ \
1413 /********************/ \
1414 \
1415 declare_toplevel_type(Abstract_VM_Version) \
1416 declare_toplevel_type(JDK_Version) \
1417 \
1418 /*************/ \
1419 /* Arguments */ \
1420 /*************/ \
1421 \
1422 declare_toplevel_type(Arguments) \
1423 \
1424 /***************/ \
1425 /* Other types */ \
1426 /***************/ \
1427 \
1428 /* all enum types */ \
1429 \
1430 declare_integer_type(Bytecodes::Code) \
1431 declare_integer_type(Generation::Name) \
1432 declare_integer_type(instanceKlass::ClassState) \
1433 declare_integer_type(JavaThreadState) \
1434 declare_integer_type(Location::Type) \
1435 declare_integer_type(Location::Where) \
1436 declare_integer_type(PermGen::Name) \
1437 \
1438 declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\
1439 declare_toplevel_type(address) /* FIXME: should this be an integer type? */\
1440 declare_toplevel_type(BreakpointInfo) \
1441 declare_toplevel_type(BreakpointInfo*) \
1442 declare_toplevel_type(CodeBlob*) \
1443 declare_toplevel_type(CompressedWriteStream*) \
1444 declare_toplevel_type(ConstantPoolCacheEntry) \
1445 declare_toplevel_type(elapsedTimer) \
1446 declare_toplevel_type(intptr_t*) \
1447 declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \
1448 declare_toplevel_type(JavaThread*) \
1449 declare_toplevel_type(java_lang_Class) \
1450 declare_toplevel_type(jbyte*) \
1451 declare_toplevel_type(jbyte**) \
1452 declare_toplevel_type(jint*) \
1453 declare_toplevel_type(jniIdMapBase*) \
1454 declare_unsigned_integer_type(juint) \
1455 declare_unsigned_integer_type(julong) \
1456 declare_toplevel_type(JNIHandleBlock*) \
1457 declare_toplevel_type(JNIid) \
1458 declare_toplevel_type(JNIid*) \
1459 declare_toplevel_type(jmethodID*) \
1460 declare_toplevel_type(Mutex*) \
1461 declare_toplevel_type(nmethod*) \
1462 declare_toplevel_type(ObjectMonitor*) \
1463 declare_toplevel_type(oop*) \
1464 declare_toplevel_type(OopMap**) \
1465 declare_toplevel_type(OopMapCache*) \
1466 declare_toplevel_type(OopMapSet*) \
1467 declare_toplevel_type(VMReg) \
1468 declare_toplevel_type(OSThread*) \
1469 declare_integer_type(ReferenceType) \
1470 declare_toplevel_type(StubQueue*) \
1471 declare_toplevel_type(Thread*) \
1472 declare_toplevel_type(Universe)
1473
1474 /* NOTE that we do not use the last_entry() macro here; it is used */
1475 /* in vmStructs_<os>_<cpu>.hpp's VM_TYPES_OS_CPU macro (and must be */
1476 /* present there) */
1477
1478 //--------------------------------------------------------------------------------
1479 // VM_INT_CONSTANTS
1480 //
1481 // This table contains integer constants required over in the
1482 // serviceability agent. The "declare_constant" macro is used for all
1483 // enums, etc., while "declare_preprocessor_constant" must be used for
1484 // all #defined constants.
1485
1486 #define VM_INT_CONSTANTS(declare_constant, \
1487 declare_preprocessor_constant, \
1488 declare_c1_constant, \
1489 declare_c2_constant, \
1490 declare_c2_preprocessor_constant, \
1491 last_entry) \
1492 \
1493 /******************/ \
1752 declare_constant(Location::WHERE_MASK) \
1753 declare_constant(Location::WHERE_SHIFT) \
1754 \
1755 /* constants from Location::Type enum */ \
1756 \
1757 declare_constant(Location::normal) \
1758 declare_constant(Location::oop) \
1759 declare_constant(Location::narrowoop) \
1760 declare_constant(Location::int_in_long) \
1761 declare_constant(Location::lng) \
1762 declare_constant(Location::float_in_dbl) \
1763 declare_constant(Location::dbl) \
1764 declare_constant(Location::addr) \
1765 declare_constant(Location::invalid) \
1766 \
1767 /* constants from Location::Where enum */ \
1768 \
1769 declare_constant(Location::on_stack) \
1770 declare_constant(Location::in_register) \
1771 \
1772 /*********************/ \
1773 /* Matcher (C2 only) */ \
1774 /*********************/ \
1775 \
1776 declare_c2_preprocessor_constant("Matcher::interpreter_frame_pointer_reg", Matcher::interpreter_frame_pointer_reg()) \
1777 \
1778 /*********************************************/ \
1779 /* MethodCompilation (globalDefinitions.hpp) */ \
1780 /*********************************************/ \
1781 \
1782 declare_constant(InvocationEntryBci) \
1783 declare_constant(InvalidOSREntryBci) \
1784 \
1785 /***************/ \
1786 /* OopMapValue */ \
1787 /***************/ \
1788 \
1789 declare_constant(OopMapValue::type_bits) \
1790 declare_constant(OopMapValue::register_bits) \
1791 declare_constant(OopMapValue::type_shift) \
2455 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsOopTypeOffset, VMTypeEntry, isOopType);
2456 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsIntegerTypeOffset, VMTypeEntry, isIntegerType);
2457 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsUnsignedOffset, VMTypeEntry, isUnsigned);
2458 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySizeOffset, VMTypeEntry, size);
2459 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMTypeEntryArrayStride,gHotSpotVMTypes);
2460 JNIEXPORT VMIntConstantEntry* gHotSpotVMIntConstants = VMStructs::localHotSpotVMIntConstants;
2461 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryNameOffset, VMIntConstantEntry, name);
2462 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryValueOffset, VMIntConstantEntry, value);
2463 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMIntConstantEntryArrayStride, gHotSpotVMIntConstants);
2464 JNIEXPORT VMLongConstantEntry* gHotSpotVMLongConstants = VMStructs::localHotSpotVMLongConstants;
2465 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryNameOffset, VMLongConstantEntry, name);
2466 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryValueOffset, VMLongConstantEntry, value);
2467 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLongConstants);
2468 }
2469
2470 #ifdef ASSERT
2471 static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool isRecurse) {
2472 {
2473 VMTypeEntry* types = origtypes;
2474 while (types->typeName != NULL) {
2475 if (!strcmp(typeName, types->typeName)) {
2476 return 1;
2477 }
2478 ++types;
2479 }
2480 }
2481 size_t len = strlen(typeName);
2482 if (typeName[len-1] == '*') {
2483 char * s = new char[len];
2484 strncpy(s, typeName, len - 1);
2485 s[len-1] = '\0';
2486 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
2487 if (recursiveFindType(origtypes, s, true) == 1) {
2488 delete s;
2489 return 1;
2490 }
2491 delete s;
2492 }
2493 if (strstr(typeName, "GrowableArray<") == typeName) {
2494 const char * start = typeName + strlen("GrowableArray<");
2495 const char * end = strrchr(typeName, '>');
2496 int len = end - start + 1;
2497 char * s = new char[len];
2498 strncpy(s, start, len - 1);
2499 s[len-1] = '\0';
2500 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
|
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
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 "classfile/dictionary.hpp"
27 #include "classfile/javaClasses.hpp"
28 #include "classfile/loaderConstraints.hpp"
29 #include "classfile/placeholders.hpp"
30 #include "classfile/symbolTable.hpp"
31 #include "classfile/systemDictionary.hpp"
32 #include "ci/ciField.hpp"
33 #include "ci/ciInstance.hpp"
34 #include "ci/ciObjArrayKlass.hpp"
35 #include "ci/ciMethodData.hpp"
36 #include "ci/ciSymbol.hpp"
37 #include "code/codeBlob.hpp"
38 #include "code/codeCache.hpp"
39 #include "code/compressedStream.hpp"
40 #include "code/location.hpp"
41 #include "code/nmethod.hpp"
42 #include "code/pcDesc.hpp"
43 #include "code/stubs.hpp"
44 #include "code/vmreg.hpp"
45 #include "compiler/oopMap.hpp"
46 #include "compiler/compileBroker.hpp"
47 #include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp"
48 #include "gc_implementation/shared/immutableSpace.hpp"
49 #include "gc_implementation/shared/markSweep.hpp"
50 #include "gc_implementation/shared/mutableSpace.hpp"
51 #include "gc_interface/collectedHeap.hpp"
52 #include "interpreter/bytecodeInterpreter.hpp"
53 #include "interpreter/bytecodes.hpp"
54 #include "interpreter/interpreter.hpp"
55 #include "memory/cardTableRS.hpp"
56 #include "memory/compactPermGen.hpp"
57 #include "memory/defNewGeneration.hpp"
58 #include "memory/genCollectedHeap.hpp"
59 #include "memory/generation.hpp"
60 #include "memory/generationSpec.hpp"
61 #include "memory/heap.hpp"
62 #include "memory/permGen.hpp"
63 #include "memory/space.hpp"
64 #include "memory/tenuredGeneration.hpp"
65 #include "memory/universe.hpp"
66 #include "memory/watermark.hpp"
79 #include "oops/instanceMirrorKlass.hpp"
80 #include "oops/instanceKlassKlass.hpp"
81 #include "oops/instanceOop.hpp"
82 #include "oops/klass.hpp"
83 #include "oops/klassOop.hpp"
84 #include "oops/markOop.hpp"
85 #include "oops/methodDataKlass.hpp"
86 #include "oops/methodDataOop.hpp"
87 #include "oops/methodKlass.hpp"
88 #include "oops/methodOop.hpp"
89 #include "oops/objArrayKlass.hpp"
90 #include "oops/objArrayKlassKlass.hpp"
91 #include "oops/objArrayOop.hpp"
92 #include "oops/oop.inline.hpp"
93 #include "oops/symbol.hpp"
94 #include "oops/typeArrayKlass.hpp"
95 #include "oops/typeArrayKlassKlass.hpp"
96 #include "oops/typeArrayOop.hpp"
97 #include "prims/jvmtiAgentThread.hpp"
98 #include "runtime/arguments.hpp"
99 #include "runtime/deoptimization.hpp"
100 #include "runtime/vframeArray.hpp"
101 #include "runtime/globals.hpp"
102 #include "runtime/java.hpp"
103 #include "runtime/javaCalls.hpp"
104 #include "runtime/perfMemory.hpp"
105 #include "runtime/serviceThread.hpp"
106 #include "runtime/sharedRuntime.hpp"
107 #include "runtime/stubRoutines.hpp"
108 #include "runtime/virtualspace.hpp"
109 #include "runtime/vmStructs.hpp"
110 #include "utilities/globalDefinitions.hpp"
111 #include "utilities/hashtable.hpp"
112 #ifdef TARGET_ARCH_x86
113 # include "vmStructs_x86.hpp"
114 #endif
115 #ifdef TARGET_ARCH_sparc
116 # include "vmStructs_sparc.hpp"
117 #endif
118 #ifdef TARGET_ARCH_zero
119 # include "vmStructs_zero.hpp"
120 #endif
158 # include "vmStructs_linux_ppc.hpp"
159 #endif
160 #ifndef SERIALGC
161 #include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
162 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
163 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
164 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
165 #include "gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp"
166 #include "gc_implementation/parNew/parNewGeneration.hpp"
167 #include "gc_implementation/parNew/vmStructs_parNew.hpp"
168 #include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
169 #include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
170 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
171 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
172 #include "gc_implementation/parallelScavenge/psPermGen.hpp"
173 #include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
174 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
175 #include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
176 #endif
177 #ifdef COMPILER2
178 #include "opto/addnode.hpp"
179 #include "opto/block.hpp"
180 #include "opto/callnode.hpp"
181 #include "opto/cfgnode.hpp"
182 #include "opto/chaitin.hpp"
183 #include "opto/divnode.hpp"
184 #include "opto/locknode.hpp"
185 #include "opto/loopnode.hpp"
186 #include "opto/machnode.hpp"
187 #include "opto/matcher.hpp"
188 #include "opto/mulnode.hpp"
189 #include "opto/phaseX.hpp"
190 #include "opto/parse.hpp"
191 #include "opto/regalloc.hpp"
192 #include "opto/rootnode.hpp"
193 #include "opto/subnode.hpp"
194 #include "opto/vectornode.hpp"
195 #ifdef TARGET_ARCH_MODEL_x86_32
196 # include "adfiles/adGlobals_x86_32.hpp"
197 #endif
198 #ifdef TARGET_ARCH_MODEL_x86_64
199 # include "adfiles/adGlobals_x86_64.hpp"
200 #endif
201 #ifdef TARGET_ARCH_MODEL_sparc
202 # include "adfiles/adGlobals_sparc.hpp"
203 #endif
204 #ifdef TARGET_ARCH_MODEL_zero
205 # include "adfiles/adGlobals_zero.hpp"
206 #endif
207 #ifdef TARGET_ARCH_MODEL_arm
208 # include "adfiles/adGlobals_arm.hpp"
209 #endif
210 #ifdef TARGET_ARCH_MODEL_ppc
211 # include "adfiles/adGlobals_ppc.hpp"
212 #endif
213 #endif
214
300 nonstatic_field(instanceKlass, _minor_version, u2) \
301 nonstatic_field(instanceKlass, _major_version, u2) \
302 nonstatic_field(instanceKlass, _init_state, instanceKlass::ClassState) \
303 nonstatic_field(instanceKlass, _init_thread, Thread*) \
304 nonstatic_field(instanceKlass, _vtable_len, int) \
305 nonstatic_field(instanceKlass, _itable_len, int) \
306 nonstatic_field(instanceKlass, _reference_type, ReferenceType) \
307 volatile_nonstatic_field(instanceKlass, _oop_map_cache, OopMapCache*) \
308 nonstatic_field(instanceKlass, _jni_ids, JNIid*) \
309 nonstatic_field(instanceKlass, _osr_nmethods_head, nmethod*) \
310 nonstatic_field(instanceKlass, _breakpoints, BreakpointInfo*) \
311 nonstatic_field(instanceKlass, _generic_signature, Symbol*) \
312 nonstatic_field(instanceKlass, _methods_jmethod_ids, jmethodID*) \
313 nonstatic_field(instanceKlass, _methods_cached_itable_indices, int*) \
314 volatile_nonstatic_field(instanceKlass, _idnum_allocated_count, u2) \
315 nonstatic_field(instanceKlass, _class_annotations, typeArrayOop) \
316 nonstatic_field(instanceKlass, _fields_annotations, objArrayOop) \
317 nonstatic_field(instanceKlass, _methods_annotations, objArrayOop) \
318 nonstatic_field(instanceKlass, _methods_parameter_annotations, objArrayOop) \
319 nonstatic_field(instanceKlass, _methods_default_annotations, objArrayOop) \
320 nonstatic_field(instanceKlass, _dependencies, nmethodBucket*) \
321 nonstatic_field(nmethodBucket, _nmethod, nmethod*) \
322 nonstatic_field(nmethodBucket, _count, int) \
323 nonstatic_field(nmethodBucket, _next, nmethodBucket*) \
324 nonstatic_field(Klass, _super_check_offset, juint) \
325 nonstatic_field(Klass, _secondary_super_cache, klassOop) \
326 nonstatic_field(Klass, _secondary_supers, objArrayOop) \
327 nonstatic_field(Klass, _primary_supers[0], klassOop) \
328 nonstatic_field(Klass, _java_mirror, oop) \
329 nonstatic_field(Klass, _modifier_flags, jint) \
330 nonstatic_field(Klass, _super, klassOop) \
331 nonstatic_field(Klass, _layout_helper, jint) \
332 nonstatic_field(Klass, _name, Symbol*) \
333 nonstatic_field(Klass, _access_flags, AccessFlags) \
334 nonstatic_field(Klass, _subklass, klassOop) \
335 nonstatic_field(Klass, _next_sibling, klassOop) \
336 nonproduct_nonstatic_field(Klass, _verify_count, int) \
337 nonstatic_field(Klass, _alloc_count, juint) \
338 nonstatic_field(klassKlass, _alloc_size, juint) \
339 nonstatic_field(methodKlass, _alloc_size, juint) \
340 nonstatic_field(methodDataOopDesc, _size, int) \
341 nonstatic_field(methodDataOopDesc, _method, methodOop) \
342 nonstatic_field(methodDataOopDesc, _data_size, int) \
343 nonstatic_field(methodDataOopDesc, _data[0], intptr_t) \
344 nonstatic_field(methodDataOopDesc, _nof_decompiles, uint) \
345 nonstatic_field(methodDataOopDesc, _nof_overflow_recompiles, uint) \
346 nonstatic_field(methodDataOopDesc, _nof_overflow_traps, uint) \
347 nonstatic_field(methodDataOopDesc, _eflags, intx) \
348 nonstatic_field(methodDataOopDesc, _arg_local, intx) \
349 nonstatic_field(methodDataOopDesc, _arg_stack, intx) \
350 nonstatic_field(methodDataOopDesc, _arg_returned, intx) \
351 nonstatic_field(methodOopDesc, _constMethod, constMethodOop) \
352 nonstatic_field(methodOopDesc, _constants, constantPoolOop) \
353 nonstatic_field(methodOopDesc, _method_data, methodDataOop) \
354 nonstatic_field(methodOopDesc, _interpreter_invocation_count, int) \
355 nonstatic_field(methodOopDesc, _access_flags, AccessFlags) \
356 nonstatic_field(methodOopDesc, _vtable_index, int) \
357 nonstatic_field(methodOopDesc, _method_size, u2) \
358 nonstatic_field(methodOopDesc, _max_stack, u2) \
359 nonstatic_field(methodOopDesc, _max_locals, u2) \
360 nonstatic_field(methodOopDesc, _size_of_parameters, u2) \
361 nonstatic_field(methodOopDesc, _interpreter_throwout_count, u2) \
362 nonstatic_field(methodOopDesc, _number_of_breakpoints, u2) \
363 nonstatic_field(methodOopDesc, _invocation_counter, InvocationCounter) \
364 nonstatic_field(methodOopDesc, _backedge_counter, InvocationCounter) \
365 nonproduct_nonstatic_field(methodOopDesc, _compiled_invocation_count, int) \
366 volatile_nonstatic_field(methodOopDesc, _code, nmethod*) \
367 nonstatic_field(methodOopDesc, _i2i_entry, address) \
368 nonstatic_field(methodOopDesc, _adapter, AdapterHandlerEntry*) \
369 volatile_nonstatic_field(methodOopDesc, _from_compiled_entry, address) \
370 volatile_nonstatic_field(methodOopDesc, _from_interpreted_entry, address) \
371 volatile_nonstatic_field(constMethodOopDesc, _fingerprint, uint64_t) \
372 nonstatic_field(constMethodOopDesc, _method, methodOop) \
373 nonstatic_field(constMethodOopDesc, _stackmap_data, typeArrayOop) \
374 nonstatic_field(constMethodOopDesc, _exception_table, typeArrayOop) \
375 nonstatic_field(constMethodOopDesc, _constMethod_size, int) \
376 nonstatic_field(constMethodOopDesc, _interpreter_kind, jbyte) \
377 nonstatic_field(constMethodOopDesc, _flags, jbyte) \
378 nonstatic_field(constMethodOopDesc, _code_size, u2) \
379 nonstatic_field(constMethodOopDesc, _name_index, u2) \
380 nonstatic_field(constMethodOopDesc, _signature_index, u2) \
381 nonstatic_field(constMethodOopDesc, _method_idnum, u2) \
728 /********************/ \
729 \
730 nonstatic_field(PlaceholderEntry, _loader, oop) \
731 \
732 /**************************/ \
733 /* ProctectionDomainEntry */ \
734 /**************************/ \
735 \
736 nonstatic_field(ProtectionDomainEntry, _next, ProtectionDomainEntry*) \
737 nonstatic_field(ProtectionDomainEntry, _protection_domain, oop) \
738 \
739 /*************************/ \
740 /* LoaderConstraintEntry */ \
741 /*************************/ \
742 \
743 nonstatic_field(LoaderConstraintEntry, _name, Symbol*) \
744 nonstatic_field(LoaderConstraintEntry, _num_loaders, int) \
745 nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \
746 nonstatic_field(LoaderConstraintEntry, _loaders, oop*) \
747 \
748 /*******************/ \
749 /* GrowableArrays */ \
750 /*******************/ \
751 \
752 nonstatic_field(GenericGrowableArray, _len, int) \
753 nonstatic_field(GenericGrowableArray, _max, int) \
754 nonstatic_field(GenericGrowableArray, _arena, Arena*) \
755 nonstatic_field(GrowableArray<int>, _data, int*) \
756 \
757 /********************************/ \
758 /* CodeCache (NOTE: incomplete) */ \
759 /********************************/ \
760 \
761 static_field(CodeCache, _heap, CodeHeap*) \
762 static_field(CodeCache, _scavenge_root_nmethods, nmethod*) \
763 \
764 /*******************************/ \
765 /* CodeHeap (NOTE: incomplete) */ \
766 /*******************************/ \
767 \
768 nonstatic_field(CodeHeap, _memory, VirtualSpace) \
769 nonstatic_field(CodeHeap, _segmap, VirtualSpace) \
770 nonstatic_field(CodeHeap, _log2_segment_size, int) \
771 nonstatic_field(HeapBlock, _header, HeapBlock::Header) \
772 nonstatic_field(HeapBlock::Header, _length, size_t) \
773 nonstatic_field(HeapBlock::Header, _used, bool) \
774 \
775 /**********************************/ \
776 /* Interpreter (NOTE: incomplete) */ \
842 nonstatic_field(nmethod, _state, unsigned char) \
843 nonstatic_field(nmethod, _exception_offset, int) \
844 nonstatic_field(nmethod, _deoptimize_offset, int) \
845 nonstatic_field(nmethod, _deoptimize_mh_offset, int) \
846 nonstatic_field(nmethod, _orig_pc_offset, int) \
847 nonstatic_field(nmethod, _stub_offset, int) \
848 nonstatic_field(nmethod, _consts_offset, int) \
849 nonstatic_field(nmethod, _oops_offset, int) \
850 nonstatic_field(nmethod, _scopes_data_offset, int) \
851 nonstatic_field(nmethod, _scopes_pcs_offset, int) \
852 nonstatic_field(nmethod, _dependencies_offset, int) \
853 nonstatic_field(nmethod, _handler_table_offset, int) \
854 nonstatic_field(nmethod, _nul_chk_table_offset, int) \
855 nonstatic_field(nmethod, _nmethod_end_offset, int) \
856 nonstatic_field(nmethod, _entry_point, address) \
857 nonstatic_field(nmethod, _verified_entry_point, address) \
858 nonstatic_field(nmethod, _osr_entry_point, address) \
859 nonstatic_field(nmethod, _lock_count, jint) \
860 nonstatic_field(nmethod, _stack_traversal_mark, long) \
861 nonstatic_field(nmethod, _compile_id, int) \
862 nonstatic_field(nmethod, _exception_cache, ExceptionCache*) \
863 nonstatic_field(nmethod, _marked_for_deoptimization, bool) \
864 \
865 nonstatic_field(RicochetBlob, _bounce_offset, int) \
866 nonstatic_field(RicochetBlob, _exception_offset, int) \
867 \
868 unchecked_c2_static_field(Deoptimization, _trap_reason_name, void*) \
869 \
870 /********************************/ \
871 /* JavaCalls (NOTE: incomplete) */ \
872 /********************************/ \
873 \
874 nonstatic_field(JavaCallWrapper, _anchor, JavaFrameAnchor) \
875 /********************************/ \
876 /* JavaFrameAnchor (NOTE: incomplete) */ \
877 /********************************/ \
878 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_sp, intptr_t*) \
879 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_pc, address) \
880 \
881 /******************************/ \
882 /* Threads (NOTE: incomplete) */ \
883 /******************************/ \
884 \
885 static_field(Threads, _thread_list, JavaThread*) \
886 static_field(Threads, _number_of_threads, int) \
887 static_field(Threads, _number_of_non_daemon_threads, int) \
888 static_field(Threads, _return_code, int) \
889 \
890 nonstatic_field(ThreadShadow, _pending_exception, oop) \
891 nonstatic_field(ThreadShadow, _exception_file, const char*) \
892 nonstatic_field(ThreadShadow, _exception_line, int) \
893 volatile_nonstatic_field(Thread, _suspend_flags, uint32_t) \
894 nonstatic_field(Thread, _active_handles, JNIHandleBlock*) \
895 nonstatic_field(Thread, _tlab, ThreadLocalAllocBuffer) \
896 nonstatic_field(Thread, _current_pending_monitor, ObjectMonitor*) \
897 nonstatic_field(Thread, _current_pending_monitor_is_from_java, bool) \
898 nonstatic_field(Thread, _current_waiting_monitor, ObjectMonitor*) \
899 nonstatic_field(NamedThread, _name, char*) \
900 nonstatic_field(NamedThread, _processed_thread, JavaThread*) \
901 nonstatic_field(JavaThread, _next, JavaThread*) \
902 nonstatic_field(JavaThread, _threadObj, oop) \
903 nonstatic_field(JavaThread, _anchor, JavaFrameAnchor) \
904 nonstatic_field(JavaThread, _vm_result, oop) \
905 nonstatic_field(JavaThread, _vm_result_2, oop) \
906 nonstatic_field(JavaThread, _pending_async_exception, oop) \
907 volatile_nonstatic_field(JavaThread, _exception_oop, oop) \
908 volatile_nonstatic_field(JavaThread, _exception_pc, address) \
909 nonstatic_field(JavaThread, _is_compiling, bool) \
910 nonstatic_field(JavaThread, _special_runtime_exit_condition, JavaThread::AsyncRequests) \
911 nonstatic_field(JavaThread, _saved_exception_pc, address) \
912 volatile_nonstatic_field(JavaThread, _thread_state, JavaThreadState) \
913 nonstatic_field(JavaThread, _osthread, OSThread*) \
914 nonstatic_field(JavaThread, _stack_base, address) \
915 nonstatic_field(JavaThread, _stack_size, size_t) \
916 nonstatic_field(JavaThread, _vframe_array_head, vframeArray*) \
917 nonstatic_field(JavaThread, _vframe_array_last, vframeArray*) \
918 nonstatic_field(Thread, _resource_area, ResourceArea*) \
919 nonstatic_field(CompilerThread, _env, ciEnv*) \
920 \
921 /************/ \
922 /* OSThread */ \
923 /************/ \
924 \
925 volatile_nonstatic_field(OSThread, _interrupted, jint) \
926 \
927 /************************/ \
928 /* OopMap and OopMapSet */ \
929 /************************/ \
930 \
931 nonstatic_field(OopMap, _pc_offset, int) \
932 nonstatic_field(OopMap, _omv_count, int) \
933 nonstatic_field(OopMap, _omv_data_size, int) \
934 nonstatic_field(OopMap, _omv_data, unsigned char*) \
935 nonstatic_field(OopMap, _write_stream, CompressedWriteStream*) \
936 nonstatic_field(OopMapSet, _om_count, int) \
937 nonstatic_field(OopMapSet, _om_size, int) \
938 nonstatic_field(OopMapSet, _om_data, OopMap**) \
939 \
951 /********************/ \
952 /* CompressedStream */ \
953 /********************/ \
954 \
955 nonstatic_field(CompressedStream, _buffer, u_char*) \
956 nonstatic_field(CompressedStream, _position, int) \
957 \
958 /*********************************/ \
959 /* VMRegImpl (NOTE: incomplete) */ \
960 /*********************************/ \
961 \
962 static_field(VMRegImpl, regName[0], const char*) \
963 static_field(VMRegImpl, stack0, VMReg) \
964 \
965 /*******************************/ \
966 /* Runtime1 (NOTE: incomplete) */ \
967 /*******************************/ \
968 \
969 unchecked_c1_static_field(Runtime1, _blobs, sizeof(Runtime1::_blobs)) /* NOTE: no type */ \
970 \
971 /**************/ \
972 /* allocation */ \
973 /**************/ \
974 \
975 nonstatic_field(Chunk, _next, Chunk*) \
976 nonstatic_field(Chunk, _len, const size_t) \
977 \
978 nonstatic_field(Arena, _first, Chunk*) \
979 nonstatic_field(Arena, _chunk, Chunk*) \
980 nonstatic_field(Arena, _hwm, char*) \
981 nonstatic_field(Arena, _max, char*) \
982 \
983 /************/ \
984 /* CI */ \
985 /************/ \
986 \
987 nonstatic_field(ciEnv, _system_dictionary_modification_counter, int) \
988 nonstatic_field(ciEnv, _compiler_data, void*) \
989 nonstatic_field(ciEnv, _failure_reason, const char*) \
990 nonstatic_field(ciEnv, _factory, ciObjectFactory*) \
991 nonstatic_field(ciEnv, _dependencies, Dependencies*) \
992 nonstatic_field(ciEnv, _task, CompileTask*) \
993 nonstatic_field(ciEnv, _arena, Arena*) \
994 \
995 nonstatic_field(ciObject, _handle, jobject) \
996 nonstatic_field(ciObject, _klass, ciKlass*) \
997 nonstatic_field(ciObject, _ident, uint) \
998 \
999 nonstatic_field(ciSymbol, _ident, uint) \
1000 nonstatic_field(ciSymbol, _symbol, Symbol*) \
1001 \
1002 nonstatic_field(ciType, _basic_type, BasicType) \
1003 \
1004 nonstatic_field(ciKlass, _name, ciSymbol*) \
1005 \
1006 nonstatic_field(ciArrayKlass, _dimension, jint) \
1007 \
1008 nonstatic_field(ciObjArrayKlass, _element_klass, ciKlass*) \
1009 nonstatic_field(ciObjArrayKlass, _base_element_klass, ciKlass*) \
1010 \
1011 nonstatic_field(ciInstanceKlass, _init_state, instanceKlass::ClassState) \
1012 nonstatic_field(ciInstanceKlass, _is_shared, bool) \
1013 \
1014 nonstatic_field(ciMethod, _interpreter_invocation_count, int) \
1015 nonstatic_field(ciMethod, _interpreter_throwout_count, int) \
1016 \
1017 nonstatic_field(ciMethodData, _data_size, int) \
1018 nonstatic_field(ciMethodData, _state, u_char) \
1019 nonstatic_field(ciMethodData, _extra_data_size, int) \
1020 nonstatic_field(ciMethodData, _data, intptr_t*) \
1021 nonstatic_field(ciMethodData, _hint_di, int) \
1022 nonstatic_field(ciMethodData, _eflags, intx) \
1023 nonstatic_field(ciMethodData, _arg_local, intx) \
1024 nonstatic_field(ciMethodData, _arg_stack, intx) \
1025 nonstatic_field(ciMethodData, _arg_returned, intx) \
1026 nonstatic_field(ciMethodData, _current_mileage, int) \
1027 nonstatic_field(ciMethodData, _orig, methodDataOopDesc) \
1028 \
1029 nonstatic_field(ciField, _holder, ciInstanceKlass*) \
1030 nonstatic_field(ciField, _name, ciSymbol*) \
1031 nonstatic_field(ciField, _signature, ciSymbol*) \
1032 nonstatic_field(ciField, _offset, int) \
1033 nonstatic_field(ciField, _is_constant, bool) \
1034 nonstatic_field(ciField, _constant_value, ciConstant) \
1035 \
1036 nonstatic_field(ciObjectFactory, _ci_objects, GrowableArray<ciObject*>*) \
1037 nonstatic_field(ciObjectFactory, _symbols, GrowableArray<ciSymbol*>*) \
1038 nonstatic_field(ciObjectFactory, _unloaded_methods, GrowableArray<ciMethod*>*) \
1039 \
1040 nonstatic_field(ciConstant, _type, BasicType) \
1041 nonstatic_field(ciConstant, _value._int, jint) \
1042 nonstatic_field(ciConstant, _value._long, jlong) \
1043 nonstatic_field(ciConstant, _value._float, jfloat) \
1044 nonstatic_field(ciConstant, _value._double, jdouble) \
1045 nonstatic_field(ciConstant, _value._object, ciObject*) \
1046 \
1047 /************/ \
1048 /* Monitors */ \
1049 /************/ \
1050 \
1051 volatile_nonstatic_field(ObjectMonitor, _header, markOop) \
1052 unchecked_nonstatic_field(ObjectMonitor, _object, sizeof(void *)) /* NOTE: no type */ \
1053 unchecked_nonstatic_field(ObjectMonitor, _owner, sizeof(void *)) /* NOTE: no type */ \
1054 volatile_nonstatic_field(ObjectMonitor, _count, intptr_t) \
1055 volatile_nonstatic_field(ObjectMonitor, _waiters, intptr_t) \
1056 volatile_nonstatic_field(ObjectMonitor, _recursions, intptr_t) \
1057 nonstatic_field(ObjectMonitor, FreeNext, ObjectMonitor*) \
1058 volatile_nonstatic_field(BasicLock, _displaced_header, markOop) \
1059 nonstatic_field(BasicObjectLock, _lock, BasicLock) \
1060 nonstatic_field(BasicObjectLock, _obj, oop) \
1061 static_field(ObjectSynchronizer, gBlockList, ObjectMonitor*) \
1062 \
1063 /*********************/ \
1064 /* Matcher (C2 only) */ \
1065 /*********************/ \
1066 \
1067 unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
1068 \
1069 c2_nonstatic_field(Node, _in, Node**) \
1070 c2_nonstatic_field(Node, _out, Node**) \
1071 c2_nonstatic_field(Node, _cnt, node_idx_t) \
1072 c2_nonstatic_field(Node, _max, node_idx_t) \
1073 c2_nonstatic_field(Node, _outcnt, node_idx_t) \
1074 c2_nonstatic_field(Node, _outmax, node_idx_t) \
1075 c2_nonstatic_field(Node, _idx, const node_idx_t) \
1076 \
1077 c2_nonstatic_field(Compile, _root, RootNode*) \
1078 c2_nonstatic_field(Compile, _unique, uint) \
1079 c2_nonstatic_field(Compile, _entry_bci, int) \
1080 c2_nonstatic_field(Compile, _top, Node*) \
1081 c2_nonstatic_field(Compile, _cfg, PhaseCFG*) \
1082 c2_nonstatic_field(Compile, _regalloc, PhaseRegAlloc*) \
1083 c2_nonstatic_field(Compile, _method, ciMethod*) \
1084 c2_nonstatic_field(Compile, _compile_id, const int) \
1085 c2_nonstatic_field(Compile, _save_argument_registers, const bool) \
1086 c2_nonstatic_field(Compile, _subsume_loads, const bool) \
1087 c2_nonstatic_field(Compile, _do_escape_analysis, const bool) \
1088 c2_nonstatic_field(Compile, _ilt, InlineTree*) \
1089 \
1090 c2_nonstatic_field(InlineTree, _caller_jvms, JVMState*) \
1091 c2_nonstatic_field(InlineTree, _method, ciMethod*) \
1092 c2_nonstatic_field(InlineTree, _caller_tree, InlineTree*) \
1093 c2_nonstatic_field(InlineTree, _subtrees, GrowableArray<InlineTree*>) \
1094 \
1095 c2_nonstatic_field(OptoRegPair, _first, short) \
1096 c2_nonstatic_field(OptoRegPair, _second, short) \
1097 \
1098 c2_nonstatic_field(JVMState, _caller, JVMState*) \
1099 c2_nonstatic_field(JVMState, _depth, uint) \
1100 c2_nonstatic_field(JVMState, _locoff, uint) \
1101 c2_nonstatic_field(JVMState, _stkoff, uint) \
1102 c2_nonstatic_field(JVMState, _monoff, uint) \
1103 c2_nonstatic_field(JVMState, _scloff, uint) \
1104 c2_nonstatic_field(JVMState, _endoff, uint) \
1105 c2_nonstatic_field(JVMState, _sp, uint) \
1106 c2_nonstatic_field(JVMState, _bci, int) \
1107 c2_nonstatic_field(JVMState, _method, ciMethod*) \
1108 c2_nonstatic_field(JVMState, _map, SafePointNode*) \
1109 \
1110 c2_nonstatic_field(SafePointNode, _jvms, JVMState* const) \
1111 \
1112 c2_nonstatic_field(MachSafePointNode, _jvms, JVMState*) \
1113 c2_nonstatic_field(MachSafePointNode, _jvmadj, uint) \
1114 \
1115 c2_nonstatic_field(MachIfNode, _prob, jfloat) \
1116 c2_nonstatic_field(MachIfNode, _fcnt, jfloat) \
1117 \
1118 c2_nonstatic_field(CallNode, _entry_point, address) \
1119 \
1120 c2_nonstatic_field(CallJavaNode, _method, ciMethod*) \
1121 \
1122 c2_nonstatic_field(CallRuntimeNode, _name, const char*) \
1123 \
1124 c2_nonstatic_field(CallStaticJavaNode, _name, const char*) \
1125 \
1126 c2_nonstatic_field(MachCallJavaNode, _method, ciMethod*) \
1127 c2_nonstatic_field(MachCallJavaNode, _bci, int) \
1128 \
1129 c2_nonstatic_field(MachCallStaticJavaNode, _name, const char*) \
1130 \
1131 c2_nonstatic_field(MachCallRuntimeNode, _name, const char*) \
1132 \
1133 c2_nonstatic_field(PhaseCFG, _num_blocks, uint) \
1134 c2_nonstatic_field(PhaseCFG, _blocks, Block_List) \
1135 c2_nonstatic_field(PhaseCFG, _bbs, Block_Array) \
1136 c2_nonstatic_field(PhaseCFG, _broot, Block*) \
1137 \
1138 c2_nonstatic_field(PhaseRegAlloc, _node_regs, OptoRegPair*) \
1139 c2_nonstatic_field(PhaseRegAlloc, _node_regs_max_index, uint) \
1140 c2_nonstatic_field(PhaseRegAlloc, _framesize, uint) \
1141 c2_nonstatic_field(PhaseRegAlloc, _max_reg, OptoReg::Name) \
1142 \
1143 c2_nonstatic_field(PhaseChaitin, _trip_cnt, int) \
1144 c2_nonstatic_field(PhaseChaitin, _alternate, int) \
1145 c2_nonstatic_field(PhaseChaitin, _lo_degree, uint) \
1146 c2_nonstatic_field(PhaseChaitin, _lo_stk_degree, uint) \
1147 c2_nonstatic_field(PhaseChaitin, _hi_degree, uint) \
1148 c2_nonstatic_field(PhaseChaitin, _simplified, uint) \
1149 c2_nonstatic_field(PhaseChaitin, _maxlrg, uint) \
1150 \
1151 c2_nonstatic_field(Block, _nodes, Node_List) \
1152 c2_nonstatic_field(Block, _succs, Block_Array) \
1153 c2_nonstatic_field(Block, _num_succs, uint) \
1154 c2_nonstatic_field(Block, _pre_order, uint) \
1155 c2_nonstatic_field(Block, _dom_depth, uint) \
1156 c2_nonstatic_field(Block, _idom, Block*) \
1157 c2_nonstatic_field(Block, _freq, jfloat) \
1158 \
1159 c2_nonstatic_field(CFGElement, _freq, jfloat) \
1160 \
1161 c2_nonstatic_field(Block_List, _cnt, uint) \
1162 \
1163 c2_nonstatic_field(Block_Array, _size, uint) \
1164 c2_nonstatic_field(Block_Array, _blocks, Block**) \
1165 c2_nonstatic_field(Block_Array, _arena, Arena*) \
1166 \
1167 c2_nonstatic_field(Node_List, _cnt, uint) \
1168 \
1169 c2_nonstatic_field(Node_Array, _max, uint) \
1170 c2_nonstatic_field(Node_Array, _nodes, Node**) \
1171 c2_nonstatic_field(Node_Array, _a, Arena*) \
1172 \
1173 \
1174 /*********************/ \
1175 /* -XX flags */ \
1176 /*********************/ \
1177 \
1178 nonstatic_field(Flag, type, const char*) \
1179 nonstatic_field(Flag, name, const char*) \
1180 unchecked_nonstatic_field(Flag, addr, sizeof(void*)) /* NOTE: no type */ \
1181 nonstatic_field(Flag, kind, const char*) \
1182 nonstatic_field(Flag, origin, FlagValueOrigin) \
1183 static_field(Flag, flags, Flag*) \
1184 static_field(Flag, numFlags, size_t) \
1185 \
1186 /*************************/ \
1187 /* JDK / VM version info */ \
1188 /*************************/ \
1189 \
1190 static_field(Abstract_VM_Version, _s_vm_release, const char*) \
1191 static_field(Abstract_VM_Version, _s_internal_vm_info_string, const char*) \
1192 static_field(Abstract_VM_Version, _vm_major_version, int) \
1193 static_field(Abstract_VM_Version, _vm_minor_version, int) \
1194 static_field(Abstract_VM_Version, _vm_build_number, int) \
1195 \
1196 static_field(JDK_Version, _current, JDK_Version) \
1197 nonstatic_field(JDK_Version, _partially_initialized, bool) \
1198 nonstatic_field(JDK_Version, _major, unsigned char) \
1199 \
1200 /*************************/ \
1201 /* JVMTI */ \
1202 /*************************/ \
1203 \
1204 static_field(JvmtiExport, _can_access_local_variables, bool) \
1205 static_field(JvmtiExport, _can_hotswap_or_post_breakpoint, bool) \
1206 static_field(JvmtiExport, _can_post_on_exceptions, bool) \
1207 static_field(JvmtiExport, _can_walk_any_space, bool) \
1208 \
1209 /*************/ \
1210 /* Arguments */ \
1211 /*************/ \
1212 \
1213 static_field(Arguments, _jvm_flags_array, char**) \
1214 static_field(Arguments, _num_jvm_flags, int) \
1215 static_field(Arguments, _jvm_args_array, char**) \
1216 static_field(Arguments, _num_jvm_args, int) \
1217 static_field(Arguments, _java_command, char*) \
1218 \
1219 /*********************************/ \
1220 /* java_lang_Class fields */ \
1221 /*********************************/ \
1222 \
1223 static_field(java_lang_Class, klass_offset, int) \
1224 static_field(java_lang_Class, resolved_constructor_offset, int) \
1225 static_field(java_lang_Class, array_klass_offset, int) \
1226 static_field(java_lang_Class, oop_size_offset, int) \
1227 static_field(java_lang_Class, static_oop_field_count_offset, int) \
1228 \
1229 /************************/ \
1230 /* Miscellaneous fields */ \
1231 /************************/ \
1232 \
1233 nonstatic_field(CompileTask, _method, jobject) \
1234 nonstatic_field(CompileTask, _osr_bci, int) \
1235 nonstatic_field(CompileTask, _comp_level, int) \
1236 nonstatic_field(CompileTask, _compile_id, uint) \
1237 nonstatic_field(CompileTask, _next, CompileTask*) \
1238 nonstatic_field(CompileTask, _prev, CompileTask*) \
1239 \
1240 nonstatic_field(vframeArray, _next, vframeArray*) \
1241 nonstatic_field(vframeArray, _original, frame) \
1242 nonstatic_field(vframeArray, _caller, frame) \
1243 nonstatic_field(vframeArray, _frames, int) \
1244 \
1245 nonstatic_field(vframeArrayElement, _frame, frame) \
1246 nonstatic_field(vframeArrayElement, _bci, int) \
1247 nonstatic_field(vframeArrayElement, _method, methodOop) \
1248 \
1249 nonstatic_field(AccessFlags, _flags, jint) \
1250 nonstatic_field(elapsedTimer, _counter, jlong) \
1251 nonstatic_field(elapsedTimer, _active, bool) \
1252 nonstatic_field(InvocationCounter, _counter, unsigned int)
1253
1254 /* NOTE that we do not use the last_entry() macro here; it is used */
1255 /* in vmStructs_<os>_<cpu>.hpp's VM_STRUCTS_OS_CPU macro (and must */
1256 /* be present there) */
1257
1258 //--------------------------------------------------------------------------------
1259 // VM_TYPES
1260 //
1261 // This list must enumerate at least all of the types in the above
1262 // list. For the types in the above list, the entry below must have
1263 // exactly the same spacing since string comparisons are done in the
1264 // code which verifies the consistency of these tables (in the debug
1265 // build).
1266 //
1267 // In addition to the above types, this list is required to enumerate
1268 // the JNI's java types, which are used to indicate the size of Java
1312 /*************************************************************/ \
1313 \
1314 declare_toplevel_type(jboolean) \
1315 declare_toplevel_type(jbyte) \
1316 declare_toplevel_type(jchar) \
1317 declare_toplevel_type(jdouble) \
1318 declare_toplevel_type(jfloat) \
1319 declare_toplevel_type(jint) \
1320 declare_toplevel_type(jlong) \
1321 declare_toplevel_type(jshort) \
1322 \
1323 /*********************************************************************/ \
1324 /* C integer types. User-defined typedefs (like "size_t" or */ \
1325 /* "intptr_t") are guaranteed to be present with the same names over */ \
1326 /* in the SA's type database. Names like "unsigned short" are not */ \
1327 /* guaranteed to be visible through the SA's type database lookup */ \
1328 /* mechanism, though they will have a Type object created for them */ \
1329 /* and are valid types for Fields. */ \
1330 /*********************************************************************/ \
1331 declare_integer_type(bool) \
1332 declare_integer_type(short) \
1333 declare_integer_type(int) \
1334 declare_integer_type(long) \
1335 declare_integer_type(char) \
1336 declare_unsigned_integer_type(unsigned char) \
1337 declare_unsigned_integer_type(u_char) \
1338 declare_unsigned_integer_type(unsigned int) \
1339 declare_unsigned_integer_type(uint) \
1340 declare_unsigned_integer_type(unsigned short) \
1341 declare_unsigned_integer_type(unsigned long) \
1342 /* The compiler thinks this is a different type than */ \
1343 /* unsigned short on Win32 */ \
1344 declare_unsigned_integer_type(u2) \
1345 declare_unsigned_integer_type(unsigned) \
1346 \
1347 /*****************************/ \
1348 /* C primitive pointer types */ \
1349 /*****************************/ \
1350 \
1351 declare_toplevel_type(int*) \
1352 declare_toplevel_type(char*) \
1353 declare_toplevel_type(char**) \
1354 declare_toplevel_type(u_char*) \
1355 declare_toplevel_type(unsigned char*) \
1356 \
1357 /*******************************************************************/ \
1358 /* Types which it will be handy to have available over in the SA */ \
1359 /* in order to do platform-independent address -> integer coercion */ \
1360 /* (note: these will be looked up by name) */ \
1361 /*******************************************************************/ \
1362 \
1363 declare_unsigned_integer_type(size_t) \
1364 declare_integer_type(ssize_t) \
1365 declare_integer_type(intx) \
1366 declare_integer_type(intptr_t) \
1367 declare_unsigned_integer_type(uintx) \
1368 declare_unsigned_integer_type(uintptr_t) \
1369 declare_unsigned_integer_type(uint32_t) \
1370 declare_unsigned_integer_type(uint64_t) \
1371 \
1372 /*******************************************************************************/ \
1373 /* OopDesc and Klass hierarchies (NOTE: missing methodDataOop-related classes) */ \
1374 /*******************************************************************************/ \
1375 \
1376 declare_toplevel_type(oopDesc) \
1377 declare_toplevel_type(Klass_vtbl) \
1378 declare_type(Klass, Klass_vtbl) \
1379 declare_type(arrayKlass, Klass) \
1380 declare_type(arrayKlassKlass, klassKlass) \
1381 declare_type(arrayOopDesc, oopDesc) \
1382 declare_type(compiledICHolderKlass, Klass) \
1383 declare_type(compiledICHolderOopDesc, oopDesc) \
1384 declare_type(constantPoolKlass, Klass) \
1385 declare_type(constantPoolOopDesc, oopDesc) \
1386 declare_type(constantPoolCacheKlass, Klass) \
1387 declare_type(constantPoolCacheOopDesc, oopDesc) \
1388 declare_type(instanceKlass, Klass) \
1389 declare_type(instanceKlassKlass, klassKlass) \
1390 declare_type(instanceOopDesc, oopDesc) \
1391 declare_type(instanceMirrorKlass, instanceKlass) \
1392 declare_type(instanceRefKlass, instanceKlass) \
1393 declare_type(klassKlass, Klass) \
1394 declare_type(klassOopDesc, oopDesc) \
1395 declare_type(markOopDesc, oopDesc) \
1396 declare_type(methodDataKlass, Klass) \
1397 declare_type(methodDataOopDesc, oopDesc) \
1398 declare_type(methodKlass, Klass) \
1399 declare_type(constMethodKlass, Klass) \
1400 declare_type(methodOopDesc, oopDesc) \
1401 declare_type(objArrayKlass, arrayKlass) \
1402 declare_type(objArrayKlassKlass, arrayKlassKlass) \
1403 declare_type(objArrayOopDesc, arrayOopDesc) \
1404 declare_type(constMethodOopDesc, oopDesc) \
1405 declare_type(typeArrayKlass, arrayKlass) \
1406 declare_type(typeArrayKlassKlass, arrayKlassKlass) \
1407 declare_type(typeArrayOopDesc, arrayOopDesc) \
1408 declare_toplevel_type(Symbol) \
1409 declare_toplevel_type(Symbol*) \
1410 \
1411 declare_toplevel_type(nmethodBucket) \
1412 \
1413 /********/ \
1414 /* Oops */ \
1415 /********/ \
1416 \
1417 declare_oop_type(constantPoolOop) \
1418 declare_oop_type(constantPoolCacheOop) \
1419 declare_oop_type(klassOop) \
1420 declare_oop_type(markOop) \
1421 declare_oop_type(methodOop) \
1422 declare_oop_type(methodDataOop) \
1423 declare_oop_type(objArrayOop) \
1424 declare_oop_type(oop) \
1425 declare_oop_type(narrowOop) \
1426 declare_oop_type(wideKlassOop) \
1427 declare_oop_type(constMethodOop) \
1428 declare_oop_type(typeArrayOop) \
1429 \
1430 /*************************************/ \
1431 /* MethodOop-related data structures */ \
1432 /*************************************/ \
1460 declare_type(CompactingPermGen, PermGen) \
1461 declare_toplevel_type(BarrierSet) \
1462 declare_type(ModRefBarrierSet, BarrierSet) \
1463 declare_type(CardTableModRefBS, ModRefBarrierSet) \
1464 declare_type(CardTableModRefBSForCTRS, CardTableModRefBS) \
1465 declare_toplevel_type(GenRemSet) \
1466 declare_type(CardTableRS, GenRemSet) \
1467 declare_toplevel_type(BlockOffsetSharedArray) \
1468 declare_toplevel_type(BlockOffsetTable) \
1469 declare_type(BlockOffsetArray, BlockOffsetTable) \
1470 declare_type(BlockOffsetArrayContigSpace, BlockOffsetArray) \
1471 declare_type(BlockOffsetArrayNonContigSpace, BlockOffsetArray) \
1472 \
1473 /* Miscellaneous other GC types */ \
1474 \
1475 declare_toplevel_type(ageTable) \
1476 declare_toplevel_type(Generation::StatRecord) \
1477 declare_toplevel_type(GenerationSpec) \
1478 declare_toplevel_type(HeapWord) \
1479 declare_toplevel_type(MemRegion) \
1480 declare_toplevel_type(PermanentGenerationSpec) \
1481 declare_toplevel_type(ThreadLocalAllocBuffer) \
1482 declare_toplevel_type(VirtualSpace) \
1483 declare_toplevel_type(WaterMark) \
1484 \
1485 /* Pointers to Garbage Collection types */ \
1486 \
1487 declare_toplevel_type(BarrierSet*) \
1488 declare_toplevel_type(BlockOffsetSharedArray*) \
1489 declare_toplevel_type(GenRemSet*) \
1490 declare_toplevel_type(CardTableRS*) \
1491 declare_toplevel_type(CardTableModRefBS*) \
1492 declare_toplevel_type(CardTableModRefBS**) \
1493 declare_toplevel_type(CardTableModRefBSForCTRS*) \
1494 declare_toplevel_type(CardTableModRefBSForCTRS**) \
1495 declare_toplevel_type(CollectedHeap*) \
1496 declare_toplevel_type(ContiguousSpace*) \
1497 declare_toplevel_type(DefNewGeneration*) \
1498 declare_toplevel_type(EdenSpace*) \
1499 declare_toplevel_type(GenCollectedHeap*) \
1520 /* SymbolTable, SystemDictionary */ \
1521 /*********************************/ \
1522 \
1523 declare_toplevel_type(BasicHashtable) \
1524 declare_type(Hashtable<intptr_t>, BasicHashtable) \
1525 declare_type(SymbolTable, Hashtable<Symbol*>) \
1526 declare_type(StringTable, Hashtable<oop>) \
1527 declare_type(LoaderConstraintTable, Hashtable<klassOop>) \
1528 declare_type(TwoOopHashtable<klassOop>, Hashtable<klassOop>) \
1529 declare_type(Dictionary, TwoOopHashtable<klassOop>) \
1530 declare_type(PlaceholderTable, TwoOopHashtable<Symbol*>) \
1531 declare_toplevel_type(BasicHashtableEntry) \
1532 declare_type(HashtableEntry<intptr_t>, BasicHashtableEntry) \
1533 declare_type(DictionaryEntry, HashtableEntry<klassOop>) \
1534 declare_type(PlaceholderEntry, HashtableEntry<Symbol*>) \
1535 declare_type(LoaderConstraintEntry, HashtableEntry<klassOop>) \
1536 declare_toplevel_type(HashtableBucket) \
1537 declare_toplevel_type(SystemDictionary) \
1538 declare_toplevel_type(ProtectionDomainEntry) \
1539 \
1540 declare_toplevel_type(GenericGrowableArray) \
1541 declare_toplevel_type(GrowableArray<int>) \
1542 declare_toplevel_type(Arena) \
1543 declare_type(ResourceArea, Arena) \
1544 declare_toplevel_type(Chunk) \
1545 \
1546 /***********************************************************/ \
1547 /* Thread hierarchy (needed for run-time type information) */ \
1548 /***********************************************************/ \
1549 \
1550 declare_toplevel_type(Threads) \
1551 declare_toplevel_type(ThreadShadow) \
1552 declare_type(Thread, ThreadShadow) \
1553 declare_type(NamedThread, Thread) \
1554 declare_type(WatcherThread, Thread) \
1555 declare_type(JavaThread, Thread) \
1556 declare_type(JvmtiAgentThread, JavaThread) \
1557 declare_type(ServiceThread, JavaThread) \
1558 declare_type(CompilerThread, JavaThread) \
1559 declare_toplevel_type(OSThread) \
1560 declare_toplevel_type(JavaFrameAnchor) \
1561 \
1562 /***************/ \
1563 /* Interpreter */ \
1564 /***************/ \
1565 \
1604 X86_ONLY(declare_toplevel_type(MethodHandles::RicochetFrame)) \
1605 \
1606 declare_toplevel_type(CodeBlob) \
1607 declare_type(BufferBlob, CodeBlob) \
1608 declare_type(AdapterBlob, BufferBlob) \
1609 declare_type(MethodHandlesAdapterBlob, BufferBlob) \
1610 declare_type(nmethod, CodeBlob) \
1611 declare_type(RuntimeStub, CodeBlob) \
1612 declare_type(SingletonBlob, CodeBlob) \
1613 declare_type(SafepointBlob, SingletonBlob) \
1614 declare_type(DeoptimizationBlob, SingletonBlob) \
1615 declare_type(RicochetBlob, SingletonBlob) \
1616 declare_c2_type(ExceptionBlob, SingletonBlob) \
1617 declare_c2_type(UncommonTrapBlob, CodeBlob) \
1618 \
1619 /***************************************/ \
1620 /* PcDesc and other compiled code info */ \
1621 /***************************************/ \
1622 \
1623 declare_toplevel_type(PcDesc) \
1624 declare_toplevel_type(ExceptionCache) \
1625 declare_toplevel_type(PcDescCache) \
1626 declare_toplevel_type(Dependencies) \
1627 declare_toplevel_type(CompileTask) \
1628 declare_toplevel_type(Deoptimization) \
1629 \
1630 /************************/ \
1631 /* OopMap and OopMapSet */ \
1632 /************************/ \
1633 \
1634 declare_toplevel_type(OopMap) \
1635 declare_toplevel_type(OopMapSet) \
1636 \
1637 /********************/ \
1638 /* CompressedStream */ \
1639 /********************/ \
1640 \
1641 declare_toplevel_type(CompressedStream) \
1642 \
1643 /**************/ \
1644 /* VMRegImpl */ \
1645 /**************/ \
1646 \
1647 declare_toplevel_type(VMRegImpl) \
1648 \
1649 /*********************************/ \
1650 /* JNIHandles and JNIHandleBlock */ \
1651 /*********************************/ \
1652 \
1653 declare_toplevel_type(JNIHandles) \
1654 declare_toplevel_type(JNIHandleBlock) \
1655 declare_toplevel_type(jobject) \
1656 \
1657 /**********************/ \
1658 /* Runtime1 (C1 only) */ \
1659 /**********************/ \
1660 \
1661 declare_c1_toplevel_type(Runtime1) \
1662 \
1663 /************/ \
1664 /* Monitors */ \
1665 /************/ \
1666 \
1667 declare_toplevel_type(ObjectMonitor) \
1668 declare_toplevel_type(ObjectSynchronizer) \
1669 declare_toplevel_type(BasicLock) \
1670 declare_toplevel_type(BasicObjectLock) \
1671 \
1672 /*********************/ \
1673 /* Matcher (C2 only) */ \
1674 /*********************/ \
1675 \
1676 declare_c2_toplevel_type(Matcher) \
1677 declare_c2_toplevel_type(Compile) \
1678 declare_c2_toplevel_type(InlineTree) \
1679 declare_c2_toplevel_type(OptoRegPair) \
1680 declare_c2_toplevel_type(JVMState) \
1681 declare_c2_toplevel_type(Phase) \
1682 declare_c2_type(PhaseCFG, Phase) \
1683 declare_c2_type(PhaseRegAlloc, Phase) \
1684 declare_c2_type(PhaseChaitin, PhaseRegAlloc) \
1685 declare_c2_toplevel_type(CFGElement) \
1686 declare_c2_type(Block, CFGElement) \
1687 declare_c2_toplevel_type(Block_Array) \
1688 declare_c2_type(Block_List, Block_Array) \
1689 declare_c2_toplevel_type(Node_Array) \
1690 declare_c2_type(Node_List, Node_Array) \
1691 declare_c2_type(Unique_Node_List, Node_List) \
1692 declare_c2_toplevel_type(Node) \
1693 declare_c2_type(AddNode, Node) \
1694 declare_c2_type(AddINode, AddNode) \
1695 declare_c2_type(AddLNode, AddNode) \
1696 declare_c2_type(AddFNode, AddNode) \
1697 declare_c2_type(AddDNode, AddNode) \
1698 declare_c2_type(AddPNode, Node) \
1699 declare_c2_type(OrINode, AddNode) \
1700 declare_c2_type(OrLNode, AddNode) \
1701 declare_c2_type(XorINode, AddNode) \
1702 declare_c2_type(XorLNode, AddNode) \
1703 declare_c2_type(MaxNode, AddNode) \
1704 declare_c2_type(MaxINode, MaxNode) \
1705 declare_c2_type(MinINode, MaxNode) \
1706 declare_c2_type(StartNode, MultiNode) \
1707 declare_c2_type(StartOSRNode, StartNode) \
1708 declare_c2_type(ParmNode, ProjNode) \
1709 declare_c2_type(ReturnNode, Node) \
1710 declare_c2_type(RethrowNode, Node) \
1711 declare_c2_type(TailCallNode, ReturnNode) \
1712 declare_c2_type(TailJumpNode, ReturnNode) \
1713 declare_c2_type(SafePointNode, MultiNode) \
1714 declare_c2_type(CallNode, SafePointNode) \
1715 declare_c2_type(CallJavaNode, CallNode) \
1716 declare_c2_type(CallStaticJavaNode, CallJavaNode) \
1717 declare_c2_type(CallDynamicJavaNode, CallJavaNode) \
1718 declare_c2_type(CallRuntimeNode, CallNode) \
1719 declare_c2_type(CallLeafNode, CallRuntimeNode) \
1720 declare_c2_type(CallLeafNoFPNode, CallLeafNode) \
1721 declare_c2_type(AllocateNode, CallNode) \
1722 declare_c2_type(AllocateArrayNode, AllocateNode) \
1723 declare_c2_type(LockNode, AbstractLockNode) \
1724 declare_c2_type(UnlockNode, AbstractLockNode) \
1725 declare_c2_type(FastLockNode, CmpNode) \
1726 declare_c2_type(FastUnlockNode, CmpNode) \
1727 declare_c2_type(RegionNode, Node) \
1728 declare_c2_type(JProjNode, ProjNode) \
1729 declare_c2_type(PhiNode, TypeNode) \
1730 declare_c2_type(GotoNode, Node) \
1731 declare_c2_type(CProjNode, ProjNode) \
1732 declare_c2_type(MultiBranchNode, MultiNode) \
1733 declare_c2_type(IfNode, MultiBranchNode) \
1734 declare_c2_type(IfTrueNode, CProjNode) \
1735 declare_c2_type(IfFalseNode, CProjNode) \
1736 declare_c2_type(PCTableNode, MultiBranchNode) \
1737 declare_c2_type(JumpNode, PCTableNode) \
1738 declare_c2_type(JumpProjNode, JProjNode) \
1739 declare_c2_type(CatchNode, PCTableNode) \
1740 declare_c2_type(CatchProjNode, CProjNode) \
1741 declare_c2_type(CreateExNode, TypeNode) \
1742 declare_c2_type(ClearArrayNode, Node) \
1743 declare_c2_type(NeverBranchNode, MultiBranchNode) \
1744 declare_c2_type(ConNode, TypeNode) \
1745 declare_c2_type(ConINode, ConNode) \
1746 declare_c2_type(ConPNode, ConNode) \
1747 declare_c2_type(ConNNode, ConNode) \
1748 declare_c2_type(ConLNode, ConNode) \
1749 declare_c2_type(ConFNode, ConNode) \
1750 declare_c2_type(ConDNode, ConNode) \
1751 declare_c2_type(BinaryNode, Node) \
1752 declare_c2_type(CMoveNode, TypeNode) \
1753 declare_c2_type(CMoveDNode, CMoveNode) \
1754 declare_c2_type(CMoveFNode, CMoveNode) \
1755 declare_c2_type(CMoveINode, CMoveNode) \
1756 declare_c2_type(CMoveLNode, CMoveNode) \
1757 declare_c2_type(CMovePNode, CMoveNode) \
1758 declare_c2_type(CMoveNNode, CMoveNode) \
1759 declare_c2_type(EncodePNode, TypeNode) \
1760 declare_c2_type(DecodeNNode, TypeNode) \
1761 declare_c2_type(ConstraintCastNode, TypeNode) \
1762 declare_c2_type(CastIINode, ConstraintCastNode) \
1763 declare_c2_type(CastPPNode, ConstraintCastNode) \
1764 declare_c2_type(CheckCastPPNode, TypeNode) \
1765 declare_c2_type(Conv2BNode, Node) \
1766 declare_c2_type(ConvD2FNode, Node) \
1767 declare_c2_type(ConvD2INode, Node) \
1768 declare_c2_type(ConvD2LNode, Node) \
1769 declare_c2_type(ConvF2DNode, Node) \
1770 declare_c2_type(ConvF2INode, Node) \
1771 declare_c2_type(ConvF2LNode, Node) \
1772 declare_c2_type(ConvI2DNode, Node) \
1773 declare_c2_type(ConvI2FNode, Node) \
1774 declare_c2_type(ConvI2LNode, TypeNode) \
1775 declare_c2_type(ConvL2DNode, Node) \
1776 declare_c2_type(ConvL2FNode, Node) \
1777 declare_c2_type(ConvL2INode, Node) \
1778 declare_c2_type(CastX2PNode, Node) \
1779 declare_c2_type(CastP2XNode, Node) \
1780 declare_c2_type(MemBarNode, MultiNode) \
1781 declare_c2_type(MemBarAcquireNode, MemBarNode) \
1782 declare_c2_type(MemBarReleaseNode, MemBarNode) \
1783 declare_c2_type(MemBarVolatileNode, MemBarNode) \
1784 declare_c2_type(MemBarCPUOrderNode, MemBarNode) \
1785 declare_c2_type(InitializeNode, MemBarNode) \
1786 declare_c2_type(ThreadLocalNode, Node) \
1787 declare_c2_type(Opaque1Node, Node) \
1788 declare_c2_type(Opaque2Node, Node) \
1789 declare_c2_type(PartialSubtypeCheckNode, Node) \
1790 declare_c2_type(MoveI2FNode, Node) \
1791 declare_c2_type(MoveL2DNode, Node) \
1792 declare_c2_type(MoveF2INode, Node) \
1793 declare_c2_type(MoveD2LNode, Node) \
1794 declare_c2_type(DivINode, Node) \
1795 declare_c2_type(DivLNode, Node) \
1796 declare_c2_type(DivFNode, Node) \
1797 declare_c2_type(DivDNode, Node) \
1798 declare_c2_type(ModINode, Node) \
1799 declare_c2_type(ModLNode, Node) \
1800 declare_c2_type(ModFNode, Node) \
1801 declare_c2_type(ModDNode, Node) \
1802 declare_c2_type(DivModNode, MultiNode) \
1803 declare_c2_type(DivModINode, DivModNode) \
1804 declare_c2_type(DivModLNode, DivModNode) \
1805 declare_c2_type(BoxLockNode, Node) \
1806 declare_c2_type(LoopNode, RegionNode) \
1807 declare_c2_type(CountedLoopNode, LoopNode) \
1808 declare_c2_type(CountedLoopEndNode, IfNode) \
1809 declare_c2_type(MachNode, Node) \
1810 declare_c2_type(MachIdealNode, MachNode) \
1811 declare_c2_type(MachTypeNode, MachNode) \
1812 declare_c2_type(MachBreakpointNode, MachIdealNode) \
1813 declare_c2_type(MachUEPNode, MachIdealNode) \
1814 declare_c2_type(MachPrologNode, MachIdealNode) \
1815 declare_c2_type(MachEpilogNode, MachIdealNode) \
1816 declare_c2_type(MachNopNode, MachIdealNode) \
1817 declare_c2_type(MachSpillCopyNode, MachIdealNode) \
1818 declare_c2_type(MachNullCheckNode, MachIdealNode) \
1819 declare_c2_type(MachProjNode, ProjNode) \
1820 declare_c2_type(MachIfNode, MachNode) \
1821 declare_c2_type(MachFastLockNode, MachNode) \
1822 declare_c2_type(MachReturnNode, MachNode) \
1823 declare_c2_type(MachSafePointNode, MachReturnNode) \
1824 declare_c2_type(MachCallNode, MachSafePointNode) \
1825 declare_c2_type(MachCallJavaNode, MachCallNode) \
1826 declare_c2_type(MachCallStaticJavaNode, MachCallJavaNode) \
1827 declare_c2_type(MachCallDynamicJavaNode, MachCallJavaNode) \
1828 declare_c2_type(MachCallRuntimeNode, MachCallNode) \
1829 declare_c2_type(MachHaltNode, MachReturnNode) \
1830 declare_c2_type(MachTempNode, MachNode) \
1831 declare_c2_type(MemNode, Node) \
1832 declare_c2_type(MergeMemNode, Node) \
1833 declare_c2_type(LoadNode, MemNode) \
1834 declare_c2_type(LoadBNode, LoadNode) \
1835 declare_c2_type(LoadUSNode, LoadNode) \
1836 declare_c2_type(LoadINode, LoadNode) \
1837 declare_c2_type(LoadRangeNode, LoadINode) \
1838 declare_c2_type(LoadLNode, LoadNode) \
1839 declare_c2_type(LoadL_unalignedNode, LoadLNode) \
1840 declare_c2_type(LoadFNode, LoadNode) \
1841 declare_c2_type(LoadDNode, LoadNode) \
1842 declare_c2_type(LoadD_unalignedNode, LoadDNode) \
1843 declare_c2_type(LoadPNode, LoadNode) \
1844 declare_c2_type(LoadNNode, LoadNode) \
1845 declare_c2_type(LoadKlassNode, LoadPNode) \
1846 declare_c2_type(LoadNKlassNode, LoadNNode) \
1847 declare_c2_type(LoadSNode, LoadNode) \
1848 declare_c2_type(StoreNode, MemNode) \
1849 declare_c2_type(StoreBNode, StoreNode) \
1850 declare_c2_type(StoreCNode, StoreNode) \
1851 declare_c2_type(StoreINode, StoreNode) \
1852 declare_c2_type(StoreLNode, StoreNode) \
1853 declare_c2_type(StoreFNode, StoreNode) \
1854 declare_c2_type(StoreDNode, StoreNode) \
1855 declare_c2_type(StorePNode, StoreNode) \
1856 declare_c2_type(StoreNNode, StoreNode) \
1857 declare_c2_type(StoreCMNode, StoreNode) \
1858 declare_c2_type(LoadPLockedNode, LoadPNode) \
1859 declare_c2_type(LoadLLockedNode, LoadLNode) \
1860 declare_c2_type(SCMemProjNode, ProjNode) \
1861 declare_c2_type(LoadStoreNode, Node) \
1862 declare_c2_type(StorePConditionalNode, LoadStoreNode) \
1863 declare_c2_type(StoreLConditionalNode, LoadStoreNode) \
1864 declare_c2_type(CompareAndSwapLNode, LoadStoreNode) \
1865 declare_c2_type(CompareAndSwapINode, LoadStoreNode) \
1866 declare_c2_type(CompareAndSwapPNode, LoadStoreNode) \
1867 declare_c2_type(CompareAndSwapNNode, LoadStoreNode) \
1868 declare_c2_type(PrefetchReadNode, Node) \
1869 declare_c2_type(PrefetchWriteNode, Node) \
1870 declare_c2_type(MulNode, Node) \
1871 declare_c2_type(MulINode, MulNode) \
1872 declare_c2_type(MulLNode, MulNode) \
1873 declare_c2_type(MulFNode, MulNode) \
1874 declare_c2_type(MulDNode, MulNode) \
1875 declare_c2_type(MulHiLNode, Node) \
1876 declare_c2_type(AndINode, MulINode) \
1877 declare_c2_type(AndLNode, MulLNode) \
1878 declare_c2_type(LShiftINode, Node) \
1879 declare_c2_type(LShiftLNode, Node) \
1880 declare_c2_type(RShiftINode, Node) \
1881 declare_c2_type(RShiftLNode, Node) \
1882 declare_c2_type(URShiftINode, Node) \
1883 declare_c2_type(URShiftLNode, Node) \
1884 declare_c2_type(MultiNode, Node) \
1885 declare_c2_type(ProjNode, Node) \
1886 declare_c2_type(TypeNode, Node) \
1887 declare_c2_type(NodeHash, StackObj) \
1888 declare_c2_type(RootNode, LoopNode) \
1889 declare_c2_type(HaltNode, Node) \
1890 declare_c2_type(SubNode, Node) \
1891 declare_c2_type(SubINode, SubNode) \
1892 declare_c2_type(SubLNode, SubNode) \
1893 declare_c2_type(SubFPNode, SubNode) \
1894 declare_c2_type(SubFNode, SubFPNode) \
1895 declare_c2_type(SubDNode, SubFPNode) \
1896 declare_c2_type(CmpNode, SubNode) \
1897 declare_c2_type(CmpINode, CmpNode) \
1898 declare_c2_type(CmpUNode, CmpNode) \
1899 declare_c2_type(CmpPNode, CmpNode) \
1900 declare_c2_type(CmpNNode, CmpNode) \
1901 declare_c2_type(CmpLNode, CmpNode) \
1902 declare_c2_type(CmpL3Node, CmpLNode) \
1903 declare_c2_type(CmpFNode, CmpNode) \
1904 declare_c2_type(CmpF3Node, CmpFNode) \
1905 declare_c2_type(CmpDNode, CmpNode) \
1906 declare_c2_type(CmpD3Node, CmpDNode) \
1907 declare_c2_type(BoolNode, Node) \
1908 declare_c2_type(AbsNode, Node) \
1909 declare_c2_type(AbsINode, AbsNode) \
1910 declare_c2_type(AbsFNode, AbsNode) \
1911 declare_c2_type(AbsDNode, AbsNode) \
1912 declare_c2_type(CmpLTMaskNode, Node) \
1913 declare_c2_type(NegNode, Node) \
1914 declare_c2_type(NegFNode, NegNode) \
1915 declare_c2_type(NegDNode, NegNode) \
1916 declare_c2_type(CosDNode, Node) \
1917 declare_c2_type(SinDNode, Node) \
1918 declare_c2_type(TanDNode, Node) \
1919 declare_c2_type(AtanDNode, Node) \
1920 declare_c2_type(SqrtDNode, Node) \
1921 declare_c2_type(ExpDNode, Node) \
1922 declare_c2_type(LogDNode, Node) \
1923 declare_c2_type(Log10DNode, Node) \
1924 declare_c2_type(PowDNode, Node) \
1925 declare_c2_type(ReverseBytesINode, Node) \
1926 declare_c2_type(ReverseBytesLNode, Node) \
1927 declare_c2_type(VectorNode, Node) \
1928 declare_c2_type(AddVBNode, VectorNode) \
1929 declare_c2_type(AddVCNode, VectorNode) \
1930 declare_c2_type(AddVSNode, VectorNode) \
1931 declare_c2_type(AddVINode, VectorNode) \
1932 declare_c2_type(AddVLNode, VectorNode) \
1933 declare_c2_type(AddVFNode, VectorNode) \
1934 declare_c2_type(AddVDNode, VectorNode) \
1935 declare_c2_type(SubVBNode, VectorNode) \
1936 declare_c2_type(SubVCNode, VectorNode) \
1937 declare_c2_type(SubVSNode, VectorNode) \
1938 declare_c2_type(SubVINode, VectorNode) \
1939 declare_c2_type(SubVLNode, VectorNode) \
1940 declare_c2_type(SubVFNode, VectorNode) \
1941 declare_c2_type(SubVDNode, VectorNode) \
1942 declare_c2_type(MulVFNode, VectorNode) \
1943 declare_c2_type(MulVDNode, VectorNode) \
1944 declare_c2_type(DivVFNode, VectorNode) \
1945 declare_c2_type(DivVDNode, VectorNode) \
1946 declare_c2_type(LShiftVBNode, VectorNode) \
1947 declare_c2_type(LShiftVCNode, VectorNode) \
1948 declare_c2_type(LShiftVSNode, VectorNode) \
1949 declare_c2_type(LShiftVINode, VectorNode) \
1950 declare_c2_type(URShiftVBNode, VectorNode) \
1951 declare_c2_type(URShiftVCNode, VectorNode) \
1952 declare_c2_type(URShiftVSNode, VectorNode) \
1953 declare_c2_type(URShiftVINode, VectorNode) \
1954 declare_c2_type(AndVNode, VectorNode) \
1955 declare_c2_type(OrVNode, VectorNode) \
1956 declare_c2_type(XorVNode, VectorNode) \
1957 declare_c2_type(VectorLoadNode, LoadNode) \
1958 declare_c2_type(Load16BNode, VectorLoadNode) \
1959 declare_c2_type(Load8BNode, VectorLoadNode) \
1960 declare_c2_type(Load4BNode, VectorLoadNode) \
1961 declare_c2_type(Load8CNode, VectorLoadNode) \
1962 declare_c2_type(Load4CNode, VectorLoadNode) \
1963 declare_c2_type(Load2CNode, VectorLoadNode) \
1964 declare_c2_type(Load8SNode, VectorLoadNode) \
1965 declare_c2_type(Load4SNode, VectorLoadNode) \
1966 declare_c2_type(Load2SNode, VectorLoadNode) \
1967 declare_c2_type(Load4INode, VectorLoadNode) \
1968 declare_c2_type(Load2INode, VectorLoadNode) \
1969 declare_c2_type(Load2LNode, VectorLoadNode) \
1970 declare_c2_type(Load4FNode, VectorLoadNode) \
1971 declare_c2_type(Load2FNode, VectorLoadNode) \
1972 declare_c2_type(Load2DNode, VectorLoadNode) \
1973 declare_c2_type(VectorStoreNode, StoreNode) \
1974 declare_c2_type(Store16BNode, VectorStoreNode) \
1975 declare_c2_type(Store8BNode, VectorStoreNode) \
1976 declare_c2_type(Store4BNode, VectorStoreNode) \
1977 declare_c2_type(Store8CNode, VectorStoreNode) \
1978 declare_c2_type(Store4CNode, VectorStoreNode) \
1979 declare_c2_type(Store2CNode, VectorStoreNode) \
1980 declare_c2_type(Store4INode, VectorStoreNode) \
1981 declare_c2_type(Store2INode, VectorStoreNode) \
1982 declare_c2_type(Store2LNode, VectorStoreNode) \
1983 declare_c2_type(Store4FNode, VectorStoreNode) \
1984 declare_c2_type(Store2FNode, VectorStoreNode) \
1985 declare_c2_type(Store2DNode, VectorStoreNode) \
1986 declare_c2_type(Replicate16BNode, VectorNode) \
1987 declare_c2_type(Replicate8BNode, VectorNode) \
1988 declare_c2_type(Replicate4BNode, VectorNode) \
1989 declare_c2_type(Replicate8CNode, VectorNode) \
1990 declare_c2_type(Replicate4CNode, VectorNode) \
1991 declare_c2_type(Replicate2CNode, VectorNode) \
1992 declare_c2_type(Replicate8SNode, VectorNode) \
1993 declare_c2_type(Replicate4SNode, VectorNode) \
1994 declare_c2_type(Replicate2SNode, VectorNode) \
1995 declare_c2_type(Replicate4INode, VectorNode) \
1996 declare_c2_type(Replicate2INode, VectorNode) \
1997 declare_c2_type(Replicate2LNode, VectorNode) \
1998 declare_c2_type(Replicate4FNode, VectorNode) \
1999 declare_c2_type(Replicate2FNode, VectorNode) \
2000 declare_c2_type(Replicate2DNode, VectorNode) \
2001 declare_c2_type(PackNode, VectorNode) \
2002 declare_c2_type(PackBNode, PackNode) \
2003 declare_c2_type(PackCNode, PackNode) \
2004 declare_c2_type(PackSNode, PackNode) \
2005 declare_c2_type(PackINode, PackNode) \
2006 declare_c2_type(PackLNode, PackNode) \
2007 declare_c2_type(PackFNode, PackNode) \
2008 declare_c2_type(PackDNode, PackNode) \
2009 declare_c2_type(Pack2x1BNode, PackNode) \
2010 declare_c2_type(Pack2x2BNode, PackNode) \
2011 declare_c2_type(ExtractNode, Node) \
2012 declare_c2_type(ExtractBNode, ExtractNode) \
2013 declare_c2_type(ExtractCNode, ExtractNode) \
2014 declare_c2_type(ExtractSNode, ExtractNode) \
2015 declare_c2_type(ExtractINode, ExtractNode) \
2016 declare_c2_type(ExtractLNode, ExtractNode) \
2017 declare_c2_type(ExtractFNode, ExtractNode) \
2018 declare_c2_type(ExtractDNode, ExtractNode) \
2019 \
2020 /*********************/ \
2021 /* Adapter Blob Entries */ \
2022 /*********************/ \
2023 declare_toplevel_type(AdapterHandlerEntry) \
2024 declare_toplevel_type(AdapterHandlerEntry*) \
2025 \
2026 /*********************/ \
2027 /* CI */ \
2028 /*********************/ \
2029 declare_toplevel_type(ciEnv) \
2030 declare_toplevel_type(ciObjectFactory) \
2031 declare_toplevel_type(ciConstant) \
2032 declare_toplevel_type(ciField) \
2033 declare_toplevel_type(void*) \
2034 declare_toplevel_type(ciObject) \
2035 declare_type(ciMethod, ciObject) \
2036 declare_type(ciMethodData, ciObject) \
2037 declare_type(ciType, ciObject) \
2038 declare_type(ciInstance, ciObject) \
2039 declare_toplevel_type(ciSymbol) \
2040 declare_type(ciKlass, ciType) \
2041 declare_type(ciInstanceKlass, ciKlass) \
2042 declare_type(ciArrayKlass, ciKlass) \
2043 declare_type(ciTypeArrayKlass, ciArrayKlass) \
2044 declare_type(ciObjArrayKlass, ciArrayKlass) \
2045 declare_type(ciMethodKlass, ciKlass) \
2046 declare_type(ciKlassKlass, ciKlass) \
2047 declare_type(ciInstanceKlassKlass, ciKlassKlass) \
2048 declare_type(ciArrayKlassKlass, ciKlassKlass) \
2049 declare_type(ciTypeArrayKlassKlass, ciArrayKlassKlass) \
2050 declare_type(ciObjArrayKlassKlass, ciArrayKlassKlass) \
2051 \
2052 /********************/ \
2053 /* -XX flags */ \
2054 /********************/ \
2055 \
2056 declare_toplevel_type(Flag) \
2057 declare_toplevel_type(Flag*) \
2058 \
2059 /********************/ \
2060 /* JVMTI */ \
2061 /********************/ \
2062 \
2063 declare_toplevel_type(JvmtiExport) \
2064 \
2065 /********************/ \
2066 /* JDK/VM version */ \
2067 /********************/ \
2068 \
2069 declare_toplevel_type(Abstract_VM_Version) \
2070 declare_toplevel_type(JDK_Version) \
2071 \
2072 /*************/ \
2073 /* Arguments */ \
2074 /*************/ \
2075 \
2076 declare_toplevel_type(Arguments) \
2077 \
2078 /***************/ \
2079 /* Other types */ \
2080 /***************/ \
2081 \
2082 /* all enum types */ \
2083 \
2084 declare_integer_type(Bytecodes::Code) \
2085 declare_integer_type(Generation::Name) \
2086 declare_integer_type(instanceKlass::ClassState) \
2087 declare_integer_type(JavaThreadState) \
2088 declare_integer_type(Location::Type) \
2089 declare_integer_type(Location::Where) \
2090 declare_integer_type(PermGen::Name) \
2091 declare_integer_type(FlagValueOrigin) \
2092 COMPILER2_PRESENT(declare_integer_type(OptoReg::Name)) \
2093 \
2094 declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\
2095 declare_toplevel_type(address) /* FIXME: should this be an integer type? */\
2096 declare_integer_type(BasicType) /* FIXME: wrong type (not integer) */\
2097 declare_toplevel_type(BreakpointInfo) \
2098 declare_toplevel_type(BreakpointInfo*) \
2099 declare_toplevel_type(CodeBlob*) \
2100 declare_toplevel_type(CompressedWriteStream*) \
2101 declare_toplevel_type(ConstantPoolCacheEntry) \
2102 declare_toplevel_type(elapsedTimer) \
2103 declare_toplevel_type(frame) \
2104 declare_toplevel_type(intptr_t*) \
2105 declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \
2106 declare_toplevel_type(JavaThread*) \
2107 declare_toplevel_type(java_lang_Class) \
2108 declare_integer_type(JavaThread::AsyncRequests) \
2109 declare_toplevel_type(jbyte*) \
2110 declare_toplevel_type(jbyte**) \
2111 declare_toplevel_type(jint*) \
2112 declare_toplevel_type(jniIdMapBase*) \
2113 declare_unsigned_integer_type(juint) \
2114 declare_unsigned_integer_type(julong) \
2115 declare_toplevel_type(JNIHandleBlock*) \
2116 declare_toplevel_type(JNIid) \
2117 declare_toplevel_type(JNIid*) \
2118 declare_toplevel_type(jmethodID*) \
2119 declare_toplevel_type(Mutex*) \
2120 declare_toplevel_type(nmethod*) \
2121 COMPILER2_PRESENT(declare_unsigned_integer_type(node_idx_t)) \
2122 declare_toplevel_type(ObjectMonitor*) \
2123 declare_toplevel_type(oop*) \
2124 declare_toplevel_type(OopMap**) \
2125 declare_toplevel_type(OopMapCache*) \
2126 declare_toplevel_type(OopMapSet*) \
2127 declare_toplevel_type(VMReg) \
2128 declare_toplevel_type(OSThread*) \
2129 declare_integer_type(ReferenceType) \
2130 declare_toplevel_type(StubQueue*) \
2131 declare_toplevel_type(Thread*) \
2132 declare_toplevel_type(Universe) \
2133 declare_toplevel_type(vframeArray) \
2134 declare_toplevel_type(vframeArrayElement)
2135
2136
2137 /* NOTE that we do not use the last_entry() macro here; it is used */
2138 /* in vmStructs_<os>_<cpu>.hpp's VM_TYPES_OS_CPU macro (and must be */
2139 /* present there) */
2140
2141 //--------------------------------------------------------------------------------
2142 // VM_INT_CONSTANTS
2143 //
2144 // This table contains integer constants required over in the
2145 // serviceability agent. The "declare_constant" macro is used for all
2146 // enums, etc., while "declare_preprocessor_constant" must be used for
2147 // all #defined constants.
2148
2149 #define VM_INT_CONSTANTS(declare_constant, \
2150 declare_preprocessor_constant, \
2151 declare_c1_constant, \
2152 declare_c2_constant, \
2153 declare_c2_preprocessor_constant, \
2154 last_entry) \
2155 \
2156 /******************/ \
2415 declare_constant(Location::WHERE_MASK) \
2416 declare_constant(Location::WHERE_SHIFT) \
2417 \
2418 /* constants from Location::Type enum */ \
2419 \
2420 declare_constant(Location::normal) \
2421 declare_constant(Location::oop) \
2422 declare_constant(Location::narrowoop) \
2423 declare_constant(Location::int_in_long) \
2424 declare_constant(Location::lng) \
2425 declare_constant(Location::float_in_dbl) \
2426 declare_constant(Location::dbl) \
2427 declare_constant(Location::addr) \
2428 declare_constant(Location::invalid) \
2429 \
2430 /* constants from Location::Where enum */ \
2431 \
2432 declare_constant(Location::on_stack) \
2433 declare_constant(Location::in_register) \
2434 \
2435 declare_constant(Deoptimization::Reason_many) \
2436 declare_constant(Deoptimization::Reason_none) \
2437 declare_constant(Deoptimization::Reason_null_check) \
2438 declare_constant(Deoptimization::Reason_null_assert) \
2439 declare_constant(Deoptimization::Reason_range_check) \
2440 declare_constant(Deoptimization::Reason_class_check) \
2441 declare_constant(Deoptimization::Reason_array_check) \
2442 declare_constant(Deoptimization::Reason_intrinsic) \
2443 declare_constant(Deoptimization::Reason_bimorphic) \
2444 declare_constant(Deoptimization::Reason_unloaded) \
2445 declare_constant(Deoptimization::Reason_uninitialized) \
2446 declare_constant(Deoptimization::Reason_unreached) \
2447 declare_constant(Deoptimization::Reason_unhandled) \
2448 declare_constant(Deoptimization::Reason_constraint) \
2449 declare_constant(Deoptimization::Reason_div0_check) \
2450 declare_constant(Deoptimization::Reason_age) \
2451 declare_constant(Deoptimization::Reason_predicate) \
2452 declare_constant(Deoptimization::Reason_loop_limit_check) \
2453 declare_constant(Deoptimization::Reason_LIMIT) \
2454 declare_constant(Deoptimization::Reason_RECORDED_LIMIT) \
2455 \
2456 /*********************/ \
2457 /* Matcher (C2 only) */ \
2458 /*********************/ \
2459 \
2460 declare_c2_preprocessor_constant("Matcher::interpreter_frame_pointer_reg", Matcher::interpreter_frame_pointer_reg()) \
2461 \
2462 /*********************************************/ \
2463 /* MethodCompilation (globalDefinitions.hpp) */ \
2464 /*********************************************/ \
2465 \
2466 declare_constant(InvocationEntryBci) \
2467 declare_constant(InvalidOSREntryBci) \
2468 \
2469 /***************/ \
2470 /* OopMapValue */ \
2471 /***************/ \
2472 \
2473 declare_constant(OopMapValue::type_bits) \
2474 declare_constant(OopMapValue::register_bits) \
2475 declare_constant(OopMapValue::type_shift) \
3139 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsOopTypeOffset, VMTypeEntry, isOopType);
3140 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsIntegerTypeOffset, VMTypeEntry, isIntegerType);
3141 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsUnsignedOffset, VMTypeEntry, isUnsigned);
3142 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySizeOffset, VMTypeEntry, size);
3143 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMTypeEntryArrayStride,gHotSpotVMTypes);
3144 JNIEXPORT VMIntConstantEntry* gHotSpotVMIntConstants = VMStructs::localHotSpotVMIntConstants;
3145 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryNameOffset, VMIntConstantEntry, name);
3146 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryValueOffset, VMIntConstantEntry, value);
3147 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMIntConstantEntryArrayStride, gHotSpotVMIntConstants);
3148 JNIEXPORT VMLongConstantEntry* gHotSpotVMLongConstants = VMStructs::localHotSpotVMLongConstants;
3149 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryNameOffset, VMLongConstantEntry, name);
3150 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryValueOffset, VMLongConstantEntry, value);
3151 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLongConstants);
3152 }
3153
3154 #ifdef ASSERT
3155 static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool isRecurse) {
3156 {
3157 VMTypeEntry* types = origtypes;
3158 while (types->typeName != NULL) {
3159 if (strcmp(typeName, types->typeName) == 0) {
3160 // Found it
3161 return 1;
3162 }
3163 ++types;
3164 }
3165 }
3166 // Search for the base type by peeling off const and *
3167 size_t len = strlen(typeName);
3168 if (typeName[len-1] == '*') {
3169 char * s = new char[len];
3170 strncpy(s, typeName, len - 1);
3171 s[len-1] = '\0';
3172 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
3173 if (recursiveFindType(origtypes, s, true) == 1) {
3174 delete s;
3175 return 1;
3176 }
3177 delete s;
3178 }
3179 if (strstr(typeName, "GrowableArray<") == typeName) {
3180 const char * start = typeName + strlen("GrowableArray<");
3181 const char * end = strrchr(typeName, '>');
3182 int len = end - start + 1;
3183 char * s = new char[len];
3184 strncpy(s, start, len - 1);
3185 s[len-1] = '\0';
3186 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
|