src/share/vm/runtime/vmStructs.cpp

changeset 0
f90c822e73f8
child 1
2d8a650513c2
     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

mercurial