src/share/vm/runtime/vmStructs.cpp

Mon, 12 Nov 2012 14:03:53 -0800

author
minqi
date
Mon, 12 Nov 2012 14:03:53 -0800
changeset 4267
bd7a7ce2e264
parent 4251
18fb7da42534
child 4290
7c15faa95ce7
child 4299
f34d701e952e
child 4302
b2dbd323c668
permissions
-rw-r--r--

6830717: replay of compilations would help with debugging
Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method.
Reviewed-by: kvn, twisti, sspitsyn
Contributed-by: yumin.qi@oracle.com

duke@435 1 /*
acorn@3491 2 * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
duke@435 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 *
duke@435 5 * This code is free software; you can redistribute it and/or modify it
duke@435 6 * under the terms of the GNU General Public License version 2 only, as
duke@435 7 * published by the Free Software Foundation.
duke@435 8 *
duke@435 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 * accompanied this code).
duke@435 14 *
duke@435 15 * You should have received a copy of the GNU General Public License version
duke@435 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 *
trims@1907 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 * or visit www.oracle.com if you need additional information or have any
trims@1907 21 * questions.
duke@435 22 *
duke@435 23 */
duke@435 24
stefank@2314 25 #include "precompiled.hpp"
stefank@2314 26 #include "classfile/dictionary.hpp"
stefank@2314 27 #include "classfile/javaClasses.hpp"
stefank@2314 28 #include "classfile/loaderConstraints.hpp"
stefank@2314 29 #include "classfile/placeholders.hpp"
stefank@2314 30 #include "classfile/symbolTable.hpp"
stefank@2314 31 #include "classfile/systemDictionary.hpp"
never@3138 32 #include "ci/ciField.hpp"
never@3138 33 #include "ci/ciInstance.hpp"
never@3138 34 #include "ci/ciObjArrayKlass.hpp"
never@3138 35 #include "ci/ciMethodData.hpp"
never@3138 36 #include "ci/ciSymbol.hpp"
stefank@2314 37 #include "code/codeBlob.hpp"
stefank@2314 38 #include "code/codeCache.hpp"
stefank@2314 39 #include "code/compressedStream.hpp"
stefank@2314 40 #include "code/location.hpp"
stefank@2314 41 #include "code/nmethod.hpp"
stefank@2314 42 #include "code/pcDesc.hpp"
stefank@2314 43 #include "code/stubs.hpp"
stefank@2314 44 #include "code/vmreg.hpp"
stefank@2314 45 #include "compiler/oopMap.hpp"
never@3138 46 #include "compiler/compileBroker.hpp"
stefank@2314 47 #include "gc_implementation/shared/immutableSpace.hpp"
stefank@2314 48 #include "gc_implementation/shared/markSweep.hpp"
stefank@2314 49 #include "gc_implementation/shared/mutableSpace.hpp"
stefank@2314 50 #include "gc_interface/collectedHeap.hpp"
stefank@2314 51 #include "interpreter/bytecodeInterpreter.hpp"
stefank@2314 52 #include "interpreter/bytecodes.hpp"
stefank@2314 53 #include "interpreter/interpreter.hpp"
coleenp@4037 54 #include "memory/allocation.hpp"
stefank@2314 55 #include "memory/cardTableRS.hpp"
stefank@2314 56 #include "memory/defNewGeneration.hpp"
jmasa@3730 57 #include "memory/freeBlockDictionary.hpp"
stefank@2314 58 #include "memory/genCollectedHeap.hpp"
stefank@2314 59 #include "memory/generation.hpp"
stefank@2314 60 #include "memory/generationSpec.hpp"
stefank@2314 61 #include "memory/heap.hpp"
jmasa@4196 62 #include "memory/metablock.hpp"
stefank@2314 63 #include "memory/space.hpp"
stefank@2314 64 #include "memory/tenuredGeneration.hpp"
stefank@2314 65 #include "memory/universe.hpp"
stefank@2314 66 #include "memory/watermark.hpp"
stefank@2314 67 #include "oops/arrayKlass.hpp"
stefank@2314 68 #include "oops/arrayOop.hpp"
coleenp@4037 69 #include "oops/compiledICHolder.hpp"
coleenp@4037 70 #include "oops/constMethod.hpp"
coleenp@4037 71 #include "oops/constantPool.hpp"
coleenp@4037 72 #include "oops/cpCache.hpp"
coleenp@4037 73 #include "oops/instanceClassLoaderKlass.hpp"
stefank@2314 74 #include "oops/instanceKlass.hpp"
never@2693 75 #include "oops/instanceMirrorKlass.hpp"
stefank@2314 76 #include "oops/instanceOop.hpp"
stefank@2314 77 #include "oops/klass.hpp"
stefank@2314 78 #include "oops/markOop.hpp"
coleenp@4037 79 #include "oops/methodData.hpp"
coleenp@4037 80 #include "oops/method.hpp"
stefank@2314 81 #include "oops/objArrayKlass.hpp"
stefank@2314 82 #include "oops/objArrayOop.hpp"
stefank@2314 83 #include "oops/oop.inline.hpp"
coleenp@2497 84 #include "oops/symbol.hpp"
stefank@2314 85 #include "oops/typeArrayKlass.hpp"
stefank@2314 86 #include "oops/typeArrayOop.hpp"
stefank@2314 87 #include "prims/jvmtiAgentThread.hpp"
stefank@2314 88 #include "runtime/arguments.hpp"
never@3138 89 #include "runtime/deoptimization.hpp"
never@3138 90 #include "runtime/vframeArray.hpp"
stefank@2314 91 #include "runtime/globals.hpp"
stefank@2314 92 #include "runtime/java.hpp"
stefank@2314 93 #include "runtime/javaCalls.hpp"
stefank@2314 94 #include "runtime/perfMemory.hpp"
kamg@2511 95 #include "runtime/serviceThread.hpp"
stefank@2314 96 #include "runtime/sharedRuntime.hpp"
stefank@2314 97 #include "runtime/stubRoutines.hpp"
stefank@2314 98 #include "runtime/virtualspace.hpp"
stefank@2314 99 #include "runtime/vmStructs.hpp"
coleenp@4037 100 #include "utilities/array.hpp"
stefank@2314 101 #include "utilities/globalDefinitions.hpp"
stefank@2314 102 #include "utilities/hashtable.hpp"
stefank@2314 103 #ifdef TARGET_ARCH_x86
stefank@2314 104 # include "vmStructs_x86.hpp"
stefank@2314 105 #endif
stefank@2314 106 #ifdef TARGET_ARCH_sparc
stefank@2314 107 # include "vmStructs_sparc.hpp"
stefank@2314 108 #endif
stefank@2314 109 #ifdef TARGET_ARCH_zero
stefank@2314 110 # include "vmStructs_zero.hpp"
stefank@2314 111 #endif
bobv@2508 112 #ifdef TARGET_ARCH_arm
bobv@2508 113 # include "vmStructs_arm.hpp"
bobv@2508 114 #endif
bobv@2508 115 #ifdef TARGET_ARCH_ppc
bobv@2508 116 # include "vmStructs_ppc.hpp"
bobv@2508 117 #endif
stefank@2314 118 #ifdef TARGET_OS_FAMILY_linux
stefank@2314 119 # include "thread_linux.inline.hpp"
stefank@2314 120 #endif
stefank@2314 121 #ifdef TARGET_OS_FAMILY_solaris
stefank@2314 122 # include "thread_solaris.inline.hpp"
stefank@2314 123 #endif
stefank@2314 124 #ifdef TARGET_OS_FAMILY_windows
stefank@2314 125 # include "thread_windows.inline.hpp"
stefank@2314 126 #endif
never@3156 127 #ifdef TARGET_OS_FAMILY_bsd
never@3156 128 # include "thread_bsd.inline.hpp"
never@3156 129 #endif
stefank@2314 130 #ifdef TARGET_OS_ARCH_linux_x86
stefank@2314 131 # include "vmStructs_linux_x86.hpp"
stefank@2314 132 #endif
stefank@2314 133 #ifdef TARGET_OS_ARCH_linux_sparc
stefank@2314 134 # include "vmStructs_linux_sparc.hpp"
stefank@2314 135 #endif
stefank@2314 136 #ifdef TARGET_OS_ARCH_linux_zero
stefank@2314 137 # include "vmStructs_linux_zero.hpp"
stefank@2314 138 #endif
stefank@2314 139 #ifdef TARGET_OS_ARCH_solaris_x86
stefank@2314 140 # include "vmStructs_solaris_x86.hpp"
stefank@2314 141 #endif
stefank@2314 142 #ifdef TARGET_OS_ARCH_solaris_sparc
stefank@2314 143 # include "vmStructs_solaris_sparc.hpp"
stefank@2314 144 #endif
stefank@2314 145 #ifdef TARGET_OS_ARCH_windows_x86
stefank@2314 146 # include "vmStructs_windows_x86.hpp"
stefank@2314 147 #endif
bobv@2508 148 #ifdef TARGET_OS_ARCH_linux_arm
bobv@2508 149 # include "vmStructs_linux_arm.hpp"
bobv@2508 150 #endif
bobv@2508 151 #ifdef TARGET_OS_ARCH_linux_ppc
bobv@2508 152 # include "vmStructs_linux_ppc.hpp"
bobv@2508 153 #endif
never@3156 154 #ifdef TARGET_OS_ARCH_bsd_x86
never@3156 155 # include "vmStructs_bsd_x86.hpp"
never@3156 156 #endif
never@3156 157 #ifdef TARGET_OS_ARCH_bsd_zero
never@3156 158 # include "vmStructs_bsd_zero.hpp"
never@3156 159 #endif
stefank@2314 160 #ifndef SERIALGC
stefank@2314 161 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
stefank@2314 162 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
stefank@2314 163 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
stefank@2314 164 #include "gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp"
stefank@2314 165 #include "gc_implementation/parNew/parNewGeneration.hpp"
stefank@2314 166 #include "gc_implementation/parNew/vmStructs_parNew.hpp"
stefank@2314 167 #include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
stefank@2314 168 #include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
stefank@2314 169 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
stefank@2314 170 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
stefank@2314 171 #include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
stefank@2314 172 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
stefank@2314 173 #include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
tonyp@3168 174 #include "gc_implementation/g1/vmStructs_g1.hpp"
stefank@2314 175 #endif
stefank@2314 176 #ifdef COMPILER2
never@3138 177 #include "opto/addnode.hpp"
never@3138 178 #include "opto/block.hpp"
never@3138 179 #include "opto/callnode.hpp"
never@3138 180 #include "opto/cfgnode.hpp"
never@3138 181 #include "opto/chaitin.hpp"
never@3138 182 #include "opto/divnode.hpp"
never@3138 183 #include "opto/locknode.hpp"
never@3138 184 #include "opto/loopnode.hpp"
never@3138 185 #include "opto/machnode.hpp"
stefank@2314 186 #include "opto/matcher.hpp"
never@3138 187 #include "opto/mulnode.hpp"
never@3138 188 #include "opto/phaseX.hpp"
never@3138 189 #include "opto/parse.hpp"
never@3138 190 #include "opto/regalloc.hpp"
never@3138 191 #include "opto/rootnode.hpp"
never@3138 192 #include "opto/subnode.hpp"
never@3138 193 #include "opto/vectornode.hpp"
stefank@2314 194 #ifdef TARGET_ARCH_MODEL_x86_32
stefank@2314 195 # include "adfiles/adGlobals_x86_32.hpp"
stefank@2314 196 #endif
stefank@2314 197 #ifdef TARGET_ARCH_MODEL_x86_64
stefank@2314 198 # include "adfiles/adGlobals_x86_64.hpp"
stefank@2314 199 #endif
stefank@2314 200 #ifdef TARGET_ARCH_MODEL_sparc
stefank@2314 201 # include "adfiles/adGlobals_sparc.hpp"
stefank@2314 202 #endif
stefank@2314 203 #ifdef TARGET_ARCH_MODEL_zero
stefank@2314 204 # include "adfiles/adGlobals_zero.hpp"
stefank@2314 205 #endif
bobv@2508 206 #ifdef TARGET_ARCH_MODEL_arm
bobv@2508 207 # include "adfiles/adGlobals_arm.hpp"
bobv@2508 208 #endif
bobv@2508 209 #ifdef TARGET_ARCH_MODEL_ppc
bobv@2508 210 # include "adfiles/adGlobals_ppc.hpp"
bobv@2508 211 #endif
stefank@2314 212 #endif
duke@435 213
duke@435 214 // Note: the cross-product of (c1, c2, product, nonproduct, ...),
duke@435 215 // (nonstatic, static), and (unchecked, checked) has not been taken.
duke@435 216 // Only the macros currently needed have been defined.
duke@435 217
duke@435 218 // A field whose type is not checked is given a null string as the
duke@435 219 // type name, indicating an "opaque" type to the serviceability agent.
duke@435 220
duke@435 221 // NOTE: there is an interdependency between this file and
duke@435 222 // HotSpotTypeDataBase.java, which parses the type strings.
duke@435 223
duke@435 224 #ifndef REG_COUNT
duke@435 225 #define REG_COUNT 0
duke@435 226 #endif
duke@435 227 // whole purpose of this function is to work around bug c++/27724 in gcc 4.1.1
duke@435 228 // with optimization turned on it doesn't affect produced code
duke@435 229 static inline uint64_t cast_uint64_t(size_t x)
duke@435 230 {
duke@435 231 return x;
duke@435 232 }
duke@435 233
jprovino@4165 234 #if INCLUDE_JVMTI
jprovino@4165 235 #define JVMTI_STRUCTS(static_field) \
jprovino@4165 236 static_field(JvmtiExport, _can_access_local_variables, bool) \
jprovino@4165 237 static_field(JvmtiExport, _can_hotswap_or_post_breakpoint, bool) \
jprovino@4165 238 static_field(JvmtiExport, _can_post_on_exceptions, bool) \
jprovino@4165 239 static_field(JvmtiExport, _can_walk_any_space, bool)
jprovino@4165 240 #else
jprovino@4165 241 #define JVMTI_STRUCTS(static_field)
jprovino@4165 242 #endif // INCLUDE_JVMTI
duke@435 243
zgu@3900 244 typedef HashtableEntry<intptr_t, mtInternal> IntptrHashtableEntry;
zgu@3900 245 typedef Hashtable<intptr_t, mtInternal> IntptrHashtable;
zgu@3900 246 typedef Hashtable<Symbol*, mtSymbol> SymbolHashtable;
zgu@3900 247 typedef HashtableEntry<Symbol*, mtClass> SymbolHashtableEntry;
zgu@3900 248 typedef Hashtable<oop, mtSymbol> StringHashtable;
coleenp@4037 249 typedef TwoOopHashtable<Klass*, mtClass> KlassTwoOopHashtable;
coleenp@4037 250 typedef Hashtable<Klass*, mtClass> KlassHashtable;
coleenp@4037 251 typedef HashtableEntry<Klass*, mtClass> KlassHashtableEntry;
zgu@3900 252 typedef TwoOopHashtable<Symbol*, mtClass> SymbolTwoOopHashtable;
jmasa@4196 253 typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
zgu@3900 254
duke@435 255 //--------------------------------------------------------------------------------
duke@435 256 // VM_STRUCTS
duke@435 257 //
duke@435 258 // This list enumerates all of the fields the serviceability agent
duke@435 259 // needs to know about. Be sure to see also the type table below this one.
duke@435 260 // NOTE that there are platform-specific additions to this table in
duke@435 261 // vmStructs_<os>_<cpu>.hpp.
duke@435 262
duke@435 263 #define VM_STRUCTS(nonstatic_field, \
duke@435 264 static_field, \
duke@435 265 unchecked_nonstatic_field, \
duke@435 266 volatile_nonstatic_field, \
duke@435 267 nonproduct_nonstatic_field, \
duke@435 268 c1_nonstatic_field, \
duke@435 269 c2_nonstatic_field, \
duke@435 270 unchecked_c1_static_field, \
duke@435 271 unchecked_c2_static_field, \
duke@435 272 last_entry) \
duke@435 273 \
duke@435 274 /******************************************************************/ \
coleenp@4037 275 /* OopDesc and Klass hierarchies (NOTE: MethodData* incomplete) */ \
duke@435 276 /******************************************************************/ \
duke@435 277 \
duke@435 278 volatile_nonstatic_field(oopDesc, _mark, markOop) \
coleenp@4037 279 volatile_nonstatic_field(oopDesc, _metadata._klass, Klass*) \
coleenp@548 280 volatile_nonstatic_field(oopDesc, _metadata._compressed_klass, narrowOop) \
duke@435 281 static_field(oopDesc, _bs, BarrierSet*) \
coleenp@4142 282 nonstatic_field(ArrayKlass, _dimension, int) \
coleenp@4142 283 volatile_nonstatic_field(ArrayKlass, _higher_dimension, Klass*) \
coleenp@4142 284 volatile_nonstatic_field(ArrayKlass, _lower_dimension, Klass*) \
coleenp@4142 285 nonstatic_field(ArrayKlass, _vtable_len, int) \
coleenp@4142 286 nonstatic_field(ArrayKlass, _alloc_size, juint) \
coleenp@4142 287 nonstatic_field(ArrayKlass, _component_mirror, oop) \
coleenp@4037 288 nonstatic_field(CompiledICHolder, _holder_method, Method*) \
coleenp@4037 289 nonstatic_field(CompiledICHolder, _holder_klass, Klass*) \
coleenp@4037 290 nonstatic_field(ConstantPool, _tags, Array<u1>*) \
coleenp@4037 291 nonstatic_field(ConstantPool, _cache, ConstantPoolCache*) \
coleenp@4251 292 nonstatic_field(ConstantPool, _pool_holder, InstanceKlass*) \
coleenp@4037 293 nonstatic_field(ConstantPool, _operands, Array<u2>*) \
coleenp@4037 294 nonstatic_field(ConstantPool, _length, int) \
coleenp@4037 295 nonstatic_field(ConstantPool, _resolved_references, jobject) \
coleenp@4037 296 nonstatic_field(ConstantPool, _reference_map, Array<u2>*) \
coleenp@4037 297 nonstatic_field(ConstantPoolCache, _length, int) \
coleenp@4037 298 nonstatic_field(ConstantPoolCache, _constant_pool, ConstantPool*) \
coleenp@4037 299 nonstatic_field(InstanceKlass, _array_klasses, Klass*) \
coleenp@4037 300 nonstatic_field(InstanceKlass, _methods, Array<Method*>*) \
coleenp@4037 301 nonstatic_field(InstanceKlass, _local_interfaces, Array<Klass*>*) \
coleenp@4037 302 nonstatic_field(InstanceKlass, _transitive_interfaces, Array<Klass*>*) \
coleenp@4037 303 nonstatic_field(InstanceKlass, _fields, Array<u2>*) \
coleenp@4037 304 nonstatic_field(InstanceKlass, _java_fields_count, u2) \
coleenp@4037 305 nonstatic_field(InstanceKlass, _constants, ConstantPool*) \
coleenp@4037 306 nonstatic_field(InstanceKlass, _class_loader_data, ClassLoaderData*) \
coleenp@4037 307 nonstatic_field(InstanceKlass, _protection_domain, oop) \
coleenp@4037 308 nonstatic_field(InstanceKlass, _signers, objArrayOop) \
coleenp@4037 309 nonstatic_field(InstanceKlass, _source_file_name, Symbol*) \
coleenp@4037 310 nonstatic_field(InstanceKlass, _source_debug_extension, char*) \
coleenp@4037 311 nonstatic_field(InstanceKlass, _inner_classes, Array<jushort>*) \
coleenp@4037 312 nonstatic_field(InstanceKlass, _nonstatic_field_size, int) \
coleenp@4037 313 nonstatic_field(InstanceKlass, _static_field_size, int) \
coleenp@4037 314 nonstatic_field(InstanceKlass, _static_oop_field_count, u2) \
coleenp@4037 315 nonstatic_field(InstanceKlass, _nonstatic_oop_map_size, int) \
coleenp@4037 316 nonstatic_field(InstanceKlass, _is_marked_dependent, bool) \
coleenp@4037 317 nonstatic_field(InstanceKlass, _minor_version, u2) \
coleenp@4037 318 nonstatic_field(InstanceKlass, _major_version, u2) \
coleenp@4037 319 nonstatic_field(InstanceKlass, _init_state, u1) \
coleenp@4037 320 nonstatic_field(InstanceKlass, _init_thread, Thread*) \
coleenp@4037 321 nonstatic_field(InstanceKlass, _vtable_len, int) \
coleenp@4037 322 nonstatic_field(InstanceKlass, _itable_len, int) \
coleenp@4037 323 nonstatic_field(InstanceKlass, _reference_type, u1) \
coleenp@4037 324 volatile_nonstatic_field(InstanceKlass, _oop_map_cache, OopMapCache*) \
coleenp@4037 325 nonstatic_field(InstanceKlass, _jni_ids, JNIid*) \
coleenp@4037 326 nonstatic_field(InstanceKlass, _osr_nmethods_head, nmethod*) \
coleenp@4037 327 nonstatic_field(InstanceKlass, _breakpoints, BreakpointInfo*) \
coleenp@4037 328 nonstatic_field(InstanceKlass, _generic_signature, Symbol*) \
coleenp@4037 329 nonstatic_field(InstanceKlass, _methods_jmethod_ids, jmethodID*) \
coleenp@4037 330 nonstatic_field(InstanceKlass, _methods_cached_itable_indices, int*) \
coleenp@4037 331 volatile_nonstatic_field(InstanceKlass, _idnum_allocated_count, u2) \
coleenp@4037 332 nonstatic_field(InstanceKlass, _annotations, Annotations*) \
coleenp@4037 333 nonstatic_field(InstanceKlass, _dependencies, nmethodBucket*) \
never@3138 334 nonstatic_field(nmethodBucket, _nmethod, nmethod*) \
never@3138 335 nonstatic_field(nmethodBucket, _count, int) \
never@3138 336 nonstatic_field(nmethodBucket, _next, nmethodBucket*) \
coleenp@4037 337 nonstatic_field(InstanceKlass, _method_ordering, Array<int>*) \
duke@435 338 nonstatic_field(Klass, _super_check_offset, juint) \
coleenp@4037 339 nonstatic_field(Klass, _secondary_super_cache, Klass*) \
coleenp@4037 340 nonstatic_field(Klass, _secondary_supers, Array<Klass*>*) \
coleenp@4037 341 nonstatic_field(Klass, _primary_supers[0], Klass*) \
duke@435 342 nonstatic_field(Klass, _java_mirror, oop) \
duke@435 343 nonstatic_field(Klass, _modifier_flags, jint) \
coleenp@4037 344 nonstatic_field(Klass, _super, Klass*) \
duke@435 345 nonstatic_field(Klass, _layout_helper, jint) \
coleenp@2497 346 nonstatic_field(Klass, _name, Symbol*) \
duke@435 347 nonstatic_field(Klass, _access_flags, AccessFlags) \
coleenp@4037 348 nonstatic_field(Klass, _subklass, Klass*) \
coleenp@4037 349 nonstatic_field(Klass, _next_sibling, Klass*) \
duke@435 350 nonproduct_nonstatic_field(Klass, _verify_count, int) \
duke@435 351 nonstatic_field(Klass, _alloc_count, juint) \
coleenp@4037 352 nonstatic_field(MethodData, _size, int) \
coleenp@4037 353 nonstatic_field(MethodData, _method, Method*) \
coleenp@4037 354 nonstatic_field(MethodData, _data_size, int) \
coleenp@4037 355 nonstatic_field(MethodData, _data[0], intptr_t) \
coleenp@4037 356 nonstatic_field(MethodData, _nof_decompiles, uint) \
coleenp@4037 357 nonstatic_field(MethodData, _nof_overflow_recompiles, uint) \
coleenp@4037 358 nonstatic_field(MethodData, _nof_overflow_traps, uint) \
coleenp@4037 359 nonstatic_field(MethodData, _eflags, intx) \
coleenp@4037 360 nonstatic_field(MethodData, _arg_local, intx) \
coleenp@4037 361 nonstatic_field(MethodData, _arg_stack, intx) \
coleenp@4037 362 nonstatic_field(MethodData, _arg_returned, intx) \
coleenp@4037 363 nonstatic_field(Method, _constMethod, ConstMethod*) \
coleenp@4037 364 nonstatic_field(Method, _method_data, MethodData*) \
coleenp@4037 365 nonstatic_field(Method, _interpreter_invocation_count, int) \
coleenp@4037 366 nonstatic_field(Method, _access_flags, AccessFlags) \
coleenp@4037 367 nonstatic_field(Method, _vtable_index, int) \
coleenp@4037 368 nonstatic_field(Method, _method_size, u2) \
coleenp@4037 369 nonstatic_field(Method, _max_stack, u2) \
coleenp@4037 370 nonstatic_field(Method, _max_locals, u2) \
coleenp@4037 371 nonstatic_field(Method, _size_of_parameters, u2) \
coleenp@4037 372 nonstatic_field(Method, _interpreter_throwout_count, u2) \
coleenp@4037 373 nonstatic_field(Method, _number_of_breakpoints, u2) \
coleenp@4037 374 nonstatic_field(Method, _invocation_counter, InvocationCounter) \
coleenp@4037 375 nonstatic_field(Method, _backedge_counter, InvocationCounter) \
coleenp@4037 376 nonproduct_nonstatic_field(Method, _compiled_invocation_count, int) \
coleenp@4037 377 volatile_nonstatic_field(Method, _code, nmethod*) \
coleenp@4037 378 nonstatic_field(Method, _i2i_entry, address) \
coleenp@4037 379 nonstatic_field(Method, _adapter, AdapterHandlerEntry*) \
coleenp@4037 380 volatile_nonstatic_field(Method, _from_compiled_entry, address) \
coleenp@4037 381 volatile_nonstatic_field(Method, _from_interpreted_entry, address) \
coleenp@4037 382 volatile_nonstatic_field(ConstMethod, _fingerprint, uint64_t) \
coleenp@4037 383 nonstatic_field(ConstMethod, _constants, ConstantPool*) \
coleenp@4037 384 nonstatic_field(ConstMethod, _stackmap_data, Array<u1>*) \
coleenp@4037 385 nonstatic_field(ConstMethod, _constMethod_size, int) \
coleenp@4037 386 nonstatic_field(ConstMethod, _interpreter_kind, jbyte) \
coleenp@4037 387 nonstatic_field(ConstMethod, _flags, jbyte) \
coleenp@4037 388 nonstatic_field(ConstMethod, _code_size, u2) \
coleenp@4037 389 nonstatic_field(ConstMethod, _name_index, u2) \
coleenp@4037 390 nonstatic_field(ConstMethod, _signature_index, u2) \
coleenp@4037 391 nonstatic_field(ConstMethod, _method_idnum, u2) \
coleenp@4037 392 nonstatic_field(ConstMethod, _generic_signature_index, u2) \
coleenp@4142 393 nonstatic_field(ObjArrayKlass, _element_klass, Klass*) \
coleenp@4142 394 nonstatic_field(ObjArrayKlass, _bottom_klass, Klass*) \
coleenp@2497 395 volatile_nonstatic_field(Symbol, _refcount, int) \
coleenp@2497 396 nonstatic_field(Symbol, _identity_hash, int) \
coleenp@2497 397 nonstatic_field(Symbol, _length, unsigned short) \
coleenp@2497 398 unchecked_nonstatic_field(Symbol, _body, sizeof(jbyte)) /* NOTE: no type */ \
coleenp@4142 399 nonstatic_field(TypeArrayKlass, _max_length, int) \
duke@435 400 \
duke@435 401 /***********************/ \
duke@435 402 /* Constant Pool Cache */ \
duke@435 403 /***********************/ \
duke@435 404 \
duke@435 405 volatile_nonstatic_field(ConstantPoolCacheEntry, _indices, intx) \
coleenp@4037 406 nonstatic_field(ConstantPoolCacheEntry, _f1, volatile Metadata*) \
duke@435 407 volatile_nonstatic_field(ConstantPoolCacheEntry, _f2, intx) \
duke@435 408 volatile_nonstatic_field(ConstantPoolCacheEntry, _flags, intx) \
duke@435 409 \
duke@435 410 /********************************/ \
duke@435 411 /* MethodOop-related structures */ \
duke@435 412 /********************************/ \
duke@435 413 \
duke@435 414 nonstatic_field(CheckedExceptionElement, class_cp_index, u2) \
duke@435 415 nonstatic_field(LocalVariableTableElement, start_bci, u2) \
duke@435 416 nonstatic_field(LocalVariableTableElement, length, u2) \
duke@435 417 nonstatic_field(LocalVariableTableElement, name_cp_index, u2) \
duke@435 418 nonstatic_field(LocalVariableTableElement, descriptor_cp_index, u2) \
duke@435 419 nonstatic_field(LocalVariableTableElement, signature_cp_index, u2) \
duke@435 420 nonstatic_field(LocalVariableTableElement, slot, u2) \
jiangli@3917 421 nonstatic_field(ExceptionTableElement, start_pc, u2) \
jiangli@3917 422 nonstatic_field(ExceptionTableElement, end_pc, u2) \
jiangli@3917 423 nonstatic_field(ExceptionTableElement, handler_pc, u2) \
jiangli@3917 424 nonstatic_field(ExceptionTableElement, catch_type_index, u2) \
duke@435 425 nonstatic_field(BreakpointInfo, _orig_bytecode, Bytecodes::Code) \
duke@435 426 nonstatic_field(BreakpointInfo, _bci, int) \
duke@435 427 nonstatic_field(BreakpointInfo, _name_index, u2) \
duke@435 428 nonstatic_field(BreakpointInfo, _signature_index, u2) \
duke@435 429 nonstatic_field(BreakpointInfo, _next, BreakpointInfo*) \
duke@435 430 /***********/ \
duke@435 431 /* JNI IDs */ \
duke@435 432 /***********/ \
duke@435 433 \
coleenp@4037 434 nonstatic_field(JNIid, _holder, Klass*) \
duke@435 435 nonstatic_field(JNIid, _next, JNIid*) \
duke@435 436 nonstatic_field(JNIid, _offset, int) \
duke@435 437 /************/ \
duke@435 438 /* Universe */ \
duke@435 439 /************/ \
duke@435 440 \
coleenp@4037 441 static_field(Universe, _boolArrayKlassObj, Klass*) \
coleenp@4037 442 static_field(Universe, _byteArrayKlassObj, Klass*) \
coleenp@4037 443 static_field(Universe, _charArrayKlassObj, Klass*) \
coleenp@4037 444 static_field(Universe, _intArrayKlassObj, Klass*) \
coleenp@4037 445 static_field(Universe, _shortArrayKlassObj, Klass*) \
coleenp@4037 446 static_field(Universe, _longArrayKlassObj, Klass*) \
coleenp@4037 447 static_field(Universe, _singleArrayKlassObj, Klass*) \
coleenp@4037 448 static_field(Universe, _doubleArrayKlassObj, Klass*) \
never@3138 449 static_field(Universe, _mirrors[0], oop) \
duke@435 450 static_field(Universe, _main_thread_group, oop) \
duke@435 451 static_field(Universe, _system_thread_group, oop) \
duke@435 452 static_field(Universe, _the_empty_class_klass_array, objArrayOop) \
duke@435 453 static_field(Universe, _out_of_memory_error_java_heap, oop) \
duke@435 454 static_field(Universe, _out_of_memory_error_perm_gen, oop) \
duke@435 455 static_field(Universe, _out_of_memory_error_array_size, oop) \
duke@435 456 static_field(Universe, _out_of_memory_error_gc_overhead_limit, oop) \
duke@435 457 static_field(Universe, _null_ptr_exception_instance, oop) \
duke@435 458 static_field(Universe, _arithmetic_exception_instance, oop) \
duke@435 459 static_field(Universe, _vm_exception, oop) \
duke@435 460 static_field(Universe, _collectedHeap, CollectedHeap*) \
duke@435 461 static_field(Universe, _base_vtable_size, int) \
duke@435 462 static_field(Universe, _bootstrapping, bool) \
duke@435 463 static_field(Universe, _fully_initialized, bool) \
duke@435 464 static_field(Universe, _verify_count, int) \
kvn@1077 465 static_field(Universe, _narrow_oop._base, address) \
kvn@1077 466 static_field(Universe, _narrow_oop._shift, int) \
kvn@1077 467 static_field(Universe, _narrow_oop._use_implicit_null_checks, bool) \
roland@4159 468 static_field(Universe, _narrow_klass._base, address) \
roland@4159 469 static_field(Universe, _narrow_klass._shift, int) \
duke@435 470 \
duke@435 471 /**********************************************************************************/ \
duke@435 472 /* Generation and Space hierarchies */ \
duke@435 473 /**********************************************************************************/ \
duke@435 474 \
duke@435 475 unchecked_nonstatic_field(ageTable, sizes, sizeof(ageTable::sizes)) \
duke@435 476 \
duke@435 477 nonstatic_field(BarrierSet, _max_covered_regions, int) \
duke@435 478 nonstatic_field(BlockOffsetTable, _bottom, HeapWord*) \
duke@435 479 nonstatic_field(BlockOffsetTable, _end, HeapWord*) \
duke@435 480 \
duke@435 481 nonstatic_field(BlockOffsetSharedArray, _reserved, MemRegion) \
duke@435 482 nonstatic_field(BlockOffsetSharedArray, _end, HeapWord*) \
duke@435 483 nonstatic_field(BlockOffsetSharedArray, _vs, VirtualSpace) \
duke@435 484 nonstatic_field(BlockOffsetSharedArray, _offset_array, u_char*) \
duke@435 485 \
duke@435 486 nonstatic_field(BlockOffsetArray, _array, BlockOffsetSharedArray*) \
duke@435 487 nonstatic_field(BlockOffsetArray, _sp, Space*) \
duke@435 488 nonstatic_field(BlockOffsetArrayContigSpace, _next_offset_threshold, HeapWord*) \
duke@435 489 nonstatic_field(BlockOffsetArrayContigSpace, _next_offset_index, size_t) \
duke@435 490 \
duke@435 491 nonstatic_field(BlockOffsetArrayNonContigSpace, _unallocated_block, HeapWord*) \
duke@435 492 \
duke@435 493 nonstatic_field(CardGeneration, _rs, GenRemSet*) \
duke@435 494 nonstatic_field(CardGeneration, _bts, BlockOffsetSharedArray*) \
duke@435 495 \
duke@435 496 nonstatic_field(CardTableModRefBS, _whole_heap, const MemRegion) \
duke@435 497 nonstatic_field(CardTableModRefBS, _guard_index, const size_t) \
duke@435 498 nonstatic_field(CardTableModRefBS, _last_valid_index, const size_t) \
duke@435 499 nonstatic_field(CardTableModRefBS, _page_size, const size_t) \
duke@435 500 nonstatic_field(CardTableModRefBS, _byte_map_size, const size_t) \
duke@435 501 nonstatic_field(CardTableModRefBS, _byte_map, jbyte*) \
duke@435 502 nonstatic_field(CardTableModRefBS, _cur_covered_regions, int) \
duke@435 503 nonstatic_field(CardTableModRefBS, _covered, MemRegion*) \
duke@435 504 nonstatic_field(CardTableModRefBS, _committed, MemRegion*) \
duke@435 505 nonstatic_field(CardTableModRefBS, _guard_region, MemRegion) \
duke@435 506 nonstatic_field(CardTableModRefBS, byte_map_base, jbyte*) \
duke@435 507 \
ysr@777 508 nonstatic_field(CardTableRS, _ct_bs, CardTableModRefBSForCTRS*) \
duke@435 509 \
duke@435 510 nonstatic_field(CollectedHeap, _reserved, MemRegion) \
duke@435 511 nonstatic_field(CollectedHeap, _barrier_set, BarrierSet*) \
ysr@1601 512 nonstatic_field(CollectedHeap, _defer_initial_card_mark, bool) \
duke@435 513 nonstatic_field(CollectedHeap, _is_gc_active, bool) \
duke@435 514 nonstatic_field(CompactibleSpace, _compaction_top, HeapWord*) \
duke@435 515 nonstatic_field(CompactibleSpace, _first_dead, HeapWord*) \
duke@435 516 nonstatic_field(CompactibleSpace, _end_of_live, HeapWord*) \
duke@435 517 \
duke@435 518 \
duke@435 519 nonstatic_field(ContiguousSpace, _top, HeapWord*) \
duke@435 520 nonstatic_field(ContiguousSpace, _concurrent_iteration_safe_limit, HeapWord*) \
duke@435 521 nonstatic_field(ContiguousSpace, _saved_mark_word, HeapWord*) \
duke@435 522 \
duke@435 523 nonstatic_field(DefNewGeneration, _next_gen, Generation*) \
jwilhelm@4129 524 nonstatic_field(DefNewGeneration, _tenuring_threshold, uint) \
duke@435 525 nonstatic_field(DefNewGeneration, _age_table, ageTable) \
duke@435 526 nonstatic_field(DefNewGeneration, _eden_space, EdenSpace*) \
duke@435 527 nonstatic_field(DefNewGeneration, _from_space, ContiguousSpace*) \
duke@435 528 nonstatic_field(DefNewGeneration, _to_space, ContiguousSpace*) \
duke@435 529 \
duke@435 530 nonstatic_field(EdenSpace, _gen, DefNewGeneration*) \
duke@435 531 \
duke@435 532 nonstatic_field(Generation, _reserved, MemRegion) \
duke@435 533 nonstatic_field(Generation, _virtual_space, VirtualSpace) \
duke@435 534 nonstatic_field(Generation, _level, int) \
duke@435 535 nonstatic_field(Generation, _stat_record, Generation::StatRecord) \
duke@435 536 \
duke@435 537 nonstatic_field(Generation::StatRecord, invocations, int) \
duke@435 538 nonstatic_field(Generation::StatRecord, accumulated_time, elapsedTimer) \
duke@435 539 \
duke@435 540 nonstatic_field(GenerationSpec, _name, Generation::Name) \
duke@435 541 nonstatic_field(GenerationSpec, _init_size, size_t) \
duke@435 542 nonstatic_field(GenerationSpec, _max_size, size_t) \
duke@435 543 \
duke@435 544 static_field(GenCollectedHeap, _gch, GenCollectedHeap*) \
duke@435 545 nonstatic_field(GenCollectedHeap, _n_gens, int) \
duke@435 546 unchecked_nonstatic_field(GenCollectedHeap, _gens, sizeof(GenCollectedHeap::_gens)) /* NOTE: no type */ \
duke@435 547 nonstatic_field(GenCollectedHeap, _gen_specs, GenerationSpec**) \
duke@435 548 \
duke@435 549 nonstatic_field(HeapWord, i, char*) \
duke@435 550 \
duke@435 551 nonstatic_field(MemRegion, _start, HeapWord*) \
duke@435 552 nonstatic_field(MemRegion, _word_size, size_t) \
duke@435 553 \
duke@435 554 nonstatic_field(OffsetTableContigSpace, _offsets, BlockOffsetArray) \
duke@435 555 \
duke@435 556 nonstatic_field(OneContigSpaceCardGeneration, _min_heap_delta_bytes, size_t) \
duke@435 557 nonstatic_field(OneContigSpaceCardGeneration, _the_space, ContiguousSpace*) \
duke@435 558 nonstatic_field(OneContigSpaceCardGeneration, _last_gc, WaterMark) \
duke@435 559 \
duke@435 560 \
duke@435 561 \
duke@435 562 nonstatic_field(Space, _bottom, HeapWord*) \
duke@435 563 nonstatic_field(Space, _end, HeapWord*) \
duke@435 564 \
duke@435 565 nonstatic_field(TenuredGeneration, _shrink_factor, size_t) \
duke@435 566 nonstatic_field(TenuredGeneration, _capacity_at_prologue, size_t) \
duke@435 567 nonstatic_field(ThreadLocalAllocBuffer, _start, HeapWord*) \
duke@435 568 nonstatic_field(ThreadLocalAllocBuffer, _top, HeapWord*) \
duke@435 569 nonstatic_field(ThreadLocalAllocBuffer, _end, HeapWord*) \
duke@435 570 nonstatic_field(ThreadLocalAllocBuffer, _desired_size, size_t) \
duke@435 571 nonstatic_field(ThreadLocalAllocBuffer, _refill_waste_limit, size_t) \
duke@435 572 static_field(ThreadLocalAllocBuffer, _target_refills, unsigned) \
duke@435 573 nonstatic_field(VirtualSpace, _low_boundary, char*) \
duke@435 574 nonstatic_field(VirtualSpace, _high_boundary, char*) \
duke@435 575 nonstatic_field(VirtualSpace, _low, char*) \
duke@435 576 nonstatic_field(VirtualSpace, _high, char*) \
duke@435 577 nonstatic_field(VirtualSpace, _lower_high, char*) \
duke@435 578 nonstatic_field(VirtualSpace, _middle_high, char*) \
duke@435 579 nonstatic_field(VirtualSpace, _upper_high, char*) \
duke@435 580 nonstatic_field(WaterMark, _point, HeapWord*) \
duke@435 581 nonstatic_field(WaterMark, _space, Space*) \
duke@435 582 \
duke@435 583 /************************/ \
duke@435 584 /* PerfMemory - jvmstat */ \
duke@435 585 /************************/ \
duke@435 586 \
duke@435 587 nonstatic_field(PerfDataPrologue, magic, jint) \
duke@435 588 nonstatic_field(PerfDataPrologue, byte_order, jbyte) \
duke@435 589 nonstatic_field(PerfDataPrologue, major_version, jbyte) \
duke@435 590 nonstatic_field(PerfDataPrologue, minor_version, jbyte) \
duke@435 591 nonstatic_field(PerfDataPrologue, accessible, jbyte) \
duke@435 592 nonstatic_field(PerfDataPrologue, used, jint) \
duke@435 593 nonstatic_field(PerfDataPrologue, overflow, jint) \
duke@435 594 nonstatic_field(PerfDataPrologue, mod_time_stamp, jlong) \
duke@435 595 nonstatic_field(PerfDataPrologue, entry_offset, jint) \
duke@435 596 nonstatic_field(PerfDataPrologue, num_entries, jint) \
duke@435 597 \
duke@435 598 nonstatic_field(PerfDataEntry, entry_length, jint) \
duke@435 599 nonstatic_field(PerfDataEntry, name_offset, jint) \
duke@435 600 nonstatic_field(PerfDataEntry, vector_length, jint) \
duke@435 601 nonstatic_field(PerfDataEntry, data_type, jbyte) \
duke@435 602 nonstatic_field(PerfDataEntry, flags, jbyte) \
duke@435 603 nonstatic_field(PerfDataEntry, data_units, jbyte) \
duke@435 604 nonstatic_field(PerfDataEntry, data_variability, jbyte) \
duke@435 605 nonstatic_field(PerfDataEntry, data_offset, jint) \
duke@435 606 \
duke@435 607 static_field(PerfMemory, _start, char*) \
duke@435 608 static_field(PerfMemory, _end, char*) \
duke@435 609 static_field(PerfMemory, _top, char*) \
duke@435 610 static_field(PerfMemory, _capacity, size_t) \
duke@435 611 static_field(PerfMemory, _prologue, PerfDataPrologue*) \
duke@435 612 static_field(PerfMemory, _initialized, jint) \
duke@435 613 \
duke@435 614 /***************/ \
duke@435 615 /* SymbolTable */ \
duke@435 616 /***************/ \
duke@435 617 \
duke@435 618 static_field(SymbolTable, _the_table, SymbolTable*) \
duke@435 619 \
duke@435 620 /***************/ \
duke@435 621 /* StringTable */ \
duke@435 622 /***************/ \
duke@435 623 \
duke@435 624 static_field(StringTable, _the_table, StringTable*) \
duke@435 625 \
duke@435 626 /********************/ \
duke@435 627 /* SystemDictionary */ \
duke@435 628 /********************/ \
duke@435 629 \
duke@435 630 static_field(SystemDictionary, _dictionary, Dictionary*) \
duke@435 631 static_field(SystemDictionary, _placeholders, PlaceholderTable*) \
duke@435 632 static_field(SystemDictionary, _shared_dictionary, Dictionary*) \
duke@435 633 static_field(SystemDictionary, _system_loader_lock_obj, oop) \
duke@435 634 static_field(SystemDictionary, _loader_constraints, LoaderConstraintTable*) \
coleenp@4037 635 static_field(SystemDictionary, WK_KLASS(Object_klass), Klass*) \
coleenp@4037 636 static_field(SystemDictionary, WK_KLASS(String_klass), Klass*) \
coleenp@4037 637 static_field(SystemDictionary, WK_KLASS(Class_klass), Klass*) \
coleenp@4037 638 static_field(SystemDictionary, WK_KLASS(Cloneable_klass), Klass*) \
coleenp@4037 639 static_field(SystemDictionary, WK_KLASS(ClassLoader_klass), Klass*) \
coleenp@4037 640 static_field(SystemDictionary, WK_KLASS(Serializable_klass), Klass*) \
coleenp@4037 641 static_field(SystemDictionary, WK_KLASS(System_klass), Klass*) \
coleenp@4037 642 static_field(SystemDictionary, WK_KLASS(Throwable_klass), Klass*) \
coleenp@4037 643 static_field(SystemDictionary, WK_KLASS(ThreadDeath_klass), Klass*) \
coleenp@4037 644 static_field(SystemDictionary, WK_KLASS(Error_klass), Klass*) \
coleenp@4037 645 static_field(SystemDictionary, WK_KLASS(Exception_klass), Klass*) \
coleenp@4037 646 static_field(SystemDictionary, WK_KLASS(RuntimeException_klass), Klass*) \
coleenp@4037 647 static_field(SystemDictionary, WK_KLASS(ClassNotFoundException_klass), Klass*) \
coleenp@4037 648 static_field(SystemDictionary, WK_KLASS(NoClassDefFoundError_klass), Klass*) \
coleenp@4037 649 static_field(SystemDictionary, WK_KLASS(LinkageError_klass), Klass*) \
coleenp@4037 650 static_field(SystemDictionary, WK_KLASS(ClassCastException_klass), Klass*) \
coleenp@4037 651 static_field(SystemDictionary, WK_KLASS(ArrayStoreException_klass), Klass*) \
coleenp@4037 652 static_field(SystemDictionary, WK_KLASS(VirtualMachineError_klass), Klass*) \
coleenp@4037 653 static_field(SystemDictionary, WK_KLASS(OutOfMemoryError_klass), Klass*) \
coleenp@4037 654 static_field(SystemDictionary, WK_KLASS(StackOverflowError_klass), Klass*) \
coleenp@4037 655 static_field(SystemDictionary, WK_KLASS(ProtectionDomain_klass), Klass*) \
coleenp@4037 656 static_field(SystemDictionary, WK_KLASS(AccessControlContext_klass), Klass*) \
coleenp@4037 657 static_field(SystemDictionary, WK_KLASS(Reference_klass), Klass*) \
coleenp@4037 658 static_field(SystemDictionary, WK_KLASS(SoftReference_klass), Klass*) \
coleenp@4037 659 static_field(SystemDictionary, WK_KLASS(WeakReference_klass), Klass*) \
coleenp@4037 660 static_field(SystemDictionary, WK_KLASS(FinalReference_klass), Klass*) \
coleenp@4037 661 static_field(SystemDictionary, WK_KLASS(PhantomReference_klass), Klass*) \
coleenp@4037 662 static_field(SystemDictionary, WK_KLASS(Finalizer_klass), Klass*) \
coleenp@4037 663 static_field(SystemDictionary, WK_KLASS(Thread_klass), Klass*) \
coleenp@4037 664 static_field(SystemDictionary, WK_KLASS(ThreadGroup_klass), Klass*) \
coleenp@4037 665 static_field(SystemDictionary, WK_KLASS(Properties_klass), Klass*) \
coleenp@4037 666 static_field(SystemDictionary, WK_KLASS(StringBuffer_klass), Klass*) \
coleenp@4037 667 static_field(SystemDictionary, WK_KLASS(MethodHandle_klass), Klass*) \
coleenp@4037 668 static_field(SystemDictionary, _box_klasses[0], Klass*) \
duke@435 669 static_field(SystemDictionary, _java_system_loader, oop) \
duke@435 670 \
never@3158 671 /*************/ \
never@3158 672 /* vmSymbols */ \
never@3158 673 /*************/ \
never@3158 674 \
never@3158 675 static_field(vmSymbols, _symbols[0], Symbol*) \
never@3158 676 \
duke@435 677 /*******************/ \
duke@435 678 /* HashtableBucket */ \
duke@435 679 /*******************/ \
duke@435 680 \
zgu@3900 681 nonstatic_field(HashtableBucket<mtInternal>, _entry, BasicHashtableEntry<mtInternal>*) \
duke@435 682 \
duke@435 683 /******************/ \
duke@435 684 /* HashtableEntry */ \
duke@435 685 /******************/ \
duke@435 686 \
zgu@3900 687 nonstatic_field(BasicHashtableEntry<mtInternal>, _next, BasicHashtableEntry<mtInternal>*) \
zgu@3900 688 nonstatic_field(BasicHashtableEntry<mtInternal>, _hash, unsigned int) \
zgu@3900 689 nonstatic_field(IntptrHashtableEntry, _literal, intptr_t) \
duke@435 690 \
duke@435 691 /*************/ \
duke@435 692 /* Hashtable */ \
duke@435 693 /*************/ \
duke@435 694 \
zgu@3900 695 nonstatic_field(BasicHashtable<mtInternal>, _table_size, int) \
zgu@3900 696 nonstatic_field(BasicHashtable<mtInternal>, _buckets, HashtableBucket<mtInternal>*) \
zgu@3900 697 nonstatic_field(BasicHashtable<mtInternal>, _free_list, BasicHashtableEntry<mtInternal>*) \
zgu@3900 698 nonstatic_field(BasicHashtable<mtInternal>, _first_free_entry, char*) \
zgu@3900 699 nonstatic_field(BasicHashtable<mtInternal>, _end_block, char*) \
zgu@3900 700 nonstatic_field(BasicHashtable<mtInternal>, _entry_size, int) \
duke@435 701 \
duke@435 702 /*******************/ \
duke@435 703 /* DictionaryEntry */ \
duke@435 704 /*******************/ \
duke@435 705 \
coleenp@4037 706 nonstatic_field(DictionaryEntry, _loader_data, ClassLoaderData*) \
duke@435 707 nonstatic_field(DictionaryEntry, _pd_set, ProtectionDomainEntry*) \
duke@435 708 \
duke@435 709 /********************/ \
duke@435 710 \
coleenp@4037 711 nonstatic_field(PlaceholderEntry, _loader_data, ClassLoaderData*) \
duke@435 712 \
duke@435 713 /**************************/ \
duke@435 714 /* ProctectionDomainEntry */ \
duke@435 715 /**************************/ \
duke@435 716 \
duke@435 717 nonstatic_field(ProtectionDomainEntry, _next, ProtectionDomainEntry*) \
duke@435 718 nonstatic_field(ProtectionDomainEntry, _protection_domain, oop) \
duke@435 719 \
duke@435 720 /*************************/ \
duke@435 721 /* LoaderConstraintEntry */ \
duke@435 722 /*************************/ \
duke@435 723 \
coleenp@2497 724 nonstatic_field(LoaderConstraintEntry, _name, Symbol*) \
duke@435 725 nonstatic_field(LoaderConstraintEntry, _num_loaders, int) \
duke@435 726 nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \
coleenp@4037 727 nonstatic_field(LoaderConstraintEntry, _loaders, ClassLoaderData**) \
coleenp@4037 728 \
coleenp@4037 729 nonstatic_field(ClassLoaderData, _class_loader, oop) \
coleenp@4037 730 nonstatic_field(ClassLoaderData, _next, ClassLoaderData*) \
coleenp@4037 731 \
coleenp@4037 732 static_field(ClassLoaderDataGraph, _head, ClassLoaderData*) \
coleenp@4037 733 nonstatic_field(ClassLoaderDataGraph, _unloading, ClassLoaderData*) \
duke@435 734 \
never@3138 735 /*******************/ \
never@3138 736 /* GrowableArrays */ \
never@3138 737 /*******************/ \
never@3138 738 \
never@3138 739 nonstatic_field(GenericGrowableArray, _len, int) \
never@3138 740 nonstatic_field(GenericGrowableArray, _max, int) \
never@3138 741 nonstatic_field(GenericGrowableArray, _arena, Arena*) \
never@3138 742 nonstatic_field(GrowableArray<int>, _data, int*) \
never@3138 743 \
duke@435 744 /********************************/ \
duke@435 745 /* CodeCache (NOTE: incomplete) */ \
duke@435 746 /********************************/ \
duke@435 747 \
duke@435 748 static_field(CodeCache, _heap, CodeHeap*) \
jrose@1424 749 static_field(CodeCache, _scavenge_root_nmethods, nmethod*) \
duke@435 750 \
duke@435 751 /*******************************/ \
duke@435 752 /* CodeHeap (NOTE: incomplete) */ \
duke@435 753 /*******************************/ \
duke@435 754 \
duke@435 755 nonstatic_field(CodeHeap, _memory, VirtualSpace) \
duke@435 756 nonstatic_field(CodeHeap, _segmap, VirtualSpace) \
duke@435 757 nonstatic_field(CodeHeap, _log2_segment_size, int) \
duke@435 758 nonstatic_field(HeapBlock, _header, HeapBlock::Header) \
duke@435 759 nonstatic_field(HeapBlock::Header, _length, size_t) \
duke@435 760 nonstatic_field(HeapBlock::Header, _used, bool) \
duke@435 761 \
duke@435 762 /**********************************/ \
duke@435 763 /* Interpreter (NOTE: incomplete) */ \
duke@435 764 /**********************************/ \
duke@435 765 \
duke@435 766 static_field(AbstractInterpreter, _code, StubQueue*) \
duke@435 767 \
duke@435 768 /****************************/ \
duke@435 769 /* Stubs (NOTE: incomplete) */ \
duke@435 770 /****************************/ \
duke@435 771 \
duke@435 772 nonstatic_field(StubQueue, _stub_buffer, address) \
duke@435 773 nonstatic_field(StubQueue, _buffer_limit, int) \
duke@435 774 nonstatic_field(StubQueue, _queue_begin, int) \
duke@435 775 nonstatic_field(StubQueue, _queue_end, int) \
duke@435 776 nonstatic_field(StubQueue, _number_of_stubs, int) \
duke@435 777 nonstatic_field(InterpreterCodelet, _size, int) \
duke@435 778 nonstatic_field(InterpreterCodelet, _description, const char*) \
duke@435 779 nonstatic_field(InterpreterCodelet, _bytecode, Bytecodes::Code) \
duke@435 780 \
duke@435 781 /***********************************/ \
duke@435 782 /* StubRoutines (NOTE: incomplete) */ \
duke@435 783 /***********************************/ \
duke@435 784 \
duke@435 785 static_field(StubRoutines, _call_stub_return_address, address) \
duke@435 786 \
duke@435 787 /***************************************/ \
duke@435 788 /* PcDesc and other compiled code info */ \
duke@435 789 /***************************************/ \
duke@435 790 \
duke@435 791 nonstatic_field(PcDesc, _pc_offset, int) \
duke@435 792 nonstatic_field(PcDesc, _scope_decode_offset, int) \
kvn@1475 793 nonstatic_field(PcDesc, _obj_decode_offset, int) \
never@3108 794 nonstatic_field(PcDesc, _flags, int) \
duke@435 795 \
duke@435 796 /***************************************************/ \
duke@435 797 /* CodeBlobs (NOTE: incomplete, but only a little) */ \
duke@435 798 /***************************************************/ \
duke@435 799 \
duke@435 800 nonstatic_field(CodeBlob, _name, const char*) \
duke@435 801 nonstatic_field(CodeBlob, _size, int) \
duke@435 802 nonstatic_field(CodeBlob, _header_size, int) \
duke@435 803 nonstatic_field(CodeBlob, _relocation_size, int) \
twisti@2103 804 nonstatic_field(CodeBlob, _content_offset, int) \
twisti@2103 805 nonstatic_field(CodeBlob, _code_offset, int) \
duke@435 806 nonstatic_field(CodeBlob, _frame_complete_offset, int) \
duke@435 807 nonstatic_field(CodeBlob, _data_offset, int) \
duke@435 808 nonstatic_field(CodeBlob, _frame_size, int) \
duke@435 809 nonstatic_field(CodeBlob, _oop_maps, OopMapSet*) \
duke@435 810 \
never@3108 811 nonstatic_field(RuntimeStub, _caller_must_gc_arguments, bool) \
never@3108 812 \
duke@435 813 /**************************************************/ \
duke@435 814 /* NMethods (NOTE: incomplete, but only a little) */ \
duke@435 815 /**************************************************/ \
duke@435 816 \
coleenp@4037 817 nonstatic_field(nmethod, _method, Method*) \
duke@435 818 nonstatic_field(nmethod, _entry_bci, int) \
jrose@1424 819 nonstatic_field(nmethod, _osr_link, nmethod*) \
jrose@1424 820 nonstatic_field(nmethod, _scavenge_root_link, nmethod*) \
jrose@1424 821 nonstatic_field(nmethod, _scavenge_root_state, jbyte) \
never@2920 822 nonstatic_field(nmethod, _state, unsigned char) \
duke@435 823 nonstatic_field(nmethod, _exception_offset, int) \
duke@435 824 nonstatic_field(nmethod, _deoptimize_offset, int) \
never@3108 825 nonstatic_field(nmethod, _deoptimize_mh_offset, int) \
duke@435 826 nonstatic_field(nmethod, _orig_pc_offset, int) \
duke@435 827 nonstatic_field(nmethod, _stub_offset, int) \
twisti@1918 828 nonstatic_field(nmethod, _consts_offset, int) \
twisti@1918 829 nonstatic_field(nmethod, _oops_offset, int) \
coleenp@4037 830 nonstatic_field(nmethod, _metadata_offset, int) \
duke@435 831 nonstatic_field(nmethod, _scopes_data_offset, int) \
duke@435 832 nonstatic_field(nmethod, _scopes_pcs_offset, int) \
duke@435 833 nonstatic_field(nmethod, _dependencies_offset, int) \
duke@435 834 nonstatic_field(nmethod, _handler_table_offset, int) \
duke@435 835 nonstatic_field(nmethod, _nul_chk_table_offset, int) \
duke@435 836 nonstatic_field(nmethod, _nmethod_end_offset, int) \
duke@435 837 nonstatic_field(nmethod, _entry_point, address) \
duke@435 838 nonstatic_field(nmethod, _verified_entry_point, address) \
duke@435 839 nonstatic_field(nmethod, _osr_entry_point, address) \
duke@435 840 nonstatic_field(nmethod, _lock_count, jint) \
duke@435 841 nonstatic_field(nmethod, _stack_traversal_mark, long) \
never@2920 842 nonstatic_field(nmethod, _compile_id, int) \
never@3138 843 nonstatic_field(nmethod, _exception_cache, ExceptionCache*) \
never@2920 844 nonstatic_field(nmethod, _marked_for_deoptimization, bool) \
twisti@3969 845 \
twisti@3969 846 unchecked_c2_static_field(Deoptimization, _trap_reason_name, void*) \
never@3138 847 \
duke@435 848 /********************************/ \
duke@435 849 /* JavaCalls (NOTE: incomplete) */ \
duke@435 850 /********************************/ \
duke@435 851 \
duke@435 852 nonstatic_field(JavaCallWrapper, _anchor, JavaFrameAnchor) \
duke@435 853 /********************************/ \
duke@435 854 /* JavaFrameAnchor (NOTE: incomplete) */ \
duke@435 855 /********************************/ \
duke@435 856 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_sp, intptr_t*) \
duke@435 857 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_pc, address) \
duke@435 858 \
duke@435 859 /******************************/ \
duke@435 860 /* Threads (NOTE: incomplete) */ \
duke@435 861 /******************************/ \
duke@435 862 \
duke@435 863 static_field(Threads, _thread_list, JavaThread*) \
duke@435 864 static_field(Threads, _number_of_threads, int) \
duke@435 865 static_field(Threads, _number_of_non_daemon_threads, int) \
duke@435 866 static_field(Threads, _return_code, int) \
duke@435 867 \
never@3138 868 nonstatic_field(ThreadShadow, _pending_exception, oop) \
never@3138 869 nonstatic_field(ThreadShadow, _exception_file, const char*) \
never@3138 870 nonstatic_field(ThreadShadow, _exception_line, int) \
duke@435 871 volatile_nonstatic_field(Thread, _suspend_flags, uint32_t) \
duke@435 872 nonstatic_field(Thread, _active_handles, JNIHandleBlock*) \
duke@435 873 nonstatic_field(Thread, _tlab, ThreadLocalAllocBuffer) \
duke@435 874 nonstatic_field(Thread, _current_pending_monitor, ObjectMonitor*) \
duke@435 875 nonstatic_field(Thread, _current_pending_monitor_is_from_java, bool) \
duke@435 876 nonstatic_field(Thread, _current_waiting_monitor, ObjectMonitor*) \
duke@435 877 nonstatic_field(NamedThread, _name, char*) \
minqi@1554 878 nonstatic_field(NamedThread, _processed_thread, JavaThread*) \
duke@435 879 nonstatic_field(JavaThread, _next, JavaThread*) \
duke@435 880 nonstatic_field(JavaThread, _threadObj, oop) \
duke@435 881 nonstatic_field(JavaThread, _anchor, JavaFrameAnchor) \
never@3138 882 nonstatic_field(JavaThread, _vm_result, oop) \
coleenp@4037 883 nonstatic_field(JavaThread, _vm_result_2, Metadata*) \
never@3138 884 nonstatic_field(JavaThread, _pending_async_exception, oop) \
never@3138 885 volatile_nonstatic_field(JavaThread, _exception_oop, oop) \
never@3138 886 volatile_nonstatic_field(JavaThread, _exception_pc, address) \
never@3138 887 nonstatic_field(JavaThread, _is_compiling, bool) \
never@3138 888 nonstatic_field(JavaThread, _special_runtime_exit_condition, JavaThread::AsyncRequests) \
never@3138 889 nonstatic_field(JavaThread, _saved_exception_pc, address) \
duke@435 890 volatile_nonstatic_field(JavaThread, _thread_state, JavaThreadState) \
duke@435 891 nonstatic_field(JavaThread, _osthread, OSThread*) \
duke@435 892 nonstatic_field(JavaThread, _stack_base, address) \
duke@435 893 nonstatic_field(JavaThread, _stack_size, size_t) \
never@3138 894 nonstatic_field(JavaThread, _vframe_array_head, vframeArray*) \
never@3138 895 nonstatic_field(JavaThread, _vframe_array_last, vframeArray*) \
never@3138 896 nonstatic_field(Thread, _resource_area, ResourceArea*) \
never@3138 897 nonstatic_field(CompilerThread, _env, ciEnv*) \
duke@435 898 \
duke@435 899 /************/ \
duke@435 900 /* OSThread */ \
duke@435 901 /************/ \
duke@435 902 \
dholmes@2668 903 volatile_nonstatic_field(OSThread, _interrupted, jint) \
duke@435 904 \
duke@435 905 /************************/ \
duke@435 906 /* OopMap and OopMapSet */ \
duke@435 907 /************************/ \
duke@435 908 \
duke@435 909 nonstatic_field(OopMap, _pc_offset, int) \
duke@435 910 nonstatic_field(OopMap, _omv_count, int) \
duke@435 911 nonstatic_field(OopMap, _omv_data_size, int) \
duke@435 912 nonstatic_field(OopMap, _omv_data, unsigned char*) \
duke@435 913 nonstatic_field(OopMap, _write_stream, CompressedWriteStream*) \
duke@435 914 nonstatic_field(OopMapSet, _om_count, int) \
duke@435 915 nonstatic_field(OopMapSet, _om_size, int) \
duke@435 916 nonstatic_field(OopMapSet, _om_data, OopMap**) \
duke@435 917 \
duke@435 918 /*********************************/ \
duke@435 919 /* JNIHandles and JNIHandleBlock */ \
duke@435 920 /*********************************/ \
duke@435 921 static_field(JNIHandles, _global_handles, JNIHandleBlock*) \
duke@435 922 static_field(JNIHandles, _weak_global_handles, JNIHandleBlock*) \
duke@435 923 static_field(JNIHandles, _deleted_handle, oop) \
duke@435 924 \
duke@435 925 unchecked_nonstatic_field(JNIHandleBlock, _handles, JNIHandleBlock::block_size_in_oops * sizeof(Oop)) /* Note: no type */ \
duke@435 926 nonstatic_field(JNIHandleBlock, _top, int) \
duke@435 927 nonstatic_field(JNIHandleBlock, _next, JNIHandleBlock*) \
duke@435 928 \
duke@435 929 /********************/ \
duke@435 930 /* CompressedStream */ \
duke@435 931 /********************/ \
duke@435 932 \
duke@435 933 nonstatic_field(CompressedStream, _buffer, u_char*) \
duke@435 934 nonstatic_field(CompressedStream, _position, int) \
duke@435 935 \
duke@435 936 /*********************************/ \
duke@435 937 /* VMRegImpl (NOTE: incomplete) */ \
duke@435 938 /*********************************/ \
duke@435 939 \
duke@435 940 static_field(VMRegImpl, regName[0], const char*) \
duke@435 941 static_field(VMRegImpl, stack0, VMReg) \
duke@435 942 \
duke@435 943 /*******************************/ \
duke@435 944 /* Runtime1 (NOTE: incomplete) */ \
duke@435 945 /*******************************/ \
duke@435 946 \
never@3138 947 unchecked_c1_static_field(Runtime1, _blobs, sizeof(Runtime1::_blobs)) /* NOTE: no type */ \
never@3138 948 \
never@3138 949 /**************/ \
never@3138 950 /* allocation */ \
never@3138 951 /**************/ \
never@3138 952 \
never@3138 953 nonstatic_field(Chunk, _next, Chunk*) \
never@3138 954 nonstatic_field(Chunk, _len, const size_t) \
never@3138 955 \
never@3138 956 nonstatic_field(Arena, _first, Chunk*) \
never@3138 957 nonstatic_field(Arena, _chunk, Chunk*) \
never@3138 958 nonstatic_field(Arena, _hwm, char*) \
never@3138 959 nonstatic_field(Arena, _max, char*) \
never@3138 960 \
never@3138 961 /************/ \
never@3138 962 /* CI */ \
never@3138 963 /************/ \
never@3138 964 \
never@3138 965 nonstatic_field(ciEnv, _system_dictionary_modification_counter, int) \
never@3138 966 nonstatic_field(ciEnv, _compiler_data, void*) \
never@3138 967 nonstatic_field(ciEnv, _failure_reason, const char*) \
never@3138 968 nonstatic_field(ciEnv, _factory, ciObjectFactory*) \
never@3138 969 nonstatic_field(ciEnv, _dependencies, Dependencies*) \
never@3138 970 nonstatic_field(ciEnv, _task, CompileTask*) \
never@3138 971 nonstatic_field(ciEnv, _arena, Arena*) \
never@3138 972 \
coleenp@4037 973 nonstatic_field(ciBaseObject, _ident, uint) \
coleenp@4037 974 \
never@3138 975 nonstatic_field(ciObject, _handle, jobject) \
never@3138 976 nonstatic_field(ciObject, _klass, ciKlass*) \
never@3138 977 \
coleenp@4037 978 nonstatic_field(ciMetadata, _metadata, Metadata*) \
coleenp@4037 979 \
never@3138 980 nonstatic_field(ciSymbol, _symbol, Symbol*) \
never@3138 981 \
never@3138 982 nonstatic_field(ciType, _basic_type, BasicType) \
never@3138 983 \
never@3138 984 nonstatic_field(ciKlass, _name, ciSymbol*) \
never@3138 985 \
never@3138 986 nonstatic_field(ciArrayKlass, _dimension, jint) \
never@3138 987 \
never@3138 988 nonstatic_field(ciObjArrayKlass, _element_klass, ciKlass*) \
never@3138 989 nonstatic_field(ciObjArrayKlass, _base_element_klass, ciKlass*) \
never@3138 990 \
coleenp@4037 991 nonstatic_field(ciInstanceKlass, _init_state, InstanceKlass::ClassState) \
never@3138 992 nonstatic_field(ciInstanceKlass, _is_shared, bool) \
never@3138 993 \
never@3138 994 nonstatic_field(ciMethod, _interpreter_invocation_count, int) \
never@3138 995 nonstatic_field(ciMethod, _interpreter_throwout_count, int) \
minqi@4267 996 nonstatic_field(ciMethod, _instructions_size, int) \
never@3138 997 \
never@3138 998 nonstatic_field(ciMethodData, _data_size, int) \
never@3138 999 nonstatic_field(ciMethodData, _state, u_char) \
never@3138 1000 nonstatic_field(ciMethodData, _extra_data_size, int) \
never@3138 1001 nonstatic_field(ciMethodData, _data, intptr_t*) \
never@3138 1002 nonstatic_field(ciMethodData, _hint_di, int) \
never@3138 1003 nonstatic_field(ciMethodData, _eflags, intx) \
never@3138 1004 nonstatic_field(ciMethodData, _arg_local, intx) \
never@3138 1005 nonstatic_field(ciMethodData, _arg_stack, intx) \
never@3138 1006 nonstatic_field(ciMethodData, _arg_returned, intx) \
never@3138 1007 nonstatic_field(ciMethodData, _current_mileage, int) \
coleenp@4037 1008 nonstatic_field(ciMethodData, _orig, MethodData) \
never@3138 1009 \
never@3138 1010 nonstatic_field(ciField, _holder, ciInstanceKlass*) \
never@3138 1011 nonstatic_field(ciField, _name, ciSymbol*) \
never@3138 1012 nonstatic_field(ciField, _signature, ciSymbol*) \
never@3138 1013 nonstatic_field(ciField, _offset, int) \
never@3138 1014 nonstatic_field(ciField, _is_constant, bool) \
never@3138 1015 nonstatic_field(ciField, _constant_value, ciConstant) \
never@3138 1016 \
coleenp@4037 1017 nonstatic_field(ciObjectFactory, _ci_metadata, GrowableArray<ciMetadata*>*) \
never@3138 1018 nonstatic_field(ciObjectFactory, _symbols, GrowableArray<ciSymbol*>*) \
never@3138 1019 nonstatic_field(ciObjectFactory, _unloaded_methods, GrowableArray<ciMethod*>*) \
never@3138 1020 \
never@3138 1021 nonstatic_field(ciConstant, _type, BasicType) \
never@3138 1022 nonstatic_field(ciConstant, _value._int, jint) \
never@3138 1023 nonstatic_field(ciConstant, _value._long, jlong) \
never@3138 1024 nonstatic_field(ciConstant, _value._float, jfloat) \
never@3138 1025 nonstatic_field(ciConstant, _value._double, jdouble) \
never@3138 1026 nonstatic_field(ciConstant, _value._object, ciObject*) \
duke@435 1027 \
duke@435 1028 /************/ \
duke@435 1029 /* Monitors */ \
duke@435 1030 /************/ \
duke@435 1031 \
duke@435 1032 volatile_nonstatic_field(ObjectMonitor, _header, markOop) \
duke@435 1033 unchecked_nonstatic_field(ObjectMonitor, _object, sizeof(void *)) /* NOTE: no type */ \
duke@435 1034 unchecked_nonstatic_field(ObjectMonitor, _owner, sizeof(void *)) /* NOTE: no type */ \
duke@435 1035 volatile_nonstatic_field(ObjectMonitor, _count, intptr_t) \
duke@435 1036 volatile_nonstatic_field(ObjectMonitor, _waiters, intptr_t) \
duke@435 1037 volatile_nonstatic_field(ObjectMonitor, _recursions, intptr_t) \
duke@435 1038 nonstatic_field(ObjectMonitor, FreeNext, ObjectMonitor*) \
duke@435 1039 volatile_nonstatic_field(BasicLock, _displaced_header, markOop) \
duke@435 1040 nonstatic_field(BasicObjectLock, _lock, BasicLock) \
duke@435 1041 nonstatic_field(BasicObjectLock, _obj, oop) \
duke@435 1042 static_field(ObjectSynchronizer, gBlockList, ObjectMonitor*) \
duke@435 1043 \
duke@435 1044 /*********************/ \
duke@435 1045 /* Matcher (C2 only) */ \
duke@435 1046 /*********************/ \
duke@435 1047 \
never@3138 1048 unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
never@3138 1049 \
never@3138 1050 c2_nonstatic_field(Node, _in, Node**) \
never@3138 1051 c2_nonstatic_field(Node, _out, Node**) \
never@3138 1052 c2_nonstatic_field(Node, _cnt, node_idx_t) \
never@3138 1053 c2_nonstatic_field(Node, _max, node_idx_t) \
never@3138 1054 c2_nonstatic_field(Node, _outcnt, node_idx_t) \
never@3138 1055 c2_nonstatic_field(Node, _outmax, node_idx_t) \
never@3138 1056 c2_nonstatic_field(Node, _idx, const node_idx_t) \
never@3138 1057 c2_nonstatic_field(Node, _class_id, jushort) \
never@3138 1058 c2_nonstatic_field(Node, _flags, jushort) \
never@3138 1059 \
never@3138 1060 c2_nonstatic_field(Compile, _root, RootNode*) \
never@3138 1061 c2_nonstatic_field(Compile, _unique, uint) \
never@3138 1062 c2_nonstatic_field(Compile, _entry_bci, int) \
never@3138 1063 c2_nonstatic_field(Compile, _top, Node*) \
never@3138 1064 c2_nonstatic_field(Compile, _cfg, PhaseCFG*) \
never@3138 1065 c2_nonstatic_field(Compile, _regalloc, PhaseRegAlloc*) \
never@3138 1066 c2_nonstatic_field(Compile, _method, ciMethod*) \
never@3138 1067 c2_nonstatic_field(Compile, _compile_id, const int) \
never@3138 1068 c2_nonstatic_field(Compile, _save_argument_registers, const bool) \
never@3138 1069 c2_nonstatic_field(Compile, _subsume_loads, const bool) \
never@3138 1070 c2_nonstatic_field(Compile, _do_escape_analysis, const bool) \
never@3138 1071 c2_nonstatic_field(Compile, _ilt, InlineTree*) \
never@3138 1072 \
never@3138 1073 c2_nonstatic_field(InlineTree, _caller_jvms, JVMState*) \
never@3138 1074 c2_nonstatic_field(InlineTree, _method, ciMethod*) \
never@3138 1075 c2_nonstatic_field(InlineTree, _caller_tree, InlineTree*) \
never@3138 1076 c2_nonstatic_field(InlineTree, _subtrees, GrowableArray<InlineTree*>) \
never@3138 1077 \
never@3138 1078 c2_nonstatic_field(OptoRegPair, _first, short) \
never@3138 1079 c2_nonstatic_field(OptoRegPair, _second, short) \
never@3138 1080 \
never@3138 1081 c2_nonstatic_field(JVMState, _caller, JVMState*) \
never@3138 1082 c2_nonstatic_field(JVMState, _depth, uint) \
never@3138 1083 c2_nonstatic_field(JVMState, _locoff, uint) \
never@3138 1084 c2_nonstatic_field(JVMState, _stkoff, uint) \
never@3138 1085 c2_nonstatic_field(JVMState, _monoff, uint) \
never@3138 1086 c2_nonstatic_field(JVMState, _scloff, uint) \
never@3138 1087 c2_nonstatic_field(JVMState, _endoff, uint) \
never@3138 1088 c2_nonstatic_field(JVMState, _sp, uint) \
never@3138 1089 c2_nonstatic_field(JVMState, _bci, int) \
never@3138 1090 c2_nonstatic_field(JVMState, _method, ciMethod*) \
never@3138 1091 c2_nonstatic_field(JVMState, _map, SafePointNode*) \
never@3138 1092 \
never@3138 1093 c2_nonstatic_field(SafePointNode, _jvms, JVMState* const) \
never@3138 1094 \
never@3138 1095 c2_nonstatic_field(MachSafePointNode, _jvms, JVMState*) \
never@3138 1096 c2_nonstatic_field(MachSafePointNode, _jvmadj, uint) \
never@3138 1097 \
never@3138 1098 c2_nonstatic_field(MachIfNode, _prob, jfloat) \
never@3138 1099 c2_nonstatic_field(MachIfNode, _fcnt, jfloat) \
never@3138 1100 \
never@3138 1101 c2_nonstatic_field(CallNode, _entry_point, address) \
never@3138 1102 \
never@3138 1103 c2_nonstatic_field(CallJavaNode, _method, ciMethod*) \
never@3138 1104 \
never@3138 1105 c2_nonstatic_field(CallRuntimeNode, _name, const char*) \
never@3138 1106 \
never@3138 1107 c2_nonstatic_field(CallStaticJavaNode, _name, const char*) \
never@3138 1108 \
never@3138 1109 c2_nonstatic_field(MachCallJavaNode, _method, ciMethod*) \
never@3138 1110 c2_nonstatic_field(MachCallJavaNode, _bci, int) \
never@3138 1111 \
never@3138 1112 c2_nonstatic_field(MachCallStaticJavaNode, _name, const char*) \
never@3138 1113 \
never@3138 1114 c2_nonstatic_field(MachCallRuntimeNode, _name, const char*) \
never@3138 1115 \
never@3138 1116 c2_nonstatic_field(PhaseCFG, _num_blocks, uint) \
never@3138 1117 c2_nonstatic_field(PhaseCFG, _blocks, Block_List) \
never@3138 1118 c2_nonstatic_field(PhaseCFG, _bbs, Block_Array) \
never@3138 1119 c2_nonstatic_field(PhaseCFG, _broot, Block*) \
never@3138 1120 \
never@3138 1121 c2_nonstatic_field(PhaseRegAlloc, _node_regs, OptoRegPair*) \
never@3138 1122 c2_nonstatic_field(PhaseRegAlloc, _node_regs_max_index, uint) \
never@3138 1123 c2_nonstatic_field(PhaseRegAlloc, _framesize, uint) \
never@3138 1124 c2_nonstatic_field(PhaseRegAlloc, _max_reg, OptoReg::Name) \
never@3138 1125 \
never@3138 1126 c2_nonstatic_field(PhaseChaitin, _trip_cnt, int) \
never@3138 1127 c2_nonstatic_field(PhaseChaitin, _alternate, int) \
never@3138 1128 c2_nonstatic_field(PhaseChaitin, _lo_degree, uint) \
never@3138 1129 c2_nonstatic_field(PhaseChaitin, _lo_stk_degree, uint) \
never@3138 1130 c2_nonstatic_field(PhaseChaitin, _hi_degree, uint) \
never@3138 1131 c2_nonstatic_field(PhaseChaitin, _simplified, uint) \
never@3138 1132 c2_nonstatic_field(PhaseChaitin, _maxlrg, uint) \
never@3138 1133 \
never@3138 1134 c2_nonstatic_field(Block, _nodes, Node_List) \
never@3138 1135 c2_nonstatic_field(Block, _succs, Block_Array) \
never@3138 1136 c2_nonstatic_field(Block, _num_succs, uint) \
never@3138 1137 c2_nonstatic_field(Block, _pre_order, uint) \
never@3138 1138 c2_nonstatic_field(Block, _dom_depth, uint) \
never@3138 1139 c2_nonstatic_field(Block, _idom, Block*) \
never@3138 1140 c2_nonstatic_field(Block, _freq, jfloat) \
never@3138 1141 \
never@3138 1142 c2_nonstatic_field(CFGElement, _freq, jfloat) \
never@3138 1143 \
never@3138 1144 c2_nonstatic_field(Block_List, _cnt, uint) \
never@3138 1145 \
never@3138 1146 c2_nonstatic_field(Block_Array, _size, uint) \
never@3138 1147 c2_nonstatic_field(Block_Array, _blocks, Block**) \
never@3138 1148 c2_nonstatic_field(Block_Array, _arena, Arena*) \
never@3138 1149 \
never@3138 1150 c2_nonstatic_field(Node_List, _cnt, uint) \
never@3138 1151 \
never@3138 1152 c2_nonstatic_field(Node_Array, _max, uint) \
never@3138 1153 c2_nonstatic_field(Node_Array, _nodes, Node**) \
never@3138 1154 c2_nonstatic_field(Node_Array, _a, Arena*) \
never@3138 1155 \
duke@435 1156 \
duke@435 1157 /*********************/ \
duke@435 1158 /* -XX flags */ \
duke@435 1159 /*********************/ \
duke@435 1160 \
duke@435 1161 nonstatic_field(Flag, type, const char*) \
duke@435 1162 nonstatic_field(Flag, name, const char*) \
duke@435 1163 unchecked_nonstatic_field(Flag, addr, sizeof(void*)) /* NOTE: no type */ \
duke@435 1164 nonstatic_field(Flag, kind, const char*) \
never@3138 1165 nonstatic_field(Flag, origin, FlagValueOrigin) \
duke@435 1166 static_field(Flag, flags, Flag*) \
duke@435 1167 static_field(Flag, numFlags, size_t) \
duke@435 1168 \
duke@435 1169 /*************************/ \
duke@435 1170 /* JDK / VM version info */ \
duke@435 1171 /*************************/ \
duke@435 1172 \
duke@435 1173 static_field(Abstract_VM_Version, _s_vm_release, const char*) \
duke@435 1174 static_field(Abstract_VM_Version, _s_internal_vm_info_string, const char*) \
duke@435 1175 static_field(Abstract_VM_Version, _vm_major_version, int) \
duke@435 1176 static_field(Abstract_VM_Version, _vm_minor_version, int) \
duke@435 1177 static_field(Abstract_VM_Version, _vm_build_number, int) \
duke@435 1178 \
kamg@677 1179 static_field(JDK_Version, _current, JDK_Version) \
kamg@677 1180 nonstatic_field(JDK_Version, _partially_initialized, bool) \
kamg@677 1181 nonstatic_field(JDK_Version, _major, unsigned char) \
duke@435 1182 \
never@3138 1183 /*************************/ \
never@3138 1184 /* JVMTI */ \
never@3138 1185 /*************************/ \
duke@435 1186 \
jprovino@4165 1187 JVMTI_STRUCTS(static_field) \
duke@435 1188 \
duke@435 1189 /*************/ \
duke@435 1190 /* Arguments */ \
duke@435 1191 /*************/ \
duke@435 1192 \
duke@435 1193 static_field(Arguments, _jvm_flags_array, char**) \
duke@435 1194 static_field(Arguments, _num_jvm_flags, int) \
duke@435 1195 static_field(Arguments, _jvm_args_array, char**) \
duke@435 1196 static_field(Arguments, _num_jvm_args, int) \
duke@435 1197 static_field(Arguments, _java_command, char*) \
duke@435 1198 \
coleenp@4037 1199 /************/ \
coleenp@4037 1200 /* Array<T> */ \
coleenp@4037 1201 /************/ \
coleenp@4037 1202 \
coleenp@4037 1203 nonstatic_field(Array<int>, _length, int) \
coleenp@4037 1204 unchecked_nonstatic_field(Array<int>, _data, sizeof(int)) \
coleenp@4037 1205 unchecked_nonstatic_field(Array<u1>, _data, sizeof(u1)) \
coleenp@4037 1206 unchecked_nonstatic_field(Array<u2>, _data, sizeof(u2)) \
coleenp@4037 1207 unchecked_nonstatic_field(Array<Method*>, _data, sizeof(Method*)) \
coleenp@4037 1208 unchecked_nonstatic_field(Array<Klass*>, _data, sizeof(Klass*)) \
coleenp@4037 1209 \
never@2658 1210 /*********************************/ \
never@2658 1211 /* java_lang_Class fields */ \
never@2658 1212 /*********************************/ \
never@2658 1213 \
never@3137 1214 static_field(java_lang_Class, _klass_offset, int) \
never@3137 1215 static_field(java_lang_Class, _resolved_constructor_offset, int) \
never@3137 1216 static_field(java_lang_Class, _array_klass_offset, int) \
never@3137 1217 static_field(java_lang_Class, _oop_size_offset, int) \
never@3137 1218 static_field(java_lang_Class, _static_oop_field_count_offset, int) \
duke@435 1219 \
duke@435 1220 /************************/ \
duke@435 1221 /* Miscellaneous fields */ \
duke@435 1222 /************************/ \
duke@435 1223 \
coleenp@4037 1224 nonstatic_field(CompileTask, _method, Method*) \
never@3138 1225 nonstatic_field(CompileTask, _osr_bci, int) \
never@3138 1226 nonstatic_field(CompileTask, _comp_level, int) \
never@3138 1227 nonstatic_field(CompileTask, _compile_id, uint) \
never@3138 1228 nonstatic_field(CompileTask, _next, CompileTask*) \
never@3138 1229 nonstatic_field(CompileTask, _prev, CompileTask*) \
never@3138 1230 \
never@3138 1231 nonstatic_field(vframeArray, _next, vframeArray*) \
never@3138 1232 nonstatic_field(vframeArray, _original, frame) \
never@3138 1233 nonstatic_field(vframeArray, _caller, frame) \
never@3138 1234 nonstatic_field(vframeArray, _frames, int) \
never@3138 1235 \
never@3138 1236 nonstatic_field(vframeArrayElement, _frame, frame) \
never@3138 1237 nonstatic_field(vframeArrayElement, _bci, int) \
coleenp@4037 1238 nonstatic_field(vframeArrayElement, _method, Method*) \
never@3138 1239 \
never@3138 1240 nonstatic_field(AccessFlags, _flags, jint) \
never@3138 1241 nonstatic_field(elapsedTimer, _counter, jlong) \
never@3138 1242 nonstatic_field(elapsedTimer, _active, bool) \
jmasa@4196 1243 nonstatic_field(InvocationCounter, _counter, unsigned int) \
jmasa@4196 1244 volatile_nonstatic_field(FreeChunk, _size, size_t) \
jmasa@4196 1245 nonstatic_field(FreeChunk, _next, FreeChunk*) \
jmasa@4196 1246 nonstatic_field(FreeChunk, _prev, FreeChunk*) \
jmasa@4196 1247 nonstatic_field(FreeList<FreeChunk>, _size, size_t) \
jmasa@4196 1248 nonstatic_field(FreeList<Metablock>, _size, size_t) \
jmasa@4196 1249 nonstatic_field(FreeList<FreeChunk>, _count, ssize_t) \
jmasa@4196 1250 nonstatic_field(FreeList<Metablock>, _count, ssize_t) \
jmasa@4196 1251 nonstatic_field(MetablockTreeDictionary, _total_size, size_t)
duke@435 1252
duke@435 1253 /* NOTE that we do not use the last_entry() macro here; it is used */
duke@435 1254 /* in vmStructs_<os>_<cpu>.hpp's VM_STRUCTS_OS_CPU macro (and must */
duke@435 1255 /* be present there) */
duke@435 1256
duke@435 1257 //--------------------------------------------------------------------------------
duke@435 1258 // VM_TYPES
duke@435 1259 //
duke@435 1260 // This list must enumerate at least all of the types in the above
duke@435 1261 // list. For the types in the above list, the entry below must have
duke@435 1262 // exactly the same spacing since string comparisons are done in the
duke@435 1263 // code which verifies the consistency of these tables (in the debug
duke@435 1264 // build).
duke@435 1265 //
duke@435 1266 // In addition to the above types, this list is required to enumerate
duke@435 1267 // the JNI's java types, which are used to indicate the size of Java
duke@435 1268 // fields in this VM to the SA. Further, oop types are currently
duke@435 1269 // distinguished by name (i.e., ends with "oop") over in the SA.
duke@435 1270 //
duke@435 1271 // The declare_toplevel_type macro should be used to declare types
duke@435 1272 // which do not have a superclass.
duke@435 1273 //
duke@435 1274 // The declare_integer_type and declare_unsigned_integer_type macros
duke@435 1275 // are required in order to properly identify C integer types over in
duke@435 1276 // the SA. They should be used for any type which is otherwise opaque
duke@435 1277 // and which it is necessary to coerce into an integer value. This
duke@435 1278 // includes, for example, the type uintptr_t. Note that while they
duke@435 1279 // will properly identify the type's size regardless of the platform,
duke@435 1280 // since it is does not seem possible to deduce or check signedness at
duke@435 1281 // compile time using the pointer comparison tricks, it is currently
duke@435 1282 // required that the given types have the same signedness across all
duke@435 1283 // platforms.
duke@435 1284 //
duke@435 1285 // NOTE that there are platform-specific additions to this table in
duke@435 1286 // vmStructs_<os>_<cpu>.hpp.
duke@435 1287
duke@435 1288 #define VM_TYPES(declare_type, \
duke@435 1289 declare_toplevel_type, \
duke@435 1290 declare_oop_type, \
duke@435 1291 declare_integer_type, \
duke@435 1292 declare_unsigned_integer_type, \
duke@435 1293 declare_c1_toplevel_type, \
duke@435 1294 declare_c2_type, \
duke@435 1295 declare_c2_toplevel_type, \
duke@435 1296 last_entry) \
duke@435 1297 \
duke@435 1298 /*************************************************************/ \
duke@435 1299 /* Java primitive types -- required by the SA implementation */ \
duke@435 1300 /* in order to determine the size of Java fields in this VM */ \
duke@435 1301 /* (the implementation looks up these names specifically) */ \
duke@435 1302 /* NOTE: since we fetch these sizes from the remote VM, we */ \
duke@435 1303 /* have a bootstrapping sequence during which it is not */ \
duke@435 1304 /* valid to fetch Java values from the remote process, only */ \
duke@435 1305 /* C integer values (of known size). NOTE also that we do */ \
duke@435 1306 /* NOT include "Java unsigned" types like juint here; since */ \
duke@435 1307 /* Java does not have unsigned primitive types, those can */ \
duke@435 1308 /* not be mapped directly and are considered to be C integer */ \
duke@435 1309 /* types in this system (see the "other types" section, */ \
duke@435 1310 /* below.) */ \
duke@435 1311 /*************************************************************/ \
duke@435 1312 \
duke@435 1313 declare_toplevel_type(jboolean) \
duke@435 1314 declare_toplevel_type(jbyte) \
duke@435 1315 declare_toplevel_type(jchar) \
duke@435 1316 declare_toplevel_type(jdouble) \
duke@435 1317 declare_toplevel_type(jfloat) \
duke@435 1318 declare_toplevel_type(jint) \
duke@435 1319 declare_toplevel_type(jlong) \
duke@435 1320 declare_toplevel_type(jshort) \
duke@435 1321 \
duke@435 1322 /*********************************************************************/ \
duke@435 1323 /* C integer types. User-defined typedefs (like "size_t" or */ \
duke@435 1324 /* "intptr_t") are guaranteed to be present with the same names over */ \
duke@435 1325 /* in the SA's type database. Names like "unsigned short" are not */ \
duke@435 1326 /* guaranteed to be visible through the SA's type database lookup */ \
duke@435 1327 /* mechanism, though they will have a Type object created for them */ \
duke@435 1328 /* and are valid types for Fields. */ \
duke@435 1329 /*********************************************************************/ \
duke@435 1330 declare_integer_type(bool) \
never@3138 1331 declare_integer_type(short) \
duke@435 1332 declare_integer_type(int) \
duke@435 1333 declare_integer_type(long) \
duke@435 1334 declare_integer_type(char) \
duke@435 1335 declare_unsigned_integer_type(unsigned char) \
never@3138 1336 declare_unsigned_integer_type(u_char) \
duke@435 1337 declare_unsigned_integer_type(unsigned int) \
never@3138 1338 declare_unsigned_integer_type(uint) \
duke@435 1339 declare_unsigned_integer_type(unsigned short) \
never@3139 1340 declare_unsigned_integer_type(jushort) \
duke@435 1341 declare_unsigned_integer_type(unsigned long) \
duke@435 1342 /* The compiler thinks this is a different type than */ \
duke@435 1343 /* unsigned short on Win32 */ \
coleenp@4037 1344 declare_unsigned_integer_type(u1) \
duke@435 1345 declare_unsigned_integer_type(u2) \
duke@435 1346 declare_unsigned_integer_type(unsigned) \
duke@435 1347 \
duke@435 1348 /*****************************/ \
duke@435 1349 /* C primitive pointer types */ \
duke@435 1350 /*****************************/ \
duke@435 1351 \
coleenp@4037 1352 declare_toplevel_type(void*) \
duke@435 1353 declare_toplevel_type(int*) \
duke@435 1354 declare_toplevel_type(char*) \
duke@435 1355 declare_toplevel_type(char**) \
duke@435 1356 declare_toplevel_type(u_char*) \
duke@435 1357 declare_toplevel_type(unsigned char*) \
duke@435 1358 \
duke@435 1359 /*******************************************************************/ \
duke@435 1360 /* Types which it will be handy to have available over in the SA */ \
duke@435 1361 /* in order to do platform-independent address -> integer coercion */ \
duke@435 1362 /* (note: these will be looked up by name) */ \
duke@435 1363 /*******************************************************************/ \
duke@435 1364 \
duke@435 1365 declare_unsigned_integer_type(size_t) \
dcubed@587 1366 declare_integer_type(ssize_t) \
duke@435 1367 declare_integer_type(intx) \
duke@435 1368 declare_integer_type(intptr_t) \
duke@435 1369 declare_unsigned_integer_type(uintx) \
duke@435 1370 declare_unsigned_integer_type(uintptr_t) \
duke@435 1371 declare_unsigned_integer_type(uint32_t) \
duke@435 1372 declare_unsigned_integer_type(uint64_t) \
duke@435 1373 \
coleenp@4037 1374 /******************************************/ \
coleenp@4037 1375 /* OopDesc hierarchy (NOTE: some missing) */ \
coleenp@4037 1376 /******************************************/ \
duke@435 1377 \
duke@435 1378 declare_toplevel_type(oopDesc) \
coleenp@4037 1379 declare_type(arrayOopDesc, oopDesc) \
coleenp@4037 1380 declare_type(objArrayOopDesc, arrayOopDesc) \
coleenp@4037 1381 declare_type(instanceOopDesc, oopDesc) \
coleenp@4037 1382 declare_type(markOopDesc, oopDesc) \
coleenp@4037 1383 \
coleenp@4037 1384 /**************************************************/ \
coleenp@4037 1385 /* MetadataOopDesc hierarchy (NOTE: some missing) */ \
coleenp@4037 1386 /**************************************************/ \
coleenp@4037 1387 \
coleenp@4037 1388 declare_toplevel_type(CompiledICHolder) \
coleenp@4037 1389 declare_toplevel_type(MetaspaceObj) \
coleenp@4037 1390 declare_type(Metadata, MetaspaceObj) \
coleenp@4037 1391 declare_type(Klass, Metadata) \
coleenp@4142 1392 declare_type(ArrayKlass, Klass) \
coleenp@4142 1393 declare_type(ObjArrayKlass, ArrayKlass) \
coleenp@4142 1394 declare_type(TypeArrayKlass, ArrayKlass) \
coleenp@4037 1395 declare_type(InstanceKlass, Klass) \
coleenp@4047 1396 declare_type(InstanceClassLoaderKlass, InstanceKlass) \
coleenp@4047 1397 declare_type(InstanceMirrorKlass, InstanceKlass) \
coleenp@4047 1398 declare_type(InstanceRefKlass, InstanceKlass) \
coleenp@4037 1399 declare_type(ConstantPool, Metadata) \
coleenp@4037 1400 declare_type(ConstantPoolCache, MetaspaceObj) \
coleenp@4037 1401 declare_type(MethodData, Metadata) \
coleenp@4037 1402 declare_type(Method, Metadata) \
coleenp@4037 1403 declare_type(ConstMethod, MetaspaceObj) \
coleenp@4037 1404 \
coleenp@2497 1405 declare_toplevel_type(Symbol) \
coleenp@2497 1406 declare_toplevel_type(Symbol*) \
coleenp@4037 1407 declare_toplevel_type(volatile Metadata*) \
duke@435 1408 \
never@3138 1409 declare_toplevel_type(nmethodBucket) \
never@3138 1410 \
duke@435 1411 /********/ \
duke@435 1412 /* Oops */ \
duke@435 1413 /********/ \
duke@435 1414 \
duke@435 1415 declare_oop_type(markOop) \
duke@435 1416 declare_oop_type(objArrayOop) \
duke@435 1417 declare_oop_type(oop) \
coleenp@548 1418 declare_oop_type(narrowOop) \
duke@435 1419 declare_oop_type(typeArrayOop) \
duke@435 1420 \
duke@435 1421 /*************************************/ \
duke@435 1422 /* MethodOop-related data structures */ \
duke@435 1423 /*************************************/ \
duke@435 1424 \
duke@435 1425 declare_toplevel_type(CheckedExceptionElement) \
duke@435 1426 declare_toplevel_type(LocalVariableTableElement) \
jiangli@3917 1427 declare_toplevel_type(ExceptionTableElement) \
duke@435 1428 \
coleenp@4037 1429 declare_toplevel_type(ClassLoaderData) \
coleenp@4037 1430 declare_toplevel_type(ClassLoaderDataGraph) \
coleenp@4037 1431 \
duke@435 1432 /******************************************/ \
duke@435 1433 /* Generation and space hierarchies */ \
duke@435 1434 /* (needed for run-time type information) */ \
duke@435 1435 /******************************************/ \
duke@435 1436 \
duke@435 1437 declare_toplevel_type(CollectedHeap) \
duke@435 1438 declare_type(SharedHeap, CollectedHeap) \
duke@435 1439 declare_type(GenCollectedHeap, SharedHeap) \
duke@435 1440 declare_toplevel_type(Generation) \
duke@435 1441 declare_type(DefNewGeneration, Generation) \
duke@435 1442 declare_type(CardGeneration, Generation) \
duke@435 1443 declare_type(OneContigSpaceCardGeneration, CardGeneration) \
duke@435 1444 declare_type(TenuredGeneration, OneContigSpaceCardGeneration) \
duke@435 1445 declare_toplevel_type(Space) \
duke@435 1446 declare_toplevel_type(BitMap) \
duke@435 1447 declare_type(CompactibleSpace, Space) \
duke@435 1448 declare_type(ContiguousSpace, CompactibleSpace) \
duke@435 1449 declare_type(EdenSpace, ContiguousSpace) \
duke@435 1450 declare_type(OffsetTableContigSpace, ContiguousSpace) \
duke@435 1451 declare_type(TenuredSpace, OffsetTableContigSpace) \
duke@435 1452 declare_toplevel_type(BarrierSet) \
duke@435 1453 declare_type(ModRefBarrierSet, BarrierSet) \
duke@435 1454 declare_type(CardTableModRefBS, ModRefBarrierSet) \
ysr@777 1455 declare_type(CardTableModRefBSForCTRS, CardTableModRefBS) \
duke@435 1456 declare_toplevel_type(GenRemSet) \
duke@435 1457 declare_type(CardTableRS, GenRemSet) \
duke@435 1458 declare_toplevel_type(BlockOffsetSharedArray) \
duke@435 1459 declare_toplevel_type(BlockOffsetTable) \
duke@435 1460 declare_type(BlockOffsetArray, BlockOffsetTable) \
duke@435 1461 declare_type(BlockOffsetArrayContigSpace, BlockOffsetArray) \
duke@435 1462 declare_type(BlockOffsetArrayNonContigSpace, BlockOffsetArray) \
duke@435 1463 \
duke@435 1464 /* Miscellaneous other GC types */ \
duke@435 1465 \
duke@435 1466 declare_toplevel_type(ageTable) \
duke@435 1467 declare_toplevel_type(Generation::StatRecord) \
duke@435 1468 declare_toplevel_type(GenerationSpec) \
duke@435 1469 declare_toplevel_type(HeapWord) \
duke@435 1470 declare_toplevel_type(MemRegion) \
duke@435 1471 declare_toplevel_type(ThreadLocalAllocBuffer) \
duke@435 1472 declare_toplevel_type(VirtualSpace) \
duke@435 1473 declare_toplevel_type(WaterMark) \
duke@435 1474 \
duke@435 1475 /* Pointers to Garbage Collection types */ \
duke@435 1476 \
duke@435 1477 declare_toplevel_type(BarrierSet*) \
duke@435 1478 declare_toplevel_type(BlockOffsetSharedArray*) \
duke@435 1479 declare_toplevel_type(GenRemSet*) \
duke@435 1480 declare_toplevel_type(CardTableRS*) \
ysr@777 1481 declare_toplevel_type(CardTableModRefBS*) \
ysr@777 1482 declare_toplevel_type(CardTableModRefBS**) \
ysr@777 1483 declare_toplevel_type(CardTableModRefBSForCTRS*) \
ysr@777 1484 declare_toplevel_type(CardTableModRefBSForCTRS**) \
duke@435 1485 declare_toplevel_type(CollectedHeap*) \
duke@435 1486 declare_toplevel_type(ContiguousSpace*) \
duke@435 1487 declare_toplevel_type(DefNewGeneration*) \
duke@435 1488 declare_toplevel_type(EdenSpace*) \
duke@435 1489 declare_toplevel_type(GenCollectedHeap*) \
duke@435 1490 declare_toplevel_type(Generation*) \
duke@435 1491 declare_toplevel_type(GenerationSpec**) \
duke@435 1492 declare_toplevel_type(HeapWord*) \
duke@435 1493 declare_toplevel_type(MemRegion*) \
duke@435 1494 declare_toplevel_type(OffsetTableContigSpace*) \
duke@435 1495 declare_toplevel_type(OneContigSpaceCardGeneration*) \
duke@435 1496 declare_toplevel_type(Space*) \
duke@435 1497 declare_toplevel_type(ThreadLocalAllocBuffer*) \
duke@435 1498 \
duke@435 1499 /************************/ \
duke@435 1500 /* PerfMemory - jvmstat */ \
duke@435 1501 /************************/ \
duke@435 1502 \
duke@435 1503 declare_toplevel_type(PerfDataPrologue) \
duke@435 1504 declare_toplevel_type(PerfDataPrologue*) \
duke@435 1505 declare_toplevel_type(PerfDataEntry) \
duke@435 1506 declare_toplevel_type(PerfMemory) \
duke@435 1507 \
duke@435 1508 /*********************************/ \
duke@435 1509 /* SymbolTable, SystemDictionary */ \
duke@435 1510 /*********************************/ \
duke@435 1511 \
zgu@3900 1512 declare_toplevel_type(BasicHashtable<mtInternal>) \
zgu@3900 1513 declare_type(IntptrHashtable, BasicHashtable<mtInternal>) \
zgu@3900 1514 declare_type(SymbolTable, SymbolHashtable) \
zgu@3900 1515 declare_type(StringTable, StringHashtable) \
coleenp@4037 1516 declare_type(LoaderConstraintTable, KlassHashtable) \
coleenp@4037 1517 declare_type(KlassTwoOopHashtable, KlassHashtable) \
coleenp@4037 1518 declare_type(Dictionary, KlassTwoOopHashtable) \
zgu@3900 1519 declare_type(PlaceholderTable, SymbolTwoOopHashtable) \
zgu@3900 1520 declare_toplevel_type(BasicHashtableEntry<mtInternal>) \
zgu@3900 1521 declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>) \
coleenp@4037 1522 declare_type(DictionaryEntry, KlassHashtableEntry) \
zgu@3900 1523 declare_type(PlaceholderEntry, SymbolHashtableEntry) \
coleenp@4037 1524 declare_type(LoaderConstraintEntry, KlassHashtableEntry) \
zgu@3900 1525 declare_toplevel_type(HashtableBucket<mtInternal>) \
duke@435 1526 declare_toplevel_type(SystemDictionary) \
never@3158 1527 declare_toplevel_type(vmSymbols) \
duke@435 1528 declare_toplevel_type(ProtectionDomainEntry) \
duke@435 1529 \
never@3138 1530 declare_toplevel_type(GenericGrowableArray) \
never@3138 1531 declare_toplevel_type(GrowableArray<int>) \
never@3138 1532 declare_toplevel_type(Arena) \
never@3138 1533 declare_type(ResourceArea, Arena) \
never@3138 1534 declare_toplevel_type(Chunk) \
never@3138 1535 \
duke@435 1536 /***********************************************************/ \
duke@435 1537 /* Thread hierarchy (needed for run-time type information) */ \
duke@435 1538 /***********************************************************/ \
duke@435 1539 \
duke@435 1540 declare_toplevel_type(Threads) \
duke@435 1541 declare_toplevel_type(ThreadShadow) \
duke@435 1542 declare_type(Thread, ThreadShadow) \
duke@435 1543 declare_type(NamedThread, Thread) \
duke@435 1544 declare_type(WatcherThread, Thread) \
duke@435 1545 declare_type(JavaThread, Thread) \
duke@435 1546 declare_type(JvmtiAgentThread, JavaThread) \
kamg@2511 1547 declare_type(ServiceThread, JavaThread) \
never@3138 1548 declare_type(CompilerThread, JavaThread) \
duke@435 1549 declare_toplevel_type(OSThread) \
duke@435 1550 declare_toplevel_type(JavaFrameAnchor) \
duke@435 1551 \
duke@435 1552 /***************/ \
duke@435 1553 /* Interpreter */ \
duke@435 1554 /***************/ \
duke@435 1555 \
duke@435 1556 declare_toplevel_type(AbstractInterpreter) \
duke@435 1557 \
duke@435 1558 /*********/ \
duke@435 1559 /* Stubs */ \
duke@435 1560 /*********/ \
duke@435 1561 \
duke@435 1562 declare_toplevel_type(StubQueue) \
duke@435 1563 declare_toplevel_type(StubRoutines) \
duke@435 1564 declare_toplevel_type(Stub) \
duke@435 1565 declare_type(InterpreterCodelet, Stub) \
duke@435 1566 \
duke@435 1567 /*************/ \
duke@435 1568 /* JavaCalls */ \
duke@435 1569 /*************/ \
duke@435 1570 \
duke@435 1571 declare_toplevel_type(JavaCallWrapper) \
duke@435 1572 \
duke@435 1573 /*************/ \
duke@435 1574 /* CodeCache */ \
duke@435 1575 /*************/ \
duke@435 1576 \
duke@435 1577 declare_toplevel_type(CodeCache) \
duke@435 1578 \
duke@435 1579 /************/ \
duke@435 1580 /* CodeHeap */ \
duke@435 1581 /************/ \
duke@435 1582 \
duke@435 1583 declare_toplevel_type(CodeHeap) \
duke@435 1584 declare_toplevel_type(CodeHeap*) \
duke@435 1585 declare_toplevel_type(HeapBlock) \
duke@435 1586 declare_toplevel_type(HeapBlock::Header) \
duke@435 1587 declare_type(FreeBlock, HeapBlock) \
duke@435 1588 \
duke@435 1589 /*************************************************************/ \
duke@435 1590 /* CodeBlob hierarchy (needed for run-time type information) */ \
duke@435 1591 /*************************************************************/ \
duke@435 1592 \
never@3108 1593 declare_toplevel_type(SharedRuntime) \
never@3108 1594 \
duke@435 1595 declare_toplevel_type(CodeBlob) \
never@3108 1596 declare_type(BufferBlob, CodeBlob) \
never@3108 1597 declare_type(AdapterBlob, BufferBlob) \
never@3108 1598 declare_type(MethodHandlesAdapterBlob, BufferBlob) \
never@3108 1599 declare_type(nmethod, CodeBlob) \
never@3108 1600 declare_type(RuntimeStub, CodeBlob) \
never@3108 1601 declare_type(SingletonBlob, CodeBlob) \
never@3108 1602 declare_type(SafepointBlob, SingletonBlob) \
never@3108 1603 declare_type(DeoptimizationBlob, SingletonBlob) \
never@3108 1604 declare_c2_type(ExceptionBlob, SingletonBlob) \
never@3108 1605 declare_c2_type(UncommonTrapBlob, CodeBlob) \
duke@435 1606 \
duke@435 1607 /***************************************/ \
duke@435 1608 /* PcDesc and other compiled code info */ \
duke@435 1609 /***************************************/ \
duke@435 1610 \
duke@435 1611 declare_toplevel_type(PcDesc) \
never@3138 1612 declare_toplevel_type(ExceptionCache) \
never@3138 1613 declare_toplevel_type(PcDescCache) \
never@3138 1614 declare_toplevel_type(Dependencies) \
never@3138 1615 declare_toplevel_type(CompileTask) \
never@3138 1616 declare_toplevel_type(Deoptimization) \
duke@435 1617 \
duke@435 1618 /************************/ \
duke@435 1619 /* OopMap and OopMapSet */ \
duke@435 1620 /************************/ \
duke@435 1621 \
duke@435 1622 declare_toplevel_type(OopMap) \
duke@435 1623 declare_toplevel_type(OopMapSet) \
duke@435 1624 \
duke@435 1625 /********************/ \
duke@435 1626 /* CompressedStream */ \
duke@435 1627 /********************/ \
duke@435 1628 \
duke@435 1629 declare_toplevel_type(CompressedStream) \
duke@435 1630 \
duke@435 1631 /**************/ \
duke@435 1632 /* VMRegImpl */ \
duke@435 1633 /**************/ \
duke@435 1634 \
duke@435 1635 declare_toplevel_type(VMRegImpl) \
duke@435 1636 \
duke@435 1637 /*********************************/ \
duke@435 1638 /* JNIHandles and JNIHandleBlock */ \
duke@435 1639 /*********************************/ \
duke@435 1640 \
duke@435 1641 declare_toplevel_type(JNIHandles) \
duke@435 1642 declare_toplevel_type(JNIHandleBlock) \
never@3138 1643 declare_toplevel_type(jobject) \
duke@435 1644 \
duke@435 1645 /**********************/ \
duke@435 1646 /* Runtime1 (C1 only) */ \
duke@435 1647 /**********************/ \
duke@435 1648 \
duke@435 1649 declare_c1_toplevel_type(Runtime1) \
duke@435 1650 \
duke@435 1651 /************/ \
duke@435 1652 /* Monitors */ \
duke@435 1653 /************/ \
duke@435 1654 \
duke@435 1655 declare_toplevel_type(ObjectMonitor) \
duke@435 1656 declare_toplevel_type(ObjectSynchronizer) \
duke@435 1657 declare_toplevel_type(BasicLock) \
duke@435 1658 declare_toplevel_type(BasicObjectLock) \
duke@435 1659 \
duke@435 1660 /*********************/ \
duke@435 1661 /* Matcher (C2 only) */ \
duke@435 1662 /*********************/ \
duke@435 1663 \
duke@435 1664 declare_c2_toplevel_type(Matcher) \
never@3138 1665 declare_c2_toplevel_type(Compile) \
never@3138 1666 declare_c2_toplevel_type(InlineTree) \
never@3138 1667 declare_c2_toplevel_type(OptoRegPair) \
never@3138 1668 declare_c2_toplevel_type(JVMState) \
never@3138 1669 declare_c2_toplevel_type(Phase) \
never@3138 1670 declare_c2_type(PhaseCFG, Phase) \
never@3138 1671 declare_c2_type(PhaseRegAlloc, Phase) \
never@3138 1672 declare_c2_type(PhaseChaitin, PhaseRegAlloc) \
never@3138 1673 declare_c2_toplevel_type(CFGElement) \
never@3138 1674 declare_c2_type(Block, CFGElement) \
never@3138 1675 declare_c2_toplevel_type(Block_Array) \
never@3138 1676 declare_c2_type(Block_List, Block_Array) \
never@3138 1677 declare_c2_toplevel_type(Node_Array) \
never@3138 1678 declare_c2_type(Node_List, Node_Array) \
never@3138 1679 declare_c2_type(Unique_Node_List, Node_List) \
never@3138 1680 declare_c2_toplevel_type(Node) \
never@3138 1681 declare_c2_type(AddNode, Node) \
never@3138 1682 declare_c2_type(AddINode, AddNode) \
never@3138 1683 declare_c2_type(AddLNode, AddNode) \
never@3138 1684 declare_c2_type(AddFNode, AddNode) \
never@3138 1685 declare_c2_type(AddDNode, AddNode) \
never@3138 1686 declare_c2_type(AddPNode, Node) \
never@3138 1687 declare_c2_type(OrINode, AddNode) \
never@3138 1688 declare_c2_type(OrLNode, AddNode) \
never@3138 1689 declare_c2_type(XorINode, AddNode) \
never@3138 1690 declare_c2_type(XorLNode, AddNode) \
never@3138 1691 declare_c2_type(MaxNode, AddNode) \
never@3138 1692 declare_c2_type(MaxINode, MaxNode) \
never@3138 1693 declare_c2_type(MinINode, MaxNode) \
never@3138 1694 declare_c2_type(StartNode, MultiNode) \
never@3138 1695 declare_c2_type(StartOSRNode, StartNode) \
never@3138 1696 declare_c2_type(ParmNode, ProjNode) \
never@3138 1697 declare_c2_type(ReturnNode, Node) \
never@3138 1698 declare_c2_type(RethrowNode, Node) \
never@3138 1699 declare_c2_type(TailCallNode, ReturnNode) \
never@3138 1700 declare_c2_type(TailJumpNode, ReturnNode) \
never@3138 1701 declare_c2_type(SafePointNode, MultiNode) \
never@3138 1702 declare_c2_type(CallNode, SafePointNode) \
never@3138 1703 declare_c2_type(CallJavaNode, CallNode) \
never@3138 1704 declare_c2_type(CallStaticJavaNode, CallJavaNode) \
never@3138 1705 declare_c2_type(CallDynamicJavaNode, CallJavaNode) \
never@3138 1706 declare_c2_type(CallRuntimeNode, CallNode) \
never@3138 1707 declare_c2_type(CallLeafNode, CallRuntimeNode) \
never@3138 1708 declare_c2_type(CallLeafNoFPNode, CallLeafNode) \
never@3138 1709 declare_c2_type(AllocateNode, CallNode) \
never@3138 1710 declare_c2_type(AllocateArrayNode, AllocateNode) \
never@3138 1711 declare_c2_type(LockNode, AbstractLockNode) \
never@3138 1712 declare_c2_type(UnlockNode, AbstractLockNode) \
never@3138 1713 declare_c2_type(FastLockNode, CmpNode) \
never@3138 1714 declare_c2_type(FastUnlockNode, CmpNode) \
never@3138 1715 declare_c2_type(RegionNode, Node) \
never@3138 1716 declare_c2_type(JProjNode, ProjNode) \
never@3138 1717 declare_c2_type(PhiNode, TypeNode) \
never@3138 1718 declare_c2_type(GotoNode, Node) \
never@3138 1719 declare_c2_type(CProjNode, ProjNode) \
never@3138 1720 declare_c2_type(MultiBranchNode, MultiNode) \
never@3138 1721 declare_c2_type(IfNode, MultiBranchNode) \
never@3138 1722 declare_c2_type(IfTrueNode, CProjNode) \
never@3138 1723 declare_c2_type(IfFalseNode, CProjNode) \
never@3138 1724 declare_c2_type(PCTableNode, MultiBranchNode) \
never@3138 1725 declare_c2_type(JumpNode, PCTableNode) \
never@3138 1726 declare_c2_type(JumpProjNode, JProjNode) \
never@3138 1727 declare_c2_type(CatchNode, PCTableNode) \
never@3138 1728 declare_c2_type(CatchProjNode, CProjNode) \
never@3138 1729 declare_c2_type(CreateExNode, TypeNode) \
never@3138 1730 declare_c2_type(ClearArrayNode, Node) \
never@3138 1731 declare_c2_type(NeverBranchNode, MultiBranchNode) \
never@3138 1732 declare_c2_type(ConNode, TypeNode) \
never@3138 1733 declare_c2_type(ConINode, ConNode) \
never@3138 1734 declare_c2_type(ConPNode, ConNode) \
never@3138 1735 declare_c2_type(ConNNode, ConNode) \
never@3138 1736 declare_c2_type(ConLNode, ConNode) \
never@3138 1737 declare_c2_type(ConFNode, ConNode) \
never@3138 1738 declare_c2_type(ConDNode, ConNode) \
never@3138 1739 declare_c2_type(BinaryNode, Node) \
never@3138 1740 declare_c2_type(CMoveNode, TypeNode) \
never@3138 1741 declare_c2_type(CMoveDNode, CMoveNode) \
never@3138 1742 declare_c2_type(CMoveFNode, CMoveNode) \
never@3138 1743 declare_c2_type(CMoveINode, CMoveNode) \
never@3138 1744 declare_c2_type(CMoveLNode, CMoveNode) \
never@3138 1745 declare_c2_type(CMovePNode, CMoveNode) \
never@3138 1746 declare_c2_type(CMoveNNode, CMoveNode) \
never@3138 1747 declare_c2_type(EncodePNode, TypeNode) \
never@3138 1748 declare_c2_type(DecodeNNode, TypeNode) \
roland@4159 1749 declare_c2_type(EncodePKlassNode, TypeNode) \
roland@4159 1750 declare_c2_type(DecodeNKlassNode, TypeNode) \
never@3138 1751 declare_c2_type(ConstraintCastNode, TypeNode) \
never@3138 1752 declare_c2_type(CastIINode, ConstraintCastNode) \
never@3138 1753 declare_c2_type(CastPPNode, ConstraintCastNode) \
never@3138 1754 declare_c2_type(CheckCastPPNode, TypeNode) \
never@3138 1755 declare_c2_type(Conv2BNode, Node) \
never@3138 1756 declare_c2_type(ConvD2FNode, Node) \
never@3138 1757 declare_c2_type(ConvD2INode, Node) \
never@3138 1758 declare_c2_type(ConvD2LNode, Node) \
never@3138 1759 declare_c2_type(ConvF2DNode, Node) \
never@3138 1760 declare_c2_type(ConvF2INode, Node) \
never@3138 1761 declare_c2_type(ConvF2LNode, Node) \
never@3138 1762 declare_c2_type(ConvI2DNode, Node) \
never@3138 1763 declare_c2_type(ConvI2FNode, Node) \
never@3138 1764 declare_c2_type(ConvI2LNode, TypeNode) \
never@3138 1765 declare_c2_type(ConvL2DNode, Node) \
never@3138 1766 declare_c2_type(ConvL2FNode, Node) \
never@3138 1767 declare_c2_type(ConvL2INode, Node) \
never@3138 1768 declare_c2_type(CastX2PNode, Node) \
never@3138 1769 declare_c2_type(CastP2XNode, Node) \
never@3138 1770 declare_c2_type(MemBarNode, MultiNode) \
never@3138 1771 declare_c2_type(MemBarAcquireNode, MemBarNode) \
never@3138 1772 declare_c2_type(MemBarReleaseNode, MemBarNode) \
never@3138 1773 declare_c2_type(MemBarVolatileNode, MemBarNode) \
never@3138 1774 declare_c2_type(MemBarCPUOrderNode, MemBarNode) \
never@3138 1775 declare_c2_type(InitializeNode, MemBarNode) \
never@3138 1776 declare_c2_type(ThreadLocalNode, Node) \
never@3138 1777 declare_c2_type(Opaque1Node, Node) \
never@3138 1778 declare_c2_type(Opaque2Node, Node) \
never@3138 1779 declare_c2_type(PartialSubtypeCheckNode, Node) \
never@3138 1780 declare_c2_type(MoveI2FNode, Node) \
never@3138 1781 declare_c2_type(MoveL2DNode, Node) \
never@3138 1782 declare_c2_type(MoveF2INode, Node) \
never@3138 1783 declare_c2_type(MoveD2LNode, Node) \
never@3138 1784 declare_c2_type(DivINode, Node) \
never@3138 1785 declare_c2_type(DivLNode, Node) \
never@3138 1786 declare_c2_type(DivFNode, Node) \
never@3138 1787 declare_c2_type(DivDNode, Node) \
never@3138 1788 declare_c2_type(ModINode, Node) \
never@3138 1789 declare_c2_type(ModLNode, Node) \
never@3138 1790 declare_c2_type(ModFNode, Node) \
never@3138 1791 declare_c2_type(ModDNode, Node) \
never@3138 1792 declare_c2_type(DivModNode, MultiNode) \
never@3138 1793 declare_c2_type(DivModINode, DivModNode) \
never@3138 1794 declare_c2_type(DivModLNode, DivModNode) \
never@3138 1795 declare_c2_type(BoxLockNode, Node) \
never@3138 1796 declare_c2_type(LoopNode, RegionNode) \
never@3138 1797 declare_c2_type(CountedLoopNode, LoopNode) \
never@3138 1798 declare_c2_type(CountedLoopEndNode, IfNode) \
never@3138 1799 declare_c2_type(MachNode, Node) \
never@3138 1800 declare_c2_type(MachIdealNode, MachNode) \
never@3138 1801 declare_c2_type(MachTypeNode, MachNode) \
never@3138 1802 declare_c2_type(MachBreakpointNode, MachIdealNode) \
never@3138 1803 declare_c2_type(MachUEPNode, MachIdealNode) \
never@3138 1804 declare_c2_type(MachPrologNode, MachIdealNode) \
never@3138 1805 declare_c2_type(MachEpilogNode, MachIdealNode) \
never@3138 1806 declare_c2_type(MachNopNode, MachIdealNode) \
never@3138 1807 declare_c2_type(MachSpillCopyNode, MachIdealNode) \
never@3138 1808 declare_c2_type(MachNullCheckNode, MachIdealNode) \
never@3138 1809 declare_c2_type(MachProjNode, ProjNode) \
never@3138 1810 declare_c2_type(MachIfNode, MachNode) \
never@3138 1811 declare_c2_type(MachFastLockNode, MachNode) \
never@3138 1812 declare_c2_type(MachReturnNode, MachNode) \
never@3138 1813 declare_c2_type(MachSafePointNode, MachReturnNode) \
never@3138 1814 declare_c2_type(MachCallNode, MachSafePointNode) \
never@3138 1815 declare_c2_type(MachCallJavaNode, MachCallNode) \
never@3138 1816 declare_c2_type(MachCallStaticJavaNode, MachCallJavaNode) \
never@3138 1817 declare_c2_type(MachCallDynamicJavaNode, MachCallJavaNode) \
never@3138 1818 declare_c2_type(MachCallRuntimeNode, MachCallNode) \
never@3138 1819 declare_c2_type(MachHaltNode, MachReturnNode) \
never@3138 1820 declare_c2_type(MachTempNode, MachNode) \
never@3138 1821 declare_c2_type(MemNode, Node) \
never@3138 1822 declare_c2_type(MergeMemNode, Node) \
never@3138 1823 declare_c2_type(LoadNode, MemNode) \
never@3138 1824 declare_c2_type(LoadBNode, LoadNode) \
never@3138 1825 declare_c2_type(LoadUSNode, LoadNode) \
never@3138 1826 declare_c2_type(LoadINode, LoadNode) \
never@3138 1827 declare_c2_type(LoadRangeNode, LoadINode) \
never@3138 1828 declare_c2_type(LoadLNode, LoadNode) \
never@3138 1829 declare_c2_type(LoadL_unalignedNode, LoadLNode) \
never@3138 1830 declare_c2_type(LoadFNode, LoadNode) \
never@3138 1831 declare_c2_type(LoadDNode, LoadNode) \
never@3138 1832 declare_c2_type(LoadD_unalignedNode, LoadDNode) \
never@3138 1833 declare_c2_type(LoadPNode, LoadNode) \
never@3138 1834 declare_c2_type(LoadNNode, LoadNode) \
never@3138 1835 declare_c2_type(LoadKlassNode, LoadPNode) \
never@3138 1836 declare_c2_type(LoadNKlassNode, LoadNNode) \
never@3138 1837 declare_c2_type(LoadSNode, LoadNode) \
never@3138 1838 declare_c2_type(StoreNode, MemNode) \
never@3138 1839 declare_c2_type(StoreBNode, StoreNode) \
never@3138 1840 declare_c2_type(StoreCNode, StoreNode) \
never@3138 1841 declare_c2_type(StoreINode, StoreNode) \
never@3138 1842 declare_c2_type(StoreLNode, StoreNode) \
never@3138 1843 declare_c2_type(StoreFNode, StoreNode) \
never@3138 1844 declare_c2_type(StoreDNode, StoreNode) \
never@3138 1845 declare_c2_type(StorePNode, StoreNode) \
never@3138 1846 declare_c2_type(StoreNNode, StoreNode) \
roland@4159 1847 declare_c2_type(StoreNKlassNode, StoreNode) \
never@3138 1848 declare_c2_type(StoreCMNode, StoreNode) \
never@3138 1849 declare_c2_type(LoadPLockedNode, LoadPNode) \
never@3138 1850 declare_c2_type(SCMemProjNode, ProjNode) \
never@3138 1851 declare_c2_type(LoadStoreNode, Node) \
never@3138 1852 declare_c2_type(StorePConditionalNode, LoadStoreNode) \
never@3138 1853 declare_c2_type(StoreLConditionalNode, LoadStoreNode) \
never@3138 1854 declare_c2_type(CompareAndSwapLNode, LoadStoreNode) \
never@3138 1855 declare_c2_type(CompareAndSwapINode, LoadStoreNode) \
never@3138 1856 declare_c2_type(CompareAndSwapPNode, LoadStoreNode) \
never@3138 1857 declare_c2_type(CompareAndSwapNNode, LoadStoreNode) \
never@3138 1858 declare_c2_type(PrefetchReadNode, Node) \
never@3138 1859 declare_c2_type(PrefetchWriteNode, Node) \
never@3138 1860 declare_c2_type(MulNode, Node) \
never@3138 1861 declare_c2_type(MulINode, MulNode) \
never@3138 1862 declare_c2_type(MulLNode, MulNode) \
never@3138 1863 declare_c2_type(MulFNode, MulNode) \
never@3138 1864 declare_c2_type(MulDNode, MulNode) \
never@3138 1865 declare_c2_type(MulHiLNode, Node) \
never@3138 1866 declare_c2_type(AndINode, MulINode) \
never@3138 1867 declare_c2_type(AndLNode, MulLNode) \
never@3138 1868 declare_c2_type(LShiftINode, Node) \
never@3138 1869 declare_c2_type(LShiftLNode, Node) \
never@3138 1870 declare_c2_type(RShiftINode, Node) \
never@3138 1871 declare_c2_type(RShiftLNode, Node) \
never@3138 1872 declare_c2_type(URShiftINode, Node) \
never@3138 1873 declare_c2_type(URShiftLNode, Node) \
never@3138 1874 declare_c2_type(MultiNode, Node) \
never@3138 1875 declare_c2_type(ProjNode, Node) \
never@3138 1876 declare_c2_type(TypeNode, Node) \
never@3138 1877 declare_c2_type(NodeHash, StackObj) \
never@3138 1878 declare_c2_type(RootNode, LoopNode) \
never@3138 1879 declare_c2_type(HaltNode, Node) \
never@3138 1880 declare_c2_type(SubNode, Node) \
never@3138 1881 declare_c2_type(SubINode, SubNode) \
never@3138 1882 declare_c2_type(SubLNode, SubNode) \
never@3138 1883 declare_c2_type(SubFPNode, SubNode) \
never@3138 1884 declare_c2_type(SubFNode, SubFPNode) \
never@3138 1885 declare_c2_type(SubDNode, SubFPNode) \
never@3138 1886 declare_c2_type(CmpNode, SubNode) \
never@3138 1887 declare_c2_type(CmpINode, CmpNode) \
never@3138 1888 declare_c2_type(CmpUNode, CmpNode) \
never@3138 1889 declare_c2_type(CmpPNode, CmpNode) \
never@3138 1890 declare_c2_type(CmpNNode, CmpNode) \
never@3138 1891 declare_c2_type(CmpLNode, CmpNode) \
never@3138 1892 declare_c2_type(CmpL3Node, CmpLNode) \
never@3138 1893 declare_c2_type(CmpFNode, CmpNode) \
never@3138 1894 declare_c2_type(CmpF3Node, CmpFNode) \
never@3138 1895 declare_c2_type(CmpDNode, CmpNode) \
never@3138 1896 declare_c2_type(CmpD3Node, CmpDNode) \
never@3138 1897 declare_c2_type(BoolNode, Node) \
never@3138 1898 declare_c2_type(AbsNode, Node) \
never@3138 1899 declare_c2_type(AbsINode, AbsNode) \
never@3138 1900 declare_c2_type(AbsFNode, AbsNode) \
never@3138 1901 declare_c2_type(AbsDNode, AbsNode) \
never@3138 1902 declare_c2_type(CmpLTMaskNode, Node) \
never@3138 1903 declare_c2_type(NegNode, Node) \
never@3138 1904 declare_c2_type(NegFNode, NegNode) \
never@3138 1905 declare_c2_type(NegDNode, NegNode) \
never@3138 1906 declare_c2_type(CosDNode, Node) \
never@3138 1907 declare_c2_type(SinDNode, Node) \
never@3138 1908 declare_c2_type(TanDNode, Node) \
never@3138 1909 declare_c2_type(AtanDNode, Node) \
never@3138 1910 declare_c2_type(SqrtDNode, Node) \
never@3138 1911 declare_c2_type(ExpDNode, Node) \
never@3138 1912 declare_c2_type(LogDNode, Node) \
never@3138 1913 declare_c2_type(Log10DNode, Node) \
never@3138 1914 declare_c2_type(PowDNode, Node) \
never@3138 1915 declare_c2_type(ReverseBytesINode, Node) \
never@3138 1916 declare_c2_type(ReverseBytesLNode, Node) \
never@3138 1917 declare_c2_type(VectorNode, Node) \
never@3138 1918 declare_c2_type(AddVBNode, VectorNode) \
never@3138 1919 declare_c2_type(AddVSNode, VectorNode) \
never@3138 1920 declare_c2_type(AddVINode, VectorNode) \
never@3138 1921 declare_c2_type(AddVLNode, VectorNode) \
never@3138 1922 declare_c2_type(AddVFNode, VectorNode) \
never@3138 1923 declare_c2_type(AddVDNode, VectorNode) \
never@3138 1924 declare_c2_type(SubVBNode, VectorNode) \
never@3138 1925 declare_c2_type(SubVSNode, VectorNode) \
never@3138 1926 declare_c2_type(SubVINode, VectorNode) \
never@3138 1927 declare_c2_type(SubVLNode, VectorNode) \
never@3138 1928 declare_c2_type(SubVFNode, VectorNode) \
never@3138 1929 declare_c2_type(SubVDNode, VectorNode) \
kvn@4113 1930 declare_c2_type(MulVSNode, VectorNode) \
kvn@4113 1931 declare_c2_type(MulVINode, VectorNode) \
never@3138 1932 declare_c2_type(MulVFNode, VectorNode) \
never@3138 1933 declare_c2_type(MulVDNode, VectorNode) \
never@3138 1934 declare_c2_type(DivVFNode, VectorNode) \
never@3138 1935 declare_c2_type(DivVDNode, VectorNode) \
never@3138 1936 declare_c2_type(LShiftVBNode, VectorNode) \
never@3138 1937 declare_c2_type(LShiftVSNode, VectorNode) \
never@3138 1938 declare_c2_type(LShiftVINode, VectorNode) \
kvn@4113 1939 declare_c2_type(LShiftVLNode, VectorNode) \
kvn@3882 1940 declare_c2_type(RShiftVBNode, VectorNode) \
kvn@3882 1941 declare_c2_type(RShiftVSNode, VectorNode) \
kvn@3882 1942 declare_c2_type(RShiftVINode, VectorNode) \
kvn@4113 1943 declare_c2_type(RShiftVLNode, VectorNode) \
kvn@4113 1944 declare_c2_type(URShiftVBNode, VectorNode) \
kvn@4113 1945 declare_c2_type(URShiftVSNode, VectorNode) \
kvn@4113 1946 declare_c2_type(URShiftVINode, VectorNode) \
kvn@4113 1947 declare_c2_type(URShiftVLNode, VectorNode) \
never@3138 1948 declare_c2_type(AndVNode, VectorNode) \
never@3138 1949 declare_c2_type(OrVNode, VectorNode) \
never@3138 1950 declare_c2_type(XorVNode, VectorNode) \
kvn@3882 1951 declare_c2_type(LoadVectorNode, LoadNode) \
kvn@3882 1952 declare_c2_type(StoreVectorNode, StoreNode) \
kvn@3882 1953 declare_c2_type(ReplicateBNode, VectorNode) \
kvn@3882 1954 declare_c2_type(ReplicateSNode, VectorNode) \
kvn@3882 1955 declare_c2_type(ReplicateINode, VectorNode) \
kvn@3882 1956 declare_c2_type(ReplicateLNode, VectorNode) \
kvn@3882 1957 declare_c2_type(ReplicateFNode, VectorNode) \
kvn@3882 1958 declare_c2_type(ReplicateDNode, VectorNode) \
never@3138 1959 declare_c2_type(PackNode, VectorNode) \
never@3138 1960 declare_c2_type(PackBNode, PackNode) \
never@3138 1961 declare_c2_type(PackSNode, PackNode) \
never@3138 1962 declare_c2_type(PackINode, PackNode) \
never@3138 1963 declare_c2_type(PackLNode, PackNode) \
never@3138 1964 declare_c2_type(PackFNode, PackNode) \
never@3138 1965 declare_c2_type(PackDNode, PackNode) \
kvn@3882 1966 declare_c2_type(Pack2LNode, PackNode) \
kvn@3882 1967 declare_c2_type(Pack2DNode, PackNode) \
never@3138 1968 declare_c2_type(ExtractNode, Node) \
never@3138 1969 declare_c2_type(ExtractBNode, ExtractNode) \
kvn@4113 1970 declare_c2_type(ExtractUBNode, ExtractNode) \
kvn@4113 1971 declare_c2_type(ExtractCNode, ExtractNode) \
never@3138 1972 declare_c2_type(ExtractSNode, ExtractNode) \
never@3138 1973 declare_c2_type(ExtractINode, ExtractNode) \
never@3138 1974 declare_c2_type(ExtractLNode, ExtractNode) \
never@3138 1975 declare_c2_type(ExtractFNode, ExtractNode) \
never@3138 1976 declare_c2_type(ExtractDNode, ExtractNode) \
duke@435 1977 \
duke@435 1978 /*********************/ \
duke@435 1979 /* Adapter Blob Entries */ \
duke@435 1980 /*********************/ \
duke@435 1981 declare_toplevel_type(AdapterHandlerEntry) \
duke@435 1982 declare_toplevel_type(AdapterHandlerEntry*) \
duke@435 1983 \
never@3138 1984 /*********************/ \
never@3138 1985 /* CI */ \
never@3138 1986 /*********************/ \
never@3138 1987 declare_toplevel_type(ciEnv) \
never@3138 1988 declare_toplevel_type(ciObjectFactory) \
never@3138 1989 declare_toplevel_type(ciConstant) \
never@3138 1990 declare_toplevel_type(ciField) \
coleenp@4037 1991 declare_toplevel_type(ciSymbol) \
coleenp@4037 1992 declare_toplevel_type(ciBaseObject) \
coleenp@4037 1993 declare_type(ciObject, ciBaseObject) \
never@3138 1994 declare_type(ciInstance, ciObject) \
coleenp@4037 1995 declare_type(ciMetadata, ciBaseObject) \
coleenp@4037 1996 declare_type(ciMethod, ciMetadata) \
coleenp@4037 1997 declare_type(ciMethodData, ciMetadata) \
coleenp@4037 1998 declare_type(ciType, ciMetadata) \
never@3138 1999 declare_type(ciKlass, ciType) \
never@3138 2000 declare_type(ciInstanceKlass, ciKlass) \
never@3138 2001 declare_type(ciArrayKlass, ciKlass) \
never@3138 2002 declare_type(ciTypeArrayKlass, ciArrayKlass) \
never@3138 2003 declare_type(ciObjArrayKlass, ciArrayKlass) \
never@3138 2004 \
duke@435 2005 /********************/ \
duke@435 2006 /* -XX flags */ \
duke@435 2007 /********************/ \
duke@435 2008 \
duke@435 2009 declare_toplevel_type(Flag) \
duke@435 2010 declare_toplevel_type(Flag*) \
duke@435 2011 \
duke@435 2012 /********************/ \
never@3138 2013 /* JVMTI */ \
never@3138 2014 /********************/ \
never@3138 2015 \
never@3138 2016 declare_toplevel_type(JvmtiExport) \
never@3138 2017 \
never@3138 2018 /********************/ \
duke@435 2019 /* JDK/VM version */ \
duke@435 2020 /********************/ \
duke@435 2021 \
duke@435 2022 declare_toplevel_type(Abstract_VM_Version) \
duke@435 2023 declare_toplevel_type(JDK_Version) \
duke@435 2024 \
duke@435 2025 /*************/ \
duke@435 2026 /* Arguments */ \
duke@435 2027 /*************/ \
duke@435 2028 \
duke@435 2029 declare_toplevel_type(Arguments) \
duke@435 2030 \
duke@435 2031 /***************/ \
duke@435 2032 /* Other types */ \
duke@435 2033 /***************/ \
duke@435 2034 \
duke@435 2035 /* all enum types */ \
duke@435 2036 \
duke@435 2037 declare_integer_type(Bytecodes::Code) \
duke@435 2038 declare_integer_type(Generation::Name) \
coleenp@4037 2039 declare_integer_type(InstanceKlass::ClassState) \
duke@435 2040 declare_integer_type(JavaThreadState) \
duke@435 2041 declare_integer_type(Location::Type) \
duke@435 2042 declare_integer_type(Location::Where) \
never@3138 2043 declare_integer_type(FlagValueOrigin) \
never@3138 2044 COMPILER2_PRESENT(declare_integer_type(OptoReg::Name)) \
duke@435 2045 \
coleenp@4037 2046 declare_toplevel_type(CHeapObj<mtInternal>) \
coleenp@4037 2047 declare_type(Array<int>, MetaspaceObj) \
coleenp@4037 2048 declare_type(Array<u1>, MetaspaceObj) \
coleenp@4037 2049 declare_type(Array<u2>, MetaspaceObj) \
coleenp@4037 2050 declare_type(Array<Klass*>, MetaspaceObj) \
coleenp@4037 2051 declare_type(Array<Method*>, MetaspaceObj) \
coleenp@4037 2052 \
duke@435 2053 declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\
duke@435 2054 declare_toplevel_type(address) /* FIXME: should this be an integer type? */\
never@3138 2055 declare_integer_type(BasicType) /* FIXME: wrong type (not integer) */\
duke@435 2056 declare_toplevel_type(BreakpointInfo) \
duke@435 2057 declare_toplevel_type(BreakpointInfo*) \
duke@435 2058 declare_toplevel_type(CodeBlob*) \
duke@435 2059 declare_toplevel_type(CompressedWriteStream*) \
duke@435 2060 declare_toplevel_type(ConstantPoolCacheEntry) \
duke@435 2061 declare_toplevel_type(elapsedTimer) \
never@3138 2062 declare_toplevel_type(frame) \
duke@435 2063 declare_toplevel_type(intptr_t*) \
duke@435 2064 declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \
duke@435 2065 declare_toplevel_type(JavaThread*) \
never@2658 2066 declare_toplevel_type(java_lang_Class) \
never@3138 2067 declare_integer_type(JavaThread::AsyncRequests) \
duke@435 2068 declare_toplevel_type(jbyte*) \
duke@435 2069 declare_toplevel_type(jbyte**) \
duke@435 2070 declare_toplevel_type(jint*) \
duke@435 2071 declare_toplevel_type(jniIdMapBase*) \
duke@435 2072 declare_unsigned_integer_type(juint) \
duke@435 2073 declare_unsigned_integer_type(julong) \
duke@435 2074 declare_toplevel_type(JNIHandleBlock*) \
duke@435 2075 declare_toplevel_type(JNIid) \
duke@435 2076 declare_toplevel_type(JNIid*) \
duke@435 2077 declare_toplevel_type(jmethodID*) \
duke@435 2078 declare_toplevel_type(Mutex*) \
duke@435 2079 declare_toplevel_type(nmethod*) \
never@3138 2080 COMPILER2_PRESENT(declare_unsigned_integer_type(node_idx_t)) \
duke@435 2081 declare_toplevel_type(ObjectMonitor*) \
duke@435 2082 declare_toplevel_type(oop*) \
duke@435 2083 declare_toplevel_type(OopMap**) \
duke@435 2084 declare_toplevel_type(OopMapCache*) \
duke@435 2085 declare_toplevel_type(OopMapSet*) \
duke@435 2086 declare_toplevel_type(VMReg) \
duke@435 2087 declare_toplevel_type(OSThread*) \
duke@435 2088 declare_integer_type(ReferenceType) \
duke@435 2089 declare_toplevel_type(StubQueue*) \
duke@435 2090 declare_toplevel_type(Thread*) \
never@3138 2091 declare_toplevel_type(Universe) \
never@3138 2092 declare_toplevel_type(vframeArray) \
coleenp@4037 2093 declare_toplevel_type(vframeArrayElement) \
jmasa@4196 2094 declare_toplevel_type(Annotations*) \
jmasa@4196 2095 \
jmasa@4196 2096 /***************/ \
jmasa@4196 2097 /* Miscellaneous types */ \
jmasa@4196 2098 /***************/ \
jmasa@4196 2099 \
jmasa@4196 2100 /* freelist */ \
jmasa@4196 2101 declare_toplevel_type(FreeChunk*) \
jmasa@4196 2102 declare_toplevel_type(Metablock*) \
jmasa@4196 2103 declare_toplevel_type(FreeBlockDictionary<FreeChunk>*) \
jmasa@4196 2104 declare_toplevel_type(FreeList<FreeChunk>*) \
jmasa@4196 2105 declare_toplevel_type(FreeList<FreeChunk>) \
jmasa@4196 2106 declare_toplevel_type(FreeBlockDictionary<Metablock>*) \
jmasa@4196 2107 declare_toplevel_type(FreeList<Metablock>*) \
jmasa@4196 2108 declare_toplevel_type(FreeList<Metablock>) \
jmasa@4196 2109 declare_toplevel_type(MetablockTreeDictionary*) \
jmasa@4196 2110 declare_type(MetablockTreeDictionary, FreeBlockDictionary<Metablock>) \
jmasa@4196 2111 declare_type(MetablockTreeDictionary, FreeBlockDictionary<Metablock>)
never@3138 2112
duke@435 2113
duke@435 2114 /* NOTE that we do not use the last_entry() macro here; it is used */
duke@435 2115 /* in vmStructs_<os>_<cpu>.hpp's VM_TYPES_OS_CPU macro (and must be */
duke@435 2116 /* present there) */
duke@435 2117
duke@435 2118 //--------------------------------------------------------------------------------
duke@435 2119 // VM_INT_CONSTANTS
duke@435 2120 //
duke@435 2121 // This table contains integer constants required over in the
duke@435 2122 // serviceability agent. The "declare_constant" macro is used for all
duke@435 2123 // enums, etc., while "declare_preprocessor_constant" must be used for
duke@435 2124 // all #defined constants.
duke@435 2125
duke@435 2126 #define VM_INT_CONSTANTS(declare_constant, \
duke@435 2127 declare_preprocessor_constant, \
duke@435 2128 declare_c1_constant, \
duke@435 2129 declare_c2_constant, \
duke@435 2130 declare_c2_preprocessor_constant, \
duke@435 2131 last_entry) \
duke@435 2132 \
duke@435 2133 /******************/ \
duke@435 2134 /* Useful globals */ \
duke@435 2135 /******************/ \
duke@435 2136 \
duke@435 2137 declare_constant(UseTLAB) \
bpittore@4028 2138 declare_constant(EnableInvokeDynamic) \
duke@435 2139 \
duke@435 2140 /**************/ \
duke@435 2141 /* Stack bias */ \
duke@435 2142 /**************/ \
duke@435 2143 \
duke@435 2144 declare_preprocessor_constant("STACK_BIAS", STACK_BIAS) \
duke@435 2145 \
duke@435 2146 /****************/ \
duke@435 2147 /* Object sizes */ \
duke@435 2148 /****************/ \
duke@435 2149 \
coleenp@548 2150 declare_constant(oopSize) \
duke@435 2151 declare_constant(LogBytesPerWord) \
coleenp@4037 2152 declare_constant(BytesPerWord) \
duke@435 2153 declare_constant(BytesPerLong) \
duke@435 2154 \
duke@435 2155 /********************************************/ \
duke@435 2156 /* Generation and Space Hierarchy Constants */ \
duke@435 2157 /********************************************/ \
duke@435 2158 \
duke@435 2159 declare_constant(ageTable::table_size) \
duke@435 2160 \
duke@435 2161 declare_constant(BarrierSet::ModRef) \
duke@435 2162 declare_constant(BarrierSet::CardTableModRef) \
duke@435 2163 declare_constant(BarrierSet::Other) \
duke@435 2164 \
duke@435 2165 declare_constant(BlockOffsetSharedArray::LogN) \
duke@435 2166 declare_constant(BlockOffsetSharedArray::LogN_words) \
duke@435 2167 declare_constant(BlockOffsetSharedArray::N_bytes) \
duke@435 2168 declare_constant(BlockOffsetSharedArray::N_words) \
duke@435 2169 \
duke@435 2170 declare_constant(BlockOffsetArray::N_words) \
duke@435 2171 \
duke@435 2172 declare_constant(CardTableModRefBS::clean_card) \
duke@435 2173 declare_constant(CardTableModRefBS::last_card) \
duke@435 2174 declare_constant(CardTableModRefBS::dirty_card) \
duke@435 2175 declare_constant(CardTableModRefBS::Precise) \
duke@435 2176 declare_constant(CardTableModRefBS::ObjHeadPreciseArray) \
duke@435 2177 declare_constant(CardTableModRefBS::card_shift) \
duke@435 2178 declare_constant(CardTableModRefBS::card_size) \
duke@435 2179 declare_constant(CardTableModRefBS::card_size_in_words) \
duke@435 2180 \
duke@435 2181 declare_constant(CardTableRS::youngergen_card) \
duke@435 2182 \
duke@435 2183 declare_constant(CollectedHeap::Abstract) \
duke@435 2184 declare_constant(CollectedHeap::SharedHeap) \
duke@435 2185 declare_constant(CollectedHeap::GenCollectedHeap) \
duke@435 2186 \
duke@435 2187 declare_constant(GenCollectedHeap::max_gens) \
duke@435 2188 \
duke@435 2189 /* constants from Generation::Name enum */ \
duke@435 2190 \
duke@435 2191 declare_constant(Generation::DefNew) \
duke@435 2192 declare_constant(Generation::MarkSweepCompact) \
duke@435 2193 declare_constant(Generation::Other) \
duke@435 2194 \
duke@435 2195 declare_constant(Generation::LogOfGenGrain) \
duke@435 2196 declare_constant(Generation::GenGrain) \
duke@435 2197 \
duke@435 2198 declare_constant(HeapWordSize) \
duke@435 2199 declare_constant(LogHeapWordSize) \
duke@435 2200 \
duke@435 2201 \
duke@435 2202 /************************/ \
duke@435 2203 /* PerfMemory - jvmstat */ \
duke@435 2204 /************************/ \
duke@435 2205 \
duke@435 2206 declare_preprocessor_constant("PERFDATA_MAJOR_VERSION", PERFDATA_MAJOR_VERSION) \
duke@435 2207 declare_preprocessor_constant("PERFDATA_MINOR_VERSION", PERFDATA_MINOR_VERSION) \
duke@435 2208 declare_preprocessor_constant("PERFDATA_BIG_ENDIAN", PERFDATA_BIG_ENDIAN) \
duke@435 2209 declare_preprocessor_constant("PERFDATA_LITTLE_ENDIAN", PERFDATA_LITTLE_ENDIAN) \
duke@435 2210 \
duke@435 2211 /***************/ \
duke@435 2212 /* SymbolTable */ \
duke@435 2213 /***************/ \
duke@435 2214 \
duke@435 2215 declare_constant(SymbolTable::symbol_table_size) \
duke@435 2216 \
duke@435 2217 /***********************************/ \
duke@435 2218 /* LoaderConstraintTable constants */ \
duke@435 2219 /***********************************/ \
duke@435 2220 \
duke@435 2221 declare_constant(LoaderConstraintTable::_loader_constraint_size) \
duke@435 2222 declare_constant(LoaderConstraintTable::_nof_buckets) \
duke@435 2223 \
duke@435 2224 /************************************************************/ \
duke@435 2225 /* HotSpot specific JVM_ACC constants from global anon enum */ \
duke@435 2226 /************************************************************/ \
duke@435 2227 \
duke@435 2228 declare_constant(JVM_ACC_WRITTEN_FLAGS) \
duke@435 2229 declare_constant(JVM_ACC_MONITOR_MATCH) \
duke@435 2230 declare_constant(JVM_ACC_HAS_MONITOR_BYTECODES) \
duke@435 2231 declare_constant(JVM_ACC_HAS_LOOPS) \
duke@435 2232 declare_constant(JVM_ACC_LOOPS_FLAG_INIT) \
duke@435 2233 declare_constant(JVM_ACC_QUEUED) \
twisti@4111 2234 declare_constant(JVM_ACC_NOT_C2_OSR_COMPILABLE) \
duke@435 2235 declare_constant(JVM_ACC_HAS_LINE_NUMBER_TABLE) \
duke@435 2236 declare_constant(JVM_ACC_HAS_CHECKED_EXCEPTIONS) \
duke@435 2237 declare_constant(JVM_ACC_HAS_JSRS) \
duke@435 2238 declare_constant(JVM_ACC_IS_OLD) \
duke@435 2239 declare_constant(JVM_ACC_IS_OBSOLETE) \
duke@435 2240 declare_constant(JVM_ACC_IS_PREFIXED_NATIVE) \
duke@435 2241 declare_constant(JVM_ACC_HAS_MIRANDA_METHODS) \
duke@435 2242 declare_constant(JVM_ACC_HAS_VANILLA_CONSTRUCTOR) \
duke@435 2243 declare_constant(JVM_ACC_HAS_FINALIZER) \
duke@435 2244 declare_constant(JVM_ACC_IS_CLONEABLE) \
duke@435 2245 declare_constant(JVM_ACC_HAS_LOCAL_VARIABLE_TABLE) \
duke@435 2246 declare_constant(JVM_ACC_PROMOTED_FLAGS) \
duke@435 2247 declare_constant(JVM_ACC_FIELD_ACCESS_WATCHED) \
duke@435 2248 declare_constant(JVM_ACC_FIELD_MODIFICATION_WATCHED) \
duke@435 2249 \
duke@435 2250 /*****************************/ \
duke@435 2251 /* Thread::SuspendFlags enum */ \
duke@435 2252 /*****************************/ \
duke@435 2253 \
duke@435 2254 declare_constant(Thread::_external_suspend) \
duke@435 2255 declare_constant(Thread::_ext_suspended) \
duke@435 2256 declare_constant(Thread::_has_async_exception) \
duke@435 2257 \
duke@435 2258 /*******************/ \
duke@435 2259 /* JavaThreadState */ \
duke@435 2260 /*******************/ \
duke@435 2261 \
duke@435 2262 declare_constant(_thread_uninitialized) \
duke@435 2263 declare_constant(_thread_new) \
duke@435 2264 declare_constant(_thread_new_trans) \
duke@435 2265 declare_constant(_thread_in_native) \
duke@435 2266 declare_constant(_thread_in_native_trans) \
duke@435 2267 declare_constant(_thread_in_vm) \
duke@435 2268 declare_constant(_thread_in_vm_trans) \
duke@435 2269 declare_constant(_thread_in_Java) \
duke@435 2270 declare_constant(_thread_in_Java_trans) \
duke@435 2271 declare_constant(_thread_blocked) \
duke@435 2272 declare_constant(_thread_blocked_trans) \
duke@435 2273 \
duke@435 2274 /******************************/ \
duke@435 2275 /* Klass misc. enum constants */ \
duke@435 2276 /******************************/ \
duke@435 2277 \
duke@435 2278 declare_constant(Klass::_primary_super_limit) \
duke@435 2279 declare_constant(Klass::_lh_instance_slow_path_bit) \
duke@435 2280 declare_constant(Klass::_lh_log2_element_size_shift) \
duke@435 2281 declare_constant(Klass::_lh_element_type_shift) \
duke@435 2282 declare_constant(Klass::_lh_header_size_shift) \
duke@435 2283 declare_constant(Klass::_lh_array_tag_shift) \
duke@435 2284 declare_constant(Klass::_lh_array_tag_type_value) \
duke@435 2285 declare_constant(Klass::_lh_array_tag_obj_value) \
duke@435 2286 \
duke@435 2287 /********************************/ \
coleenp@4037 2288 /* ConstMethod anon-enum */ \
duke@435 2289 /********************************/ \
duke@435 2290 \
coleenp@4037 2291 declare_constant(ConstMethod::_has_linenumber_table) \
coleenp@4037 2292 declare_constant(ConstMethod::_has_checked_exceptions) \
coleenp@4037 2293 declare_constant(ConstMethod::_has_localvariable_table) \
coleenp@4037 2294 declare_constant(ConstMethod::_has_exception_table) \
duke@435 2295 \
duke@435 2296 /*************************************/ \
coleenp@4037 2297 /* InstanceKlass enum */ \
duke@435 2298 /*************************************/ \
duke@435 2299 \
duke@435 2300 \
never@3137 2301 /*************************************/ \
never@3137 2302 /* FieldInfo FieldOffset enum */ \
never@3137 2303 /*************************************/ \
never@3137 2304 \
never@3137 2305 declare_constant(FieldInfo::access_flags_offset) \
never@3137 2306 declare_constant(FieldInfo::name_index_offset) \
never@3137 2307 declare_constant(FieldInfo::signature_index_offset) \
never@3137 2308 declare_constant(FieldInfo::initval_index_offset) \
never@3137 2309 declare_constant(FieldInfo::low_offset) \
never@3137 2310 declare_constant(FieldInfo::high_offset) \
never@3137 2311 declare_constant(FieldInfo::field_slots) \
never@3137 2312 \
duke@435 2313 /************************************************/ \
coleenp@4037 2314 /* InstanceKlass InnerClassAttributeOffset enum */ \
duke@435 2315 /************************************************/ \
duke@435 2316 \
coleenp@4037 2317 declare_constant(InstanceKlass::inner_class_inner_class_info_offset) \
coleenp@4037 2318 declare_constant(InstanceKlass::inner_class_outer_class_info_offset) \
coleenp@4037 2319 declare_constant(InstanceKlass::inner_class_inner_name_offset) \
coleenp@4037 2320 declare_constant(InstanceKlass::inner_class_access_flags_offset) \
coleenp@4037 2321 declare_constant(InstanceKlass::inner_class_next_offset) \
duke@435 2322 \
duke@435 2323 /*********************************/ \
coleenp@4037 2324 /* InstanceKlass ClassState enum */ \
duke@435 2325 /*********************************/ \
duke@435 2326 \
coleenp@4037 2327 declare_constant(InstanceKlass::allocated) \
coleenp@4037 2328 declare_constant(InstanceKlass::loaded) \
coleenp@4037 2329 declare_constant(InstanceKlass::linked) \
coleenp@4037 2330 declare_constant(InstanceKlass::being_initialized) \
coleenp@4037 2331 declare_constant(InstanceKlass::fully_initialized) \
coleenp@4037 2332 declare_constant(InstanceKlass::initialization_error) \
duke@435 2333 \
duke@435 2334 /*********************************/ \
twisti@3969 2335 /* Symbol* - symbol max length */ \
duke@435 2336 /*********************************/ \
duke@435 2337 \
coleenp@2497 2338 declare_constant(Symbol::max_symbol_length) \
duke@435 2339 \
jrose@2268 2340 /*************************************************/ \
coleenp@4037 2341 /* ConstantPool* layout enum for InvokeDynamic */ \
jrose@2268 2342 /*************************************************/ \
jrose@2268 2343 \
coleenp@4037 2344 declare_constant(ConstantPool::_indy_bsm_offset) \
coleenp@4037 2345 declare_constant(ConstantPool::_indy_argc_offset) \
coleenp@4037 2346 declare_constant(ConstantPool::_indy_argv_offset) \
jrose@2268 2347 \
twisti@3969 2348 /********************************/ \
twisti@3969 2349 /* ConstantPoolCacheEntry enums */ \
twisti@3969 2350 /********************************/ \
duke@435 2351 \
twisti@3969 2352 declare_constant(ConstantPoolCacheEntry::is_volatile_shift) \
twisti@3969 2353 declare_constant(ConstantPoolCacheEntry::is_final_shift) \
twisti@3969 2354 declare_constant(ConstantPoolCacheEntry::is_forced_virtual_shift) \
twisti@3969 2355 declare_constant(ConstantPoolCacheEntry::is_vfinal_shift) \
twisti@3969 2356 declare_constant(ConstantPoolCacheEntry::is_field_entry_shift) \
twisti@3969 2357 declare_constant(ConstantPoolCacheEntry::tos_state_shift) \
duke@435 2358 \
duke@435 2359 /***************************************/ \
duke@435 2360 /* java_lang_Thread::ThreadStatus enum */ \
duke@435 2361 /***************************************/ \
duke@435 2362 \
duke@435 2363 declare_constant(java_lang_Thread::NEW) \
duke@435 2364 declare_constant(java_lang_Thread::RUNNABLE) \
duke@435 2365 declare_constant(java_lang_Thread::SLEEPING) \
duke@435 2366 declare_constant(java_lang_Thread::IN_OBJECT_WAIT) \
duke@435 2367 declare_constant(java_lang_Thread::IN_OBJECT_WAIT_TIMED) \
duke@435 2368 declare_constant(java_lang_Thread::PARKED) \
duke@435 2369 declare_constant(java_lang_Thread::PARKED_TIMED) \
duke@435 2370 declare_constant(java_lang_Thread::BLOCKED_ON_MONITOR_ENTER) \
duke@435 2371 declare_constant(java_lang_Thread::TERMINATED) \
duke@435 2372 \
duke@435 2373 /******************************/ \
duke@435 2374 /* Debug info */ \
duke@435 2375 /******************************/ \
duke@435 2376 \
duke@435 2377 declare_constant(Location::OFFSET_MASK) \
duke@435 2378 declare_constant(Location::OFFSET_SHIFT) \
duke@435 2379 declare_constant(Location::TYPE_MASK) \
duke@435 2380 declare_constant(Location::TYPE_SHIFT) \
duke@435 2381 declare_constant(Location::WHERE_MASK) \
duke@435 2382 declare_constant(Location::WHERE_SHIFT) \
duke@435 2383 \
duke@435 2384 /* constants from Location::Type enum */ \
duke@435 2385 \
duke@435 2386 declare_constant(Location::normal) \
duke@435 2387 declare_constant(Location::oop) \
kvn@766 2388 declare_constant(Location::narrowoop) \
duke@435 2389 declare_constant(Location::int_in_long) \
duke@435 2390 declare_constant(Location::lng) \
duke@435 2391 declare_constant(Location::float_in_dbl) \
duke@435 2392 declare_constant(Location::dbl) \
duke@435 2393 declare_constant(Location::addr) \
duke@435 2394 declare_constant(Location::invalid) \
duke@435 2395 \
duke@435 2396 /* constants from Location::Where enum */ \
duke@435 2397 \
duke@435 2398 declare_constant(Location::on_stack) \
duke@435 2399 declare_constant(Location::in_register) \
duke@435 2400 \
never@3138 2401 declare_constant(Deoptimization::Reason_many) \
never@3138 2402 declare_constant(Deoptimization::Reason_none) \
never@3138 2403 declare_constant(Deoptimization::Reason_null_check) \
never@3138 2404 declare_constant(Deoptimization::Reason_null_assert) \
never@3138 2405 declare_constant(Deoptimization::Reason_range_check) \
never@3138 2406 declare_constant(Deoptimization::Reason_class_check) \
never@3138 2407 declare_constant(Deoptimization::Reason_array_check) \
never@3138 2408 declare_constant(Deoptimization::Reason_intrinsic) \
never@3138 2409 declare_constant(Deoptimization::Reason_bimorphic) \
never@3138 2410 declare_constant(Deoptimization::Reason_unloaded) \
never@3138 2411 declare_constant(Deoptimization::Reason_uninitialized) \
never@3138 2412 declare_constant(Deoptimization::Reason_unreached) \
never@3138 2413 declare_constant(Deoptimization::Reason_unhandled) \
never@3138 2414 declare_constant(Deoptimization::Reason_constraint) \
never@3138 2415 declare_constant(Deoptimization::Reason_div0_check) \
never@3138 2416 declare_constant(Deoptimization::Reason_age) \
never@3138 2417 declare_constant(Deoptimization::Reason_predicate) \
never@3138 2418 declare_constant(Deoptimization::Reason_loop_limit_check) \
never@3138 2419 declare_constant(Deoptimization::Reason_LIMIT) \
never@3138 2420 declare_constant(Deoptimization::Reason_RECORDED_LIMIT) \
never@3138 2421 \
duke@435 2422 /*********************/ \
duke@435 2423 /* Matcher (C2 only) */ \
duke@435 2424 /*********************/ \
duke@435 2425 \
duke@435 2426 declare_c2_preprocessor_constant("Matcher::interpreter_frame_pointer_reg", Matcher::interpreter_frame_pointer_reg()) \
duke@435 2427 \
duke@435 2428 /*********************************************/ \
duke@435 2429 /* MethodCompilation (globalDefinitions.hpp) */ \
duke@435 2430 /*********************************************/ \
duke@435 2431 \
duke@435 2432 declare_constant(InvocationEntryBci) \
duke@435 2433 declare_constant(InvalidOSREntryBci) \
duke@435 2434 \
duke@435 2435 /***************/ \
duke@435 2436 /* OopMapValue */ \
duke@435 2437 /***************/ \
duke@435 2438 \
duke@435 2439 declare_constant(OopMapValue::type_bits) \
duke@435 2440 declare_constant(OopMapValue::register_bits) \
duke@435 2441 declare_constant(OopMapValue::type_shift) \
duke@435 2442 declare_constant(OopMapValue::register_shift) \
duke@435 2443 declare_constant(OopMapValue::type_mask) \
duke@435 2444 declare_constant(OopMapValue::type_mask_in_place) \
duke@435 2445 declare_constant(OopMapValue::register_mask) \
duke@435 2446 declare_constant(OopMapValue::register_mask_in_place) \
duke@435 2447 declare_constant(OopMapValue::unused_value) \
duke@435 2448 declare_constant(OopMapValue::oop_value) \
duke@435 2449 declare_constant(OopMapValue::value_value) \
coleenp@548 2450 declare_constant(OopMapValue::narrowoop_value) \
duke@435 2451 declare_constant(OopMapValue::callee_saved_value) \
duke@435 2452 declare_constant(OopMapValue::derived_oop_value) \
duke@435 2453 \
duke@435 2454 /******************/ \
duke@435 2455 /* JNIHandleBlock */ \
duke@435 2456 /******************/ \
duke@435 2457 \
duke@435 2458 declare_constant(JNIHandleBlock::block_size_in_oops) \
duke@435 2459 \
duke@435 2460 /**********************/ \
duke@435 2461 /* ObjectSynchronizer */ \
duke@435 2462 /**********************/ \
duke@435 2463 \
duke@435 2464 declare_constant(ObjectSynchronizer::_BLOCKSIZE) \
duke@435 2465 \
never@3108 2466 /**********************/ \
never@3108 2467 /* PcDesc */ \
never@3108 2468 /**********************/ \
never@3108 2469 \
never@3108 2470 declare_constant(PcDesc::PCDESC_reexecute) \
never@3108 2471 declare_constant(PcDesc::PCDESC_is_method_handle_invoke) \
never@3108 2472 declare_constant(PcDesc::PCDESC_return_oop) \
never@3108 2473 \
never@3108 2474 /**********************/ \
never@3108 2475 /* frame */ \
never@3108 2476 /**********************/ \
never@3108 2477 \
twisti@4237 2478 NOT_ZERO(X86_ONLY(declare_constant(frame::entry_frame_call_wrapper_offset))) \
never@3108 2479 declare_constant(frame::pc_return_offset) \
never@3108 2480 \
never@3158 2481 /*************/ \
never@3158 2482 /* vmSymbols */ \
never@3158 2483 /*************/ \
never@3158 2484 \
never@3158 2485 declare_constant(vmSymbols::FIRST_SID) \
never@3158 2486 declare_constant(vmSymbols::SID_LIMIT) \
never@3158 2487 \
duke@435 2488 /********************************/ \
duke@435 2489 /* Calling convention constants */ \
duke@435 2490 /********************************/ \
duke@435 2491 \
duke@435 2492 declare_constant(RegisterImpl::number_of_registers) \
duke@435 2493 declare_constant(ConcreteRegisterImpl::number_of_registers) \
duke@435 2494 declare_preprocessor_constant("REG_COUNT", REG_COUNT) \
duke@435 2495 declare_c2_preprocessor_constant("SAVED_ON_ENTRY_REG_COUNT", SAVED_ON_ENTRY_REG_COUNT) \
duke@435 2496 declare_c2_preprocessor_constant("C_SAVED_ON_ENTRY_REG_COUNT", C_SAVED_ON_ENTRY_REG_COUNT)
duke@435 2497
duke@435 2498 /* NOTE that we do not use the last_entry() macro here; it is used */
duke@435 2499 /* in vmStructs_<os>_<cpu>.hpp's VM_INT_CONSTANTS_OS_CPU macro (and */
duke@435 2500 /* must be present there) */
duke@435 2501
duke@435 2502 //--------------------------------------------------------------------------------
duke@435 2503 // VM_LONG_CONSTANTS
duke@435 2504 //
duke@435 2505 // This table contains long constants required over in the
duke@435 2506 // serviceability agent. The "declare_constant" macro is used for all
duke@435 2507 // enums, etc., while "declare_preprocessor_constant" must be used for
duke@435 2508 // all #defined constants.
duke@435 2509
duke@435 2510 #define VM_LONG_CONSTANTS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant, last_entry) \
duke@435 2511 \
duke@435 2512 /*********************/ \
duke@435 2513 /* MarkOop constants */ \
duke@435 2514 /*********************/ \
duke@435 2515 \
duke@435 2516 /* Note: some of these are declared as long constants just for */ \
duke@435 2517 /* consistency. The mask constants are the only ones requiring */ \
duke@435 2518 /* 64 bits (on 64-bit platforms). */ \
duke@435 2519 \
duke@435 2520 declare_constant(markOopDesc::age_bits) \
duke@435 2521 declare_constant(markOopDesc::lock_bits) \
duke@435 2522 declare_constant(markOopDesc::biased_lock_bits) \
duke@435 2523 declare_constant(markOopDesc::max_hash_bits) \
duke@435 2524 declare_constant(markOopDesc::hash_bits) \
duke@435 2525 \
duke@435 2526 declare_constant(markOopDesc::lock_shift) \
duke@435 2527 declare_constant(markOopDesc::biased_lock_shift) \
duke@435 2528 declare_constant(markOopDesc::age_shift) \
duke@435 2529 declare_constant(markOopDesc::hash_shift) \
duke@435 2530 \
duke@435 2531 declare_constant(markOopDesc::lock_mask) \
duke@435 2532 declare_constant(markOopDesc::lock_mask_in_place) \
duke@435 2533 declare_constant(markOopDesc::biased_lock_mask) \
duke@435 2534 declare_constant(markOopDesc::biased_lock_mask_in_place) \
duke@435 2535 declare_constant(markOopDesc::biased_lock_bit_in_place) \
duke@435 2536 declare_constant(markOopDesc::age_mask) \
duke@435 2537 declare_constant(markOopDesc::age_mask_in_place) \
duke@435 2538 declare_constant(markOopDesc::hash_mask) \
duke@435 2539 declare_constant(markOopDesc::hash_mask_in_place) \
duke@435 2540 declare_constant(markOopDesc::biased_lock_alignment) \
duke@435 2541 \
duke@435 2542 declare_constant(markOopDesc::locked_value) \
duke@435 2543 declare_constant(markOopDesc::unlocked_value) \
duke@435 2544 declare_constant(markOopDesc::monitor_value) \
duke@435 2545 declare_constant(markOopDesc::marked_value) \
duke@435 2546 declare_constant(markOopDesc::biased_lock_pattern) \
duke@435 2547 \
duke@435 2548 declare_constant(markOopDesc::no_hash) \
duke@435 2549 declare_constant(markOopDesc::no_hash_in_place) \
duke@435 2550 declare_constant(markOopDesc::no_lock_in_place) \
coleenp@622 2551 declare_constant(markOopDesc::max_age) \
coleenp@622 2552 \
coleenp@622 2553 /* Constants in markOop used by CMS. */ \
coleenp@622 2554 declare_constant(markOopDesc::cms_shift) \
coleenp@622 2555 declare_constant(markOopDesc::cms_mask) \
coleenp@622 2556 declare_constant(markOopDesc::size_shift) \
duke@435 2557
duke@435 2558 /* NOTE that we do not use the last_entry() macro here; it is used */
duke@435 2559 /* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and */
duke@435 2560 /* must be present there) */
duke@435 2561
duke@435 2562
duke@435 2563 //--------------------------------------------------------------------------------
duke@435 2564 // Macros operating on the above lists
duke@435 2565 //--------------------------------------------------------------------------------
duke@435 2566
duke@435 2567 // This utility macro quotes the passed string
duke@435 2568 #define QUOTE(x) #x
duke@435 2569
duke@435 2570 //--------------------------------------------------------------------------------
duke@435 2571 // VMStructEntry macros
duke@435 2572 //
duke@435 2573
duke@435 2574 // This macro generates a VMStructEntry line for a nonstatic field
duke@435 2575 #define GENERATE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
duke@435 2576 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL },
duke@435 2577
duke@435 2578 // This macro generates a VMStructEntry line for a static field
duke@435 2579 #define GENERATE_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
duke@435 2580 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 1, 0, &typeName::fieldName },
duke@435 2581
duke@435 2582 // This macro generates a VMStructEntry line for an unchecked
duke@435 2583 // nonstatic field, in which the size of the type is also specified.
duke@435 2584 // The type string is given as NULL, indicating an "opaque" type.
duke@435 2585 #define GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, size) \
duke@435 2586 { QUOTE(typeName), QUOTE(fieldName), NULL, 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL },
duke@435 2587
duke@435 2588 // This macro generates a VMStructEntry line for an unchecked
duke@435 2589 // static field, in which the size of the type is also specified.
duke@435 2590 // The type string is given as NULL, indicating an "opaque" type.
duke@435 2591 #define GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, size) \
duke@435 2592 { QUOTE(typeName), QUOTE(fieldName), NULL, 1, 0, (void*) &typeName::fieldName },
duke@435 2593
duke@435 2594 // This macro generates the sentinel value indicating the end of the list
duke@435 2595 #define GENERATE_VM_STRUCT_LAST_ENTRY() \
duke@435 2596 { NULL, NULL, NULL, 0, 0, NULL }
duke@435 2597
duke@435 2598 // This macro checks the type of a VMStructEntry by comparing pointer types
duke@435 2599 #define CHECK_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
duke@435 2600 {typeName *dummyObj = NULL; type* dummy = &dummyObj->fieldName; }
duke@435 2601
duke@435 2602 // This macro checks the type of a volatile VMStructEntry by comparing pointer types
duke@435 2603 #define CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
duke@435 2604 {typedef type dummyvtype; typeName *dummyObj = NULL; volatile dummyvtype* dummy = &dummyObj->fieldName; }
duke@435 2605
duke@435 2606 // This macro checks the type of a VMStructEntry by comparing pointer types
duke@435 2607 #define CHECK_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
duke@435 2608 {type* dummy = &typeName::fieldName; }
duke@435 2609
duke@435 2610 // This macro ensures the type of a field and its containing type are
duke@435 2611 // present in the type table. The assertion string is shorter than
duke@435 2612 // preferable because (incredibly) of a bug in Solstice NFS client
duke@435 2613 // which seems to prevent very long lines from compiling. This assertion
duke@435 2614 // means that an entry in VMStructs::localHotSpotVMStructs[] was not
duke@435 2615 // found in VMStructs::localHotSpotVMTypes[].
duke@435 2616 #define ENSURE_FIELD_TYPE_PRESENT(typeName, fieldName, type) \
duke@435 2617 { assert(findType(QUOTE(typeName)) != 0, "type \"" QUOTE(typeName) "\" not found in type table"); \
duke@435 2618 assert(findType(QUOTE(type)) != 0, "type \"" QUOTE(type) "\" not found in type table"); }
duke@435 2619
duke@435 2620 // This is a no-op macro for unchecked fields
duke@435 2621 #define CHECK_NO_OP(a, b, c)
duke@435 2622
duke@435 2623 // This is a no-op macro for the sentinel value
duke@435 2624 #define CHECK_SENTINEL()
duke@435 2625
duke@435 2626 //
duke@435 2627 // Build-specific macros:
duke@435 2628 //
duke@435 2629
duke@435 2630 // Generate and check a nonstatic field in non-product builds
duke@435 2631 #ifndef PRODUCT
duke@435 2632 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2633 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2634 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2635 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2636 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2637 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2638 #else
duke@435 2639 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2640 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2641 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2642 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2643 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2644 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2645 #endif /* PRODUCT */
duke@435 2646
duke@435 2647 // Generate and check a nonstatic field in C1 builds
duke@435 2648 #ifdef COMPILER1
duke@435 2649 # define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2650 # define CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2651 # define ENSURE_C1_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2652 #else
duke@435 2653 # define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2654 # define CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2655 # define ENSURE_C1_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2656 #endif /* COMPILER1 */
duke@435 2657 // Generate and check a nonstatic field in C2 builds
duke@435 2658 #ifdef COMPILER2
duke@435 2659 # define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2660 # define CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2661 # define ENSURE_C2_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2662 #else
duke@435 2663 # define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2664 # define CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2665 # define ENSURE_C2_FIELD_TYPE_PRESENT(a, b, c)
duke@435 2666 #endif /* COMPILER2 */
duke@435 2667
duke@435 2668 // Generate but do not check a static field in C1 builds
duke@435 2669 #ifdef COMPILER1
duke@435 2670 # define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2671 #else
duke@435 2672 # define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2673 #endif /* COMPILER1 */
duke@435 2674
duke@435 2675 // Generate but do not check a static field in C2 builds
duke@435 2676 #ifdef COMPILER2
duke@435 2677 # define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2678 #else
duke@435 2679 # define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
duke@435 2680 #endif /* COMPILER2 */
duke@435 2681
duke@435 2682 //--------------------------------------------------------------------------------
duke@435 2683 // VMTypeEntry macros
duke@435 2684 //
duke@435 2685
duke@435 2686 #define GENERATE_VM_TYPE_ENTRY(type, superclass) \
duke@435 2687 { QUOTE(type), QUOTE(superclass), 0, 0, 0, sizeof(type) },
duke@435 2688
duke@435 2689 #define GENERATE_TOPLEVEL_VM_TYPE_ENTRY(type) \
duke@435 2690 { QUOTE(type), NULL, 0, 0, 0, sizeof(type) },
duke@435 2691
duke@435 2692 #define GENERATE_OOP_VM_TYPE_ENTRY(type) \
duke@435 2693 { QUOTE(type), NULL, 1, 0, 0, sizeof(type) },
duke@435 2694
duke@435 2695 #define GENERATE_INTEGER_VM_TYPE_ENTRY(type) \
duke@435 2696 { QUOTE(type), NULL, 0, 1, 0, sizeof(type) },
duke@435 2697
duke@435 2698 #define GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY(type) \
duke@435 2699 { QUOTE(type), NULL, 0, 1, 1, sizeof(type) },
duke@435 2700
duke@435 2701 #define GENERATE_VM_TYPE_LAST_ENTRY() \
duke@435 2702 { NULL, NULL, 0, 0, 0, 0 }
duke@435 2703
duke@435 2704 #define CHECK_VM_TYPE_ENTRY(type, superclass) \
duke@435 2705 { type* dummyObj = NULL; superclass* dummySuperObj = dummyObj; }
duke@435 2706
duke@435 2707 #define CHECK_VM_TYPE_NO_OP(a)
duke@435 2708 #define CHECK_SINGLE_ARG_VM_TYPE_NO_OP(a)
duke@435 2709
duke@435 2710 //
duke@435 2711 // Build-specific macros:
duke@435 2712 //
duke@435 2713
duke@435 2714 #ifdef COMPILER1
duke@435 2715 # define GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY(a) GENERATE_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2716 # define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2717 #else
duke@435 2718 # define GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2719 # define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2720 #endif /* COMPILER1 */
duke@435 2721
duke@435 2722 #ifdef COMPILER2
duke@435 2723 # define GENERATE_C2_VM_TYPE_ENTRY(a, b) GENERATE_VM_TYPE_ENTRY(a, b)
duke@435 2724 # define CHECK_C2_VM_TYPE_ENTRY(a, b) CHECK_VM_TYPE_ENTRY(a, b)
duke@435 2725 # define GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY(a) GENERATE_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2726 # define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2727 #else
duke@435 2728 # define GENERATE_C2_VM_TYPE_ENTRY(a, b)
duke@435 2729 # define CHECK_C2_VM_TYPE_ENTRY(a, b)
duke@435 2730 # define GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2731 # define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a)
duke@435 2732 #endif /* COMPILER2 */
duke@435 2733
duke@435 2734
duke@435 2735 //--------------------------------------------------------------------------------
duke@435 2736 // VMIntConstantEntry macros
duke@435 2737 //
duke@435 2738
duke@435 2739 #define GENERATE_VM_INT_CONSTANT_ENTRY(name) \
duke@435 2740 { QUOTE(name), (int32_t) name },
duke@435 2741
duke@435 2742 #define GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) \
duke@435 2743 { name, (int32_t) value },
duke@435 2744
duke@435 2745 // This macro generates the sentinel value indicating the end of the list
duke@435 2746 #define GENERATE_VM_INT_CONSTANT_LAST_ENTRY() \
duke@435 2747 { NULL, 0 }
duke@435 2748
duke@435 2749
duke@435 2750 // Generate an int constant for a C1 build
duke@435 2751 #ifdef COMPILER1
duke@435 2752 # define GENERATE_C1_VM_INT_CONSTANT_ENTRY(name) GENERATE_VM_INT_CONSTANT_ENTRY(name)
duke@435 2753 #else
duke@435 2754 # define GENERATE_C1_VM_INT_CONSTANT_ENTRY(name)
duke@435 2755 #endif /* COMPILER1 */
duke@435 2756
duke@435 2757 // Generate an int constant for a C2 build
duke@435 2758 #ifdef COMPILER2
duke@435 2759 # define GENERATE_C2_VM_INT_CONSTANT_ENTRY(name) GENERATE_VM_INT_CONSTANT_ENTRY(name)
duke@435 2760 # define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value)
duke@435 2761 #else
duke@435 2762 # define GENERATE_C2_VM_INT_CONSTANT_ENTRY(name)
duke@435 2763 # define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value)
duke@435 2764 #endif /* COMPILER1 */
duke@435 2765
duke@435 2766 //--------------------------------------------------------------------------------
duke@435 2767 // VMLongConstantEntry macros
duke@435 2768 //
duke@435 2769
duke@435 2770 #define GENERATE_VM_LONG_CONSTANT_ENTRY(name) \
duke@435 2771 { QUOTE(name), cast_uint64_t(name) },
duke@435 2772
duke@435 2773 #define GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) \
duke@435 2774 { name, cast_uint64_t(value) },
duke@435 2775
duke@435 2776 // This macro generates the sentinel value indicating the end of the list
duke@435 2777 #define GENERATE_VM_LONG_CONSTANT_LAST_ENTRY() \
duke@435 2778 { NULL, 0 }
duke@435 2779
duke@435 2780 // Generate a long constant for a C1 build
duke@435 2781 #ifdef COMPILER1
duke@435 2782 # define GENERATE_C1_VM_LONG_CONSTANT_ENTRY(name) GENERATE_VM_LONG_CONSTANT_ENTRY(name)
duke@435 2783 #else
duke@435 2784 # define GENERATE_C1_VM_LONG_CONSTANT_ENTRY(name)
duke@435 2785 #endif /* COMPILER1 */
duke@435 2786
duke@435 2787 // Generate a long constant for a C2 build
duke@435 2788 #ifdef COMPILER2
duke@435 2789 # define GENERATE_C2_VM_LONG_CONSTANT_ENTRY(name) GENERATE_VM_LONG_CONSTANT_ENTRY(name)
duke@435 2790 # define GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value)
duke@435 2791 #else
duke@435 2792 # define GENERATE_C2_VM_LONG_CONSTANT_ENTRY(name)
duke@435 2793 # define GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value)
duke@435 2794 #endif /* COMPILER1 */
duke@435 2795
duke@435 2796 //
duke@435 2797 // Instantiation of VMStructEntries, VMTypeEntries and VMIntConstantEntries
duke@435 2798 //
duke@435 2799
duke@435 2800 // These initializers are allowed to access private fields in classes
duke@435 2801 // as long as class VMStructs is a friend
duke@435 2802 VMStructEntry VMStructs::localHotSpotVMStructs[] = {
duke@435 2803
duke@435 2804 VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2805 GENERATE_STATIC_VM_STRUCT_ENTRY, \
duke@435 2806 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2807 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2808 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2809 GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2810 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2811 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
duke@435 2812 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
duke@435 2813 GENERATE_VM_STRUCT_LAST_ENTRY)
duke@435 2814
duke@435 2815 #ifndef SERIALGC
duke@435 2816 VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2817 GENERATE_STATIC_VM_STRUCT_ENTRY)
duke@435 2818
duke@435 2819 VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
coleenp@622 2820 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2821 GENERATE_STATIC_VM_STRUCT_ENTRY)
tonyp@3168 2822
tonyp@3168 2823 VM_STRUCTS_G1(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
tonyp@3168 2824 GENERATE_STATIC_VM_STRUCT_ENTRY)
duke@435 2825 #endif // SERIALGC
duke@435 2826
duke@435 2827 VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2828 GENERATE_STATIC_VM_STRUCT_ENTRY, \
duke@435 2829 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2830 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2831 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2832 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2833 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
duke@435 2834 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
duke@435 2835 GENERATE_VM_STRUCT_LAST_ENTRY)
duke@435 2836
duke@435 2837 VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2838 GENERATE_STATIC_VM_STRUCT_ENTRY, \
duke@435 2839 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2840 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2841 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2842 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
duke@435 2843 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
duke@435 2844 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
duke@435 2845 GENERATE_VM_STRUCT_LAST_ENTRY)
duke@435 2846 };
duke@435 2847
duke@435 2848 VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
duke@435 2849
duke@435 2850 VM_TYPES(GENERATE_VM_TYPE_ENTRY,
duke@435 2851 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2852 GENERATE_OOP_VM_TYPE_ENTRY,
duke@435 2853 GENERATE_INTEGER_VM_TYPE_ENTRY,
duke@435 2854 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
duke@435 2855 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2856 GENERATE_C2_VM_TYPE_ENTRY,
duke@435 2857 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2858 GENERATE_VM_TYPE_LAST_ENTRY)
duke@435 2859
duke@435 2860 #ifndef SERIALGC
duke@435 2861 VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY,
duke@435 2862 GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
duke@435 2863
duke@435 2864 VM_TYPES_CMS(GENERATE_VM_TYPE_ENTRY,
duke@435 2865 GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
duke@435 2866
duke@435 2867 VM_TYPES_PARNEW(GENERATE_VM_TYPE_ENTRY)
tonyp@3168 2868
tonyp@3168 2869 VM_TYPES_G1(GENERATE_VM_TYPE_ENTRY,
tonyp@3168 2870 GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
duke@435 2871 #endif // SERIALGC
duke@435 2872
duke@435 2873 VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY,
duke@435 2874 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2875 GENERATE_OOP_VM_TYPE_ENTRY,
duke@435 2876 GENERATE_INTEGER_VM_TYPE_ENTRY,
duke@435 2877 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
duke@435 2878 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2879 GENERATE_C2_VM_TYPE_ENTRY,
duke@435 2880 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2881 GENERATE_VM_TYPE_LAST_ENTRY)
duke@435 2882
duke@435 2883 VM_TYPES_OS_CPU(GENERATE_VM_TYPE_ENTRY,
duke@435 2884 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2885 GENERATE_OOP_VM_TYPE_ENTRY,
duke@435 2886 GENERATE_INTEGER_VM_TYPE_ENTRY,
duke@435 2887 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
duke@435 2888 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2889 GENERATE_C2_VM_TYPE_ENTRY,
duke@435 2890 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 2891 GENERATE_VM_TYPE_LAST_ENTRY)
duke@435 2892 };
duke@435 2893
duke@435 2894 VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
duke@435 2895
duke@435 2896 VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY,
duke@435 2897 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
duke@435 2898 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
duke@435 2899 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
duke@435 2900 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
duke@435 2901 GENERATE_VM_INT_CONSTANT_LAST_ENTRY)
duke@435 2902
duke@435 2903 #ifndef SERIALGC
duke@435 2904 VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY)
duke@435 2905
duke@435 2906 VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY)
duke@435 2907 #endif // SERIALGC
duke@435 2908
duke@435 2909 VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
duke@435 2910 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
duke@435 2911 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
duke@435 2912 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
duke@435 2913 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
duke@435 2914 GENERATE_VM_INT_CONSTANT_LAST_ENTRY)
duke@435 2915
duke@435 2916 VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
duke@435 2917 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
duke@435 2918 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
duke@435 2919 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
duke@435 2920 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
duke@435 2921 GENERATE_VM_INT_CONSTANT_LAST_ENTRY)
duke@435 2922 };
duke@435 2923
duke@435 2924 VMLongConstantEntry VMStructs::localHotSpotVMLongConstants[] = {
duke@435 2925
duke@435 2926 VM_LONG_CONSTANTS(GENERATE_VM_LONG_CONSTANT_ENTRY,
duke@435 2927 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
duke@435 2928 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
duke@435 2929 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
duke@435 2930 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
duke@435 2931 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY)
duke@435 2932
duke@435 2933 VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
duke@435 2934 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
duke@435 2935 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
duke@435 2936 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
duke@435 2937 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
duke@435 2938 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY)
duke@435 2939
duke@435 2940 VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
duke@435 2941 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
duke@435 2942 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
duke@435 2943 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
duke@435 2944 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
duke@435 2945 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY)
duke@435 2946 };
duke@435 2947
duke@435 2948 // This is used both to check the types of referenced fields and, in
duke@435 2949 // debug builds, to ensure that all of the field types are present.
duke@435 2950 void
duke@435 2951 VMStructs::init() {
duke@435 2952 VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2953 CHECK_STATIC_VM_STRUCT_ENTRY,
duke@435 2954 CHECK_NO_OP,
duke@435 2955 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2956 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2957 CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2958 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2959 CHECK_NO_OP,
duke@435 2960 CHECK_NO_OP,
duke@435 2961 CHECK_SENTINEL);
duke@435 2962
duke@435 2963 #ifndef SERIALGC
duke@435 2964 VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2965 CHECK_STATIC_VM_STRUCT_ENTRY);
duke@435 2966
duke@435 2967 VM_STRUCTS_CMS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
coleenp@622 2968 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2969 CHECK_STATIC_VM_STRUCT_ENTRY);
tonyp@3168 2970
tonyp@3168 2971 VM_STRUCTS_G1(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
tonyp@3168 2972 CHECK_STATIC_VM_STRUCT_ENTRY);
duke@435 2973 #endif // SERIALGC
duke@435 2974
duke@435 2975 VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2976 CHECK_STATIC_VM_STRUCT_ENTRY,
duke@435 2977 CHECK_NO_OP,
duke@435 2978 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2979 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2980 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2981 CHECK_NO_OP,
duke@435 2982 CHECK_NO_OP,
duke@435 2983 CHECK_SENTINEL);
duke@435 2984
duke@435 2985 VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2986 CHECK_STATIC_VM_STRUCT_ENTRY,
duke@435 2987 CHECK_NO_OP,
duke@435 2988 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2989 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2990 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
duke@435 2991 CHECK_NO_OP,
duke@435 2992 CHECK_NO_OP,
duke@435 2993 CHECK_SENTINEL);
duke@435 2994
duke@435 2995 VM_TYPES(CHECK_VM_TYPE_ENTRY,
duke@435 2996 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 2997 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 2998 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 2999 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3000 CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 3001 CHECK_C2_VM_TYPE_ENTRY,
duke@435 3002 CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 3003 CHECK_SENTINEL);
duke@435 3004
duke@435 3005 #ifndef SERIALGC
duke@435 3006 VM_TYPES_PARALLELGC(CHECK_VM_TYPE_ENTRY,
duke@435 3007 CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
duke@435 3008
duke@435 3009 VM_TYPES_CMS(CHECK_VM_TYPE_ENTRY,
duke@435 3010 CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
duke@435 3011
duke@435 3012 VM_TYPES_PARNEW(CHECK_VM_TYPE_ENTRY)
tonyp@3168 3013
tonyp@3168 3014 VM_TYPES_G1(CHECK_VM_TYPE_ENTRY,
tonyp@3168 3015 CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
duke@435 3016 #endif // SERIALGC
duke@435 3017
duke@435 3018 VM_TYPES_CPU(CHECK_VM_TYPE_ENTRY,
duke@435 3019 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3020 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3021 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3022 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3023 CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 3024 CHECK_C2_VM_TYPE_ENTRY,
duke@435 3025 CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 3026 CHECK_SENTINEL);
duke@435 3027
duke@435 3028 VM_TYPES_OS_CPU(CHECK_VM_TYPE_ENTRY,
duke@435 3029 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3030 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3031 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3032 CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
duke@435 3033 CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 3034 CHECK_C2_VM_TYPE_ENTRY,
duke@435 3035 CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY,
duke@435 3036 CHECK_SENTINEL);
duke@435 3037
duke@435 3038 //
duke@435 3039 // Split VM_STRUCTS() invocation into two parts to allow MS VC++ 6.0
duke@435 3040 // to build with the source mounted over SNC3.2. Symptom was that
duke@435 3041 // debug build failed with an internal compiler error. Has been seen
duke@435 3042 // mounting sources from Solaris 2.6 and 2.7 hosts, but so far not
duke@435 3043 // 2.8 hosts. Appears to occur because line is too long.
duke@435 3044 //
duke@435 3045 // If an assertion failure is triggered here it means that an entry
duke@435 3046 // in VMStructs::localHotSpotVMStructs[] was not found in
duke@435 3047 // VMStructs::localHotSpotVMTypes[]. (The assertion itself had to be
duke@435 3048 // made less descriptive because of this above bug -- see the
duke@435 3049 // definition of ENSURE_FIELD_TYPE_PRESENT.)
duke@435 3050 //
duke@435 3051 // NOTE: taken out because this was just not working on everyone's
duke@435 3052 // Solstice NFS setup. If everyone switches to local workspaces on
duke@435 3053 // Win32, we can put this back in.
duke@435 3054 #ifndef _WINDOWS
duke@435 3055 debug_only(VM_STRUCTS(ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3056 CHECK_NO_OP, \
duke@435 3057 CHECK_NO_OP, \
duke@435 3058 CHECK_NO_OP, \
duke@435 3059 CHECK_NO_OP, \
duke@435 3060 CHECK_NO_OP, \
duke@435 3061 CHECK_NO_OP, \
duke@435 3062 CHECK_NO_OP, \
duke@435 3063 CHECK_NO_OP, \
duke@435 3064 CHECK_SENTINEL));
duke@435 3065 debug_only(VM_STRUCTS(CHECK_NO_OP, \
duke@435 3066 ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3067 CHECK_NO_OP, \
duke@435 3068 ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3069 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
duke@435 3070 ENSURE_C1_FIELD_TYPE_PRESENT, \
duke@435 3071 ENSURE_C2_FIELD_TYPE_PRESENT, \
duke@435 3072 CHECK_NO_OP, \
duke@435 3073 CHECK_NO_OP, \
duke@435 3074 CHECK_SENTINEL));
duke@435 3075 #ifndef SERIALGC
duke@435 3076 debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3077 ENSURE_FIELD_TYPE_PRESENT));
duke@435 3078 debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT, \
coleenp@622 3079 ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3080 ENSURE_FIELD_TYPE_PRESENT));
tonyp@3168 3081 debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT, \
tonyp@3168 3082 ENSURE_FIELD_TYPE_PRESENT));
duke@435 3083 #endif // SERIALGC
duke@435 3084 debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3085 ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3086 CHECK_NO_OP, \
duke@435 3087 ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3088 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
duke@435 3089 ENSURE_C2_FIELD_TYPE_PRESENT, \
duke@435 3090 CHECK_NO_OP, \
duke@435 3091 CHECK_NO_OP, \
duke@435 3092 CHECK_SENTINEL));
duke@435 3093 debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3094 ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3095 CHECK_NO_OP, \
duke@435 3096 ENSURE_FIELD_TYPE_PRESENT, \
duke@435 3097 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
duke@435 3098 ENSURE_C2_FIELD_TYPE_PRESENT, \
duke@435 3099 CHECK_NO_OP, \
duke@435 3100 CHECK_NO_OP, \
duke@435 3101 CHECK_SENTINEL));
duke@435 3102 #endif
duke@435 3103 }
duke@435 3104
duke@435 3105 extern "C" {
duke@435 3106
duke@435 3107 // see comments on cast_uint64_t at the top of this file
duke@435 3108 #define ASSIGN_CONST_TO_64BIT_VAR(var, expr) \
duke@435 3109 JNIEXPORT uint64_t var = cast_uint64_t(expr);
duke@435 3110 #define ASSIGN_OFFSET_TO_64BIT_VAR(var, type, field) \
duke@435 3111 ASSIGN_CONST_TO_64BIT_VAR(var, offset_of(type, field))
duke@435 3112 #define ASSIGN_STRIDE_TO_64BIT_VAR(var, array) \
duke@435 3113 ASSIGN_CONST_TO_64BIT_VAR(var, (char*)&array[1] - (char*)&array[0])
duke@435 3114
duke@435 3115 JNIEXPORT VMStructEntry* gHotSpotVMStructs = VMStructs::localHotSpotVMStructs;
duke@435 3116 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryTypeNameOffset, VMStructEntry, typeName);
duke@435 3117 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryFieldNameOffset, VMStructEntry, fieldName);
duke@435 3118 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryTypeStringOffset, VMStructEntry, typeString);
duke@435 3119 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryIsStaticOffset, VMStructEntry, isStatic);
duke@435 3120 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryOffsetOffset, VMStructEntry, offset);
duke@435 3121 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryAddressOffset, VMStructEntry, address);
duke@435 3122 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMStructEntryArrayStride, gHotSpotVMStructs);
duke@435 3123 JNIEXPORT VMTypeEntry* gHotSpotVMTypes = VMStructs::localHotSpotVMTypes;
duke@435 3124 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryTypeNameOffset, VMTypeEntry, typeName);
duke@435 3125 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySuperclassNameOffset, VMTypeEntry, superclassName);
duke@435 3126 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsOopTypeOffset, VMTypeEntry, isOopType);
duke@435 3127 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsIntegerTypeOffset, VMTypeEntry, isIntegerType);
duke@435 3128 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsUnsignedOffset, VMTypeEntry, isUnsigned);
duke@435 3129 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySizeOffset, VMTypeEntry, size);
duke@435 3130 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMTypeEntryArrayStride,gHotSpotVMTypes);
duke@435 3131 JNIEXPORT VMIntConstantEntry* gHotSpotVMIntConstants = VMStructs::localHotSpotVMIntConstants;
duke@435 3132 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryNameOffset, VMIntConstantEntry, name);
duke@435 3133 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryValueOffset, VMIntConstantEntry, value);
duke@435 3134 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMIntConstantEntryArrayStride, gHotSpotVMIntConstants);
duke@435 3135 JNIEXPORT VMLongConstantEntry* gHotSpotVMLongConstants = VMStructs::localHotSpotVMLongConstants;
duke@435 3136 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryNameOffset, VMLongConstantEntry, name);
duke@435 3137 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryValueOffset, VMLongConstantEntry, value);
duke@435 3138 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLongConstants);
duke@435 3139 }
duke@435 3140
duke@435 3141 #ifdef ASSERT
coleenp@2497 3142 static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool isRecurse) {
coleenp@2497 3143 {
coleenp@2497 3144 VMTypeEntry* types = origtypes;
coleenp@2497 3145 while (types->typeName != NULL) {
never@3138 3146 if (strcmp(typeName, types->typeName) == 0) {
never@3138 3147 // Found it
coleenp@2497 3148 return 1;
coleenp@2497 3149 }
coleenp@2497 3150 ++types;
coleenp@2497 3151 }
coleenp@2497 3152 }
never@3138 3153 // Search for the base type by peeling off const and *
coleenp@2497 3154 size_t len = strlen(typeName);
coleenp@2497 3155 if (typeName[len-1] == '*') {
coleenp@2497 3156 char * s = new char[len];
coleenp@2497 3157 strncpy(s, typeName, len - 1);
coleenp@2497 3158 s[len-1] = '\0';
coleenp@2497 3159 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
coleenp@2497 3160 if (recursiveFindType(origtypes, s, true) == 1) {
coleenp@2497 3161 delete s;
coleenp@2497 3162 return 1;
coleenp@2497 3163 }
coleenp@2497 3164 delete s;
coleenp@2497 3165 }
coleenp@4037 3166 const char* start = NULL;
coleenp@2497 3167 if (strstr(typeName, "GrowableArray<") == typeName) {
coleenp@4037 3168 start = typeName + strlen("GrowableArray<");
coleenp@4037 3169 } else if (strstr(typeName, "Array<") == typeName) {
coleenp@4037 3170 start = typeName + strlen("Array<");
coleenp@4037 3171 }
coleenp@4037 3172 if (start != NULL) {
coleenp@2497 3173 const char * end = strrchr(typeName, '>');
coleenp@2497 3174 int len = end - start + 1;
coleenp@2497 3175 char * s = new char[len];
coleenp@2497 3176 strncpy(s, start, len - 1);
coleenp@2497 3177 s[len-1] = '\0';
coleenp@2497 3178 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
coleenp@2497 3179 if (recursiveFindType(origtypes, s, true) == 1) {
coleenp@2497 3180 delete s;
coleenp@2497 3181 return 1;
coleenp@2497 3182 }
coleenp@2497 3183 delete s;
coleenp@2497 3184 }
coleenp@2497 3185 if (strstr(typeName, "const ") == typeName) {
coleenp@2497 3186 const char * s = typeName + strlen("const ");
coleenp@2497 3187 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
coleenp@2497 3188 if (recursiveFindType(origtypes, s, true) == 1) {
coleenp@2497 3189 return 1;
coleenp@2497 3190 }
coleenp@2497 3191 }
coleenp@2497 3192 if (strstr(typeName, " const") == typeName + len - 6) {
coleenp@2497 3193 char * s = strdup(typeName);
coleenp@2497 3194 s[len - 6] = '\0';
coleenp@2497 3195 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
coleenp@2497 3196 if (recursiveFindType(origtypes, s, true) == 1) {
coleenp@2497 3197 return 1;
coleenp@2497 3198 }
coleenp@2497 3199 }
coleenp@2497 3200 if (!isRecurse) {
coleenp@2497 3201 tty->print_cr("type \"%s\" not found", typeName);
coleenp@2497 3202 }
never@3139 3203 return 0;
coleenp@2497 3204 }
coleenp@2497 3205
coleenp@2497 3206
duke@435 3207 int
duke@435 3208 VMStructs::findType(const char* typeName) {
duke@435 3209 VMTypeEntry* types = gHotSpotVMTypes;
duke@435 3210
coleenp@2497 3211 return recursiveFindType(types, typeName, false);
duke@435 3212 }
duke@435 3213 #endif
duke@435 3214
duke@435 3215 void vmStructs_init() {
duke@435 3216 debug_only(VMStructs::init());
duke@435 3217 }

mercurial