1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/share/vm/runtime/vmStructs.cpp Wed Apr 27 01:25:04 2016 +0800 1.3 @@ -0,0 +1,3331 @@ 1.4 +/* 1.5 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 1.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.7 + * 1.8 + * This code is free software; you can redistribute it and/or modify it 1.9 + * under the terms of the GNU General Public License version 2 only, as 1.10 + * published by the Free Software Foundation. 1.11 + * 1.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 1.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1.15 + * version 2 for more details (a copy is included in the LICENSE file that 1.16 + * accompanied this code). 1.17 + * 1.18 + * You should have received a copy of the GNU General Public License version 1.19 + * 2 along with this work; if not, write to the Free Software Foundation, 1.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1.21 + * 1.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 1.23 + * or visit www.oracle.com if you need additional information or have any 1.24 + * questions. 1.25 + * 1.26 + */ 1.27 + 1.28 +#include "precompiled.hpp" 1.29 +#include "classfile/dictionary.hpp" 1.30 +#include "classfile/javaClasses.hpp" 1.31 +#include "classfile/loaderConstraints.hpp" 1.32 +#include "classfile/placeholders.hpp" 1.33 +#include "classfile/systemDictionary.hpp" 1.34 +#include "ci/ciField.hpp" 1.35 +#include "ci/ciInstance.hpp" 1.36 +#include "ci/ciObjArrayKlass.hpp" 1.37 +#include "ci/ciMethodData.hpp" 1.38 +#include "ci/ciSymbol.hpp" 1.39 +#include "code/codeBlob.hpp" 1.40 +#include "code/codeCache.hpp" 1.41 +#include "code/compressedStream.hpp" 1.42 +#include "code/location.hpp" 1.43 +#include "code/nmethod.hpp" 1.44 +#include "code/pcDesc.hpp" 1.45 +#include "code/stubs.hpp" 1.46 +#include "code/vmreg.hpp" 1.47 +#include "compiler/oopMap.hpp" 1.48 +#include "compiler/compileBroker.hpp" 1.49 +#include "gc_implementation/shared/immutableSpace.hpp" 1.50 +#include "gc_implementation/shared/markSweep.hpp" 1.51 +#include "gc_implementation/shared/mutableSpace.hpp" 1.52 +#include "gc_interface/collectedHeap.hpp" 1.53 +#include "interpreter/bytecodeInterpreter.hpp" 1.54 +#include "interpreter/bytecodes.hpp" 1.55 +#include "interpreter/interpreter.hpp" 1.56 +#include "memory/allocation.hpp" 1.57 +#include "memory/cardTableRS.hpp" 1.58 +#include "memory/defNewGeneration.hpp" 1.59 +#include "memory/freeBlockDictionary.hpp" 1.60 +#include "memory/genCollectedHeap.hpp" 1.61 +#include "memory/generation.hpp" 1.62 +#include "memory/generationSpec.hpp" 1.63 +#include "memory/heap.hpp" 1.64 +#include "memory/metachunk.hpp" 1.65 +#include "memory/referenceType.hpp" 1.66 +#include "memory/space.hpp" 1.67 +#include "memory/tenuredGeneration.hpp" 1.68 +#include "memory/universe.hpp" 1.69 +#include "memory/watermark.hpp" 1.70 +#include "oops/arrayKlass.hpp" 1.71 +#include "oops/arrayOop.hpp" 1.72 +#include "oops/compiledICHolder.hpp" 1.73 +#include "oops/constMethod.hpp" 1.74 +#include "oops/constantPool.hpp" 1.75 +#include "oops/cpCache.hpp" 1.76 +#include "oops/instanceClassLoaderKlass.hpp" 1.77 +#include "oops/instanceKlass.hpp" 1.78 +#include "oops/instanceMirrorKlass.hpp" 1.79 +#include "oops/instanceOop.hpp" 1.80 +#include "oops/klass.hpp" 1.81 +#include "oops/markOop.hpp" 1.82 +#include "oops/methodData.hpp" 1.83 +#include "oops/methodCounters.hpp" 1.84 +#include "oops/method.hpp" 1.85 +#include "oops/objArrayKlass.hpp" 1.86 +#include "oops/objArrayOop.hpp" 1.87 +#include "oops/oop.inline.hpp" 1.88 +#include "oops/symbol.hpp" 1.89 +#include "oops/typeArrayKlass.hpp" 1.90 +#include "oops/typeArrayOop.hpp" 1.91 +#include "prims/jvmtiAgentThread.hpp" 1.92 +#include "runtime/arguments.hpp" 1.93 +#include "runtime/deoptimization.hpp" 1.94 +#include "runtime/vframeArray.hpp" 1.95 +#include "runtime/globals.hpp" 1.96 +#include "runtime/java.hpp" 1.97 +#include "runtime/javaCalls.hpp" 1.98 +#include "runtime/perfMemory.hpp" 1.99 +#include "runtime/serviceThread.hpp" 1.100 +#include "runtime/sharedRuntime.hpp" 1.101 +#include "runtime/stubRoutines.hpp" 1.102 +#include "runtime/thread.inline.hpp" 1.103 +#include "runtime/virtualspace.hpp" 1.104 +#include "runtime/vmStructs.hpp" 1.105 +#include "utilities/array.hpp" 1.106 +#include "utilities/globalDefinitions.hpp" 1.107 +#include "utilities/hashtable.hpp" 1.108 +#include "utilities/macros.hpp" 1.109 +#ifdef TARGET_ARCH_x86 1.110 +# include "vmStructs_x86.hpp" 1.111 +#endif 1.112 +#ifdef TARGET_ARCH_sparc 1.113 +# include "vmStructs_sparc.hpp" 1.114 +#endif 1.115 +#ifdef TARGET_ARCH_zero 1.116 +# include "vmStructs_zero.hpp" 1.117 +#endif 1.118 +#ifdef TARGET_ARCH_arm 1.119 +# include "vmStructs_arm.hpp" 1.120 +#endif 1.121 +#ifdef TARGET_ARCH_ppc 1.122 +# include "vmStructs_ppc.hpp" 1.123 +#endif 1.124 +#ifdef TARGET_OS_ARCH_linux_x86 1.125 +# include "vmStructs_linux_x86.hpp" 1.126 +#endif 1.127 +#ifdef TARGET_OS_ARCH_linux_sparc 1.128 +# include "vmStructs_linux_sparc.hpp" 1.129 +#endif 1.130 +#ifdef TARGET_OS_ARCH_linux_zero 1.131 +# include "vmStructs_linux_zero.hpp" 1.132 +#endif 1.133 +#ifdef TARGET_OS_ARCH_solaris_x86 1.134 +# include "vmStructs_solaris_x86.hpp" 1.135 +#endif 1.136 +#ifdef TARGET_OS_ARCH_solaris_sparc 1.137 +# include "vmStructs_solaris_sparc.hpp" 1.138 +#endif 1.139 +#ifdef TARGET_OS_ARCH_windows_x86 1.140 +# include "vmStructs_windows_x86.hpp" 1.141 +#endif 1.142 +#ifdef TARGET_OS_ARCH_linux_arm 1.143 +# include "vmStructs_linux_arm.hpp" 1.144 +#endif 1.145 +#ifdef TARGET_OS_ARCH_linux_ppc 1.146 +# include "vmStructs_linux_ppc.hpp" 1.147 +#endif 1.148 +#ifdef TARGET_OS_ARCH_aix_ppc 1.149 +# include "vmStructs_aix_ppc.hpp" 1.150 +#endif 1.151 +#ifdef TARGET_OS_ARCH_bsd_x86 1.152 +# include "vmStructs_bsd_x86.hpp" 1.153 +#endif 1.154 +#ifdef TARGET_OS_ARCH_bsd_zero 1.155 +# include "vmStructs_bsd_zero.hpp" 1.156 +#endif 1.157 +#if INCLUDE_ALL_GCS 1.158 +#include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp" 1.159 +#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp" 1.160 +#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp" 1.161 +#include "gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp" 1.162 +#include "gc_implementation/parNew/parNewGeneration.hpp" 1.163 +#include "gc_implementation/parNew/vmStructs_parNew.hpp" 1.164 +#include "gc_implementation/parallelScavenge/asPSOldGen.hpp" 1.165 +#include "gc_implementation/parallelScavenge/asPSYoungGen.hpp" 1.166 +#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" 1.167 +#include "gc_implementation/parallelScavenge/psOldGen.hpp" 1.168 +#include "gc_implementation/parallelScavenge/psVirtualspace.hpp" 1.169 +#include "gc_implementation/parallelScavenge/psYoungGen.hpp" 1.170 +#include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp" 1.171 +#include "gc_implementation/g1/vmStructs_g1.hpp" 1.172 +#endif // INCLUDE_ALL_GCS 1.173 +#ifdef COMPILER2 1.174 +#include "opto/addnode.hpp" 1.175 +#include "opto/block.hpp" 1.176 +#include "opto/callnode.hpp" 1.177 +#include "opto/cfgnode.hpp" 1.178 +#include "opto/chaitin.hpp" 1.179 +#include "opto/divnode.hpp" 1.180 +#include "opto/locknode.hpp" 1.181 +#include "opto/loopnode.hpp" 1.182 +#include "opto/machnode.hpp" 1.183 +#include "opto/matcher.hpp" 1.184 +#include "opto/mathexactnode.hpp" 1.185 +#include "opto/mulnode.hpp" 1.186 +#include "opto/phaseX.hpp" 1.187 +#include "opto/parse.hpp" 1.188 +#include "opto/regalloc.hpp" 1.189 +#include "opto/rootnode.hpp" 1.190 +#include "opto/subnode.hpp" 1.191 +#include "opto/vectornode.hpp" 1.192 +#ifdef TARGET_ARCH_MODEL_x86_32 1.193 +# include "adfiles/adGlobals_x86_32.hpp" 1.194 +#endif 1.195 +#ifdef TARGET_ARCH_MODEL_x86_64 1.196 +# include "adfiles/adGlobals_x86_64.hpp" 1.197 +#endif 1.198 +#ifdef TARGET_ARCH_MODEL_sparc 1.199 +# include "adfiles/adGlobals_sparc.hpp" 1.200 +#endif 1.201 +#ifdef TARGET_ARCH_MODEL_zero 1.202 +# include "adfiles/adGlobals_zero.hpp" 1.203 +#endif 1.204 +#ifdef TARGET_ARCH_MODEL_arm 1.205 +# include "adfiles/adGlobals_arm.hpp" 1.206 +#endif 1.207 +#ifdef TARGET_ARCH_MODEL_ppc_32 1.208 +# include "adfiles/adGlobals_ppc_32.hpp" 1.209 +#endif 1.210 +#ifdef TARGET_ARCH_MODEL_ppc_64 1.211 +# include "adfiles/adGlobals_ppc_64.hpp" 1.212 +#endif 1.213 +#endif // COMPILER2 1.214 + 1.215 +// Note: the cross-product of (c1, c2, product, nonproduct, ...), 1.216 +// (nonstatic, static), and (unchecked, checked) has not been taken. 1.217 +// Only the macros currently needed have been defined. 1.218 + 1.219 +// A field whose type is not checked is given a null string as the 1.220 +// type name, indicating an "opaque" type to the serviceability agent. 1.221 + 1.222 +// NOTE: there is an interdependency between this file and 1.223 +// HotSpotTypeDataBase.java, which parses the type strings. 1.224 + 1.225 +#ifndef REG_COUNT 1.226 + #define REG_COUNT 0 1.227 +#endif 1.228 +// whole purpose of this function is to work around bug c++/27724 in gcc 4.1.1 1.229 +// with optimization turned on it doesn't affect produced code 1.230 +static inline uint64_t cast_uint64_t(size_t x) 1.231 +{ 1.232 + return x; 1.233 +} 1.234 + 1.235 +#if INCLUDE_JVMTI 1.236 + #define JVMTI_STRUCTS(static_field) \ 1.237 + static_field(JvmtiExport, _can_access_local_variables, bool) \ 1.238 + static_field(JvmtiExport, _can_hotswap_or_post_breakpoint, bool) \ 1.239 + static_field(JvmtiExport, _can_post_on_exceptions, bool) \ 1.240 + static_field(JvmtiExport, _can_walk_any_space, bool) 1.241 +#else 1.242 + #define JVMTI_STRUCTS(static_field) 1.243 +#endif // INCLUDE_JVMTI 1.244 + 1.245 +typedef HashtableEntry<intptr_t, mtInternal> IntptrHashtableEntry; 1.246 +typedef Hashtable<intptr_t, mtInternal> IntptrHashtable; 1.247 +typedef Hashtable<Symbol*, mtSymbol> SymbolHashtable; 1.248 +typedef HashtableEntry<Symbol*, mtClass> SymbolHashtableEntry; 1.249 +typedef Hashtable<oop, mtSymbol> StringHashtable; 1.250 +typedef TwoOopHashtable<Klass*, mtClass> KlassTwoOopHashtable; 1.251 +typedef Hashtable<Klass*, mtClass> KlassHashtable; 1.252 +typedef HashtableEntry<Klass*, mtClass> KlassHashtableEntry; 1.253 +typedef TwoOopHashtable<Symbol*, mtClass> SymbolTwoOopHashtable; 1.254 +typedef BinaryTreeDictionary<Metablock, FreeList<Metablock> > MetablockTreeDictionary; 1.255 + 1.256 +//-------------------------------------------------------------------------------- 1.257 +// VM_STRUCTS 1.258 +// 1.259 +// This list enumerates all of the fields the serviceability agent 1.260 +// needs to know about. Be sure to see also the type table below this one. 1.261 +// NOTE that there are platform-specific additions to this table in 1.262 +// vmStructs_<os>_<cpu>.hpp. 1.263 + 1.264 +#define VM_STRUCTS(nonstatic_field, \ 1.265 + static_field, \ 1.266 + unchecked_nonstatic_field, \ 1.267 + volatile_nonstatic_field, \ 1.268 + nonproduct_nonstatic_field, \ 1.269 + c1_nonstatic_field, \ 1.270 + c2_nonstatic_field, \ 1.271 + unchecked_c1_static_field, \ 1.272 + unchecked_c2_static_field) \ 1.273 + \ 1.274 + /******************************************************************/ \ 1.275 + /* OopDesc and Klass hierarchies (NOTE: MethodData* incomplete) */ \ 1.276 + /******************************************************************/ \ 1.277 + \ 1.278 + volatile_nonstatic_field(oopDesc, _mark, markOop) \ 1.279 + volatile_nonstatic_field(oopDesc, _metadata._klass, Klass*) \ 1.280 + volatile_nonstatic_field(oopDesc, _metadata._compressed_klass, narrowOop) \ 1.281 + static_field(oopDesc, _bs, BarrierSet*) \ 1.282 + nonstatic_field(ArrayKlass, _dimension, int) \ 1.283 + volatile_nonstatic_field(ArrayKlass, _higher_dimension, Klass*) \ 1.284 + volatile_nonstatic_field(ArrayKlass, _lower_dimension, Klass*) \ 1.285 + nonstatic_field(ArrayKlass, _vtable_len, int) \ 1.286 + nonstatic_field(ArrayKlass, _component_mirror, oop) \ 1.287 + nonstatic_field(CompiledICHolder, _holder_method, Method*) \ 1.288 + nonstatic_field(CompiledICHolder, _holder_klass, Klass*) \ 1.289 + nonstatic_field(ConstantPool, _tags, Array<u1>*) \ 1.290 + nonstatic_field(ConstantPool, _cache, ConstantPoolCache*) \ 1.291 + nonstatic_field(ConstantPool, _pool_holder, InstanceKlass*) \ 1.292 + nonstatic_field(ConstantPool, _operands, Array<u2>*) \ 1.293 + nonstatic_field(ConstantPool, _length, int) \ 1.294 + nonstatic_field(ConstantPool, _resolved_references, jobject) \ 1.295 + nonstatic_field(ConstantPool, _reference_map, Array<u2>*) \ 1.296 + nonstatic_field(ConstantPoolCache, _length, int) \ 1.297 + nonstatic_field(ConstantPoolCache, _constant_pool, ConstantPool*) \ 1.298 + nonstatic_field(InstanceKlass, _array_klasses, Klass*) \ 1.299 + nonstatic_field(InstanceKlass, _methods, Array<Method*>*) \ 1.300 + nonstatic_field(InstanceKlass, _default_methods, Array<Method*>*) \ 1.301 + nonstatic_field(InstanceKlass, _local_interfaces, Array<Klass*>*) \ 1.302 + nonstatic_field(InstanceKlass, _transitive_interfaces, Array<Klass*>*) \ 1.303 + nonstatic_field(InstanceKlass, _fields, Array<u2>*) \ 1.304 + nonstatic_field(InstanceKlass, _java_fields_count, u2) \ 1.305 + nonstatic_field(InstanceKlass, _constants, ConstantPool*) \ 1.306 + nonstatic_field(InstanceKlass, _class_loader_data, ClassLoaderData*) \ 1.307 + nonstatic_field(InstanceKlass, _source_file_name_index, u2) \ 1.308 + nonstatic_field(InstanceKlass, _source_debug_extension, char*) \ 1.309 + nonstatic_field(InstanceKlass, _inner_classes, Array<jushort>*) \ 1.310 + nonstatic_field(InstanceKlass, _nonstatic_field_size, int) \ 1.311 + nonstatic_field(InstanceKlass, _static_field_size, int) \ 1.312 + nonstatic_field(InstanceKlass, _static_oop_field_count, u2) \ 1.313 + nonstatic_field(InstanceKlass, _nonstatic_oop_map_size, int) \ 1.314 + nonstatic_field(InstanceKlass, _is_marked_dependent, bool) \ 1.315 + nonstatic_field(InstanceKlass, _minor_version, u2) \ 1.316 + nonstatic_field(InstanceKlass, _major_version, u2) \ 1.317 + nonstatic_field(InstanceKlass, _init_state, u1) \ 1.318 + nonstatic_field(InstanceKlass, _init_thread, Thread*) \ 1.319 + nonstatic_field(InstanceKlass, _vtable_len, int) \ 1.320 + nonstatic_field(InstanceKlass, _itable_len, int) \ 1.321 + nonstatic_field(InstanceKlass, _reference_type, u1) \ 1.322 + volatile_nonstatic_field(InstanceKlass, _oop_map_cache, OopMapCache*) \ 1.323 + nonstatic_field(InstanceKlass, _jni_ids, JNIid*) \ 1.324 + nonstatic_field(InstanceKlass, _osr_nmethods_head, nmethod*) \ 1.325 + nonstatic_field(InstanceKlass, _breakpoints, BreakpointInfo*) \ 1.326 + nonstatic_field(InstanceKlass, _generic_signature_index, u2) \ 1.327 + nonstatic_field(InstanceKlass, _methods_jmethod_ids, jmethodID*) \ 1.328 + volatile_nonstatic_field(InstanceKlass, _idnum_allocated_count, u2) \ 1.329 + nonstatic_field(InstanceKlass, _annotations, Annotations*) \ 1.330 + nonstatic_field(InstanceKlass, _dependencies, nmethodBucket*) \ 1.331 + nonstatic_field(nmethodBucket, _nmethod, nmethod*) \ 1.332 + nonstatic_field(nmethodBucket, _count, int) \ 1.333 + nonstatic_field(nmethodBucket, _next, nmethodBucket*) \ 1.334 + nonstatic_field(InstanceKlass, _method_ordering, Array<int>*) \ 1.335 + nonstatic_field(InstanceKlass, _default_vtable_indices, Array<int>*) \ 1.336 + nonstatic_field(Klass, _super_check_offset, juint) \ 1.337 + nonstatic_field(Klass, _secondary_super_cache, Klass*) \ 1.338 + nonstatic_field(Klass, _secondary_supers, Array<Klass*>*) \ 1.339 + nonstatic_field(Klass, _primary_supers[0], Klass*) \ 1.340 + nonstatic_field(Klass, _java_mirror, oop) \ 1.341 + nonstatic_field(Klass, _modifier_flags, jint) \ 1.342 + nonstatic_field(Klass, _super, Klass*) \ 1.343 + nonstatic_field(Klass, _subklass, Klass*) \ 1.344 + nonstatic_field(Klass, _layout_helper, jint) \ 1.345 + nonstatic_field(Klass, _name, Symbol*) \ 1.346 + nonstatic_field(Klass, _access_flags, AccessFlags) \ 1.347 + nonstatic_field(Klass, _prototype_header, markOop) \ 1.348 + nonstatic_field(Klass, _next_sibling, Klass*) \ 1.349 + nonstatic_field(vtableEntry, _method, Method*) \ 1.350 + nonstatic_field(MethodData, _size, int) \ 1.351 + nonstatic_field(MethodData, _method, Method*) \ 1.352 + nonstatic_field(MethodData, _data_size, int) \ 1.353 + nonstatic_field(MethodData, _data[0], intptr_t) \ 1.354 + nonstatic_field(MethodData, _nof_decompiles, uint) \ 1.355 + nonstatic_field(MethodData, _nof_overflow_recompiles, uint) \ 1.356 + nonstatic_field(MethodData, _nof_overflow_traps, uint) \ 1.357 + nonstatic_field(MethodData, _trap_hist._array[0], u1) \ 1.358 + nonstatic_field(MethodData, _eflags, intx) \ 1.359 + nonstatic_field(MethodData, _arg_local, intx) \ 1.360 + nonstatic_field(MethodData, _arg_stack, intx) \ 1.361 + nonstatic_field(MethodData, _arg_returned, intx) \ 1.362 + nonstatic_field(DataLayout, _header._struct._tag, u1) \ 1.363 + nonstatic_field(DataLayout, _header._struct._flags, u1) \ 1.364 + nonstatic_field(DataLayout, _header._struct._bci, u2) \ 1.365 + nonstatic_field(DataLayout, _cells[0], intptr_t) \ 1.366 + nonstatic_field(MethodCounters, _interpreter_invocation_count, int) \ 1.367 + nonstatic_field(MethodCounters, _interpreter_throwout_count, u2) \ 1.368 + nonstatic_field(MethodCounters, _number_of_breakpoints, u2) \ 1.369 + nonstatic_field(MethodCounters, _invocation_counter, InvocationCounter) \ 1.370 + nonstatic_field(MethodCounters, _backedge_counter, InvocationCounter) \ 1.371 + nonstatic_field(Method, _constMethod, ConstMethod*) \ 1.372 + nonstatic_field(Method, _method_data, MethodData*) \ 1.373 + nonstatic_field(Method, _method_counters, MethodCounters*) \ 1.374 + nonstatic_field(Method, _access_flags, AccessFlags) \ 1.375 + nonstatic_field(Method, _vtable_index, int) \ 1.376 + nonstatic_field(Method, _method_size, u2) \ 1.377 + nonstatic_field(Method, _intrinsic_id, u1) \ 1.378 + nonproduct_nonstatic_field(Method, _compiled_invocation_count, int) \ 1.379 + volatile_nonstatic_field(Method, _code, nmethod*) \ 1.380 + nonstatic_field(Method, _i2i_entry, address) \ 1.381 + nonstatic_field(Method, _adapter, AdapterHandlerEntry*) \ 1.382 + volatile_nonstatic_field(Method, _from_compiled_entry, address) \ 1.383 + volatile_nonstatic_field(Method, _from_interpreted_entry, address) \ 1.384 + volatile_nonstatic_field(ConstMethod, _fingerprint, uint64_t) \ 1.385 + nonstatic_field(ConstMethod, _constants, ConstantPool*) \ 1.386 + nonstatic_field(ConstMethod, _stackmap_data, Array<u1>*) \ 1.387 + nonstatic_field(ConstMethod, _constMethod_size, int) \ 1.388 + nonstatic_field(ConstMethod, _flags, u2) \ 1.389 + nonstatic_field(ConstMethod, _code_size, u2) \ 1.390 + nonstatic_field(ConstMethod, _name_index, u2) \ 1.391 + nonstatic_field(ConstMethod, _signature_index, u2) \ 1.392 + nonstatic_field(ConstMethod, _method_idnum, u2) \ 1.393 + nonstatic_field(ConstMethod, _max_stack, u2) \ 1.394 + nonstatic_field(ConstMethod, _max_locals, u2) \ 1.395 + nonstatic_field(ConstMethod, _size_of_parameters, u2) \ 1.396 + nonstatic_field(ObjArrayKlass, _element_klass, Klass*) \ 1.397 + nonstatic_field(ObjArrayKlass, _bottom_klass, Klass*) \ 1.398 + volatile_nonstatic_field(Symbol, _refcount, short) \ 1.399 + nonstatic_field(Symbol, _identity_hash, int) \ 1.400 + nonstatic_field(Symbol, _length, unsigned short) \ 1.401 + unchecked_nonstatic_field(Symbol, _body, sizeof(jbyte)) /* NOTE: no type */ \ 1.402 + nonstatic_field(TypeArrayKlass, _max_length, int) \ 1.403 + \ 1.404 + /***********************/ \ 1.405 + /* Constant Pool Cache */ \ 1.406 + /***********************/ \ 1.407 + \ 1.408 + volatile_nonstatic_field(ConstantPoolCacheEntry, _indices, intx) \ 1.409 + nonstatic_field(ConstantPoolCacheEntry, _f1, volatile Metadata*) \ 1.410 + volatile_nonstatic_field(ConstantPoolCacheEntry, _f2, intx) \ 1.411 + volatile_nonstatic_field(ConstantPoolCacheEntry, _flags, intx) \ 1.412 + \ 1.413 + /********************************/ \ 1.414 + /* MethodOop-related structures */ \ 1.415 + /********************************/ \ 1.416 + \ 1.417 + nonstatic_field(CheckedExceptionElement, class_cp_index, u2) \ 1.418 + nonstatic_field(LocalVariableTableElement, start_bci, u2) \ 1.419 + nonstatic_field(LocalVariableTableElement, length, u2) \ 1.420 + nonstatic_field(LocalVariableTableElement, name_cp_index, u2) \ 1.421 + nonstatic_field(LocalVariableTableElement, descriptor_cp_index, u2) \ 1.422 + nonstatic_field(LocalVariableTableElement, signature_cp_index, u2) \ 1.423 + nonstatic_field(LocalVariableTableElement, slot, u2) \ 1.424 + nonstatic_field(ExceptionTableElement, start_pc, u2) \ 1.425 + nonstatic_field(ExceptionTableElement, end_pc, u2) \ 1.426 + nonstatic_field(ExceptionTableElement, handler_pc, u2) \ 1.427 + nonstatic_field(ExceptionTableElement, catch_type_index, u2) \ 1.428 + nonstatic_field(BreakpointInfo, _orig_bytecode, Bytecodes::Code) \ 1.429 + nonstatic_field(BreakpointInfo, _bci, int) \ 1.430 + nonstatic_field(BreakpointInfo, _name_index, u2) \ 1.431 + nonstatic_field(BreakpointInfo, _signature_index, u2) \ 1.432 + nonstatic_field(BreakpointInfo, _next, BreakpointInfo*) \ 1.433 + /***********/ \ 1.434 + /* JNI IDs */ \ 1.435 + /***********/ \ 1.436 + \ 1.437 + nonstatic_field(JNIid, _holder, Klass*) \ 1.438 + nonstatic_field(JNIid, _next, JNIid*) \ 1.439 + nonstatic_field(JNIid, _offset, int) \ 1.440 + /************/ \ 1.441 + /* Universe */ \ 1.442 + /************/ \ 1.443 + \ 1.444 + static_field(Universe, _boolArrayKlassObj, Klass*) \ 1.445 + static_field(Universe, _byteArrayKlassObj, Klass*) \ 1.446 + static_field(Universe, _charArrayKlassObj, Klass*) \ 1.447 + static_field(Universe, _intArrayKlassObj, Klass*) \ 1.448 + static_field(Universe, _shortArrayKlassObj, Klass*) \ 1.449 + static_field(Universe, _longArrayKlassObj, Klass*) \ 1.450 + static_field(Universe, _singleArrayKlassObj, Klass*) \ 1.451 + static_field(Universe, _doubleArrayKlassObj, Klass*) \ 1.452 + static_field(Universe, _mirrors[0], oop) \ 1.453 + static_field(Universe, _main_thread_group, oop) \ 1.454 + static_field(Universe, _system_thread_group, oop) \ 1.455 + static_field(Universe, _the_empty_class_klass_array, objArrayOop) \ 1.456 + static_field(Universe, _null_ptr_exception_instance, oop) \ 1.457 + static_field(Universe, _arithmetic_exception_instance, oop) \ 1.458 + static_field(Universe, _vm_exception, oop) \ 1.459 + static_field(Universe, _collectedHeap, CollectedHeap*) \ 1.460 + static_field(Universe, _base_vtable_size, int) \ 1.461 + static_field(Universe, _bootstrapping, bool) \ 1.462 + static_field(Universe, _fully_initialized, bool) \ 1.463 + static_field(Universe, _verify_count, int) \ 1.464 + static_field(Universe, _non_oop_bits, intptr_t) \ 1.465 + static_field(Universe, _narrow_oop._base, address) \ 1.466 + static_field(Universe, _narrow_oop._shift, int) \ 1.467 + static_field(Universe, _narrow_oop._use_implicit_null_checks, bool) \ 1.468 + static_field(Universe, _narrow_klass._base, address) \ 1.469 + static_field(Universe, _narrow_klass._shift, int) \ 1.470 + \ 1.471 + /******/ \ 1.472 + /* os */ \ 1.473 + /******/ \ 1.474 + \ 1.475 + static_field(os, _polling_page, address) \ 1.476 + \ 1.477 + /**********************************************************************************/ \ 1.478 + /* Generation and Space hierarchies */ \ 1.479 + /**********************************************************************************/ \ 1.480 + \ 1.481 + unchecked_nonstatic_field(ageTable, sizes, sizeof(ageTable::sizes)) \ 1.482 + \ 1.483 + nonstatic_field(BarrierSet, _max_covered_regions, int) \ 1.484 + nonstatic_field(BarrierSet, _kind, BarrierSet::Name) \ 1.485 + nonstatic_field(BlockOffsetTable, _bottom, HeapWord*) \ 1.486 + nonstatic_field(BlockOffsetTable, _end, HeapWord*) \ 1.487 + \ 1.488 + nonstatic_field(BlockOffsetSharedArray, _reserved, MemRegion) \ 1.489 + nonstatic_field(BlockOffsetSharedArray, _end, HeapWord*) \ 1.490 + nonstatic_field(BlockOffsetSharedArray, _vs, VirtualSpace) \ 1.491 + nonstatic_field(BlockOffsetSharedArray, _offset_array, u_char*) \ 1.492 + \ 1.493 + nonstatic_field(BlockOffsetArray, _array, BlockOffsetSharedArray*) \ 1.494 + nonstatic_field(BlockOffsetArray, _sp, Space*) \ 1.495 + nonstatic_field(BlockOffsetArrayContigSpace, _next_offset_threshold, HeapWord*) \ 1.496 + nonstatic_field(BlockOffsetArrayContigSpace, _next_offset_index, size_t) \ 1.497 + \ 1.498 + nonstatic_field(BlockOffsetArrayNonContigSpace, _unallocated_block, HeapWord*) \ 1.499 + \ 1.500 + nonstatic_field(CardGeneration, _rs, GenRemSet*) \ 1.501 + nonstatic_field(CardGeneration, _bts, BlockOffsetSharedArray*) \ 1.502 + nonstatic_field(CardGeneration, _shrink_factor, size_t) \ 1.503 + nonstatic_field(CardGeneration, _capacity_at_prologue, size_t) \ 1.504 + nonstatic_field(CardGeneration, _used_at_prologue, size_t) \ 1.505 + \ 1.506 + nonstatic_field(CardTableModRefBS, _whole_heap, const MemRegion) \ 1.507 + nonstatic_field(CardTableModRefBS, _guard_index, const size_t) \ 1.508 + nonstatic_field(CardTableModRefBS, _last_valid_index, const size_t) \ 1.509 + nonstatic_field(CardTableModRefBS, _page_size, const size_t) \ 1.510 + nonstatic_field(CardTableModRefBS, _byte_map_size, const size_t) \ 1.511 + nonstatic_field(CardTableModRefBS, _byte_map, jbyte*) \ 1.512 + nonstatic_field(CardTableModRefBS, _cur_covered_regions, int) \ 1.513 + nonstatic_field(CardTableModRefBS, _covered, MemRegion*) \ 1.514 + nonstatic_field(CardTableModRefBS, _committed, MemRegion*) \ 1.515 + nonstatic_field(CardTableModRefBS, _guard_region, MemRegion) \ 1.516 + nonstatic_field(CardTableModRefBS, byte_map_base, jbyte*) \ 1.517 + \ 1.518 + nonstatic_field(CardTableRS, _ct_bs, CardTableModRefBSForCTRS*) \ 1.519 + \ 1.520 + nonstatic_field(CollectedHeap, _reserved, MemRegion) \ 1.521 + nonstatic_field(CollectedHeap, _barrier_set, BarrierSet*) \ 1.522 + nonstatic_field(CollectedHeap, _defer_initial_card_mark, bool) \ 1.523 + nonstatic_field(CollectedHeap, _is_gc_active, bool) \ 1.524 + nonstatic_field(CollectedHeap, _total_collections, unsigned int) \ 1.525 + nonstatic_field(CompactibleSpace, _compaction_top, HeapWord*) \ 1.526 + nonstatic_field(CompactibleSpace, _first_dead, HeapWord*) \ 1.527 + nonstatic_field(CompactibleSpace, _end_of_live, HeapWord*) \ 1.528 + \ 1.529 + \ 1.530 + nonstatic_field(ContiguousSpace, _top, HeapWord*) \ 1.531 + nonstatic_field(ContiguousSpace, _concurrent_iteration_safe_limit, HeapWord*) \ 1.532 + nonstatic_field(ContiguousSpace, _saved_mark_word, HeapWord*) \ 1.533 + \ 1.534 + nonstatic_field(DefNewGeneration, _next_gen, Generation*) \ 1.535 + nonstatic_field(DefNewGeneration, _tenuring_threshold, uint) \ 1.536 + nonstatic_field(DefNewGeneration, _age_table, ageTable) \ 1.537 + nonstatic_field(DefNewGeneration, _eden_space, EdenSpace*) \ 1.538 + nonstatic_field(DefNewGeneration, _from_space, ContiguousSpace*) \ 1.539 + nonstatic_field(DefNewGeneration, _to_space, ContiguousSpace*) \ 1.540 + \ 1.541 + nonstatic_field(EdenSpace, _gen, DefNewGeneration*) \ 1.542 + \ 1.543 + nonstatic_field(Generation, _reserved, MemRegion) \ 1.544 + nonstatic_field(Generation, _virtual_space, VirtualSpace) \ 1.545 + nonstatic_field(Generation, _level, int) \ 1.546 + nonstatic_field(Generation, _stat_record, Generation::StatRecord) \ 1.547 + \ 1.548 + nonstatic_field(Generation::StatRecord, invocations, int) \ 1.549 + nonstatic_field(Generation::StatRecord, accumulated_time, elapsedTimer) \ 1.550 + \ 1.551 + nonstatic_field(GenerationSpec, _name, Generation::Name) \ 1.552 + nonstatic_field(GenerationSpec, _init_size, size_t) \ 1.553 + nonstatic_field(GenerationSpec, _max_size, size_t) \ 1.554 + \ 1.555 + static_field(GenCollectedHeap, _gch, GenCollectedHeap*) \ 1.556 + nonstatic_field(GenCollectedHeap, _n_gens, int) \ 1.557 + unchecked_nonstatic_field(GenCollectedHeap, _gens, sizeof(GenCollectedHeap::_gens)) /* NOTE: no type */ \ 1.558 + nonstatic_field(GenCollectedHeap, _gen_specs, GenerationSpec**) \ 1.559 + \ 1.560 + nonstatic_field(HeapWord, i, char*) \ 1.561 + \ 1.562 + nonstatic_field(MemRegion, _start, HeapWord*) \ 1.563 + nonstatic_field(MemRegion, _word_size, size_t) \ 1.564 + \ 1.565 + nonstatic_field(OffsetTableContigSpace, _offsets, BlockOffsetArray) \ 1.566 + \ 1.567 + nonstatic_field(OneContigSpaceCardGeneration, _min_heap_delta_bytes, size_t) \ 1.568 + nonstatic_field(OneContigSpaceCardGeneration, _the_space, ContiguousSpace*) \ 1.569 + nonstatic_field(OneContigSpaceCardGeneration, _last_gc, WaterMark) \ 1.570 + \ 1.571 + \ 1.572 + \ 1.573 + nonstatic_field(Space, _bottom, HeapWord*) \ 1.574 + nonstatic_field(Space, _end, HeapWord*) \ 1.575 + \ 1.576 + nonstatic_field(ThreadLocalAllocBuffer, _start, HeapWord*) \ 1.577 + nonstatic_field(ThreadLocalAllocBuffer, _top, HeapWord*) \ 1.578 + nonstatic_field(ThreadLocalAllocBuffer, _end, HeapWord*) \ 1.579 + nonstatic_field(ThreadLocalAllocBuffer, _desired_size, size_t) \ 1.580 + nonstatic_field(ThreadLocalAllocBuffer, _refill_waste_limit, size_t) \ 1.581 + static_field(ThreadLocalAllocBuffer, _target_refills, unsigned) \ 1.582 + nonstatic_field(ThreadLocalAllocBuffer, _number_of_refills, unsigned) \ 1.583 + nonstatic_field(ThreadLocalAllocBuffer, _fast_refill_waste, unsigned) \ 1.584 + nonstatic_field(ThreadLocalAllocBuffer, _slow_refill_waste, unsigned) \ 1.585 + nonstatic_field(ThreadLocalAllocBuffer, _gc_waste, unsigned) \ 1.586 + nonstatic_field(ThreadLocalAllocBuffer, _slow_allocations, unsigned) \ 1.587 + nonstatic_field(VirtualSpace, _low_boundary, char*) \ 1.588 + nonstatic_field(VirtualSpace, _high_boundary, char*) \ 1.589 + nonstatic_field(VirtualSpace, _low, char*) \ 1.590 + nonstatic_field(VirtualSpace, _high, char*) \ 1.591 + nonstatic_field(VirtualSpace, _lower_high, char*) \ 1.592 + nonstatic_field(VirtualSpace, _middle_high, char*) \ 1.593 + nonstatic_field(VirtualSpace, _upper_high, char*) \ 1.594 + nonstatic_field(WaterMark, _point, HeapWord*) \ 1.595 + nonstatic_field(WaterMark, _space, Space*) \ 1.596 + \ 1.597 + /************************/ \ 1.598 + /* PerfMemory - jvmstat */ \ 1.599 + /************************/ \ 1.600 + \ 1.601 + nonstatic_field(PerfDataPrologue, magic, jint) \ 1.602 + nonstatic_field(PerfDataPrologue, byte_order, jbyte) \ 1.603 + nonstatic_field(PerfDataPrologue, major_version, jbyte) \ 1.604 + nonstatic_field(PerfDataPrologue, minor_version, jbyte) \ 1.605 + nonstatic_field(PerfDataPrologue, accessible, jbyte) \ 1.606 + nonstatic_field(PerfDataPrologue, used, jint) \ 1.607 + nonstatic_field(PerfDataPrologue, overflow, jint) \ 1.608 + nonstatic_field(PerfDataPrologue, mod_time_stamp, jlong) \ 1.609 + nonstatic_field(PerfDataPrologue, entry_offset, jint) \ 1.610 + nonstatic_field(PerfDataPrologue, num_entries, jint) \ 1.611 + \ 1.612 + nonstatic_field(PerfDataEntry, entry_length, jint) \ 1.613 + nonstatic_field(PerfDataEntry, name_offset, jint) \ 1.614 + nonstatic_field(PerfDataEntry, vector_length, jint) \ 1.615 + nonstatic_field(PerfDataEntry, data_type, jbyte) \ 1.616 + nonstatic_field(PerfDataEntry, flags, jbyte) \ 1.617 + nonstatic_field(PerfDataEntry, data_units, jbyte) \ 1.618 + nonstatic_field(PerfDataEntry, data_variability, jbyte) \ 1.619 + nonstatic_field(PerfDataEntry, data_offset, jint) \ 1.620 + \ 1.621 + static_field(PerfMemory, _start, char*) \ 1.622 + static_field(PerfMemory, _end, char*) \ 1.623 + static_field(PerfMemory, _top, char*) \ 1.624 + static_field(PerfMemory, _capacity, size_t) \ 1.625 + static_field(PerfMemory, _prologue, PerfDataPrologue*) \ 1.626 + static_field(PerfMemory, _initialized, jint) \ 1.627 + \ 1.628 + /***************/ \ 1.629 + /* SymbolTable */ \ 1.630 + /***************/ \ 1.631 + \ 1.632 + static_field(SymbolTable, _the_table, SymbolTable*) \ 1.633 + \ 1.634 + /***************/ \ 1.635 + /* StringTable */ \ 1.636 + /***************/ \ 1.637 + \ 1.638 + static_field(StringTable, _the_table, StringTable*) \ 1.639 + \ 1.640 + /********************/ \ 1.641 + /* SystemDictionary */ \ 1.642 + /********************/ \ 1.643 + \ 1.644 + static_field(SystemDictionary, _dictionary, Dictionary*) \ 1.645 + static_field(SystemDictionary, _placeholders, PlaceholderTable*) \ 1.646 + static_field(SystemDictionary, _shared_dictionary, Dictionary*) \ 1.647 + static_field(SystemDictionary, _system_loader_lock_obj, oop) \ 1.648 + static_field(SystemDictionary, _loader_constraints, LoaderConstraintTable*) \ 1.649 + static_field(SystemDictionary, WK_KLASS(Object_klass), Klass*) \ 1.650 + static_field(SystemDictionary, WK_KLASS(String_klass), Klass*) \ 1.651 + static_field(SystemDictionary, WK_KLASS(Class_klass), Klass*) \ 1.652 + static_field(SystemDictionary, WK_KLASS(Cloneable_klass), Klass*) \ 1.653 + static_field(SystemDictionary, WK_KLASS(ClassLoader_klass), Klass*) \ 1.654 + static_field(SystemDictionary, WK_KLASS(Serializable_klass), Klass*) \ 1.655 + static_field(SystemDictionary, WK_KLASS(System_klass), Klass*) \ 1.656 + static_field(SystemDictionary, WK_KLASS(Throwable_klass), Klass*) \ 1.657 + static_field(SystemDictionary, WK_KLASS(ThreadDeath_klass), Klass*) \ 1.658 + static_field(SystemDictionary, WK_KLASS(Error_klass), Klass*) \ 1.659 + static_field(SystemDictionary, WK_KLASS(Exception_klass), Klass*) \ 1.660 + static_field(SystemDictionary, WK_KLASS(RuntimeException_klass), Klass*) \ 1.661 + static_field(SystemDictionary, WK_KLASS(ClassNotFoundException_klass), Klass*) \ 1.662 + static_field(SystemDictionary, WK_KLASS(NoClassDefFoundError_klass), Klass*) \ 1.663 + static_field(SystemDictionary, WK_KLASS(LinkageError_klass), Klass*) \ 1.664 + static_field(SystemDictionary, WK_KLASS(ClassCastException_klass), Klass*) \ 1.665 + static_field(SystemDictionary, WK_KLASS(ArrayStoreException_klass), Klass*) \ 1.666 + static_field(SystemDictionary, WK_KLASS(VirtualMachineError_klass), Klass*) \ 1.667 + static_field(SystemDictionary, WK_KLASS(OutOfMemoryError_klass), Klass*) \ 1.668 + static_field(SystemDictionary, WK_KLASS(StackOverflowError_klass), Klass*) \ 1.669 + static_field(SystemDictionary, WK_KLASS(ProtectionDomain_klass), Klass*) \ 1.670 + static_field(SystemDictionary, WK_KLASS(AccessControlContext_klass), Klass*) \ 1.671 + static_field(SystemDictionary, WK_KLASS(Reference_klass), Klass*) \ 1.672 + static_field(SystemDictionary, WK_KLASS(SoftReference_klass), Klass*) \ 1.673 + static_field(SystemDictionary, WK_KLASS(WeakReference_klass), Klass*) \ 1.674 + static_field(SystemDictionary, WK_KLASS(FinalReference_klass), Klass*) \ 1.675 + static_field(SystemDictionary, WK_KLASS(PhantomReference_klass), Klass*) \ 1.676 + static_field(SystemDictionary, WK_KLASS(Finalizer_klass), Klass*) \ 1.677 + static_field(SystemDictionary, WK_KLASS(Thread_klass), Klass*) \ 1.678 + static_field(SystemDictionary, WK_KLASS(ThreadGroup_klass), Klass*) \ 1.679 + static_field(SystemDictionary, WK_KLASS(Properties_klass), Klass*) \ 1.680 + static_field(SystemDictionary, WK_KLASS(StringBuffer_klass), Klass*) \ 1.681 + static_field(SystemDictionary, WK_KLASS(MethodHandle_klass), Klass*) \ 1.682 + static_field(SystemDictionary, _box_klasses[0], Klass*) \ 1.683 + static_field(SystemDictionary, _java_system_loader, oop) \ 1.684 + \ 1.685 + /*************/ \ 1.686 + /* vmSymbols */ \ 1.687 + /*************/ \ 1.688 + \ 1.689 + static_field(vmSymbols, _symbols[0], Symbol*) \ 1.690 + \ 1.691 + /*******************/ \ 1.692 + /* HashtableBucket */ \ 1.693 + /*******************/ \ 1.694 + \ 1.695 + nonstatic_field(HashtableBucket<mtInternal>, _entry, BasicHashtableEntry<mtInternal>*) \ 1.696 + \ 1.697 + /******************/ \ 1.698 + /* HashtableEntry */ \ 1.699 + /******************/ \ 1.700 + \ 1.701 + nonstatic_field(BasicHashtableEntry<mtInternal>, _next, BasicHashtableEntry<mtInternal>*) \ 1.702 + nonstatic_field(BasicHashtableEntry<mtInternal>, _hash, unsigned int) \ 1.703 + nonstatic_field(IntptrHashtableEntry, _literal, intptr_t) \ 1.704 + \ 1.705 + /*************/ \ 1.706 + /* Hashtable */ \ 1.707 + /*************/ \ 1.708 + \ 1.709 + nonstatic_field(BasicHashtable<mtInternal>, _table_size, int) \ 1.710 + nonstatic_field(BasicHashtable<mtInternal>, _buckets, HashtableBucket<mtInternal>*) \ 1.711 + nonstatic_field(BasicHashtable<mtInternal>, _free_list, BasicHashtableEntry<mtInternal>*) \ 1.712 + nonstatic_field(BasicHashtable<mtInternal>, _first_free_entry, char*) \ 1.713 + nonstatic_field(BasicHashtable<mtInternal>, _end_block, char*) \ 1.714 + nonstatic_field(BasicHashtable<mtInternal>, _entry_size, int) \ 1.715 + \ 1.716 + /*******************/ \ 1.717 + /* DictionaryEntry */ \ 1.718 + /*******************/ \ 1.719 + \ 1.720 + nonstatic_field(DictionaryEntry, _loader_data, ClassLoaderData*) \ 1.721 + nonstatic_field(DictionaryEntry, _pd_set, ProtectionDomainEntry*) \ 1.722 + \ 1.723 + /********************/ \ 1.724 + \ 1.725 + nonstatic_field(PlaceholderEntry, _loader_data, ClassLoaderData*) \ 1.726 + \ 1.727 + /**************************/ \ 1.728 + /* ProtectionDomainEntry */ \ 1.729 + /**************************/ \ 1.730 + \ 1.731 + nonstatic_field(ProtectionDomainEntry, _next, ProtectionDomainEntry*) \ 1.732 + nonstatic_field(ProtectionDomainEntry, _pd_cache, ProtectionDomainCacheEntry*) \ 1.733 + \ 1.734 + /*******************************/ \ 1.735 + /* ProtectionDomainCacheEntry */ \ 1.736 + /*******************************/ \ 1.737 + \ 1.738 + nonstatic_field(ProtectionDomainCacheEntry, _literal, oop) \ 1.739 + \ 1.740 + /*************************/ \ 1.741 + /* LoaderConstraintEntry */ \ 1.742 + /*************************/ \ 1.743 + \ 1.744 + nonstatic_field(LoaderConstraintEntry, _name, Symbol*) \ 1.745 + nonstatic_field(LoaderConstraintEntry, _num_loaders, int) \ 1.746 + nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \ 1.747 + nonstatic_field(LoaderConstraintEntry, _loaders, ClassLoaderData**) \ 1.748 + \ 1.749 + nonstatic_field(ClassLoaderData, _class_loader, oop) \ 1.750 + nonstatic_field(ClassLoaderData, _next, ClassLoaderData*) \ 1.751 + \ 1.752 + static_field(ClassLoaderDataGraph, _head, ClassLoaderData*) \ 1.753 + \ 1.754 + /**********/ \ 1.755 + /* Arrays */ \ 1.756 + /**********/ \ 1.757 + \ 1.758 + nonstatic_field(Array<Klass*>, _length, int) \ 1.759 + nonstatic_field(Array<Klass*>, _data[0], Klass*) \ 1.760 + \ 1.761 + /*******************/ \ 1.762 + /* GrowableArrays */ \ 1.763 + /*******************/ \ 1.764 + \ 1.765 + nonstatic_field(GenericGrowableArray, _len, int) \ 1.766 + nonstatic_field(GenericGrowableArray, _max, int) \ 1.767 + nonstatic_field(GenericGrowableArray, _arena, Arena*) \ 1.768 + nonstatic_field(GrowableArray<int>, _data, int*) \ 1.769 + \ 1.770 + /********************************/ \ 1.771 + /* CodeCache (NOTE: incomplete) */ \ 1.772 + /********************************/ \ 1.773 + \ 1.774 + static_field(CodeCache, _heap, CodeHeap*) \ 1.775 + static_field(CodeCache, _scavenge_root_nmethods, nmethod*) \ 1.776 + \ 1.777 + /*******************************/ \ 1.778 + /* CodeHeap (NOTE: incomplete) */ \ 1.779 + /*******************************/ \ 1.780 + \ 1.781 + nonstatic_field(CodeHeap, _memory, VirtualSpace) \ 1.782 + nonstatic_field(CodeHeap, _segmap, VirtualSpace) \ 1.783 + nonstatic_field(CodeHeap, _log2_segment_size, int) \ 1.784 + nonstatic_field(HeapBlock, _header, HeapBlock::Header) \ 1.785 + nonstatic_field(HeapBlock::Header, _length, size_t) \ 1.786 + nonstatic_field(HeapBlock::Header, _used, bool) \ 1.787 + \ 1.788 + /**********************************/ \ 1.789 + /* Interpreter (NOTE: incomplete) */ \ 1.790 + /**********************************/ \ 1.791 + \ 1.792 + static_field(AbstractInterpreter, _code, StubQueue*) \ 1.793 + \ 1.794 + /****************************/ \ 1.795 + /* Stubs (NOTE: incomplete) */ \ 1.796 + /****************************/ \ 1.797 + \ 1.798 + nonstatic_field(StubQueue, _stub_buffer, address) \ 1.799 + nonstatic_field(StubQueue, _buffer_limit, int) \ 1.800 + nonstatic_field(StubQueue, _queue_begin, int) \ 1.801 + nonstatic_field(StubQueue, _queue_end, int) \ 1.802 + nonstatic_field(StubQueue, _number_of_stubs, int) \ 1.803 + nonstatic_field(InterpreterCodelet, _size, int) \ 1.804 + nonstatic_field(InterpreterCodelet, _description, const char*) \ 1.805 + nonstatic_field(InterpreterCodelet, _bytecode, Bytecodes::Code) \ 1.806 + \ 1.807 + /***********************************/ \ 1.808 + /* StubRoutines (NOTE: incomplete) */ \ 1.809 + /***********************************/ \ 1.810 + \ 1.811 + static_field(StubRoutines, _verify_oop_count, jint) \ 1.812 + static_field(StubRoutines, _call_stub_return_address, address) \ 1.813 + static_field(StubRoutines, _aescrypt_encryptBlock, address) \ 1.814 + static_field(StubRoutines, _aescrypt_decryptBlock, address) \ 1.815 + static_field(StubRoutines, _cipherBlockChaining_encryptAESCrypt, address) \ 1.816 + static_field(StubRoutines, _cipherBlockChaining_decryptAESCrypt, address) \ 1.817 + static_field(StubRoutines, _updateBytesCRC32, address) \ 1.818 + static_field(StubRoutines, _crc_table_adr, address) \ 1.819 + \ 1.820 + /*****************/ \ 1.821 + /* SharedRuntime */ \ 1.822 + /*****************/ \ 1.823 + \ 1.824 + static_field(SharedRuntime, _ic_miss_blob, RuntimeStub*) \ 1.825 + \ 1.826 + /***************************************/ \ 1.827 + /* PcDesc and other compiled code info */ \ 1.828 + /***************************************/ \ 1.829 + \ 1.830 + nonstatic_field(PcDesc, _pc_offset, int) \ 1.831 + nonstatic_field(PcDesc, _scope_decode_offset, int) \ 1.832 + nonstatic_field(PcDesc, _obj_decode_offset, int) \ 1.833 + nonstatic_field(PcDesc, _flags, int) \ 1.834 + \ 1.835 + /***************************************************/ \ 1.836 + /* CodeBlobs (NOTE: incomplete, but only a little) */ \ 1.837 + /***************************************************/ \ 1.838 + \ 1.839 + nonstatic_field(CodeBlob, _name, const char*) \ 1.840 + nonstatic_field(CodeBlob, _size, int) \ 1.841 + nonstatic_field(CodeBlob, _header_size, int) \ 1.842 + nonstatic_field(CodeBlob, _relocation_size, int) \ 1.843 + nonstatic_field(CodeBlob, _content_offset, int) \ 1.844 + nonstatic_field(CodeBlob, _code_offset, int) \ 1.845 + nonstatic_field(CodeBlob, _frame_complete_offset, int) \ 1.846 + nonstatic_field(CodeBlob, _data_offset, int) \ 1.847 + nonstatic_field(CodeBlob, _frame_size, int) \ 1.848 + nonstatic_field(CodeBlob, _oop_maps, OopMapSet*) \ 1.849 + \ 1.850 + nonstatic_field(RuntimeStub, _caller_must_gc_arguments, bool) \ 1.851 + \ 1.852 + /**************************************************/ \ 1.853 + /* NMethods (NOTE: incomplete, but only a little) */ \ 1.854 + /**************************************************/ \ 1.855 + \ 1.856 + nonstatic_field(nmethod, _method, Method*) \ 1.857 + nonstatic_field(nmethod, _entry_bci, int) \ 1.858 + nonstatic_field(nmethod, _osr_link, nmethod*) \ 1.859 + nonstatic_field(nmethod, _scavenge_root_link, nmethod*) \ 1.860 + nonstatic_field(nmethod, _scavenge_root_state, jbyte) \ 1.861 + nonstatic_field(nmethod, _state, volatile unsigned char) \ 1.862 + nonstatic_field(nmethod, _exception_offset, int) \ 1.863 + nonstatic_field(nmethod, _deoptimize_offset, int) \ 1.864 + nonstatic_field(nmethod, _deoptimize_mh_offset, int) \ 1.865 + nonstatic_field(nmethod, _orig_pc_offset, int) \ 1.866 + nonstatic_field(nmethod, _stub_offset, int) \ 1.867 + nonstatic_field(nmethod, _consts_offset, int) \ 1.868 + nonstatic_field(nmethod, _oops_offset, int) \ 1.869 + nonstatic_field(nmethod, _metadata_offset, int) \ 1.870 + nonstatic_field(nmethod, _scopes_data_offset, int) \ 1.871 + nonstatic_field(nmethod, _scopes_pcs_offset, int) \ 1.872 + nonstatic_field(nmethod, _dependencies_offset, int) \ 1.873 + nonstatic_field(nmethod, _handler_table_offset, int) \ 1.874 + nonstatic_field(nmethod, _nul_chk_table_offset, int) \ 1.875 + nonstatic_field(nmethod, _nmethod_end_offset, int) \ 1.876 + nonstatic_field(nmethod, _entry_point, address) \ 1.877 + nonstatic_field(nmethod, _verified_entry_point, address) \ 1.878 + nonstatic_field(nmethod, _osr_entry_point, address) \ 1.879 + nonstatic_field(nmethod, _lock_count, jint) \ 1.880 + nonstatic_field(nmethod, _stack_traversal_mark, long) \ 1.881 + nonstatic_field(nmethod, _compile_id, int) \ 1.882 + nonstatic_field(nmethod, _comp_level, int) \ 1.883 + nonstatic_field(nmethod, _exception_cache, ExceptionCache*) \ 1.884 + nonstatic_field(nmethod, _marked_for_deoptimization, bool) \ 1.885 + \ 1.886 + unchecked_c2_static_field(Deoptimization, _trap_reason_name, void*) \ 1.887 + \ 1.888 + /********************************/ \ 1.889 + /* JavaCalls (NOTE: incomplete) */ \ 1.890 + /********************************/ \ 1.891 + \ 1.892 + nonstatic_field(JavaCallWrapper, _anchor, JavaFrameAnchor) \ 1.893 + /********************************/ \ 1.894 + /* JavaFrameAnchor (NOTE: incomplete) */ \ 1.895 + /********************************/ \ 1.896 + volatile_nonstatic_field(JavaFrameAnchor, _last_Java_sp, intptr_t*) \ 1.897 + volatile_nonstatic_field(JavaFrameAnchor, _last_Java_pc, address) \ 1.898 + \ 1.899 + /******************************/ \ 1.900 + /* Threads (NOTE: incomplete) */ \ 1.901 + /******************************/ \ 1.902 + \ 1.903 + static_field(Threads, _thread_list, JavaThread*) \ 1.904 + static_field(Threads, _number_of_threads, int) \ 1.905 + static_field(Threads, _number_of_non_daemon_threads, int) \ 1.906 + static_field(Threads, _return_code, int) \ 1.907 + \ 1.908 + nonstatic_field(ThreadShadow, _pending_exception, oop) \ 1.909 + nonstatic_field(ThreadShadow, _exception_file, const char*) \ 1.910 + nonstatic_field(ThreadShadow, _exception_line, int) \ 1.911 + volatile_nonstatic_field(Thread, _suspend_flags, uint32_t) \ 1.912 + nonstatic_field(Thread, _active_handles, JNIHandleBlock*) \ 1.913 + nonstatic_field(Thread, _tlab, ThreadLocalAllocBuffer) \ 1.914 + nonstatic_field(Thread, _allocated_bytes, jlong) \ 1.915 + nonstatic_field(Thread, _current_pending_monitor, ObjectMonitor*) \ 1.916 + nonstatic_field(Thread, _current_pending_monitor_is_from_java, bool) \ 1.917 + nonstatic_field(Thread, _current_waiting_monitor, ObjectMonitor*) \ 1.918 + nonstatic_field(NamedThread, _name, char*) \ 1.919 + nonstatic_field(NamedThread, _processed_thread, JavaThread*) \ 1.920 + nonstatic_field(JavaThread, _next, JavaThread*) \ 1.921 + nonstatic_field(JavaThread, _threadObj, oop) \ 1.922 + nonstatic_field(JavaThread, _anchor, JavaFrameAnchor) \ 1.923 + nonstatic_field(JavaThread, _vm_result, oop) \ 1.924 + nonstatic_field(JavaThread, _vm_result_2, Metadata*) \ 1.925 + nonstatic_field(JavaThread, _pending_async_exception, oop) \ 1.926 + volatile_nonstatic_field(JavaThread, _exception_oop, oop) \ 1.927 + volatile_nonstatic_field(JavaThread, _exception_pc, address) \ 1.928 + volatile_nonstatic_field(JavaThread, _is_method_handle_return, int) \ 1.929 + nonstatic_field(JavaThread, _special_runtime_exit_condition, JavaThread::AsyncRequests) \ 1.930 + nonstatic_field(JavaThread, _saved_exception_pc, address) \ 1.931 + volatile_nonstatic_field(JavaThread, _thread_state, JavaThreadState) \ 1.932 + nonstatic_field(JavaThread, _osthread, OSThread*) \ 1.933 + nonstatic_field(JavaThread, _stack_base, address) \ 1.934 + nonstatic_field(JavaThread, _stack_size, size_t) \ 1.935 + nonstatic_field(JavaThread, _vframe_array_head, vframeArray*) \ 1.936 + nonstatic_field(JavaThread, _vframe_array_last, vframeArray*) \ 1.937 + nonstatic_field(JavaThread, _satb_mark_queue, ObjPtrQueue) \ 1.938 + nonstatic_field(JavaThread, _dirty_card_queue, DirtyCardQueue) \ 1.939 + nonstatic_field(Thread, _resource_area, ResourceArea*) \ 1.940 + nonstatic_field(CompilerThread, _env, ciEnv*) \ 1.941 + \ 1.942 + /************/ \ 1.943 + /* OSThread */ \ 1.944 + /************/ \ 1.945 + \ 1.946 + volatile_nonstatic_field(OSThread, _interrupted, jint) \ 1.947 + \ 1.948 + /************************/ \ 1.949 + /* OopMap and OopMapSet */ \ 1.950 + /************************/ \ 1.951 + \ 1.952 + nonstatic_field(OopMap, _pc_offset, int) \ 1.953 + nonstatic_field(OopMap, _omv_count, int) \ 1.954 + nonstatic_field(OopMap, _omv_data_size, int) \ 1.955 + nonstatic_field(OopMap, _omv_data, unsigned char*) \ 1.956 + nonstatic_field(OopMap, _write_stream, CompressedWriteStream*) \ 1.957 + nonstatic_field(OopMapSet, _om_count, int) \ 1.958 + nonstatic_field(OopMapSet, _om_size, int) \ 1.959 + nonstatic_field(OopMapSet, _om_data, OopMap**) \ 1.960 + \ 1.961 + /*********************************/ \ 1.962 + /* JNIHandles and JNIHandleBlock */ \ 1.963 + /*********************************/ \ 1.964 + static_field(JNIHandles, _global_handles, JNIHandleBlock*) \ 1.965 + static_field(JNIHandles, _weak_global_handles, JNIHandleBlock*) \ 1.966 + static_field(JNIHandles, _deleted_handle, oop) \ 1.967 + \ 1.968 + unchecked_nonstatic_field(JNIHandleBlock, _handles, JNIHandleBlock::block_size_in_oops * sizeof(Oop)) /* Note: no type */ \ 1.969 + nonstatic_field(JNIHandleBlock, _top, int) \ 1.970 + nonstatic_field(JNIHandleBlock, _next, JNIHandleBlock*) \ 1.971 + \ 1.972 + /********************/ \ 1.973 + /* CompressedStream */ \ 1.974 + /********************/ \ 1.975 + \ 1.976 + nonstatic_field(CompressedStream, _buffer, u_char*) \ 1.977 + nonstatic_field(CompressedStream, _position, int) \ 1.978 + \ 1.979 + /*********************************/ \ 1.980 + /* VMRegImpl (NOTE: incomplete) */ \ 1.981 + /*********************************/ \ 1.982 + \ 1.983 + static_field(VMRegImpl, regName[0], const char*) \ 1.984 + static_field(VMRegImpl, stack0, VMReg) \ 1.985 + \ 1.986 + /*******************************/ \ 1.987 + /* Runtime1 (NOTE: incomplete) */ \ 1.988 + /*******************************/ \ 1.989 + \ 1.990 + unchecked_c1_static_field(Runtime1, _blobs, sizeof(Runtime1::_blobs)) /* NOTE: no type */ \ 1.991 + \ 1.992 + /**************/ \ 1.993 + /* allocation */ \ 1.994 + /**************/ \ 1.995 + \ 1.996 + nonstatic_field(Chunk, _next, Chunk*) \ 1.997 + nonstatic_field(Chunk, _len, const size_t) \ 1.998 + \ 1.999 + nonstatic_field(Arena, _first, Chunk*) \ 1.1000 + nonstatic_field(Arena, _chunk, Chunk*) \ 1.1001 + nonstatic_field(Arena, _hwm, char*) \ 1.1002 + nonstatic_field(Arena, _max, char*) \ 1.1003 + \ 1.1004 + /************/ \ 1.1005 + /* CI */ \ 1.1006 + /************/ \ 1.1007 + \ 1.1008 + nonstatic_field(ciEnv, _system_dictionary_modification_counter, int) \ 1.1009 + nonstatic_field(ciEnv, _compiler_data, void*) \ 1.1010 + nonstatic_field(ciEnv, _failure_reason, const char*) \ 1.1011 + nonstatic_field(ciEnv, _factory, ciObjectFactory*) \ 1.1012 + nonstatic_field(ciEnv, _dependencies, Dependencies*) \ 1.1013 + nonstatic_field(ciEnv, _task, CompileTask*) \ 1.1014 + nonstatic_field(ciEnv, _arena, Arena*) \ 1.1015 + \ 1.1016 + nonstatic_field(ciBaseObject, _ident, uint) \ 1.1017 + \ 1.1018 + nonstatic_field(ciObject, _handle, jobject) \ 1.1019 + nonstatic_field(ciObject, _klass, ciKlass*) \ 1.1020 + \ 1.1021 + nonstatic_field(ciMetadata, _metadata, Metadata*) \ 1.1022 + \ 1.1023 + nonstatic_field(ciSymbol, _symbol, Symbol*) \ 1.1024 + \ 1.1025 + nonstatic_field(ciType, _basic_type, BasicType) \ 1.1026 + \ 1.1027 + nonstatic_field(ciKlass, _name, ciSymbol*) \ 1.1028 + \ 1.1029 + nonstatic_field(ciArrayKlass, _dimension, jint) \ 1.1030 + \ 1.1031 + nonstatic_field(ciObjArrayKlass, _element_klass, ciKlass*) \ 1.1032 + nonstatic_field(ciObjArrayKlass, _base_element_klass, ciKlass*) \ 1.1033 + \ 1.1034 + nonstatic_field(ciInstanceKlass, _init_state, InstanceKlass::ClassState) \ 1.1035 + nonstatic_field(ciInstanceKlass, _is_shared, bool) \ 1.1036 + \ 1.1037 + nonstatic_field(ciMethod, _interpreter_invocation_count, int) \ 1.1038 + nonstatic_field(ciMethod, _interpreter_throwout_count, int) \ 1.1039 + nonstatic_field(ciMethod, _instructions_size, int) \ 1.1040 + \ 1.1041 + nonstatic_field(ciMethodData, _data_size, int) \ 1.1042 + nonstatic_field(ciMethodData, _state, u_char) \ 1.1043 + nonstatic_field(ciMethodData, _extra_data_size, int) \ 1.1044 + nonstatic_field(ciMethodData, _data, intptr_t*) \ 1.1045 + nonstatic_field(ciMethodData, _hint_di, int) \ 1.1046 + nonstatic_field(ciMethodData, _eflags, intx) \ 1.1047 + nonstatic_field(ciMethodData, _arg_local, intx) \ 1.1048 + nonstatic_field(ciMethodData, _arg_stack, intx) \ 1.1049 + nonstatic_field(ciMethodData, _arg_returned, intx) \ 1.1050 + nonstatic_field(ciMethodData, _current_mileage, int) \ 1.1051 + nonstatic_field(ciMethodData, _orig, MethodData) \ 1.1052 + \ 1.1053 + nonstatic_field(ciField, _holder, ciInstanceKlass*) \ 1.1054 + nonstatic_field(ciField, _name, ciSymbol*) \ 1.1055 + nonstatic_field(ciField, _signature, ciSymbol*) \ 1.1056 + nonstatic_field(ciField, _offset, int) \ 1.1057 + nonstatic_field(ciField, _is_constant, bool) \ 1.1058 + nonstatic_field(ciField, _constant_value, ciConstant) \ 1.1059 + \ 1.1060 + nonstatic_field(ciObjectFactory, _ci_metadata, GrowableArray<ciMetadata*>*) \ 1.1061 + nonstatic_field(ciObjectFactory, _symbols, GrowableArray<ciSymbol*>*) \ 1.1062 + nonstatic_field(ciObjectFactory, _unloaded_methods, GrowableArray<ciMethod*>*) \ 1.1063 + \ 1.1064 + nonstatic_field(ciConstant, _type, BasicType) \ 1.1065 + nonstatic_field(ciConstant, _value._int, jint) \ 1.1066 + nonstatic_field(ciConstant, _value._long, jlong) \ 1.1067 + nonstatic_field(ciConstant, _value._float, jfloat) \ 1.1068 + nonstatic_field(ciConstant, _value._double, jdouble) \ 1.1069 + nonstatic_field(ciConstant, _value._object, ciObject*) \ 1.1070 + \ 1.1071 + /************/ \ 1.1072 + /* Monitors */ \ 1.1073 + /************/ \ 1.1074 + \ 1.1075 + volatile_nonstatic_field(ObjectMonitor, _header, markOop) \ 1.1076 + unchecked_nonstatic_field(ObjectMonitor, _object, sizeof(void *)) /* NOTE: no type */ \ 1.1077 + unchecked_nonstatic_field(ObjectMonitor, _owner, sizeof(void *)) /* NOTE: no type */ \ 1.1078 + volatile_nonstatic_field(ObjectMonitor, _count, intptr_t) \ 1.1079 + volatile_nonstatic_field(ObjectMonitor, _waiters, intptr_t) \ 1.1080 + volatile_nonstatic_field(ObjectMonitor, _recursions, intptr_t) \ 1.1081 + nonstatic_field(ObjectMonitor, FreeNext, ObjectMonitor*) \ 1.1082 + volatile_nonstatic_field(BasicLock, _displaced_header, markOop) \ 1.1083 + nonstatic_field(BasicObjectLock, _lock, BasicLock) \ 1.1084 + nonstatic_field(BasicObjectLock, _obj, oop) \ 1.1085 + static_field(ObjectSynchronizer, gBlockList, ObjectMonitor*) \ 1.1086 + \ 1.1087 + /*********************/ \ 1.1088 + /* Matcher (C2 only) */ \ 1.1089 + /*********************/ \ 1.1090 + \ 1.1091 + unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \ 1.1092 + \ 1.1093 + c2_nonstatic_field(Node, _in, Node**) \ 1.1094 + c2_nonstatic_field(Node, _out, Node**) \ 1.1095 + c2_nonstatic_field(Node, _cnt, node_idx_t) \ 1.1096 + c2_nonstatic_field(Node, _max, node_idx_t) \ 1.1097 + c2_nonstatic_field(Node, _outcnt, node_idx_t) \ 1.1098 + c2_nonstatic_field(Node, _outmax, node_idx_t) \ 1.1099 + c2_nonstatic_field(Node, _idx, const node_idx_t) \ 1.1100 + c2_nonstatic_field(Node, _class_id, jushort) \ 1.1101 + c2_nonstatic_field(Node, _flags, jushort) \ 1.1102 + \ 1.1103 + c2_nonstatic_field(Compile, _root, RootNode*) \ 1.1104 + c2_nonstatic_field(Compile, _unique, uint) \ 1.1105 + c2_nonstatic_field(Compile, _entry_bci, int) \ 1.1106 + c2_nonstatic_field(Compile, _top, Node*) \ 1.1107 + c2_nonstatic_field(Compile, _cfg, PhaseCFG*) \ 1.1108 + c2_nonstatic_field(Compile, _regalloc, PhaseRegAlloc*) \ 1.1109 + c2_nonstatic_field(Compile, _method, ciMethod*) \ 1.1110 + c2_nonstatic_field(Compile, _compile_id, const int) \ 1.1111 + c2_nonstatic_field(Compile, _save_argument_registers, const bool) \ 1.1112 + c2_nonstatic_field(Compile, _subsume_loads, const bool) \ 1.1113 + c2_nonstatic_field(Compile, _do_escape_analysis, const bool) \ 1.1114 + c2_nonstatic_field(Compile, _eliminate_boxing, const bool) \ 1.1115 + c2_nonstatic_field(Compile, _ilt, InlineTree*) \ 1.1116 + \ 1.1117 + c2_nonstatic_field(InlineTree, _caller_jvms, JVMState*) \ 1.1118 + c2_nonstatic_field(InlineTree, _method, ciMethod*) \ 1.1119 + c2_nonstatic_field(InlineTree, _caller_tree, InlineTree*) \ 1.1120 + c2_nonstatic_field(InlineTree, _subtrees, GrowableArray<InlineTree*>) \ 1.1121 + \ 1.1122 + c2_nonstatic_field(OptoRegPair, _first, short) \ 1.1123 + c2_nonstatic_field(OptoRegPair, _second, short) \ 1.1124 + \ 1.1125 + c2_nonstatic_field(JVMState, _caller, JVMState*) \ 1.1126 + c2_nonstatic_field(JVMState, _depth, uint) \ 1.1127 + c2_nonstatic_field(JVMState, _locoff, uint) \ 1.1128 + c2_nonstatic_field(JVMState, _stkoff, uint) \ 1.1129 + c2_nonstatic_field(JVMState, _monoff, uint) \ 1.1130 + c2_nonstatic_field(JVMState, _scloff, uint) \ 1.1131 + c2_nonstatic_field(JVMState, _endoff, uint) \ 1.1132 + c2_nonstatic_field(JVMState, _sp, uint) \ 1.1133 + c2_nonstatic_field(JVMState, _bci, int) \ 1.1134 + c2_nonstatic_field(JVMState, _method, ciMethod*) \ 1.1135 + c2_nonstatic_field(JVMState, _map, SafePointNode*) \ 1.1136 + \ 1.1137 + c2_nonstatic_field(SafePointNode, _jvms, JVMState* const) \ 1.1138 + \ 1.1139 + c2_nonstatic_field(MachSafePointNode, _jvms, JVMState*) \ 1.1140 + c2_nonstatic_field(MachSafePointNode, _jvmadj, uint) \ 1.1141 + \ 1.1142 + c2_nonstatic_field(MachIfNode, _prob, jfloat) \ 1.1143 + c2_nonstatic_field(MachIfNode, _fcnt, jfloat) \ 1.1144 + \ 1.1145 + c2_nonstatic_field(CallNode, _entry_point, address) \ 1.1146 + \ 1.1147 + c2_nonstatic_field(CallJavaNode, _method, ciMethod*) \ 1.1148 + \ 1.1149 + c2_nonstatic_field(CallRuntimeNode, _name, const char*) \ 1.1150 + \ 1.1151 + c2_nonstatic_field(CallStaticJavaNode, _name, const char*) \ 1.1152 + \ 1.1153 + c2_nonstatic_field(MachCallJavaNode, _method, ciMethod*) \ 1.1154 + c2_nonstatic_field(MachCallJavaNode, _bci, int) \ 1.1155 + \ 1.1156 + c2_nonstatic_field(MachCallStaticJavaNode, _name, const char*) \ 1.1157 + \ 1.1158 + c2_nonstatic_field(MachCallRuntimeNode, _name, const char*) \ 1.1159 + \ 1.1160 + c2_nonstatic_field(PhaseCFG, _number_of_blocks, uint) \ 1.1161 + c2_nonstatic_field(PhaseCFG, _blocks, Block_List) \ 1.1162 + c2_nonstatic_field(PhaseCFG, _node_to_block_mapping, Block_Array) \ 1.1163 + c2_nonstatic_field(PhaseCFG, _root_block, Block*) \ 1.1164 + \ 1.1165 + c2_nonstatic_field(PhaseRegAlloc, _node_regs, OptoRegPair*) \ 1.1166 + c2_nonstatic_field(PhaseRegAlloc, _node_regs_max_index, uint) \ 1.1167 + c2_nonstatic_field(PhaseRegAlloc, _framesize, uint) \ 1.1168 + c2_nonstatic_field(PhaseRegAlloc, _max_reg, OptoReg::Name) \ 1.1169 + \ 1.1170 + c2_nonstatic_field(PhaseChaitin, _trip_cnt, int) \ 1.1171 + c2_nonstatic_field(PhaseChaitin, _alternate, int) \ 1.1172 + c2_nonstatic_field(PhaseChaitin, _lo_degree, uint) \ 1.1173 + c2_nonstatic_field(PhaseChaitin, _lo_stk_degree, uint) \ 1.1174 + c2_nonstatic_field(PhaseChaitin, _hi_degree, uint) \ 1.1175 + c2_nonstatic_field(PhaseChaitin, _simplified, uint) \ 1.1176 + \ 1.1177 + c2_nonstatic_field(Block, _nodes, Node_List) \ 1.1178 + c2_nonstatic_field(Block, _succs, Block_Array) \ 1.1179 + c2_nonstatic_field(Block, _num_succs, uint) \ 1.1180 + c2_nonstatic_field(Block, _pre_order, uint) \ 1.1181 + c2_nonstatic_field(Block, _dom_depth, uint) \ 1.1182 + c2_nonstatic_field(Block, _idom, Block*) \ 1.1183 + c2_nonstatic_field(Block, _freq, jfloat) \ 1.1184 + \ 1.1185 + c2_nonstatic_field(CFGElement, _freq, jfloat) \ 1.1186 + \ 1.1187 + c2_nonstatic_field(Block_List, _cnt, uint) \ 1.1188 + \ 1.1189 + c2_nonstatic_field(Block_Array, _size, uint) \ 1.1190 + c2_nonstatic_field(Block_Array, _blocks, Block**) \ 1.1191 + c2_nonstatic_field(Block_Array, _arena, Arena*) \ 1.1192 + \ 1.1193 + c2_nonstatic_field(Node_List, _cnt, uint) \ 1.1194 + \ 1.1195 + c2_nonstatic_field(Node_Array, _max, uint) \ 1.1196 + c2_nonstatic_field(Node_Array, _nodes, Node**) \ 1.1197 + c2_nonstatic_field(Node_Array, _a, Arena*) \ 1.1198 + \ 1.1199 + \ 1.1200 + /*********************/ \ 1.1201 + /* -XX flags */ \ 1.1202 + /*********************/ \ 1.1203 + \ 1.1204 + nonstatic_field(Flag, _type, const char*) \ 1.1205 + nonstatic_field(Flag, _name, const char*) \ 1.1206 + unchecked_nonstatic_field(Flag, _addr, sizeof(void*)) /* NOTE: no type */ \ 1.1207 + nonstatic_field(Flag, _flags, Flag::Flags) \ 1.1208 + static_field(Flag, flags, Flag*) \ 1.1209 + static_field(Flag, numFlags, size_t) \ 1.1210 + \ 1.1211 + /*************************/ \ 1.1212 + /* JDK / VM version info */ \ 1.1213 + /*************************/ \ 1.1214 + \ 1.1215 + static_field(Abstract_VM_Version, _s_vm_release, const char*) \ 1.1216 + static_field(Abstract_VM_Version, _s_internal_vm_info_string, const char*) \ 1.1217 + static_field(Abstract_VM_Version, _vm_major_version, int) \ 1.1218 + static_field(Abstract_VM_Version, _vm_minor_version, int) \ 1.1219 + static_field(Abstract_VM_Version, _vm_build_number, int) \ 1.1220 + static_field(Abstract_VM_Version, _reserve_for_allocation_prefetch, int) \ 1.1221 + \ 1.1222 + static_field(JDK_Version, _current, JDK_Version) \ 1.1223 + nonstatic_field(JDK_Version, _partially_initialized, bool) \ 1.1224 + nonstatic_field(JDK_Version, _major, unsigned char) \ 1.1225 + \ 1.1226 + /*************************/ \ 1.1227 + /* JVMTI */ \ 1.1228 + /*************************/ \ 1.1229 + \ 1.1230 + JVMTI_STRUCTS(static_field) \ 1.1231 + \ 1.1232 + /*************/ \ 1.1233 + /* Arguments */ \ 1.1234 + /*************/ \ 1.1235 + \ 1.1236 + static_field(Arguments, _jvm_flags_array, char**) \ 1.1237 + static_field(Arguments, _num_jvm_flags, int) \ 1.1238 + static_field(Arguments, _jvm_args_array, char**) \ 1.1239 + static_field(Arguments, _num_jvm_args, int) \ 1.1240 + static_field(Arguments, _java_command, char*) \ 1.1241 + \ 1.1242 + /************/ \ 1.1243 + /* Array<T> */ \ 1.1244 + /************/ \ 1.1245 + \ 1.1246 + nonstatic_field(Array<int>, _length, int) \ 1.1247 + unchecked_nonstatic_field(Array<int>, _data, sizeof(int)) \ 1.1248 + unchecked_nonstatic_field(Array<u1>, _data, sizeof(u1)) \ 1.1249 + unchecked_nonstatic_field(Array<u2>, _data, sizeof(u2)) \ 1.1250 + unchecked_nonstatic_field(Array<Method*>, _data, sizeof(Method*)) \ 1.1251 + unchecked_nonstatic_field(Array<Klass*>, _data, sizeof(Klass*)) \ 1.1252 + \ 1.1253 + /*********************************/ \ 1.1254 + /* java_lang_Class fields */ \ 1.1255 + /*********************************/ \ 1.1256 + \ 1.1257 + static_field(java_lang_Class, _klass_offset, int) \ 1.1258 + static_field(java_lang_Class, _array_klass_offset, int) \ 1.1259 + static_field(java_lang_Class, _oop_size_offset, int) \ 1.1260 + static_field(java_lang_Class, _static_oop_field_count_offset, int) \ 1.1261 + \ 1.1262 + /************************/ \ 1.1263 + /* Miscellaneous fields */ \ 1.1264 + /************************/ \ 1.1265 + \ 1.1266 + nonstatic_field(CompileTask, _method, Method*) \ 1.1267 + nonstatic_field(CompileTask, _osr_bci, int) \ 1.1268 + nonstatic_field(CompileTask, _comp_level, int) \ 1.1269 + nonstatic_field(CompileTask, _compile_id, uint) \ 1.1270 + nonstatic_field(CompileTask, _next, CompileTask*) \ 1.1271 + nonstatic_field(CompileTask, _prev, CompileTask*) \ 1.1272 + \ 1.1273 + nonstatic_field(vframeArray, _next, vframeArray*) \ 1.1274 + nonstatic_field(vframeArray, _original, frame) \ 1.1275 + nonstatic_field(vframeArray, _caller, frame) \ 1.1276 + nonstatic_field(vframeArray, _frames, int) \ 1.1277 + \ 1.1278 + nonstatic_field(vframeArrayElement, _frame, frame) \ 1.1279 + nonstatic_field(vframeArrayElement, _bci, int) \ 1.1280 + nonstatic_field(vframeArrayElement, _method, Method*) \ 1.1281 + \ 1.1282 + nonstatic_field(PtrQueue, _active, bool) \ 1.1283 + nonstatic_field(PtrQueue, _buf, void**) \ 1.1284 + nonstatic_field(PtrQueue, _index, size_t) \ 1.1285 + \ 1.1286 + nonstatic_field(AccessFlags, _flags, jint) \ 1.1287 + nonstatic_field(elapsedTimer, _counter, jlong) \ 1.1288 + nonstatic_field(elapsedTimer, _active, bool) \ 1.1289 + nonstatic_field(InvocationCounter, _counter, unsigned int) \ 1.1290 + volatile_nonstatic_field(FreeChunk, _size, size_t) \ 1.1291 + nonstatic_field(FreeChunk, _next, FreeChunk*) \ 1.1292 + nonstatic_field(FreeChunk, _prev, FreeChunk*) \ 1.1293 + nonstatic_field(FreeList<FreeChunk>, _size, size_t) \ 1.1294 + nonstatic_field(FreeList<Metablock>, _size, size_t) \ 1.1295 + nonstatic_field(FreeList<FreeChunk>, _count, ssize_t) \ 1.1296 + nonstatic_field(FreeList<Metablock>, _count, ssize_t) \ 1.1297 + nonstatic_field(MetablockTreeDictionary, _total_size, size_t) 1.1298 + 1.1299 + 1.1300 +//-------------------------------------------------------------------------------- 1.1301 +// VM_TYPES 1.1302 +// 1.1303 +// This list must enumerate at least all of the types in the above 1.1304 +// list. For the types in the above list, the entry below must have 1.1305 +// exactly the same spacing since string comparisons are done in the 1.1306 +// code which verifies the consistency of these tables (in the debug 1.1307 +// build). 1.1308 +// 1.1309 +// In addition to the above types, this list is required to enumerate 1.1310 +// the JNI's java types, which are used to indicate the size of Java 1.1311 +// fields in this VM to the SA. Further, oop types are currently 1.1312 +// distinguished by name (i.e., ends with "oop") over in the SA. 1.1313 +// 1.1314 +// The declare_toplevel_type macro should be used to declare types 1.1315 +// which do not have a superclass. 1.1316 +// 1.1317 +// The declare_integer_type and declare_unsigned_integer_type macros 1.1318 +// are required in order to properly identify C integer types over in 1.1319 +// the SA. They should be used for any type which is otherwise opaque 1.1320 +// and which it is necessary to coerce into an integer value. This 1.1321 +// includes, for example, the type uintptr_t. Note that while they 1.1322 +// will properly identify the type's size regardless of the platform, 1.1323 +// since it is does not seem possible to deduce or check signedness at 1.1324 +// compile time using the pointer comparison tricks, it is currently 1.1325 +// required that the given types have the same signedness across all 1.1326 +// platforms. 1.1327 +// 1.1328 +// NOTE that there are platform-specific additions to this table in 1.1329 +// vmStructs_<os>_<cpu>.hpp. 1.1330 + 1.1331 +#define VM_TYPES(declare_type, \ 1.1332 + declare_toplevel_type, \ 1.1333 + declare_oop_type, \ 1.1334 + declare_integer_type, \ 1.1335 + declare_unsigned_integer_type, \ 1.1336 + declare_c1_toplevel_type, \ 1.1337 + declare_c2_type, \ 1.1338 + declare_c2_toplevel_type) \ 1.1339 + \ 1.1340 + /*************************************************************/ \ 1.1341 + /* Java primitive types -- required by the SA implementation */ \ 1.1342 + /* in order to determine the size of Java fields in this VM */ \ 1.1343 + /* (the implementation looks up these names specifically) */ \ 1.1344 + /* NOTE: since we fetch these sizes from the remote VM, we */ \ 1.1345 + /* have a bootstrapping sequence during which it is not */ \ 1.1346 + /* valid to fetch Java values from the remote process, only */ \ 1.1347 + /* C integer values (of known size). NOTE also that we do */ \ 1.1348 + /* NOT include "Java unsigned" types like juint here; since */ \ 1.1349 + /* Java does not have unsigned primitive types, those can */ \ 1.1350 + /* not be mapped directly and are considered to be C integer */ \ 1.1351 + /* types in this system (see the "other types" section, */ \ 1.1352 + /* below.) */ \ 1.1353 + /*************************************************************/ \ 1.1354 + \ 1.1355 + declare_toplevel_type(jboolean) \ 1.1356 + declare_toplevel_type(jbyte) \ 1.1357 + declare_toplevel_type(jchar) \ 1.1358 + declare_toplevel_type(jdouble) \ 1.1359 + declare_toplevel_type(jfloat) \ 1.1360 + declare_toplevel_type(jint) \ 1.1361 + declare_toplevel_type(jlong) \ 1.1362 + declare_toplevel_type(jshort) \ 1.1363 + \ 1.1364 + /*********************************************************************/ \ 1.1365 + /* C integer types. User-defined typedefs (like "size_t" or */ \ 1.1366 + /* "intptr_t") are guaranteed to be present with the same names over */ \ 1.1367 + /* in the SA's type database. Names like "unsigned short" are not */ \ 1.1368 + /* guaranteed to be visible through the SA's type database lookup */ \ 1.1369 + /* mechanism, though they will have a Type object created for them */ \ 1.1370 + /* and are valid types for Fields. */ \ 1.1371 + /*********************************************************************/ \ 1.1372 + declare_integer_type(bool) \ 1.1373 + declare_integer_type(short) \ 1.1374 + declare_integer_type(int) \ 1.1375 + declare_integer_type(long) \ 1.1376 + declare_integer_type(char) \ 1.1377 + declare_unsigned_integer_type(unsigned char) \ 1.1378 + declare_unsigned_integer_type(volatile unsigned char) \ 1.1379 + declare_unsigned_integer_type(u_char) \ 1.1380 + declare_unsigned_integer_type(unsigned int) \ 1.1381 + declare_unsigned_integer_type(uint) \ 1.1382 + declare_unsigned_integer_type(unsigned short) \ 1.1383 + declare_unsigned_integer_type(jushort) \ 1.1384 + declare_unsigned_integer_type(unsigned long) \ 1.1385 + /* The compiler thinks this is a different type than */ \ 1.1386 + /* unsigned short on Win32 */ \ 1.1387 + declare_unsigned_integer_type(u1) \ 1.1388 + declare_unsigned_integer_type(u2) \ 1.1389 + declare_unsigned_integer_type(unsigned) \ 1.1390 + \ 1.1391 + /*****************************/ \ 1.1392 + /* C primitive pointer types */ \ 1.1393 + /*****************************/ \ 1.1394 + \ 1.1395 + declare_toplevel_type(void*) \ 1.1396 + declare_toplevel_type(int*) \ 1.1397 + declare_toplevel_type(char*) \ 1.1398 + declare_toplevel_type(char**) \ 1.1399 + declare_toplevel_type(u_char*) \ 1.1400 + declare_toplevel_type(unsigned char*) \ 1.1401 + declare_toplevel_type(volatile unsigned char*) \ 1.1402 + \ 1.1403 + /*******************************************************************/ \ 1.1404 + /* Types which it will be handy to have available over in the SA */ \ 1.1405 + /* in order to do platform-independent address -> integer coercion */ \ 1.1406 + /* (note: these will be looked up by name) */ \ 1.1407 + /*******************************************************************/ \ 1.1408 + \ 1.1409 + declare_unsigned_integer_type(size_t) \ 1.1410 + declare_integer_type(ssize_t) \ 1.1411 + declare_integer_type(intx) \ 1.1412 + declare_integer_type(intptr_t) \ 1.1413 + declare_unsigned_integer_type(uintx) \ 1.1414 + declare_unsigned_integer_type(uintptr_t) \ 1.1415 + declare_unsigned_integer_type(uint32_t) \ 1.1416 + declare_unsigned_integer_type(uint64_t) \ 1.1417 + \ 1.1418 + /******************************************/ \ 1.1419 + /* OopDesc hierarchy (NOTE: some missing) */ \ 1.1420 + /******************************************/ \ 1.1421 + \ 1.1422 + declare_toplevel_type(oopDesc) \ 1.1423 + declare_type(arrayOopDesc, oopDesc) \ 1.1424 + declare_type(objArrayOopDesc, arrayOopDesc) \ 1.1425 + declare_type(instanceOopDesc, oopDesc) \ 1.1426 + declare_type(markOopDesc, oopDesc) \ 1.1427 + \ 1.1428 + /**************************************************/ \ 1.1429 + /* MetadataOopDesc hierarchy (NOTE: some missing) */ \ 1.1430 + /**************************************************/ \ 1.1431 + \ 1.1432 + declare_toplevel_type(CompiledICHolder) \ 1.1433 + declare_toplevel_type(MetaspaceObj) \ 1.1434 + declare_type(Metadata, MetaspaceObj) \ 1.1435 + declare_type(Klass, Metadata) \ 1.1436 + declare_type(ArrayKlass, Klass) \ 1.1437 + declare_type(ObjArrayKlass, ArrayKlass) \ 1.1438 + declare_type(TypeArrayKlass, ArrayKlass) \ 1.1439 + declare_type(InstanceKlass, Klass) \ 1.1440 + declare_type(InstanceClassLoaderKlass, InstanceKlass) \ 1.1441 + declare_type(InstanceMirrorKlass, InstanceKlass) \ 1.1442 + declare_type(InstanceRefKlass, InstanceKlass) \ 1.1443 + declare_type(ConstantPool, Metadata) \ 1.1444 + declare_type(ConstantPoolCache, MetaspaceObj) \ 1.1445 + declare_type(MethodData, Metadata) \ 1.1446 + declare_type(Method, Metadata) \ 1.1447 + declare_type(MethodCounters, MetaspaceObj) \ 1.1448 + declare_type(ConstMethod, MetaspaceObj) \ 1.1449 + \ 1.1450 + declare_toplevel_type(vtableEntry) \ 1.1451 + \ 1.1452 + declare_toplevel_type(Symbol) \ 1.1453 + declare_toplevel_type(Symbol*) \ 1.1454 + declare_toplevel_type(volatile Metadata*) \ 1.1455 + \ 1.1456 + declare_toplevel_type(DataLayout) \ 1.1457 + declare_toplevel_type(nmethodBucket) \ 1.1458 + \ 1.1459 + /********/ \ 1.1460 + /* Oops */ \ 1.1461 + /********/ \ 1.1462 + \ 1.1463 + declare_oop_type(markOop) \ 1.1464 + declare_oop_type(objArrayOop) \ 1.1465 + declare_oop_type(oop) \ 1.1466 + declare_oop_type(narrowOop) \ 1.1467 + declare_oop_type(typeArrayOop) \ 1.1468 + \ 1.1469 + /*************************************/ \ 1.1470 + /* MethodOop-related data structures */ \ 1.1471 + /*************************************/ \ 1.1472 + \ 1.1473 + declare_toplevel_type(CheckedExceptionElement) \ 1.1474 + declare_toplevel_type(LocalVariableTableElement) \ 1.1475 + declare_toplevel_type(ExceptionTableElement) \ 1.1476 + declare_toplevel_type(MethodParametersElement) \ 1.1477 + \ 1.1478 + declare_toplevel_type(ClassLoaderData) \ 1.1479 + declare_toplevel_type(ClassLoaderDataGraph) \ 1.1480 + \ 1.1481 + /******************************************/ \ 1.1482 + /* Generation and space hierarchies */ \ 1.1483 + /* (needed for run-time type information) */ \ 1.1484 + /******************************************/ \ 1.1485 + \ 1.1486 + declare_toplevel_type(CollectedHeap) \ 1.1487 + declare_type(SharedHeap, CollectedHeap) \ 1.1488 + declare_type(GenCollectedHeap, SharedHeap) \ 1.1489 + declare_toplevel_type(Generation) \ 1.1490 + declare_type(DefNewGeneration, Generation) \ 1.1491 + declare_type(CardGeneration, Generation) \ 1.1492 + declare_type(OneContigSpaceCardGeneration, CardGeneration) \ 1.1493 + declare_type(TenuredGeneration, OneContigSpaceCardGeneration) \ 1.1494 + declare_toplevel_type(Space) \ 1.1495 + declare_toplevel_type(BitMap) \ 1.1496 + declare_type(CompactibleSpace, Space) \ 1.1497 + declare_type(ContiguousSpace, CompactibleSpace) \ 1.1498 + declare_type(EdenSpace, ContiguousSpace) \ 1.1499 + declare_type(OffsetTableContigSpace, ContiguousSpace) \ 1.1500 + declare_type(TenuredSpace, OffsetTableContigSpace) \ 1.1501 + declare_toplevel_type(BarrierSet) \ 1.1502 + declare_type(ModRefBarrierSet, BarrierSet) \ 1.1503 + declare_type(CardTableModRefBS, ModRefBarrierSet) \ 1.1504 + declare_type(CardTableModRefBSForCTRS, CardTableModRefBS) \ 1.1505 + declare_toplevel_type(BarrierSet::Name) \ 1.1506 + declare_toplevel_type(GenRemSet) \ 1.1507 + declare_type(CardTableRS, GenRemSet) \ 1.1508 + declare_toplevel_type(BlockOffsetSharedArray) \ 1.1509 + declare_toplevel_type(BlockOffsetTable) \ 1.1510 + declare_type(BlockOffsetArray, BlockOffsetTable) \ 1.1511 + declare_type(BlockOffsetArrayContigSpace, BlockOffsetArray) \ 1.1512 + declare_type(BlockOffsetArrayNonContigSpace, BlockOffsetArray) \ 1.1513 + \ 1.1514 + /* Miscellaneous other GC types */ \ 1.1515 + \ 1.1516 + declare_toplevel_type(ageTable) \ 1.1517 + declare_toplevel_type(Generation::StatRecord) \ 1.1518 + declare_toplevel_type(GenerationSpec) \ 1.1519 + declare_toplevel_type(HeapWord) \ 1.1520 + declare_toplevel_type(MemRegion) \ 1.1521 + declare_toplevel_type(ThreadLocalAllocBuffer) \ 1.1522 + declare_toplevel_type(VirtualSpace) \ 1.1523 + declare_toplevel_type(WaterMark) \ 1.1524 + declare_toplevel_type(ObjPtrQueue) \ 1.1525 + declare_toplevel_type(DirtyCardQueue) \ 1.1526 + \ 1.1527 + /* Pointers to Garbage Collection types */ \ 1.1528 + \ 1.1529 + declare_toplevel_type(BarrierSet*) \ 1.1530 + declare_toplevel_type(BlockOffsetSharedArray*) \ 1.1531 + declare_toplevel_type(GenRemSet*) \ 1.1532 + declare_toplevel_type(CardTableRS*) \ 1.1533 + declare_toplevel_type(CardTableModRefBS*) \ 1.1534 + declare_toplevel_type(CardTableModRefBS**) \ 1.1535 + declare_toplevel_type(CardTableModRefBSForCTRS*) \ 1.1536 + declare_toplevel_type(CardTableModRefBSForCTRS**) \ 1.1537 + declare_toplevel_type(CollectedHeap*) \ 1.1538 + declare_toplevel_type(ContiguousSpace*) \ 1.1539 + declare_toplevel_type(DefNewGeneration*) \ 1.1540 + declare_toplevel_type(EdenSpace*) \ 1.1541 + declare_toplevel_type(GenCollectedHeap*) \ 1.1542 + declare_toplevel_type(Generation*) \ 1.1543 + declare_toplevel_type(GenerationSpec**) \ 1.1544 + declare_toplevel_type(HeapWord*) \ 1.1545 + declare_toplevel_type(MemRegion*) \ 1.1546 + declare_toplevel_type(OffsetTableContigSpace*) \ 1.1547 + declare_toplevel_type(OneContigSpaceCardGeneration*) \ 1.1548 + declare_toplevel_type(Space*) \ 1.1549 + declare_toplevel_type(ThreadLocalAllocBuffer*) \ 1.1550 + \ 1.1551 + /************************/ \ 1.1552 + /* PerfMemory - jvmstat */ \ 1.1553 + /************************/ \ 1.1554 + \ 1.1555 + declare_toplevel_type(PerfDataPrologue) \ 1.1556 + declare_toplevel_type(PerfDataPrologue*) \ 1.1557 + declare_toplevel_type(PerfDataEntry) \ 1.1558 + declare_toplevel_type(PerfMemory) \ 1.1559 + \ 1.1560 + /*********************************/ \ 1.1561 + /* SymbolTable, SystemDictionary */ \ 1.1562 + /*********************************/ \ 1.1563 + \ 1.1564 + declare_toplevel_type(BasicHashtable<mtInternal>) \ 1.1565 + declare_type(IntptrHashtable, BasicHashtable<mtInternal>) \ 1.1566 + declare_type(SymbolTable, SymbolHashtable) \ 1.1567 + declare_type(StringTable, StringHashtable) \ 1.1568 + declare_type(LoaderConstraintTable, KlassHashtable) \ 1.1569 + declare_type(KlassTwoOopHashtable, KlassHashtable) \ 1.1570 + declare_type(Dictionary, KlassTwoOopHashtable) \ 1.1571 + declare_type(PlaceholderTable, SymbolTwoOopHashtable) \ 1.1572 + declare_toplevel_type(BasicHashtableEntry<mtInternal>) \ 1.1573 + declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>) \ 1.1574 + declare_type(DictionaryEntry, KlassHashtableEntry) \ 1.1575 + declare_type(PlaceholderEntry, SymbolHashtableEntry) \ 1.1576 + declare_type(LoaderConstraintEntry, KlassHashtableEntry) \ 1.1577 + declare_toplevel_type(HashtableBucket<mtInternal>) \ 1.1578 + declare_toplevel_type(SystemDictionary) \ 1.1579 + declare_toplevel_type(vmSymbols) \ 1.1580 + declare_toplevel_type(ProtectionDomainEntry) \ 1.1581 + declare_toplevel_type(ProtectionDomainCacheEntry) \ 1.1582 + \ 1.1583 + declare_toplevel_type(GenericGrowableArray) \ 1.1584 + declare_toplevel_type(GrowableArray<int>) \ 1.1585 + declare_toplevel_type(Arena) \ 1.1586 + declare_type(ResourceArea, Arena) \ 1.1587 + declare_toplevel_type(Chunk) \ 1.1588 + \ 1.1589 + /***********************************************************/ \ 1.1590 + /* Thread hierarchy (needed for run-time type information) */ \ 1.1591 + /***********************************************************/ \ 1.1592 + \ 1.1593 + declare_toplevel_type(Threads) \ 1.1594 + declare_toplevel_type(ThreadShadow) \ 1.1595 + declare_type(Thread, ThreadShadow) \ 1.1596 + declare_type(NamedThread, Thread) \ 1.1597 + declare_type(WatcherThread, Thread) \ 1.1598 + declare_type(JavaThread, Thread) \ 1.1599 + declare_type(JvmtiAgentThread, JavaThread) \ 1.1600 + declare_type(ServiceThread, JavaThread) \ 1.1601 + declare_type(CompilerThread, JavaThread) \ 1.1602 + declare_toplevel_type(OSThread) \ 1.1603 + declare_toplevel_type(JavaFrameAnchor) \ 1.1604 + \ 1.1605 + /***************/ \ 1.1606 + /* Interpreter */ \ 1.1607 + /***************/ \ 1.1608 + \ 1.1609 + declare_toplevel_type(AbstractInterpreter) \ 1.1610 + \ 1.1611 + /*********/ \ 1.1612 + /* Stubs */ \ 1.1613 + /*********/ \ 1.1614 + \ 1.1615 + declare_toplevel_type(StubQueue) \ 1.1616 + declare_toplevel_type(StubRoutines) \ 1.1617 + declare_toplevel_type(Stub) \ 1.1618 + declare_type(InterpreterCodelet, Stub) \ 1.1619 + \ 1.1620 + /*************/ \ 1.1621 + /* JavaCalls */ \ 1.1622 + /*************/ \ 1.1623 + \ 1.1624 + declare_toplevel_type(JavaCallWrapper) \ 1.1625 + \ 1.1626 + /*************/ \ 1.1627 + /* CodeCache */ \ 1.1628 + /*************/ \ 1.1629 + \ 1.1630 + declare_toplevel_type(CodeCache) \ 1.1631 + \ 1.1632 + /************/ \ 1.1633 + /* CodeHeap */ \ 1.1634 + /************/ \ 1.1635 + \ 1.1636 + declare_toplevel_type(CodeHeap) \ 1.1637 + declare_toplevel_type(CodeHeap*) \ 1.1638 + declare_toplevel_type(HeapBlock) \ 1.1639 + declare_toplevel_type(HeapBlock::Header) \ 1.1640 + declare_type(FreeBlock, HeapBlock) \ 1.1641 + \ 1.1642 + /*************************************************************/ \ 1.1643 + /* CodeBlob hierarchy (needed for run-time type information) */ \ 1.1644 + /*************************************************************/ \ 1.1645 + \ 1.1646 + declare_toplevel_type(SharedRuntime) \ 1.1647 + \ 1.1648 + declare_toplevel_type(CodeBlob) \ 1.1649 + declare_type(BufferBlob, CodeBlob) \ 1.1650 + declare_type(AdapterBlob, BufferBlob) \ 1.1651 + declare_type(MethodHandlesAdapterBlob, BufferBlob) \ 1.1652 + declare_type(nmethod, CodeBlob) \ 1.1653 + declare_type(RuntimeStub, CodeBlob) \ 1.1654 + declare_type(SingletonBlob, CodeBlob) \ 1.1655 + declare_type(SafepointBlob, SingletonBlob) \ 1.1656 + declare_type(DeoptimizationBlob, SingletonBlob) \ 1.1657 + declare_c2_type(ExceptionBlob, SingletonBlob) \ 1.1658 + declare_c2_type(UncommonTrapBlob, CodeBlob) \ 1.1659 + \ 1.1660 + /***************************************/ \ 1.1661 + /* PcDesc and other compiled code info */ \ 1.1662 + /***************************************/ \ 1.1663 + \ 1.1664 + declare_toplevel_type(PcDesc) \ 1.1665 + declare_toplevel_type(ExceptionCache) \ 1.1666 + declare_toplevel_type(PcDescCache) \ 1.1667 + declare_toplevel_type(Dependencies) \ 1.1668 + declare_toplevel_type(CompileTask) \ 1.1669 + declare_toplevel_type(Deoptimization) \ 1.1670 + \ 1.1671 + /************************/ \ 1.1672 + /* OopMap and OopMapSet */ \ 1.1673 + /************************/ \ 1.1674 + \ 1.1675 + declare_toplevel_type(OopMap) \ 1.1676 + declare_toplevel_type(OopMapSet) \ 1.1677 + \ 1.1678 + /********************/ \ 1.1679 + /* CompressedStream */ \ 1.1680 + /********************/ \ 1.1681 + \ 1.1682 + declare_toplevel_type(CompressedStream) \ 1.1683 + \ 1.1684 + /**************/ \ 1.1685 + /* VMRegImpl */ \ 1.1686 + /**************/ \ 1.1687 + \ 1.1688 + declare_toplevel_type(VMRegImpl) \ 1.1689 + \ 1.1690 + /*********************************/ \ 1.1691 + /* JNIHandles and JNIHandleBlock */ \ 1.1692 + /*********************************/ \ 1.1693 + \ 1.1694 + declare_toplevel_type(JNIHandles) \ 1.1695 + declare_toplevel_type(JNIHandleBlock) \ 1.1696 + declare_toplevel_type(jobject) \ 1.1697 + \ 1.1698 + /**********************/ \ 1.1699 + /* Runtime1 (C1 only) */ \ 1.1700 + /**********************/ \ 1.1701 + \ 1.1702 + declare_c1_toplevel_type(Runtime1) \ 1.1703 + \ 1.1704 + /************/ \ 1.1705 + /* Monitors */ \ 1.1706 + /************/ \ 1.1707 + \ 1.1708 + declare_toplevel_type(ObjectMonitor) \ 1.1709 + declare_toplevel_type(ObjectSynchronizer) \ 1.1710 + declare_toplevel_type(BasicLock) \ 1.1711 + declare_toplevel_type(BasicObjectLock) \ 1.1712 + \ 1.1713 + /*********************/ \ 1.1714 + /* Matcher (C2 only) */ \ 1.1715 + /*********************/ \ 1.1716 + \ 1.1717 + declare_c2_toplevel_type(Matcher) \ 1.1718 + declare_c2_toplevel_type(Compile) \ 1.1719 + declare_c2_toplevel_type(InlineTree) \ 1.1720 + declare_c2_toplevel_type(OptoRegPair) \ 1.1721 + declare_c2_toplevel_type(JVMState) \ 1.1722 + declare_c2_toplevel_type(Phase) \ 1.1723 + declare_c2_type(PhaseCFG, Phase) \ 1.1724 + declare_c2_type(PhaseRegAlloc, Phase) \ 1.1725 + declare_c2_type(PhaseChaitin, PhaseRegAlloc) \ 1.1726 + declare_c2_toplevel_type(CFGElement) \ 1.1727 + declare_c2_type(Block, CFGElement) \ 1.1728 + declare_c2_toplevel_type(Block_Array) \ 1.1729 + declare_c2_type(Block_List, Block_Array) \ 1.1730 + declare_c2_toplevel_type(Node_Array) \ 1.1731 + declare_c2_type(Node_List, Node_Array) \ 1.1732 + declare_c2_type(Unique_Node_List, Node_List) \ 1.1733 + declare_c2_toplevel_type(Node) \ 1.1734 + declare_c2_type(AddNode, Node) \ 1.1735 + declare_c2_type(AddINode, AddNode) \ 1.1736 + declare_c2_type(AddLNode, AddNode) \ 1.1737 + declare_c2_type(AddFNode, AddNode) \ 1.1738 + declare_c2_type(AddDNode, AddNode) \ 1.1739 + declare_c2_type(AddPNode, Node) \ 1.1740 + declare_c2_type(OrINode, AddNode) \ 1.1741 + declare_c2_type(OrLNode, AddNode) \ 1.1742 + declare_c2_type(XorINode, AddNode) \ 1.1743 + declare_c2_type(XorLNode, AddNode) \ 1.1744 + declare_c2_type(MaxNode, AddNode) \ 1.1745 + declare_c2_type(MaxINode, MaxNode) \ 1.1746 + declare_c2_type(MinINode, MaxNode) \ 1.1747 + declare_c2_type(StartNode, MultiNode) \ 1.1748 + declare_c2_type(StartOSRNode, StartNode) \ 1.1749 + declare_c2_type(ParmNode, ProjNode) \ 1.1750 + declare_c2_type(ReturnNode, Node) \ 1.1751 + declare_c2_type(RethrowNode, Node) \ 1.1752 + declare_c2_type(TailCallNode, ReturnNode) \ 1.1753 + declare_c2_type(TailJumpNode, ReturnNode) \ 1.1754 + declare_c2_type(SafePointNode, MultiNode) \ 1.1755 + declare_c2_type(CallNode, SafePointNode) \ 1.1756 + declare_c2_type(CallJavaNode, CallNode) \ 1.1757 + declare_c2_type(CallStaticJavaNode, CallJavaNode) \ 1.1758 + declare_c2_type(CallDynamicJavaNode, CallJavaNode) \ 1.1759 + declare_c2_type(CallRuntimeNode, CallNode) \ 1.1760 + declare_c2_type(CallLeafNode, CallRuntimeNode) \ 1.1761 + declare_c2_type(CallLeafNoFPNode, CallLeafNode) \ 1.1762 + declare_c2_type(AllocateNode, CallNode) \ 1.1763 + declare_c2_type(AllocateArrayNode, AllocateNode) \ 1.1764 + declare_c2_type(LockNode, AbstractLockNode) \ 1.1765 + declare_c2_type(UnlockNode, AbstractLockNode) \ 1.1766 + declare_c2_type(FastLockNode, CmpNode) \ 1.1767 + declare_c2_type(FastUnlockNode, CmpNode) \ 1.1768 + declare_c2_type(RegionNode, Node) \ 1.1769 + declare_c2_type(JProjNode, ProjNode) \ 1.1770 + declare_c2_type(PhiNode, TypeNode) \ 1.1771 + declare_c2_type(GotoNode, Node) \ 1.1772 + declare_c2_type(CProjNode, ProjNode) \ 1.1773 + declare_c2_type(MultiBranchNode, MultiNode) \ 1.1774 + declare_c2_type(IfNode, MultiBranchNode) \ 1.1775 + declare_c2_type(IfTrueNode, CProjNode) \ 1.1776 + declare_c2_type(IfFalseNode, CProjNode) \ 1.1777 + declare_c2_type(PCTableNode, MultiBranchNode) \ 1.1778 + declare_c2_type(JumpNode, PCTableNode) \ 1.1779 + declare_c2_type(JumpProjNode, JProjNode) \ 1.1780 + declare_c2_type(CatchNode, PCTableNode) \ 1.1781 + declare_c2_type(CatchProjNode, CProjNode) \ 1.1782 + declare_c2_type(CreateExNode, TypeNode) \ 1.1783 + declare_c2_type(ClearArrayNode, Node) \ 1.1784 + declare_c2_type(NeverBranchNode, MultiBranchNode) \ 1.1785 + declare_c2_type(ConNode, TypeNode) \ 1.1786 + declare_c2_type(ConINode, ConNode) \ 1.1787 + declare_c2_type(ConPNode, ConNode) \ 1.1788 + declare_c2_type(ConNNode, ConNode) \ 1.1789 + declare_c2_type(ConLNode, ConNode) \ 1.1790 + declare_c2_type(ConFNode, ConNode) \ 1.1791 + declare_c2_type(ConDNode, ConNode) \ 1.1792 + declare_c2_type(BinaryNode, Node) \ 1.1793 + declare_c2_type(CMoveNode, TypeNode) \ 1.1794 + declare_c2_type(CMoveDNode, CMoveNode) \ 1.1795 + declare_c2_type(CMoveFNode, CMoveNode) \ 1.1796 + declare_c2_type(CMoveINode, CMoveNode) \ 1.1797 + declare_c2_type(CMoveLNode, CMoveNode) \ 1.1798 + declare_c2_type(CMovePNode, CMoveNode) \ 1.1799 + declare_c2_type(CMoveNNode, CMoveNode) \ 1.1800 + declare_c2_type(EncodePNode, TypeNode) \ 1.1801 + declare_c2_type(DecodeNNode, TypeNode) \ 1.1802 + declare_c2_type(EncodePKlassNode, TypeNode) \ 1.1803 + declare_c2_type(DecodeNKlassNode, TypeNode) \ 1.1804 + declare_c2_type(ConstraintCastNode, TypeNode) \ 1.1805 + declare_c2_type(CastIINode, ConstraintCastNode) \ 1.1806 + declare_c2_type(CastPPNode, ConstraintCastNode) \ 1.1807 + declare_c2_type(CheckCastPPNode, TypeNode) \ 1.1808 + declare_c2_type(Conv2BNode, Node) \ 1.1809 + declare_c2_type(ConvD2FNode, Node) \ 1.1810 + declare_c2_type(ConvD2INode, Node) \ 1.1811 + declare_c2_type(ConvD2LNode, Node) \ 1.1812 + declare_c2_type(ConvF2DNode, Node) \ 1.1813 + declare_c2_type(ConvF2INode, Node) \ 1.1814 + declare_c2_type(ConvF2LNode, Node) \ 1.1815 + declare_c2_type(ConvI2DNode, Node) \ 1.1816 + declare_c2_type(ConvI2FNode, Node) \ 1.1817 + declare_c2_type(ConvI2LNode, TypeNode) \ 1.1818 + declare_c2_type(ConvL2DNode, Node) \ 1.1819 + declare_c2_type(ConvL2FNode, Node) \ 1.1820 + declare_c2_type(ConvL2INode, Node) \ 1.1821 + declare_c2_type(CastX2PNode, Node) \ 1.1822 + declare_c2_type(CastP2XNode, Node) \ 1.1823 + declare_c2_type(MemBarNode, MultiNode) \ 1.1824 + declare_c2_type(MemBarAcquireNode, MemBarNode) \ 1.1825 + declare_c2_type(MemBarReleaseNode, MemBarNode) \ 1.1826 + declare_c2_type(LoadFenceNode, MemBarNode) \ 1.1827 + declare_c2_type(StoreFenceNode, MemBarNode) \ 1.1828 + declare_c2_type(MemBarVolatileNode, MemBarNode) \ 1.1829 + declare_c2_type(MemBarCPUOrderNode, MemBarNode) \ 1.1830 + declare_c2_type(InitializeNode, MemBarNode) \ 1.1831 + declare_c2_type(ThreadLocalNode, Node) \ 1.1832 + declare_c2_type(Opaque1Node, Node) \ 1.1833 + declare_c2_type(Opaque2Node, Node) \ 1.1834 + declare_c2_type(PartialSubtypeCheckNode, Node) \ 1.1835 + declare_c2_type(MoveI2FNode, Node) \ 1.1836 + declare_c2_type(MoveL2DNode, Node) \ 1.1837 + declare_c2_type(MoveF2INode, Node) \ 1.1838 + declare_c2_type(MoveD2LNode, Node) \ 1.1839 + declare_c2_type(DivINode, Node) \ 1.1840 + declare_c2_type(DivLNode, Node) \ 1.1841 + declare_c2_type(DivFNode, Node) \ 1.1842 + declare_c2_type(DivDNode, Node) \ 1.1843 + declare_c2_type(ModINode, Node) \ 1.1844 + declare_c2_type(ModLNode, Node) \ 1.1845 + declare_c2_type(ModFNode, Node) \ 1.1846 + declare_c2_type(ModDNode, Node) \ 1.1847 + declare_c2_type(DivModNode, MultiNode) \ 1.1848 + declare_c2_type(DivModINode, DivModNode) \ 1.1849 + declare_c2_type(DivModLNode, DivModNode) \ 1.1850 + declare_c2_type(BoxLockNode, Node) \ 1.1851 + declare_c2_type(LoopNode, RegionNode) \ 1.1852 + declare_c2_type(CountedLoopNode, LoopNode) \ 1.1853 + declare_c2_type(CountedLoopEndNode, IfNode) \ 1.1854 + declare_c2_type(MachNode, Node) \ 1.1855 + declare_c2_type(MachIdealNode, MachNode) \ 1.1856 + declare_c2_type(MachTypeNode, MachNode) \ 1.1857 + declare_c2_type(MachBreakpointNode, MachIdealNode) \ 1.1858 + declare_c2_type(MachUEPNode, MachIdealNode) \ 1.1859 + declare_c2_type(MachPrologNode, MachIdealNode) \ 1.1860 + declare_c2_type(MachEpilogNode, MachIdealNode) \ 1.1861 + declare_c2_type(MachNopNode, MachIdealNode) \ 1.1862 + declare_c2_type(MachSpillCopyNode, MachIdealNode) \ 1.1863 + declare_c2_type(MachNullCheckNode, MachIdealNode) \ 1.1864 + declare_c2_type(MachProjNode, ProjNode) \ 1.1865 + declare_c2_type(MachIfNode, MachNode) \ 1.1866 + declare_c2_type(MachFastLockNode, MachNode) \ 1.1867 + declare_c2_type(MachReturnNode, MachNode) \ 1.1868 + declare_c2_type(MachSafePointNode, MachReturnNode) \ 1.1869 + declare_c2_type(MachCallNode, MachSafePointNode) \ 1.1870 + declare_c2_type(MachCallJavaNode, MachCallNode) \ 1.1871 + declare_c2_type(MachCallStaticJavaNode, MachCallJavaNode) \ 1.1872 + declare_c2_type(MachCallDynamicJavaNode, MachCallJavaNode) \ 1.1873 + declare_c2_type(MachCallRuntimeNode, MachCallNode) \ 1.1874 + declare_c2_type(MachHaltNode, MachReturnNode) \ 1.1875 + declare_c2_type(MachTempNode, MachNode) \ 1.1876 + declare_c2_type(MemNode, Node) \ 1.1877 + declare_c2_type(MergeMemNode, Node) \ 1.1878 + declare_c2_type(LoadNode, MemNode) \ 1.1879 + declare_c2_type(LoadBNode, LoadNode) \ 1.1880 + declare_c2_type(LoadUSNode, LoadNode) \ 1.1881 + declare_c2_type(LoadINode, LoadNode) \ 1.1882 + declare_c2_type(LoadRangeNode, LoadINode) \ 1.1883 + declare_c2_type(LoadLNode, LoadNode) \ 1.1884 + declare_c2_type(LoadL_unalignedNode, LoadLNode) \ 1.1885 + declare_c2_type(LoadFNode, LoadNode) \ 1.1886 + declare_c2_type(LoadDNode, LoadNode) \ 1.1887 + declare_c2_type(LoadD_unalignedNode, LoadDNode) \ 1.1888 + declare_c2_type(LoadPNode, LoadNode) \ 1.1889 + declare_c2_type(LoadNNode, LoadNode) \ 1.1890 + declare_c2_type(LoadKlassNode, LoadPNode) \ 1.1891 + declare_c2_type(LoadNKlassNode, LoadNNode) \ 1.1892 + declare_c2_type(LoadSNode, LoadNode) \ 1.1893 + declare_c2_type(StoreNode, MemNode) \ 1.1894 + declare_c2_type(StoreBNode, StoreNode) \ 1.1895 + declare_c2_type(StoreCNode, StoreNode) \ 1.1896 + declare_c2_type(StoreINode, StoreNode) \ 1.1897 + declare_c2_type(StoreLNode, StoreNode) \ 1.1898 + declare_c2_type(StoreFNode, StoreNode) \ 1.1899 + declare_c2_type(StoreDNode, StoreNode) \ 1.1900 + declare_c2_type(StorePNode, StoreNode) \ 1.1901 + declare_c2_type(StoreNNode, StoreNode) \ 1.1902 + declare_c2_type(StoreNKlassNode, StoreNode) \ 1.1903 + declare_c2_type(StoreCMNode, StoreNode) \ 1.1904 + declare_c2_type(LoadPLockedNode, LoadPNode) \ 1.1905 + declare_c2_type(SCMemProjNode, ProjNode) \ 1.1906 + declare_c2_type(LoadStoreNode, Node) \ 1.1907 + declare_c2_type(StorePConditionalNode, LoadStoreNode) \ 1.1908 + declare_c2_type(StoreLConditionalNode, LoadStoreNode) \ 1.1909 + declare_c2_type(CompareAndSwapLNode, LoadStoreNode) \ 1.1910 + declare_c2_type(CompareAndSwapINode, LoadStoreNode) \ 1.1911 + declare_c2_type(CompareAndSwapPNode, LoadStoreNode) \ 1.1912 + declare_c2_type(CompareAndSwapNNode, LoadStoreNode) \ 1.1913 + declare_c2_type(PrefetchReadNode, Node) \ 1.1914 + declare_c2_type(PrefetchWriteNode, Node) \ 1.1915 + declare_c2_type(MulNode, Node) \ 1.1916 + declare_c2_type(MulINode, MulNode) \ 1.1917 + declare_c2_type(MulLNode, MulNode) \ 1.1918 + declare_c2_type(MulFNode, MulNode) \ 1.1919 + declare_c2_type(MulDNode, MulNode) \ 1.1920 + declare_c2_type(MulHiLNode, Node) \ 1.1921 + declare_c2_type(AndINode, MulINode) \ 1.1922 + declare_c2_type(AndLNode, MulLNode) \ 1.1923 + declare_c2_type(LShiftINode, Node) \ 1.1924 + declare_c2_type(LShiftLNode, Node) \ 1.1925 + declare_c2_type(RShiftINode, Node) \ 1.1926 + declare_c2_type(RShiftLNode, Node) \ 1.1927 + declare_c2_type(URShiftINode, Node) \ 1.1928 + declare_c2_type(URShiftLNode, Node) \ 1.1929 + declare_c2_type(MultiNode, Node) \ 1.1930 + declare_c2_type(ProjNode, Node) \ 1.1931 + declare_c2_type(TypeNode, Node) \ 1.1932 + declare_c2_type(NodeHash, StackObj) \ 1.1933 + declare_c2_type(RootNode, LoopNode) \ 1.1934 + declare_c2_type(HaltNode, Node) \ 1.1935 + declare_c2_type(SubNode, Node) \ 1.1936 + declare_c2_type(SubINode, SubNode) \ 1.1937 + declare_c2_type(SubLNode, SubNode) \ 1.1938 + declare_c2_type(SubFPNode, SubNode) \ 1.1939 + declare_c2_type(SubFNode, SubFPNode) \ 1.1940 + declare_c2_type(SubDNode, SubFPNode) \ 1.1941 + declare_c2_type(CmpNode, SubNode) \ 1.1942 + declare_c2_type(CmpINode, CmpNode) \ 1.1943 + declare_c2_type(CmpUNode, CmpNode) \ 1.1944 + declare_c2_type(CmpPNode, CmpNode) \ 1.1945 + declare_c2_type(CmpNNode, CmpNode) \ 1.1946 + declare_c2_type(CmpLNode, CmpNode) \ 1.1947 + declare_c2_type(CmpL3Node, CmpLNode) \ 1.1948 + declare_c2_type(CmpFNode, CmpNode) \ 1.1949 + declare_c2_type(CmpF3Node, CmpFNode) \ 1.1950 + declare_c2_type(CmpDNode, CmpNode) \ 1.1951 + declare_c2_type(CmpD3Node, CmpDNode) \ 1.1952 + declare_c2_type(BoolNode, Node) \ 1.1953 + declare_c2_type(AbsNode, Node) \ 1.1954 + declare_c2_type(AbsINode, AbsNode) \ 1.1955 + declare_c2_type(AbsFNode, AbsNode) \ 1.1956 + declare_c2_type(AbsDNode, AbsNode) \ 1.1957 + declare_c2_type(CmpLTMaskNode, Node) \ 1.1958 + declare_c2_type(NegNode, Node) \ 1.1959 + declare_c2_type(NegFNode, NegNode) \ 1.1960 + declare_c2_type(NegDNode, NegNode) \ 1.1961 + declare_c2_type(CosDNode, Node) \ 1.1962 + declare_c2_type(SinDNode, Node) \ 1.1963 + declare_c2_type(TanDNode, Node) \ 1.1964 + declare_c2_type(AtanDNode, Node) \ 1.1965 + declare_c2_type(SqrtDNode, Node) \ 1.1966 + declare_c2_type(ExpDNode, Node) \ 1.1967 + declare_c2_type(LogDNode, Node) \ 1.1968 + declare_c2_type(Log10DNode, Node) \ 1.1969 + declare_c2_type(PowDNode, Node) \ 1.1970 + declare_c2_type(ReverseBytesINode, Node) \ 1.1971 + declare_c2_type(ReverseBytesLNode, Node) \ 1.1972 + declare_c2_type(VectorNode, Node) \ 1.1973 + declare_c2_type(AddVBNode, VectorNode) \ 1.1974 + declare_c2_type(AddVSNode, VectorNode) \ 1.1975 + declare_c2_type(AddVINode, VectorNode) \ 1.1976 + declare_c2_type(AddVLNode, VectorNode) \ 1.1977 + declare_c2_type(AddVFNode, VectorNode) \ 1.1978 + declare_c2_type(AddVDNode, VectorNode) \ 1.1979 + declare_c2_type(SubVBNode, VectorNode) \ 1.1980 + declare_c2_type(SubVSNode, VectorNode) \ 1.1981 + declare_c2_type(SubVINode, VectorNode) \ 1.1982 + declare_c2_type(SubVLNode, VectorNode) \ 1.1983 + declare_c2_type(SubVFNode, VectorNode) \ 1.1984 + declare_c2_type(SubVDNode, VectorNode) \ 1.1985 + declare_c2_type(MulVSNode, VectorNode) \ 1.1986 + declare_c2_type(MulVINode, VectorNode) \ 1.1987 + declare_c2_type(MulVFNode, VectorNode) \ 1.1988 + declare_c2_type(MulVDNode, VectorNode) \ 1.1989 + declare_c2_type(DivVFNode, VectorNode) \ 1.1990 + declare_c2_type(DivVDNode, VectorNode) \ 1.1991 + declare_c2_type(LShiftVBNode, VectorNode) \ 1.1992 + declare_c2_type(LShiftVSNode, VectorNode) \ 1.1993 + declare_c2_type(LShiftVINode, VectorNode) \ 1.1994 + declare_c2_type(LShiftVLNode, VectorNode) \ 1.1995 + declare_c2_type(RShiftVBNode, VectorNode) \ 1.1996 + declare_c2_type(RShiftVSNode, VectorNode) \ 1.1997 + declare_c2_type(RShiftVINode, VectorNode) \ 1.1998 + declare_c2_type(RShiftVLNode, VectorNode) \ 1.1999 + declare_c2_type(URShiftVBNode, VectorNode) \ 1.2000 + declare_c2_type(URShiftVSNode, VectorNode) \ 1.2001 + declare_c2_type(URShiftVINode, VectorNode) \ 1.2002 + declare_c2_type(URShiftVLNode, VectorNode) \ 1.2003 + declare_c2_type(AndVNode, VectorNode) \ 1.2004 + declare_c2_type(OrVNode, VectorNode) \ 1.2005 + declare_c2_type(XorVNode, VectorNode) \ 1.2006 + declare_c2_type(LoadVectorNode, LoadNode) \ 1.2007 + declare_c2_type(StoreVectorNode, StoreNode) \ 1.2008 + declare_c2_type(ReplicateBNode, VectorNode) \ 1.2009 + declare_c2_type(ReplicateSNode, VectorNode) \ 1.2010 + declare_c2_type(ReplicateINode, VectorNode) \ 1.2011 + declare_c2_type(ReplicateLNode, VectorNode) \ 1.2012 + declare_c2_type(ReplicateFNode, VectorNode) \ 1.2013 + declare_c2_type(ReplicateDNode, VectorNode) \ 1.2014 + declare_c2_type(PackNode, VectorNode) \ 1.2015 + declare_c2_type(PackBNode, PackNode) \ 1.2016 + declare_c2_type(PackSNode, PackNode) \ 1.2017 + declare_c2_type(PackINode, PackNode) \ 1.2018 + declare_c2_type(PackLNode, PackNode) \ 1.2019 + declare_c2_type(PackFNode, PackNode) \ 1.2020 + declare_c2_type(PackDNode, PackNode) \ 1.2021 + declare_c2_type(Pack2LNode, PackNode) \ 1.2022 + declare_c2_type(Pack2DNode, PackNode) \ 1.2023 + declare_c2_type(ExtractNode, Node) \ 1.2024 + declare_c2_type(ExtractBNode, ExtractNode) \ 1.2025 + declare_c2_type(ExtractUBNode, ExtractNode) \ 1.2026 + declare_c2_type(ExtractCNode, ExtractNode) \ 1.2027 + declare_c2_type(ExtractSNode, ExtractNode) \ 1.2028 + declare_c2_type(ExtractINode, ExtractNode) \ 1.2029 + declare_c2_type(ExtractLNode, ExtractNode) \ 1.2030 + declare_c2_type(ExtractFNode, ExtractNode) \ 1.2031 + declare_c2_type(ExtractDNode, ExtractNode) \ 1.2032 + declare_c2_type(OverflowNode, CmpNode) \ 1.2033 + declare_c2_type(OverflowINode, OverflowNode) \ 1.2034 + declare_c2_type(OverflowAddINode, OverflowINode) \ 1.2035 + declare_c2_type(OverflowSubINode, OverflowINode) \ 1.2036 + declare_c2_type(OverflowMulINode, OverflowINode) \ 1.2037 + declare_c2_type(OverflowLNode, OverflowNode) \ 1.2038 + declare_c2_type(OverflowAddLNode, OverflowLNode) \ 1.2039 + declare_c2_type(OverflowSubLNode, OverflowLNode) \ 1.2040 + declare_c2_type(OverflowMulLNode, OverflowLNode) \ 1.2041 + \ 1.2042 + /*********************/ \ 1.2043 + /* Adapter Blob Entries */ \ 1.2044 + /*********************/ \ 1.2045 + declare_toplevel_type(AdapterHandlerEntry) \ 1.2046 + declare_toplevel_type(AdapterHandlerEntry*) \ 1.2047 + \ 1.2048 + /*********************/ \ 1.2049 + /* CI */ \ 1.2050 + /*********************/ \ 1.2051 + declare_toplevel_type(ciEnv) \ 1.2052 + declare_toplevel_type(ciObjectFactory) \ 1.2053 + declare_toplevel_type(ciConstant) \ 1.2054 + declare_toplevel_type(ciField) \ 1.2055 + declare_toplevel_type(ciSymbol) \ 1.2056 + declare_toplevel_type(ciBaseObject) \ 1.2057 + declare_type(ciObject, ciBaseObject) \ 1.2058 + declare_type(ciInstance, ciObject) \ 1.2059 + declare_type(ciMetadata, ciBaseObject) \ 1.2060 + declare_type(ciMethod, ciMetadata) \ 1.2061 + declare_type(ciMethodData, ciMetadata) \ 1.2062 + declare_type(ciType, ciMetadata) \ 1.2063 + declare_type(ciKlass, ciType) \ 1.2064 + declare_type(ciInstanceKlass, ciKlass) \ 1.2065 + declare_type(ciArrayKlass, ciKlass) \ 1.2066 + declare_type(ciTypeArrayKlass, ciArrayKlass) \ 1.2067 + declare_type(ciObjArrayKlass, ciArrayKlass) \ 1.2068 + \ 1.2069 + /********************/ \ 1.2070 + /* -XX flags */ \ 1.2071 + /********************/ \ 1.2072 + \ 1.2073 + declare_toplevel_type(Flag) \ 1.2074 + declare_toplevel_type(Flag*) \ 1.2075 + \ 1.2076 + /********************/ \ 1.2077 + /* JVMTI */ \ 1.2078 + /********************/ \ 1.2079 + \ 1.2080 + declare_toplevel_type(JvmtiExport) \ 1.2081 + \ 1.2082 + /********************/ \ 1.2083 + /* JDK/VM version */ \ 1.2084 + /********************/ \ 1.2085 + \ 1.2086 + declare_toplevel_type(Abstract_VM_Version) \ 1.2087 + declare_toplevel_type(JDK_Version) \ 1.2088 + \ 1.2089 + /*************/ \ 1.2090 + /* Arguments */ \ 1.2091 + /*************/ \ 1.2092 + \ 1.2093 + declare_toplevel_type(Arguments) \ 1.2094 + \ 1.2095 + /***************/ \ 1.2096 + /* Other types */ \ 1.2097 + /***************/ \ 1.2098 + \ 1.2099 + /* all enum types */ \ 1.2100 + \ 1.2101 + declare_integer_type(Bytecodes::Code) \ 1.2102 + declare_integer_type(Generation::Name) \ 1.2103 + declare_integer_type(InstanceKlass::ClassState) \ 1.2104 + declare_integer_type(JavaThreadState) \ 1.2105 + declare_integer_type(Location::Type) \ 1.2106 + declare_integer_type(Location::Where) \ 1.2107 + declare_integer_type(Flag::Flags) \ 1.2108 + COMPILER2_PRESENT(declare_integer_type(OptoReg::Name)) \ 1.2109 + \ 1.2110 + declare_toplevel_type(CHeapObj<mtInternal>) \ 1.2111 + declare_type(Array<int>, MetaspaceObj) \ 1.2112 + declare_type(Array<u1>, MetaspaceObj) \ 1.2113 + declare_type(Array<u2>, MetaspaceObj) \ 1.2114 + declare_type(Array<Klass*>, MetaspaceObj) \ 1.2115 + declare_type(Array<Method*>, MetaspaceObj) \ 1.2116 + \ 1.2117 + declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\ 1.2118 + declare_toplevel_type(address) /* FIXME: should this be an integer type? */\ 1.2119 + declare_integer_type(BasicType) /* FIXME: wrong type (not integer) */\ 1.2120 + declare_toplevel_type(BreakpointInfo) \ 1.2121 + declare_toplevel_type(BreakpointInfo*) \ 1.2122 + declare_toplevel_type(CodeBlob*) \ 1.2123 + declare_toplevel_type(CompressedWriteStream*) \ 1.2124 + declare_toplevel_type(ConstantPoolCacheEntry) \ 1.2125 + declare_toplevel_type(elapsedTimer) \ 1.2126 + declare_toplevel_type(frame) \ 1.2127 + declare_toplevel_type(intptr_t*) \ 1.2128 + declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \ 1.2129 + declare_toplevel_type(JavaThread*) \ 1.2130 + declare_toplevel_type(java_lang_Class) \ 1.2131 + declare_integer_type(JavaThread::AsyncRequests) \ 1.2132 + declare_toplevel_type(jbyte*) \ 1.2133 + declare_toplevel_type(jbyte**) \ 1.2134 + declare_toplevel_type(jint*) \ 1.2135 + declare_toplevel_type(jniIdMapBase*) \ 1.2136 + declare_unsigned_integer_type(juint) \ 1.2137 + declare_unsigned_integer_type(julong) \ 1.2138 + declare_toplevel_type(JNIHandleBlock*) \ 1.2139 + declare_toplevel_type(JNIid) \ 1.2140 + declare_toplevel_type(JNIid*) \ 1.2141 + declare_toplevel_type(jmethodID*) \ 1.2142 + declare_toplevel_type(Mutex*) \ 1.2143 + declare_toplevel_type(nmethod*) \ 1.2144 + COMPILER2_PRESENT(declare_unsigned_integer_type(node_idx_t)) \ 1.2145 + declare_toplevel_type(ObjectMonitor*) \ 1.2146 + declare_toplevel_type(oop*) \ 1.2147 + declare_toplevel_type(OopMap**) \ 1.2148 + declare_toplevel_type(OopMapCache*) \ 1.2149 + declare_toplevel_type(OopMapSet*) \ 1.2150 + declare_toplevel_type(VMReg) \ 1.2151 + declare_toplevel_type(OSThread*) \ 1.2152 + declare_integer_type(ReferenceType) \ 1.2153 + declare_toplevel_type(StubQueue*) \ 1.2154 + declare_toplevel_type(Thread*) \ 1.2155 + declare_toplevel_type(Universe) \ 1.2156 + declare_toplevel_type(os) \ 1.2157 + declare_toplevel_type(vframeArray) \ 1.2158 + declare_toplevel_type(vframeArrayElement) \ 1.2159 + declare_toplevel_type(Annotations*) \ 1.2160 + \ 1.2161 + /***************/ \ 1.2162 + /* Miscellaneous types */ \ 1.2163 + /***************/ \ 1.2164 + \ 1.2165 + declare_toplevel_type(PtrQueue) \ 1.2166 + \ 1.2167 + /* freelist */ \ 1.2168 + declare_toplevel_type(FreeChunk*) \ 1.2169 + declare_toplevel_type(Metablock*) \ 1.2170 + declare_toplevel_type(FreeBlockDictionary<FreeChunk>*) \ 1.2171 + declare_toplevel_type(FreeList<FreeChunk>*) \ 1.2172 + declare_toplevel_type(FreeList<FreeChunk>) \ 1.2173 + declare_toplevel_type(FreeBlockDictionary<Metablock>*) \ 1.2174 + declare_toplevel_type(FreeList<Metablock>*) \ 1.2175 + declare_toplevel_type(FreeList<Metablock>) \ 1.2176 + declare_type(MetablockTreeDictionary, FreeBlockDictionary<Metablock>) 1.2177 + 1.2178 + 1.2179 +//-------------------------------------------------------------------------------- 1.2180 +// VM_INT_CONSTANTS 1.2181 +// 1.2182 +// This table contains integer constants required over in the 1.2183 +// serviceability agent. The "declare_constant" macro is used for all 1.2184 +// enums, etc., while "declare_preprocessor_constant" must be used for 1.2185 +// all #defined constants. 1.2186 + 1.2187 +#define VM_INT_CONSTANTS(declare_constant, \ 1.2188 + declare_preprocessor_constant, \ 1.2189 + declare_c1_constant, \ 1.2190 + declare_c2_constant, \ 1.2191 + declare_c2_preprocessor_constant) \ 1.2192 + \ 1.2193 + /******************/ \ 1.2194 + /* Useful globals */ \ 1.2195 + /******************/ \ 1.2196 + \ 1.2197 + declare_preprocessor_constant("ASSERT", DEBUG_ONLY(1) NOT_DEBUG(0)) \ 1.2198 + \ 1.2199 + /**************/ \ 1.2200 + /* Stack bias */ \ 1.2201 + /**************/ \ 1.2202 + \ 1.2203 + declare_preprocessor_constant("STACK_BIAS", STACK_BIAS) \ 1.2204 + \ 1.2205 + /****************/ \ 1.2206 + /* Object sizes */ \ 1.2207 + /****************/ \ 1.2208 + \ 1.2209 + declare_constant(oopSize) \ 1.2210 + declare_constant(LogBytesPerWord) \ 1.2211 + declare_constant(BytesPerWord) \ 1.2212 + declare_constant(BytesPerLong) \ 1.2213 + \ 1.2214 + declare_constant(LogKlassAlignmentInBytes) \ 1.2215 + \ 1.2216 + /********************************************/ \ 1.2217 + /* Generation and Space Hierarchy Constants */ \ 1.2218 + /********************************************/ \ 1.2219 + \ 1.2220 + declare_constant(ageTable::table_size) \ 1.2221 + \ 1.2222 + declare_constant(BarrierSet::ModRef) \ 1.2223 + declare_constant(BarrierSet::CardTableModRef) \ 1.2224 + declare_constant(BarrierSet::CardTableExtension) \ 1.2225 + declare_constant(BarrierSet::G1SATBCT) \ 1.2226 + declare_constant(BarrierSet::G1SATBCTLogging) \ 1.2227 + declare_constant(BarrierSet::Other) \ 1.2228 + \ 1.2229 + declare_constant(BlockOffsetSharedArray::LogN) \ 1.2230 + declare_constant(BlockOffsetSharedArray::LogN_words) \ 1.2231 + declare_constant(BlockOffsetSharedArray::N_bytes) \ 1.2232 + declare_constant(BlockOffsetSharedArray::N_words) \ 1.2233 + \ 1.2234 + declare_constant(BlockOffsetArray::N_words) \ 1.2235 + \ 1.2236 + declare_constant(CardTableModRefBS::clean_card) \ 1.2237 + declare_constant(CardTableModRefBS::last_card) \ 1.2238 + declare_constant(CardTableModRefBS::dirty_card) \ 1.2239 + declare_constant(CardTableModRefBS::Precise) \ 1.2240 + declare_constant(CardTableModRefBS::ObjHeadPreciseArray) \ 1.2241 + declare_constant(CardTableModRefBS::card_shift) \ 1.2242 + declare_constant(CardTableModRefBS::card_size) \ 1.2243 + declare_constant(CardTableModRefBS::card_size_in_words) \ 1.2244 + \ 1.2245 + declare_constant(CardTableRS::youngergen_card) \ 1.2246 + \ 1.2247 + declare_constant(CollectedHeap::Abstract) \ 1.2248 + declare_constant(CollectedHeap::SharedHeap) \ 1.2249 + declare_constant(CollectedHeap::GenCollectedHeap) \ 1.2250 + \ 1.2251 + declare_constant(GenCollectedHeap::max_gens) \ 1.2252 + \ 1.2253 + /* constants from Generation::Name enum */ \ 1.2254 + \ 1.2255 + declare_constant(Generation::DefNew) \ 1.2256 + declare_constant(Generation::MarkSweepCompact) \ 1.2257 + declare_constant(Generation::Other) \ 1.2258 + \ 1.2259 + declare_constant(Generation::LogOfGenGrain) \ 1.2260 + declare_constant(Generation::GenGrain) \ 1.2261 + \ 1.2262 + declare_constant(HeapWordSize) \ 1.2263 + declare_constant(LogHeapWordSize) \ 1.2264 + \ 1.2265 + \ 1.2266 + /************************/ \ 1.2267 + /* PerfMemory - jvmstat */ \ 1.2268 + /************************/ \ 1.2269 + \ 1.2270 + declare_preprocessor_constant("PERFDATA_MAJOR_VERSION", PERFDATA_MAJOR_VERSION) \ 1.2271 + declare_preprocessor_constant("PERFDATA_MINOR_VERSION", PERFDATA_MINOR_VERSION) \ 1.2272 + declare_preprocessor_constant("PERFDATA_BIG_ENDIAN", PERFDATA_BIG_ENDIAN) \ 1.2273 + declare_preprocessor_constant("PERFDATA_LITTLE_ENDIAN", PERFDATA_LITTLE_ENDIAN) \ 1.2274 + \ 1.2275 + /***********************************/ \ 1.2276 + /* LoaderConstraintTable constants */ \ 1.2277 + /***********************************/ \ 1.2278 + \ 1.2279 + declare_constant(LoaderConstraintTable::_loader_constraint_size) \ 1.2280 + declare_constant(LoaderConstraintTable::_nof_buckets) \ 1.2281 + \ 1.2282 + /************************************************************/ \ 1.2283 + /* HotSpot specific JVM_ACC constants from global anon enum */ \ 1.2284 + /************************************************************/ \ 1.2285 + \ 1.2286 + declare_constant(JVM_ACC_WRITTEN_FLAGS) \ 1.2287 + declare_constant(JVM_ACC_MONITOR_MATCH) \ 1.2288 + declare_constant(JVM_ACC_HAS_MONITOR_BYTECODES) \ 1.2289 + declare_constant(JVM_ACC_HAS_LOOPS) \ 1.2290 + declare_constant(JVM_ACC_LOOPS_FLAG_INIT) \ 1.2291 + declare_constant(JVM_ACC_QUEUED) \ 1.2292 + declare_constant(JVM_ACC_NOT_C2_OSR_COMPILABLE) \ 1.2293 + declare_constant(JVM_ACC_HAS_LINE_NUMBER_TABLE) \ 1.2294 + declare_constant(JVM_ACC_HAS_CHECKED_EXCEPTIONS) \ 1.2295 + declare_constant(JVM_ACC_HAS_JSRS) \ 1.2296 + declare_constant(JVM_ACC_IS_OLD) \ 1.2297 + declare_constant(JVM_ACC_IS_OBSOLETE) \ 1.2298 + declare_constant(JVM_ACC_IS_PREFIXED_NATIVE) \ 1.2299 + declare_constant(JVM_ACC_HAS_MIRANDA_METHODS) \ 1.2300 + declare_constant(JVM_ACC_HAS_VANILLA_CONSTRUCTOR) \ 1.2301 + declare_constant(JVM_ACC_HAS_FINALIZER) \ 1.2302 + declare_constant(JVM_ACC_IS_CLONEABLE) \ 1.2303 + declare_constant(JVM_ACC_HAS_LOCAL_VARIABLE_TABLE) \ 1.2304 + declare_constant(JVM_ACC_PROMOTED_FLAGS) \ 1.2305 + declare_constant(JVM_ACC_FIELD_ACCESS_WATCHED) \ 1.2306 + declare_constant(JVM_ACC_FIELD_MODIFICATION_WATCHED) \ 1.2307 + \ 1.2308 + /*****************************/ \ 1.2309 + /* Thread::SuspendFlags enum */ \ 1.2310 + /*****************************/ \ 1.2311 + \ 1.2312 + declare_constant(Thread::_external_suspend) \ 1.2313 + declare_constant(Thread::_ext_suspended) \ 1.2314 + declare_constant(Thread::_has_async_exception) \ 1.2315 + \ 1.2316 + /*******************/ \ 1.2317 + /* JavaThreadState */ \ 1.2318 + /*******************/ \ 1.2319 + \ 1.2320 + declare_constant(_thread_uninitialized) \ 1.2321 + declare_constant(_thread_new) \ 1.2322 + declare_constant(_thread_new_trans) \ 1.2323 + declare_constant(_thread_in_native) \ 1.2324 + declare_constant(_thread_in_native_trans) \ 1.2325 + declare_constant(_thread_in_vm) \ 1.2326 + declare_constant(_thread_in_vm_trans) \ 1.2327 + declare_constant(_thread_in_Java) \ 1.2328 + declare_constant(_thread_in_Java_trans) \ 1.2329 + declare_constant(_thread_blocked) \ 1.2330 + declare_constant(_thread_blocked_trans) \ 1.2331 + \ 1.2332 + /******************************/ \ 1.2333 + /* Klass misc. enum constants */ \ 1.2334 + /******************************/ \ 1.2335 + \ 1.2336 + declare_constant(Klass::_primary_super_limit) \ 1.2337 + declare_constant(Klass::_lh_instance_slow_path_bit) \ 1.2338 + declare_constant(Klass::_lh_log2_element_size_shift) \ 1.2339 + declare_constant(Klass::_lh_log2_element_size_mask) \ 1.2340 + declare_constant(Klass::_lh_element_type_shift) \ 1.2341 + declare_constant(Klass::_lh_element_type_mask) \ 1.2342 + declare_constant(Klass::_lh_header_size_shift) \ 1.2343 + declare_constant(Klass::_lh_header_size_mask) \ 1.2344 + declare_constant(Klass::_lh_array_tag_shift) \ 1.2345 + declare_constant(Klass::_lh_array_tag_type_value) \ 1.2346 + declare_constant(Klass::_lh_array_tag_obj_value) \ 1.2347 + \ 1.2348 + /********************************/ \ 1.2349 + /* ConstMethod anon-enum */ \ 1.2350 + /********************************/ \ 1.2351 + \ 1.2352 + declare_constant(ConstMethod::_has_linenumber_table) \ 1.2353 + declare_constant(ConstMethod::_has_checked_exceptions) \ 1.2354 + declare_constant(ConstMethod::_has_localvariable_table) \ 1.2355 + declare_constant(ConstMethod::_has_exception_table) \ 1.2356 + declare_constant(ConstMethod::_has_generic_signature) \ 1.2357 + declare_constant(ConstMethod::_has_method_parameters) \ 1.2358 + declare_constant(ConstMethod::_has_method_annotations) \ 1.2359 + declare_constant(ConstMethod::_has_parameter_annotations) \ 1.2360 + declare_constant(ConstMethod::_has_default_annotations) \ 1.2361 + declare_constant(ConstMethod::_has_type_annotations) \ 1.2362 + \ 1.2363 + /**************/ \ 1.2364 + /* DataLayout */ \ 1.2365 + /**************/ \ 1.2366 + \ 1.2367 + declare_constant(DataLayout::cell_size) \ 1.2368 + \ 1.2369 + /*************************************/ \ 1.2370 + /* InstanceKlass enum */ \ 1.2371 + /*************************************/ \ 1.2372 + \ 1.2373 + \ 1.2374 + /*************************************/ \ 1.2375 + /* FieldInfo FieldOffset enum */ \ 1.2376 + /*************************************/ \ 1.2377 + \ 1.2378 + declare_constant(FieldInfo::access_flags_offset) \ 1.2379 + declare_constant(FieldInfo::name_index_offset) \ 1.2380 + declare_constant(FieldInfo::signature_index_offset) \ 1.2381 + declare_constant(FieldInfo::initval_index_offset) \ 1.2382 + declare_constant(FieldInfo::low_packed_offset) \ 1.2383 + declare_constant(FieldInfo::high_packed_offset) \ 1.2384 + declare_constant(FieldInfo::field_slots) \ 1.2385 + \ 1.2386 + /*************************************/ \ 1.2387 + /* FieldInfo tag constants */ \ 1.2388 + /*************************************/ \ 1.2389 + \ 1.2390 + declare_preprocessor_constant("FIELDINFO_TAG_SIZE", FIELDINFO_TAG_SIZE) \ 1.2391 + declare_preprocessor_constant("FIELDINFO_TAG_MASK", FIELDINFO_TAG_MASK) \ 1.2392 + declare_preprocessor_constant("FIELDINFO_TAG_OFFSET", FIELDINFO_TAG_OFFSET) \ 1.2393 + \ 1.2394 + /************************************************/ \ 1.2395 + /* InstanceKlass InnerClassAttributeOffset enum */ \ 1.2396 + /************************************************/ \ 1.2397 + \ 1.2398 + declare_constant(InstanceKlass::inner_class_inner_class_info_offset) \ 1.2399 + declare_constant(InstanceKlass::inner_class_outer_class_info_offset) \ 1.2400 + declare_constant(InstanceKlass::inner_class_inner_name_offset) \ 1.2401 + declare_constant(InstanceKlass::inner_class_access_flags_offset) \ 1.2402 + declare_constant(InstanceKlass::inner_class_next_offset) \ 1.2403 + \ 1.2404 + /*********************************/ \ 1.2405 + /* InstanceKlass ClassState enum */ \ 1.2406 + /*********************************/ \ 1.2407 + \ 1.2408 + declare_constant(InstanceKlass::allocated) \ 1.2409 + declare_constant(InstanceKlass::loaded) \ 1.2410 + declare_constant(InstanceKlass::linked) \ 1.2411 + declare_constant(InstanceKlass::being_initialized) \ 1.2412 + declare_constant(InstanceKlass::fully_initialized) \ 1.2413 + declare_constant(InstanceKlass::initialization_error) \ 1.2414 + \ 1.2415 + /*********************************/ \ 1.2416 + /* Symbol* - symbol max length */ \ 1.2417 + /*********************************/ \ 1.2418 + \ 1.2419 + declare_constant(Symbol::max_symbol_length) \ 1.2420 + \ 1.2421 + /*************************************************/ \ 1.2422 + /* ConstantPool* layout enum for InvokeDynamic */ \ 1.2423 + /*************************************************/ \ 1.2424 + \ 1.2425 + declare_constant(ConstantPool::_indy_bsm_offset) \ 1.2426 + declare_constant(ConstantPool::_indy_argc_offset) \ 1.2427 + declare_constant(ConstantPool::_indy_argv_offset) \ 1.2428 + \ 1.2429 + /********************************/ \ 1.2430 + /* ConstantPoolCacheEntry enums */ \ 1.2431 + /********************************/ \ 1.2432 + \ 1.2433 + declare_constant(ConstantPoolCacheEntry::is_volatile_shift) \ 1.2434 + declare_constant(ConstantPoolCacheEntry::is_final_shift) \ 1.2435 + declare_constant(ConstantPoolCacheEntry::is_forced_virtual_shift) \ 1.2436 + declare_constant(ConstantPoolCacheEntry::is_vfinal_shift) \ 1.2437 + declare_constant(ConstantPoolCacheEntry::is_field_entry_shift) \ 1.2438 + declare_constant(ConstantPoolCacheEntry::tos_state_shift) \ 1.2439 + \ 1.2440 + /***************************************/ \ 1.2441 + /* java_lang_Thread::ThreadStatus enum */ \ 1.2442 + /***************************************/ \ 1.2443 + \ 1.2444 + declare_constant(java_lang_Thread::NEW) \ 1.2445 + declare_constant(java_lang_Thread::RUNNABLE) \ 1.2446 + declare_constant(java_lang_Thread::SLEEPING) \ 1.2447 + declare_constant(java_lang_Thread::IN_OBJECT_WAIT) \ 1.2448 + declare_constant(java_lang_Thread::IN_OBJECT_WAIT_TIMED) \ 1.2449 + declare_constant(java_lang_Thread::PARKED) \ 1.2450 + declare_constant(java_lang_Thread::PARKED_TIMED) \ 1.2451 + declare_constant(java_lang_Thread::BLOCKED_ON_MONITOR_ENTER) \ 1.2452 + declare_constant(java_lang_Thread::TERMINATED) \ 1.2453 + \ 1.2454 + /******************************/ \ 1.2455 + /* Debug info */ \ 1.2456 + /******************************/ \ 1.2457 + \ 1.2458 + declare_constant(Location::OFFSET_MASK) \ 1.2459 + declare_constant(Location::OFFSET_SHIFT) \ 1.2460 + declare_constant(Location::TYPE_MASK) \ 1.2461 + declare_constant(Location::TYPE_SHIFT) \ 1.2462 + declare_constant(Location::WHERE_MASK) \ 1.2463 + declare_constant(Location::WHERE_SHIFT) \ 1.2464 + \ 1.2465 + /* constants from Location::Type enum */ \ 1.2466 + \ 1.2467 + declare_constant(Location::normal) \ 1.2468 + declare_constant(Location::oop) \ 1.2469 + declare_constant(Location::narrowoop) \ 1.2470 + declare_constant(Location::int_in_long) \ 1.2471 + declare_constant(Location::lng) \ 1.2472 + declare_constant(Location::float_in_dbl) \ 1.2473 + declare_constant(Location::dbl) \ 1.2474 + declare_constant(Location::addr) \ 1.2475 + declare_constant(Location::invalid) \ 1.2476 + \ 1.2477 + /* constants from Location::Where enum */ \ 1.2478 + \ 1.2479 + declare_constant(Location::on_stack) \ 1.2480 + declare_constant(Location::in_register) \ 1.2481 + \ 1.2482 + declare_constant(Deoptimization::Reason_many) \ 1.2483 + declare_constant(Deoptimization::Reason_none) \ 1.2484 + declare_constant(Deoptimization::Reason_null_check) \ 1.2485 + declare_constant(Deoptimization::Reason_null_assert) \ 1.2486 + declare_constant(Deoptimization::Reason_range_check) \ 1.2487 + declare_constant(Deoptimization::Reason_class_check) \ 1.2488 + declare_constant(Deoptimization::Reason_array_check) \ 1.2489 + declare_constant(Deoptimization::Reason_intrinsic) \ 1.2490 + declare_constant(Deoptimization::Reason_bimorphic) \ 1.2491 + declare_constant(Deoptimization::Reason_unloaded) \ 1.2492 + declare_constant(Deoptimization::Reason_uninitialized) \ 1.2493 + declare_constant(Deoptimization::Reason_unreached) \ 1.2494 + declare_constant(Deoptimization::Reason_unhandled) \ 1.2495 + declare_constant(Deoptimization::Reason_constraint) \ 1.2496 + declare_constant(Deoptimization::Reason_div0_check) \ 1.2497 + declare_constant(Deoptimization::Reason_age) \ 1.2498 + declare_constant(Deoptimization::Reason_predicate) \ 1.2499 + declare_constant(Deoptimization::Reason_loop_limit_check) \ 1.2500 + declare_constant(Deoptimization::Reason_LIMIT) \ 1.2501 + declare_constant(Deoptimization::Reason_RECORDED_LIMIT) \ 1.2502 + \ 1.2503 + declare_constant(Deoptimization::Action_none) \ 1.2504 + declare_constant(Deoptimization::Action_maybe_recompile) \ 1.2505 + declare_constant(Deoptimization::Action_reinterpret) \ 1.2506 + declare_constant(Deoptimization::Action_make_not_entrant) \ 1.2507 + declare_constant(Deoptimization::Action_make_not_compilable) \ 1.2508 + declare_constant(Deoptimization::Action_LIMIT) \ 1.2509 + \ 1.2510 + /*********************/ \ 1.2511 + /* Matcher (C2 only) */ \ 1.2512 + /*********************/ \ 1.2513 + \ 1.2514 + declare_c2_preprocessor_constant("Matcher::interpreter_frame_pointer_reg", Matcher::interpreter_frame_pointer_reg()) \ 1.2515 + \ 1.2516 + /*********************************************/ \ 1.2517 + /* MethodCompilation (globalDefinitions.hpp) */ \ 1.2518 + /*********************************************/ \ 1.2519 + \ 1.2520 + declare_constant(InvocationEntryBci) \ 1.2521 + declare_constant(InvalidOSREntryBci) \ 1.2522 + \ 1.2523 + /***************/ \ 1.2524 + /* OopMapValue */ \ 1.2525 + /***************/ \ 1.2526 + \ 1.2527 + declare_constant(OopMapValue::type_bits) \ 1.2528 + declare_constant(OopMapValue::register_bits) \ 1.2529 + declare_constant(OopMapValue::type_shift) \ 1.2530 + declare_constant(OopMapValue::register_shift) \ 1.2531 + declare_constant(OopMapValue::type_mask) \ 1.2532 + declare_constant(OopMapValue::type_mask_in_place) \ 1.2533 + declare_constant(OopMapValue::register_mask) \ 1.2534 + declare_constant(OopMapValue::register_mask_in_place) \ 1.2535 + declare_constant(OopMapValue::unused_value) \ 1.2536 + declare_constant(OopMapValue::oop_value) \ 1.2537 + declare_constant(OopMapValue::value_value) \ 1.2538 + declare_constant(OopMapValue::narrowoop_value) \ 1.2539 + declare_constant(OopMapValue::callee_saved_value) \ 1.2540 + declare_constant(OopMapValue::derived_oop_value) \ 1.2541 + \ 1.2542 + /******************/ \ 1.2543 + /* JNIHandleBlock */ \ 1.2544 + /******************/ \ 1.2545 + \ 1.2546 + declare_constant(JNIHandleBlock::block_size_in_oops) \ 1.2547 + \ 1.2548 + /**********************/ \ 1.2549 + /* ObjectSynchronizer */ \ 1.2550 + /**********************/ \ 1.2551 + \ 1.2552 + declare_constant(ObjectSynchronizer::_BLOCKSIZE) \ 1.2553 + \ 1.2554 + /**********************/ \ 1.2555 + /* PcDesc */ \ 1.2556 + /**********************/ \ 1.2557 + \ 1.2558 + declare_constant(PcDesc::PCDESC_reexecute) \ 1.2559 + declare_constant(PcDesc::PCDESC_is_method_handle_invoke) \ 1.2560 + declare_constant(PcDesc::PCDESC_return_oop) \ 1.2561 + \ 1.2562 + /**********************/ \ 1.2563 + /* frame */ \ 1.2564 + /**********************/ \ 1.2565 + \ 1.2566 + NOT_ZERO(X86_ONLY(declare_constant(frame::entry_frame_call_wrapper_offset))) \ 1.2567 + declare_constant(frame::pc_return_offset) \ 1.2568 + \ 1.2569 + /*************/ \ 1.2570 + /* vmSymbols */ \ 1.2571 + /*************/ \ 1.2572 + \ 1.2573 + declare_constant(vmSymbols::FIRST_SID) \ 1.2574 + declare_constant(vmSymbols::SID_LIMIT) \ 1.2575 + \ 1.2576 + /****************/ \ 1.2577 + /* vmIntrinsics */ \ 1.2578 + /****************/ \ 1.2579 + \ 1.2580 + declare_constant(vmIntrinsics::_invokeBasic) \ 1.2581 + declare_constant(vmIntrinsics::_linkToVirtual) \ 1.2582 + declare_constant(vmIntrinsics::_linkToStatic) \ 1.2583 + declare_constant(vmIntrinsics::_linkToSpecial) \ 1.2584 + declare_constant(vmIntrinsics::_linkToInterface) \ 1.2585 + \ 1.2586 + /********************************/ \ 1.2587 + /* Calling convention constants */ \ 1.2588 + /********************************/ \ 1.2589 + \ 1.2590 + declare_constant(RegisterImpl::number_of_registers) \ 1.2591 + declare_constant(ConcreteRegisterImpl::number_of_registers) \ 1.2592 + declare_preprocessor_constant("REG_COUNT", REG_COUNT) \ 1.2593 + declare_c2_preprocessor_constant("SAVED_ON_ENTRY_REG_COUNT", SAVED_ON_ENTRY_REG_COUNT) \ 1.2594 + declare_c2_preprocessor_constant("C_SAVED_ON_ENTRY_REG_COUNT", C_SAVED_ON_ENTRY_REG_COUNT) 1.2595 + 1.2596 + 1.2597 +//-------------------------------------------------------------------------------- 1.2598 +// VM_LONG_CONSTANTS 1.2599 +// 1.2600 +// This table contains long constants required over in the 1.2601 +// serviceability agent. The "declare_constant" macro is used for all 1.2602 +// enums, etc., while "declare_preprocessor_constant" must be used for 1.2603 +// all #defined constants. 1.2604 + 1.2605 +#define VM_LONG_CONSTANTS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \ 1.2606 + \ 1.2607 + /*********************/ \ 1.2608 + /* MarkOop constants */ \ 1.2609 + /*********************/ \ 1.2610 + \ 1.2611 + /* Note: some of these are declared as long constants just for */ \ 1.2612 + /* consistency. The mask constants are the only ones requiring */ \ 1.2613 + /* 64 bits (on 64-bit platforms). */ \ 1.2614 + \ 1.2615 + declare_constant(markOopDesc::age_bits) \ 1.2616 + declare_constant(markOopDesc::lock_bits) \ 1.2617 + declare_constant(markOopDesc::biased_lock_bits) \ 1.2618 + declare_constant(markOopDesc::max_hash_bits) \ 1.2619 + declare_constant(markOopDesc::hash_bits) \ 1.2620 + \ 1.2621 + declare_constant(markOopDesc::lock_shift) \ 1.2622 + declare_constant(markOopDesc::biased_lock_shift) \ 1.2623 + declare_constant(markOopDesc::age_shift) \ 1.2624 + declare_constant(markOopDesc::hash_shift) \ 1.2625 + \ 1.2626 + declare_constant(markOopDesc::lock_mask) \ 1.2627 + declare_constant(markOopDesc::lock_mask_in_place) \ 1.2628 + declare_constant(markOopDesc::biased_lock_mask) \ 1.2629 + declare_constant(markOopDesc::biased_lock_mask_in_place) \ 1.2630 + declare_constant(markOopDesc::biased_lock_bit_in_place) \ 1.2631 + declare_constant(markOopDesc::age_mask) \ 1.2632 + declare_constant(markOopDesc::age_mask_in_place) \ 1.2633 + declare_constant(markOopDesc::epoch_mask) \ 1.2634 + declare_constant(markOopDesc::epoch_mask_in_place) \ 1.2635 + declare_constant(markOopDesc::hash_mask) \ 1.2636 + declare_constant(markOopDesc::hash_mask_in_place) \ 1.2637 + declare_constant(markOopDesc::biased_lock_alignment) \ 1.2638 + \ 1.2639 + declare_constant(markOopDesc::locked_value) \ 1.2640 + declare_constant(markOopDesc::unlocked_value) \ 1.2641 + declare_constant(markOopDesc::monitor_value) \ 1.2642 + declare_constant(markOopDesc::marked_value) \ 1.2643 + declare_constant(markOopDesc::biased_lock_pattern) \ 1.2644 + \ 1.2645 + declare_constant(markOopDesc::no_hash) \ 1.2646 + declare_constant(markOopDesc::no_hash_in_place) \ 1.2647 + declare_constant(markOopDesc::no_lock_in_place) \ 1.2648 + declare_constant(markOopDesc::max_age) \ 1.2649 + \ 1.2650 + /* Constants in markOop used by CMS. */ \ 1.2651 + declare_constant(markOopDesc::cms_shift) \ 1.2652 + declare_constant(markOopDesc::cms_mask) \ 1.2653 + declare_constant(markOopDesc::size_shift) 1.2654 + 1.2655 + 1.2656 +//-------------------------------------------------------------------------------- 1.2657 +// Macros operating on the above lists 1.2658 +//-------------------------------------------------------------------------------- 1.2659 + 1.2660 +// This utility macro quotes the passed string 1.2661 +#define QUOTE(x) #x 1.2662 + 1.2663 +//-------------------------------------------------------------------------------- 1.2664 +// VMStructEntry macros 1.2665 +// 1.2666 + 1.2667 +// This macro generates a VMStructEntry line for a nonstatic field 1.2668 +#define GENERATE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ 1.2669 + { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL }, 1.2670 + 1.2671 +// This macro generates a VMStructEntry line for a static field 1.2672 +#define GENERATE_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ 1.2673 + { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 1, 0, &typeName::fieldName }, 1.2674 + 1.2675 +// This macro generates a VMStructEntry line for an unchecked 1.2676 +// nonstatic field, in which the size of the type is also specified. 1.2677 +// The type string is given as NULL, indicating an "opaque" type. 1.2678 +#define GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, size) \ 1.2679 + { QUOTE(typeName), QUOTE(fieldName), NULL, 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL }, 1.2680 + 1.2681 +// This macro generates a VMStructEntry line for an unchecked 1.2682 +// static field, in which the size of the type is also specified. 1.2683 +// The type string is given as NULL, indicating an "opaque" type. 1.2684 +#define GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, size) \ 1.2685 + { QUOTE(typeName), QUOTE(fieldName), NULL, 1, 0, (void*) &typeName::fieldName }, 1.2686 + 1.2687 +// This macro generates the sentinel value indicating the end of the list 1.2688 +#define GENERATE_VM_STRUCT_LAST_ENTRY() \ 1.2689 + { NULL, NULL, NULL, 0, 0, NULL } 1.2690 + 1.2691 +// This macro checks the type of a VMStructEntry by comparing pointer types 1.2692 +#define CHECK_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ 1.2693 + {typeName *dummyObj = NULL; type* dummy = &dummyObj->fieldName; \ 1.2694 + assert(offset_of(typeName, fieldName) < sizeof(typeName), "Illegal nonstatic struct entry, field offset too large"); } 1.2695 + 1.2696 +// This macro checks the type of a volatile VMStructEntry by comparing pointer types 1.2697 +#define CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ 1.2698 + {typedef type dummyvtype; typeName *dummyObj = NULL; volatile dummyvtype* dummy = &dummyObj->fieldName; } 1.2699 + 1.2700 +// This macro checks the type of a VMStructEntry by comparing pointer types 1.2701 +#define CHECK_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ 1.2702 + {type* dummy = &typeName::fieldName; } 1.2703 + 1.2704 +// This macro ensures the type of a field and its containing type are 1.2705 +// present in the type table. The assertion string is shorter than 1.2706 +// preferable because (incredibly) of a bug in Solstice NFS client 1.2707 +// which seems to prevent very long lines from compiling. This assertion 1.2708 +// means that an entry in VMStructs::localHotSpotVMStructs[] was not 1.2709 +// found in VMStructs::localHotSpotVMTypes[]. 1.2710 +#define ENSURE_FIELD_TYPE_PRESENT(typeName, fieldName, type) \ 1.2711 + { assert(findType(QUOTE(typeName)) != 0, "type \"" QUOTE(typeName) "\" not found in type table"); \ 1.2712 + assert(findType(QUOTE(type)) != 0, "type \"" QUOTE(type) "\" not found in type table"); } 1.2713 + 1.2714 +// This is a no-op macro for unchecked fields 1.2715 +#define CHECK_NO_OP(a, b, c) 1.2716 + 1.2717 +// 1.2718 +// Build-specific macros: 1.2719 +// 1.2720 + 1.2721 +// Generate and check a nonstatic field in non-product builds 1.2722 +#ifndef PRODUCT 1.2723 +# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2724 +# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2725 +# define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) 1.2726 +# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2727 +# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2728 +# define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) 1.2729 +#else 1.2730 +# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2731 +# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2732 +# define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) 1.2733 +# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2734 +# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2735 +# define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) 1.2736 +#endif /* PRODUCT */ 1.2737 + 1.2738 +// Generate and check a nonstatic field in C1 builds 1.2739 +#ifdef COMPILER1 1.2740 +# define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2741 +# define CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2742 +# define ENSURE_C1_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) 1.2743 +#else 1.2744 +# define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2745 +# define CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2746 +# define ENSURE_C1_FIELD_TYPE_PRESENT(a, b, c) 1.2747 +#endif /* COMPILER1 */ 1.2748 +// Generate and check a nonstatic field in C2 builds 1.2749 +#ifdef COMPILER2 1.2750 +# define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2751 +# define CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2752 +# define ENSURE_C2_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) 1.2753 +#else 1.2754 +# define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2755 +# define CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) 1.2756 +# define ENSURE_C2_FIELD_TYPE_PRESENT(a, b, c) 1.2757 +#endif /* COMPILER2 */ 1.2758 + 1.2759 +// Generate but do not check a static field in C1 builds 1.2760 +#ifdef COMPILER1 1.2761 +# define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) 1.2762 +#else 1.2763 +# define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) 1.2764 +#endif /* COMPILER1 */ 1.2765 + 1.2766 +// Generate but do not check a static field in C2 builds 1.2767 +#ifdef COMPILER2 1.2768 +# define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) 1.2769 +#else 1.2770 +# define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) 1.2771 +#endif /* COMPILER2 */ 1.2772 + 1.2773 +//-------------------------------------------------------------------------------- 1.2774 +// VMTypeEntry macros 1.2775 +// 1.2776 + 1.2777 +#define GENERATE_VM_TYPE_ENTRY(type, superclass) \ 1.2778 + { QUOTE(type), QUOTE(superclass), 0, 0, 0, sizeof(type) }, 1.2779 + 1.2780 +#define GENERATE_TOPLEVEL_VM_TYPE_ENTRY(type) \ 1.2781 + { QUOTE(type), NULL, 0, 0, 0, sizeof(type) }, 1.2782 + 1.2783 +#define GENERATE_OOP_VM_TYPE_ENTRY(type) \ 1.2784 + { QUOTE(type), NULL, 1, 0, 0, sizeof(type) }, 1.2785 + 1.2786 +#define GENERATE_INTEGER_VM_TYPE_ENTRY(type) \ 1.2787 + { QUOTE(type), NULL, 0, 1, 0, sizeof(type) }, 1.2788 + 1.2789 +#define GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY(type) \ 1.2790 + { QUOTE(type), NULL, 0, 1, 1, sizeof(type) }, 1.2791 + 1.2792 +#define GENERATE_VM_TYPE_LAST_ENTRY() \ 1.2793 + { NULL, NULL, 0, 0, 0, 0 } 1.2794 + 1.2795 +#define CHECK_VM_TYPE_ENTRY(type, superclass) \ 1.2796 + { type* dummyObj = NULL; superclass* dummySuperObj = dummyObj; } 1.2797 + 1.2798 +#define CHECK_VM_TYPE_NO_OP(a) 1.2799 +#define CHECK_SINGLE_ARG_VM_TYPE_NO_OP(a) 1.2800 + 1.2801 +// 1.2802 +// Build-specific macros: 1.2803 +// 1.2804 + 1.2805 +#ifdef COMPILER1 1.2806 +# define GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY(a) GENERATE_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2807 +# define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2808 +#else 1.2809 +# define GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2810 +# define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2811 +#endif /* COMPILER1 */ 1.2812 + 1.2813 +#ifdef COMPILER2 1.2814 +# define GENERATE_C2_VM_TYPE_ENTRY(a, b) GENERATE_VM_TYPE_ENTRY(a, b) 1.2815 +# define CHECK_C2_VM_TYPE_ENTRY(a, b) CHECK_VM_TYPE_ENTRY(a, b) 1.2816 +# define GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY(a) GENERATE_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2817 +# define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2818 +#else 1.2819 +# define GENERATE_C2_VM_TYPE_ENTRY(a, b) 1.2820 +# define CHECK_C2_VM_TYPE_ENTRY(a, b) 1.2821 +# define GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2822 +# define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a) 1.2823 +#endif /* COMPILER2 */ 1.2824 + 1.2825 + 1.2826 +//-------------------------------------------------------------------------------- 1.2827 +// VMIntConstantEntry macros 1.2828 +// 1.2829 + 1.2830 +#define GENERATE_VM_INT_CONSTANT_ENTRY(name) \ 1.2831 + { QUOTE(name), (int32_t) name }, 1.2832 + 1.2833 +#define GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) \ 1.2834 + { name, (int32_t) value }, 1.2835 + 1.2836 +// This macro generates the sentinel value indicating the end of the list 1.2837 +#define GENERATE_VM_INT_CONSTANT_LAST_ENTRY() \ 1.2838 + { NULL, 0 } 1.2839 + 1.2840 + 1.2841 +// Generate an int constant for a C1 build 1.2842 +#ifdef COMPILER1 1.2843 +# define GENERATE_C1_VM_INT_CONSTANT_ENTRY(name) GENERATE_VM_INT_CONSTANT_ENTRY(name) 1.2844 +#else 1.2845 +# define GENERATE_C1_VM_INT_CONSTANT_ENTRY(name) 1.2846 +#endif /* COMPILER1 */ 1.2847 + 1.2848 +// Generate an int constant for a C2 build 1.2849 +#ifdef COMPILER2 1.2850 +# define GENERATE_C2_VM_INT_CONSTANT_ENTRY(name) GENERATE_VM_INT_CONSTANT_ENTRY(name) 1.2851 +# define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) 1.2852 +#else 1.2853 +# define GENERATE_C2_VM_INT_CONSTANT_ENTRY(name) 1.2854 +# define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) 1.2855 +#endif /* COMPILER1 */ 1.2856 + 1.2857 +//-------------------------------------------------------------------------------- 1.2858 +// VMLongConstantEntry macros 1.2859 +// 1.2860 + 1.2861 +#define GENERATE_VM_LONG_CONSTANT_ENTRY(name) \ 1.2862 + { QUOTE(name), cast_uint64_t(name) }, 1.2863 + 1.2864 +#define GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) \ 1.2865 + { name, cast_uint64_t(value) }, 1.2866 + 1.2867 +// This macro generates the sentinel value indicating the end of the list 1.2868 +#define GENERATE_VM_LONG_CONSTANT_LAST_ENTRY() \ 1.2869 + { NULL, 0 } 1.2870 + 1.2871 +// Generate a long constant for a C1 build 1.2872 +#ifdef COMPILER1 1.2873 +# define GENERATE_C1_VM_LONG_CONSTANT_ENTRY(name) GENERATE_VM_LONG_CONSTANT_ENTRY(name) 1.2874 +#else 1.2875 +# define GENERATE_C1_VM_LONG_CONSTANT_ENTRY(name) 1.2876 +#endif /* COMPILER1 */ 1.2877 + 1.2878 +// Generate a long constant for a C2 build 1.2879 +#ifdef COMPILER2 1.2880 +# define GENERATE_C2_VM_LONG_CONSTANT_ENTRY(name) GENERATE_VM_LONG_CONSTANT_ENTRY(name) 1.2881 +# define GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) 1.2882 +#else 1.2883 +# define GENERATE_C2_VM_LONG_CONSTANT_ENTRY(name) 1.2884 +# define GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) 1.2885 +#endif /* COMPILER1 */ 1.2886 + 1.2887 +// 1.2888 +// Instantiation of VMStructEntries, VMTypeEntries and VMIntConstantEntries 1.2889 +// 1.2890 + 1.2891 +// These initializers are allowed to access private fields in classes 1.2892 +// as long as class VMStructs is a friend 1.2893 +VMStructEntry VMStructs::localHotSpotVMStructs[] = { 1.2894 + 1.2895 + VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2896 + GENERATE_STATIC_VM_STRUCT_ENTRY, 1.2897 + GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, 1.2898 + GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2899 + GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, 1.2900 + GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY, 1.2901 + GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, 1.2902 + GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, 1.2903 + GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY) 1.2904 + 1.2905 +#if INCLUDE_ALL_GCS 1.2906 + VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2907 + GENERATE_STATIC_VM_STRUCT_ENTRY) 1.2908 + 1.2909 + VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2910 + GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2911 + GENERATE_STATIC_VM_STRUCT_ENTRY) 1.2912 + 1.2913 + VM_STRUCTS_G1(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2914 + GENERATE_STATIC_VM_STRUCT_ENTRY) 1.2915 +#endif // INCLUDE_ALL_GCS 1.2916 + 1.2917 + VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2918 + GENERATE_STATIC_VM_STRUCT_ENTRY, 1.2919 + GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, 1.2920 + GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2921 + GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, 1.2922 + GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, 1.2923 + GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, 1.2924 + GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY) 1.2925 + 1.2926 + VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2927 + GENERATE_STATIC_VM_STRUCT_ENTRY, 1.2928 + GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, 1.2929 + GENERATE_NONSTATIC_VM_STRUCT_ENTRY, 1.2930 + GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, 1.2931 + GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, 1.2932 + GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, 1.2933 + GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY) 1.2934 + 1.2935 + GENERATE_VM_STRUCT_LAST_ENTRY() 1.2936 +}; 1.2937 + 1.2938 +VMTypeEntry VMStructs::localHotSpotVMTypes[] = { 1.2939 + 1.2940 + VM_TYPES(GENERATE_VM_TYPE_ENTRY, 1.2941 + GENERATE_TOPLEVEL_VM_TYPE_ENTRY, 1.2942 + GENERATE_OOP_VM_TYPE_ENTRY, 1.2943 + GENERATE_INTEGER_VM_TYPE_ENTRY, 1.2944 + GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, 1.2945 + GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, 1.2946 + GENERATE_C2_VM_TYPE_ENTRY, 1.2947 + GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY) 1.2948 + 1.2949 +#if INCLUDE_ALL_GCS 1.2950 + VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY, 1.2951 + GENERATE_TOPLEVEL_VM_TYPE_ENTRY) 1.2952 + 1.2953 + VM_TYPES_CMS(GENERATE_VM_TYPE_ENTRY, 1.2954 + GENERATE_TOPLEVEL_VM_TYPE_ENTRY) 1.2955 + 1.2956 + VM_TYPES_PARNEW(GENERATE_VM_TYPE_ENTRY) 1.2957 + 1.2958 + VM_TYPES_G1(GENERATE_VM_TYPE_ENTRY, 1.2959 + GENERATE_TOPLEVEL_VM_TYPE_ENTRY) 1.2960 +#endif // INCLUDE_ALL_GCS 1.2961 + 1.2962 + VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY, 1.2963 + GENERATE_TOPLEVEL_VM_TYPE_ENTRY, 1.2964 + GENERATE_OOP_VM_TYPE_ENTRY, 1.2965 + GENERATE_INTEGER_VM_TYPE_ENTRY, 1.2966 + GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, 1.2967 + GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, 1.2968 + GENERATE_C2_VM_TYPE_ENTRY, 1.2969 + GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY) 1.2970 + 1.2971 + VM_TYPES_OS_CPU(GENERATE_VM_TYPE_ENTRY, 1.2972 + GENERATE_TOPLEVEL_VM_TYPE_ENTRY, 1.2973 + GENERATE_OOP_VM_TYPE_ENTRY, 1.2974 + GENERATE_INTEGER_VM_TYPE_ENTRY, 1.2975 + GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, 1.2976 + GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, 1.2977 + GENERATE_C2_VM_TYPE_ENTRY, 1.2978 + GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY) 1.2979 + 1.2980 + GENERATE_VM_TYPE_LAST_ENTRY() 1.2981 +}; 1.2982 + 1.2983 +VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = { 1.2984 + 1.2985 + VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY, 1.2986 + GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, 1.2987 + GENERATE_C1_VM_INT_CONSTANT_ENTRY, 1.2988 + GENERATE_C2_VM_INT_CONSTANT_ENTRY, 1.2989 + GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) 1.2990 + 1.2991 +#if INCLUDE_ALL_GCS 1.2992 + VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY) 1.2993 + 1.2994 + VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY) 1.2995 +#endif // INCLUDE_ALL_GCS 1.2996 + 1.2997 + VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY, 1.2998 + GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, 1.2999 + GENERATE_C1_VM_INT_CONSTANT_ENTRY, 1.3000 + GENERATE_C2_VM_INT_CONSTANT_ENTRY, 1.3001 + GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) 1.3002 + 1.3003 + VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY, 1.3004 + GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, 1.3005 + GENERATE_C1_VM_INT_CONSTANT_ENTRY, 1.3006 + GENERATE_C2_VM_INT_CONSTANT_ENTRY, 1.3007 + GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) 1.3008 + 1.3009 + GENERATE_VM_INT_CONSTANT_LAST_ENTRY() 1.3010 +}; 1.3011 + 1.3012 +VMLongConstantEntry VMStructs::localHotSpotVMLongConstants[] = { 1.3013 + 1.3014 + VM_LONG_CONSTANTS(GENERATE_VM_LONG_CONSTANT_ENTRY, 1.3015 + GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, 1.3016 + GENERATE_C1_VM_LONG_CONSTANT_ENTRY, 1.3017 + GENERATE_C2_VM_LONG_CONSTANT_ENTRY, 1.3018 + GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY) 1.3019 + 1.3020 + VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY, 1.3021 + GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, 1.3022 + GENERATE_C1_VM_LONG_CONSTANT_ENTRY, 1.3023 + GENERATE_C2_VM_LONG_CONSTANT_ENTRY, 1.3024 + GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY) 1.3025 + 1.3026 + VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY, 1.3027 + GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, 1.3028 + GENERATE_C1_VM_LONG_CONSTANT_ENTRY, 1.3029 + GENERATE_C2_VM_LONG_CONSTANT_ENTRY, 1.3030 + GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY) 1.3031 + 1.3032 + GENERATE_VM_LONG_CONSTANT_LAST_ENTRY() 1.3033 +}; 1.3034 + 1.3035 +// This is used both to check the types of referenced fields and, in 1.3036 +// debug builds, to ensure that all of the field types are present. 1.3037 +void 1.3038 +VMStructs::init() { 1.3039 + VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY, 1.3040 + CHECK_STATIC_VM_STRUCT_ENTRY, 1.3041 + CHECK_NO_OP, 1.3042 + CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, 1.3043 + CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, 1.3044 + CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY, 1.3045 + CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY, 1.3046 + CHECK_NO_OP, 1.3047 + CHECK_NO_OP); 1.3048 + 1.3049 +#if INCLUDE_ALL_GCS 1.3050 + VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY, 1.3051 + CHECK_STATIC_VM_STRUCT_ENTRY); 1.3052 + 1.3053 + VM_STRUCTS_CMS(CHECK_NONSTATIC_VM_STRUCT_ENTRY, 1.3054 + CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, 1.3055 + CHECK_STATIC_VM_STRUCT_ENTRY); 1.3056 + 1.3057 + VM_STRUCTS_G1(CHECK_NONSTATIC_VM_STRUCT_ENTRY, 1.3058 + CHECK_STATIC_VM_STRUCT_ENTRY); 1.3059 +#endif // INCLUDE_ALL_GCS 1.3060 + 1.3061 + VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY, 1.3062 + CHECK_STATIC_VM_STRUCT_ENTRY, 1.3063 + CHECK_NO_OP, 1.3064 + CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, 1.3065 + CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, 1.3066 + CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY, 1.3067 + CHECK_NO_OP, 1.3068 + CHECK_NO_OP); 1.3069 + 1.3070 + VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY, 1.3071 + CHECK_STATIC_VM_STRUCT_ENTRY, 1.3072 + CHECK_NO_OP, 1.3073 + CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, 1.3074 + CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, 1.3075 + CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY, 1.3076 + CHECK_NO_OP, 1.3077 + CHECK_NO_OP); 1.3078 + 1.3079 + VM_TYPES(CHECK_VM_TYPE_ENTRY, 1.3080 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3081 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3082 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3083 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3084 + CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY, 1.3085 + CHECK_C2_VM_TYPE_ENTRY, 1.3086 + CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY); 1.3087 + 1.3088 +#if INCLUDE_ALL_GCS 1.3089 + VM_TYPES_PARALLELGC(CHECK_VM_TYPE_ENTRY, 1.3090 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP); 1.3091 + 1.3092 + VM_TYPES_CMS(CHECK_VM_TYPE_ENTRY, 1.3093 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP); 1.3094 + 1.3095 + VM_TYPES_PARNEW(CHECK_VM_TYPE_ENTRY) 1.3096 + 1.3097 + VM_TYPES_G1(CHECK_VM_TYPE_ENTRY, 1.3098 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP); 1.3099 +#endif // INCLUDE_ALL_GCS 1.3100 + 1.3101 + VM_TYPES_CPU(CHECK_VM_TYPE_ENTRY, 1.3102 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3103 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3104 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3105 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3106 + CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY, 1.3107 + CHECK_C2_VM_TYPE_ENTRY, 1.3108 + CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY); 1.3109 + 1.3110 + VM_TYPES_OS_CPU(CHECK_VM_TYPE_ENTRY, 1.3111 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3112 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3113 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3114 + CHECK_SINGLE_ARG_VM_TYPE_NO_OP, 1.3115 + CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY, 1.3116 + CHECK_C2_VM_TYPE_ENTRY, 1.3117 + CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY); 1.3118 + 1.3119 + // 1.3120 + // Split VM_STRUCTS() invocation into two parts to allow MS VC++ 6.0 1.3121 + // to build with the source mounted over SNC3.2. Symptom was that 1.3122 + // debug build failed with an internal compiler error. Has been seen 1.3123 + // mounting sources from Solaris 2.6 and 2.7 hosts, but so far not 1.3124 + // 2.8 hosts. Appears to occur because line is too long. 1.3125 + // 1.3126 + // If an assertion failure is triggered here it means that an entry 1.3127 + // in VMStructs::localHotSpotVMStructs[] was not found in 1.3128 + // VMStructs::localHotSpotVMTypes[]. (The assertion itself had to be 1.3129 + // made less descriptive because of this above bug -- see the 1.3130 + // definition of ENSURE_FIELD_TYPE_PRESENT.) 1.3131 + // 1.3132 + // NOTE: taken out because this was just not working on everyone's 1.3133 + // Solstice NFS setup. If everyone switches to local workspaces on 1.3134 + // Win32, we can put this back in. 1.3135 +#ifndef _WINDOWS 1.3136 + debug_only(VM_STRUCTS(ENSURE_FIELD_TYPE_PRESENT, 1.3137 + CHECK_NO_OP, 1.3138 + CHECK_NO_OP, 1.3139 + CHECK_NO_OP, 1.3140 + CHECK_NO_OP, 1.3141 + CHECK_NO_OP, 1.3142 + CHECK_NO_OP, 1.3143 + CHECK_NO_OP, 1.3144 + CHECK_NO_OP)); 1.3145 + debug_only(VM_STRUCTS(CHECK_NO_OP, 1.3146 + ENSURE_FIELD_TYPE_PRESENT, 1.3147 + CHECK_NO_OP, 1.3148 + ENSURE_FIELD_TYPE_PRESENT, 1.3149 + ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, 1.3150 + ENSURE_C1_FIELD_TYPE_PRESENT, 1.3151 + ENSURE_C2_FIELD_TYPE_PRESENT, 1.3152 + CHECK_NO_OP, 1.3153 + CHECK_NO_OP)); 1.3154 +#if INCLUDE_ALL_GCS 1.3155 + debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT, 1.3156 + ENSURE_FIELD_TYPE_PRESENT)); 1.3157 + debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT, 1.3158 + ENSURE_FIELD_TYPE_PRESENT, 1.3159 + ENSURE_FIELD_TYPE_PRESENT)); 1.3160 + debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT, 1.3161 + ENSURE_FIELD_TYPE_PRESENT)); 1.3162 +#endif // INCLUDE_ALL_GCS 1.3163 + debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT, 1.3164 + ENSURE_FIELD_TYPE_PRESENT, 1.3165 + CHECK_NO_OP, 1.3166 + ENSURE_FIELD_TYPE_PRESENT, 1.3167 + ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, 1.3168 + ENSURE_C2_FIELD_TYPE_PRESENT, 1.3169 + CHECK_NO_OP, 1.3170 + CHECK_NO_OP)); 1.3171 + debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT, 1.3172 + ENSURE_FIELD_TYPE_PRESENT, 1.3173 + CHECK_NO_OP, 1.3174 + ENSURE_FIELD_TYPE_PRESENT, 1.3175 + ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, 1.3176 + ENSURE_C2_FIELD_TYPE_PRESENT, 1.3177 + CHECK_NO_OP, 1.3178 + CHECK_NO_OP)); 1.3179 +#endif 1.3180 +} 1.3181 + 1.3182 +extern "C" { 1.3183 + 1.3184 +// see comments on cast_uint64_t at the top of this file 1.3185 +#define ASSIGN_CONST_TO_64BIT_VAR(var, expr) \ 1.3186 + JNIEXPORT uint64_t var = cast_uint64_t(expr); 1.3187 +#define ASSIGN_OFFSET_TO_64BIT_VAR(var, type, field) \ 1.3188 + ASSIGN_CONST_TO_64BIT_VAR(var, offset_of(type, field)) 1.3189 +#define ASSIGN_STRIDE_TO_64BIT_VAR(var, array) \ 1.3190 + ASSIGN_CONST_TO_64BIT_VAR(var, (char*)&array[1] - (char*)&array[0]) 1.3191 + 1.3192 +JNIEXPORT VMStructEntry* gHotSpotVMStructs = VMStructs::localHotSpotVMStructs; 1.3193 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryTypeNameOffset, VMStructEntry, typeName); 1.3194 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryFieldNameOffset, VMStructEntry, fieldName); 1.3195 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryTypeStringOffset, VMStructEntry, typeString); 1.3196 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryIsStaticOffset, VMStructEntry, isStatic); 1.3197 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryOffsetOffset, VMStructEntry, offset); 1.3198 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryAddressOffset, VMStructEntry, address); 1.3199 +ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMStructEntryArrayStride, gHotSpotVMStructs); 1.3200 +JNIEXPORT VMTypeEntry* gHotSpotVMTypes = VMStructs::localHotSpotVMTypes; 1.3201 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryTypeNameOffset, VMTypeEntry, typeName); 1.3202 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySuperclassNameOffset, VMTypeEntry, superclassName); 1.3203 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsOopTypeOffset, VMTypeEntry, isOopType); 1.3204 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsIntegerTypeOffset, VMTypeEntry, isIntegerType); 1.3205 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsUnsignedOffset, VMTypeEntry, isUnsigned); 1.3206 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySizeOffset, VMTypeEntry, size); 1.3207 +ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMTypeEntryArrayStride,gHotSpotVMTypes); 1.3208 +JNIEXPORT VMIntConstantEntry* gHotSpotVMIntConstants = VMStructs::localHotSpotVMIntConstants; 1.3209 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryNameOffset, VMIntConstantEntry, name); 1.3210 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryValueOffset, VMIntConstantEntry, value); 1.3211 +ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMIntConstantEntryArrayStride, gHotSpotVMIntConstants); 1.3212 +JNIEXPORT VMLongConstantEntry* gHotSpotVMLongConstants = VMStructs::localHotSpotVMLongConstants; 1.3213 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryNameOffset, VMLongConstantEntry, name); 1.3214 +ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryValueOffset, VMLongConstantEntry, value); 1.3215 +ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLongConstants); 1.3216 +} 1.3217 + 1.3218 +#ifdef ASSERT 1.3219 +static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool isRecurse) { 1.3220 + { 1.3221 + VMTypeEntry* types = origtypes; 1.3222 + while (types->typeName != NULL) { 1.3223 + if (strcmp(typeName, types->typeName) == 0) { 1.3224 + // Found it 1.3225 + return 1; 1.3226 + } 1.3227 + ++types; 1.3228 + } 1.3229 + } 1.3230 + // Search for the base type by peeling off const and * 1.3231 + size_t len = strlen(typeName); 1.3232 + if (typeName[len-1] == '*') { 1.3233 + char * s = NEW_C_HEAP_ARRAY(char, len, mtInternal); 1.3234 + strncpy(s, typeName, len - 1); 1.3235 + s[len-1] = '\0'; 1.3236 + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); 1.3237 + if (recursiveFindType(origtypes, s, true) == 1) { 1.3238 + FREE_C_HEAP_ARRAY(char, s, mtInternal); 1.3239 + return 1; 1.3240 + } 1.3241 + FREE_C_HEAP_ARRAY(char, s, mtInternal); 1.3242 + } 1.3243 + const char* start = NULL; 1.3244 + if (strstr(typeName, "GrowableArray<") == typeName) { 1.3245 + start = typeName + strlen("GrowableArray<"); 1.3246 + } else if (strstr(typeName, "Array<") == typeName) { 1.3247 + start = typeName + strlen("Array<"); 1.3248 + } 1.3249 + if (start != NULL) { 1.3250 + const char * end = strrchr(typeName, '>'); 1.3251 + int len = end - start + 1; 1.3252 + char * s = NEW_C_HEAP_ARRAY(char, len, mtInternal); 1.3253 + strncpy(s, start, len - 1); 1.3254 + s[len-1] = '\0'; 1.3255 + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); 1.3256 + if (recursiveFindType(origtypes, s, true) == 1) { 1.3257 + FREE_C_HEAP_ARRAY(char, s, mtInternal); 1.3258 + return 1; 1.3259 + } 1.3260 + FREE_C_HEAP_ARRAY(char, s, mtInternal); 1.3261 + } 1.3262 + if (strstr(typeName, "const ") == typeName) { 1.3263 + const char * s = typeName + strlen("const "); 1.3264 + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); 1.3265 + if (recursiveFindType(origtypes, s, true) == 1) { 1.3266 + return 1; 1.3267 + } 1.3268 + } 1.3269 + if (strstr(typeName, " const") == typeName + len - 6) { 1.3270 + char * s = strdup(typeName); 1.3271 + s[len - 6] = '\0'; 1.3272 + // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); 1.3273 + if (recursiveFindType(origtypes, s, true) == 1) { 1.3274 + free(s); 1.3275 + return 1; 1.3276 + } 1.3277 + free(s); 1.3278 + } 1.3279 + if (!isRecurse) { 1.3280 + tty->print_cr("type \"%s\" not found", typeName); 1.3281 + } 1.3282 + return 0; 1.3283 +} 1.3284 + 1.3285 + 1.3286 +int 1.3287 +VMStructs::findType(const char* typeName) { 1.3288 + VMTypeEntry* types = gHotSpotVMTypes; 1.3289 + 1.3290 + return recursiveFindType(types, typeName, false); 1.3291 +} 1.3292 +#endif 1.3293 + 1.3294 +void vmStructs_init() { 1.3295 + debug_only(VMStructs::init()); 1.3296 +} 1.3297 + 1.3298 +#ifndef PRODUCT 1.3299 +void VMStructs::test() { 1.3300 + // Make sure last entry in the each array is indeed the correct end marker. 1.3301 + // The reason why these are static is to make sure they are zero initialized. 1.3302 + // Putting them on the stack will leave some garbage in the padding of some fields. 1.3303 + static VMStructEntry struct_last_entry = GENERATE_VM_STRUCT_LAST_ENTRY(); 1.3304 + assert(memcmp(&localHotSpotVMStructs[(sizeof(localHotSpotVMStructs) / sizeof(VMStructEntry)) - 1], 1.3305 + &struct_last_entry, 1.3306 + sizeof(VMStructEntry)) == 0, "Incorrect last entry in localHotSpotVMStructs"); 1.3307 + 1.3308 + static VMTypeEntry type_last_entry = GENERATE_VM_TYPE_LAST_ENTRY(); 1.3309 + assert(memcmp(&localHotSpotVMTypes[sizeof(localHotSpotVMTypes) / sizeof(VMTypeEntry) - 1], 1.3310 + &type_last_entry, 1.3311 + sizeof(VMTypeEntry)) == 0, "Incorrect last entry in localHotSpotVMTypes"); 1.3312 + 1.3313 + static VMIntConstantEntry int_last_entry = GENERATE_VM_INT_CONSTANT_LAST_ENTRY(); 1.3314 + assert(memcmp(&localHotSpotVMIntConstants[sizeof(localHotSpotVMIntConstants) / sizeof(VMIntConstantEntry) - 1], 1.3315 + &int_last_entry, 1.3316 + sizeof(VMIntConstantEntry)) == 0, "Incorrect last entry in localHotSpotVMIntConstants"); 1.3317 + 1.3318 + static VMLongConstantEntry long_last_entry = GENERATE_VM_LONG_CONSTANT_LAST_ENTRY(); 1.3319 + assert(memcmp(&localHotSpotVMLongConstants[sizeof(localHotSpotVMLongConstants) / sizeof(VMLongConstantEntry) - 1], 1.3320 + &long_last_entry, 1.3321 + sizeof(VMLongConstantEntry)) == 0, "Incorrect last entry in localHotSpotVMLongConstants"); 1.3322 + 1.3323 + 1.3324 + // Check for duplicate entries in type array 1.3325 + for (int i = 0; localHotSpotVMTypes[i].typeName != NULL; i++) { 1.3326 + for (int j = i + 1; localHotSpotVMTypes[j].typeName != NULL; j++) { 1.3327 + if (strcmp(localHotSpotVMTypes[i].typeName, localHotSpotVMTypes[j].typeName) == 0) { 1.3328 + tty->print_cr("Duplicate entries for '%s'", localHotSpotVMTypes[i].typeName); 1.3329 + assert(false, "Duplicate types in localHotSpotVMTypes array"); 1.3330 + } 1.3331 + } 1.3332 + } 1.3333 +} 1.3334 +#endif