vmStructs.cpp revision 3149
1472N/A * or visit www.oracle.com if you need additional information or have any
1879N/A#include "precompiled.hpp"
1879N/A#include "classfile/dictionary.hpp"
1879N/A#include "classfile/javaClasses.hpp"
1879N/A#include "classfile/loaderConstraints.hpp"
1879N/A#include "classfile/placeholders.hpp"
1879N/A#include "classfile/symbolTable.hpp"
1879N/A#include "classfile/systemDictionary.hpp"
2772N/A#include "ci/ciField.hpp"
2772N/A#include "ci/ciInstance.hpp"
2772N/A#include "ci/ciObjArrayKlass.hpp"
2772N/A#include "ci/ciMethodData.hpp"
2772N/A#include "ci/ciSymbol.hpp"
1879N/A#include "code/codeBlob.hpp"
1879N/A#include "code/codeCache.hpp"
1879N/A#include "code/compressedStream.hpp"
1879N/A#include "code/location.hpp"
1879N/A#include "code/nmethod.hpp"
1879N/A#include "code/pcDesc.hpp"
1879N/A#include "compiler/oopMap.hpp"
2772N/A#include "compiler/compileBroker.hpp"
1879N/A#include "gc_implementation/shared/immutableSpace.hpp"
1879N/A#include "gc_implementation/shared/markSweep.hpp"
1879N/A#include "gc_implementation/shared/mutableSpace.hpp"
1879N/A#include "gc_interface/collectedHeap.hpp"
1879N/A#include "interpreter/bytecodeInterpreter.hpp"
1879N/A#include "interpreter/bytecodes.hpp"
1879N/A#include "interpreter/interpreter.hpp"
1879N/A#include "memory/cardTableRS.hpp"
1879N/A#include "memory/compactPermGen.hpp"
1879N/A#include "memory/defNewGeneration.hpp"
1879N/A#include "memory/genCollectedHeap.hpp"
1879N/A#include "memory/generation.hpp"
1879N/A#include "memory/generationSpec.hpp"
1879N/A#include "memory/permGen.hpp"
1879N/A#include "memory/tenuredGeneration.hpp"
1879N/A#include "memory/universe.hpp"
1879N/A#include "memory/watermark.hpp"
1879N/A#include "oops/arrayKlass.hpp"
1879N/A#include "oops/arrayKlassKlass.hpp"
1879N/A#include "oops/arrayOop.hpp"
1879N/A#include "oops/compiledICHolderKlass.hpp"
1879N/A#include "oops/compiledICHolderOop.hpp"
1879N/A#include "oops/constMethodKlass.hpp"
1879N/A#include "oops/constMethodOop.hpp"
1879N/A#include "oops/constantPoolKlass.hpp"
1879N/A#include "oops/constantPoolOop.hpp"
1879N/A#include "oops/cpCacheKlass.hpp"
1879N/A#include "oops/cpCacheOop.hpp"
1879N/A#include "oops/instanceKlass.hpp"
2258N/A#include "oops/instanceMirrorKlass.hpp"
1879N/A#include "oops/instanceKlassKlass.hpp"
1879N/A#include "oops/instanceOop.hpp"
1879N/A#include "oops/klassOop.hpp"
1879N/A#include "oops/markOop.hpp"
1879N/A#include "oops/methodDataKlass.hpp"
1879N/A#include "oops/methodDataOop.hpp"
1879N/A#include "oops/methodKlass.hpp"
1879N/A#include "oops/methodOop.hpp"
1879N/A#include "oops/objArrayKlass.hpp"
1879N/A#include "oops/objArrayKlassKlass.hpp"
1879N/A#include "oops/objArrayOop.hpp"
1879N/A#include "oops/oop.inline.hpp"
2062N/A#include "oops/symbol.hpp"
1879N/A#include "oops/typeArrayKlass.hpp"
1879N/A#include "oops/typeArrayKlassKlass.hpp"
1879N/A#include "oops/typeArrayOop.hpp"
1879N/A#include "prims/jvmtiAgentThread.hpp"
1879N/A#include "runtime/arguments.hpp"
2772N/A#include "runtime/deoptimization.hpp"
2772N/A#include "runtime/vframeArray.hpp"
1879N/A#include "runtime/globals.hpp"
1879N/A#include "runtime/javaCalls.hpp"
1879N/A#include "runtime/perfMemory.hpp"
2076N/A#include "runtime/serviceThread.hpp"
1879N/A#include "runtime/sharedRuntime.hpp"
1879N/A#include "runtime/stubRoutines.hpp"
1879N/A#include "runtime/virtualspace.hpp"
1879N/A#include "runtime/vmStructs.hpp"
1879N/A#include "utilities/globalDefinitions.hpp"
1879N/A#include "utilities/hashtable.hpp"
1879N/A#ifdef TARGET_ARCH_x86
1879N/A# include "vmStructs_x86.hpp"
1879N/A#ifdef TARGET_ARCH_sparc
1879N/A# include "vmStructs_sparc.hpp"
1879N/A#ifdef TARGET_ARCH_zero
1879N/A# include "vmStructs_zero.hpp"
2073N/A#ifdef TARGET_ARCH_arm
2073N/A# include "vmStructs_arm.hpp"
2073N/A#ifdef TARGET_ARCH_ppc
2073N/A# include "vmStructs_ppc.hpp"
1879N/A# include "thread_linux.inline.hpp"
1879N/A# include "thread_solaris.inline.hpp"
1879N/A# include "thread_windows.inline.hpp"
2796N/A#ifdef TARGET_OS_FAMILY_bsd
2796N/A# include "thread_bsd.inline.hpp"
1879N/A# include "vmStructs_linux_x86.hpp"
1879N/A# include "vmStructs_linux_sparc.hpp"
1879N/A# include "vmStructs_linux_zero.hpp"
1879N/A# include "vmStructs_solaris_x86.hpp"
1879N/A# include "vmStructs_solaris_sparc.hpp"
1879N/A# include "vmStructs_windows_x86.hpp"
2073N/A# include "vmStructs_linux_arm.hpp"
2073N/A# include "vmStructs_linux_ppc.hpp"
2796N/A# include "vmStructs_bsd_x86.hpp"
2796N/A# include "vmStructs_bsd_zero.hpp"
1879N/A#include "gc_implementation/parNew/parNewGeneration.hpp"
1879N/A#include "gc_implementation/parNew/vmStructs_parNew.hpp"
1879N/A#include "gc_implementation/parallelScavenge/psOldGen.hpp"
2808N/A#include "gc_implementation/g1/vmStructs_g1.hpp"
2772N/A#include "opto/addnode.hpp"
2772N/A#include "opto/callnode.hpp"
2772N/A#include "opto/cfgnode.hpp"
2772N/A#include "opto/chaitin.hpp"
2772N/A#include "opto/divnode.hpp"
2772N/A#include "opto/locknode.hpp"
2772N/A#include "opto/loopnode.hpp"
2772N/A#include "opto/machnode.hpp"
1879N/A#include "opto/matcher.hpp"
2772N/A#include "opto/mulnode.hpp"
2772N/A#include "opto/phaseX.hpp"
2772N/A#include "opto/regalloc.hpp"
2772N/A#include "opto/rootnode.hpp"
2772N/A#include "opto/subnode.hpp"
2772N/A#include "opto/vectornode.hpp"
1879N/A# include "adfiles/adGlobals_x86_32.hpp"
1879N/A# include "adfiles/adGlobals_x86_64.hpp"
1879N/A# include "adfiles/adGlobals_sparc.hpp"
1879N/A# include "adfiles/adGlobals_zero.hpp"
2073N/A#ifdef TARGET_ARCH_MODEL_arm
2073N/A# include "adfiles/adGlobals_arm.hpp"
2073N/A#ifdef TARGET_ARCH_MODEL_ppc
2073N/A# include "adfiles/adGlobals_ppc.hpp"
0N/A// HotSpotTypeDataBase.java, which parses the type strings.
0N/A static_field, \
0N/A last_entry) \
0N/A unchecked_nonstatic_field(GenCollectedHeap, _gens, sizeof(GenCollectedHeap::_gens)) /* NOTE: no type */ \
0N/A unchecked_nonstatic_field(JNIHandleBlock, _handles, JNIHandleBlock::block_size_in_oops * sizeof(Oop)) /* Note: no type */ \
2772N/A unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \
0N/A last_entry) \
0N/A declare_integer_type(bool) \
2772N/A declare_integer_type(short) \
0N/A declare_integer_type(int) \
0N/A declare_integer_type(long) \
0N/A declare_integer_type(char) \
0N/A declare_unsigned_integer_type(unsigned char) \
0N/A declare_unsigned_integer_type(unsigned int) \
0N/A declare_unsigned_integer_type(unsigned short) \
0N/A declare_unsigned_integer_type(unsigned long) \
0N/A declare_unsigned_integer_type(unsigned) \
0N/A declare_toplevel_type(int*) \
0N/A declare_toplevel_type(char*) \
0N/A declare_toplevel_type(char**) \
0N/A declare_toplevel_type(unsigned char*) \
2772N/A declare_toplevel_type(void*) \
0N/A last_entry) \
0N/A declare_c2_preprocessor_constant("Matcher::interpreter_frame_pointer_reg", Matcher::interpreter_frame_pointer_reg()) \
0N/A /* MethodCompilation (globalDefinitions.hpp) */ \
0N/A#define VM_LONG_CONSTANTS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant, last_entry) \
0N/A { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL },
0N/A { QUOTE(typeName), QUOTE(fieldName), NULL, 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL },
0N/A#define GENERATE_VM_STRUCT_LAST_ENTRY() \
0N/A {typedef type dummyvtype; typeName *dummyObj = NULL; volatile dummyvtype* dummy = &dummyObj->fieldName; }
0N/A { assert(findType(QUOTE(typeName)) != 0, "type \"" QUOTE(typeName) "\" not found in type table"); \
0N/A#define CHECK_NO_OP(a, b, c)
0N/A#define CHECK_SENTINEL()
0N/A# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c)
0N/A# define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c)
0N/A# define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define ENSURE_C1_FIELD_TYPE_PRESENT(a, b, c)
0N/A# define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define ENSURE_C2_FIELD_TYPE_PRESENT(a, b, c)
0N/A# define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A# define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c)
0N/A#define GENERATE_VM_TYPE_LAST_ENTRY() \
0N/A#define CHECK_VM_TYPE_NO_OP(a)
0N/A#define CHECK_SINGLE_ARG_VM_TYPE_NO_OP(a)
0N/A# define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a)
0N/A# define GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY(a)
0N/A# define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a)
0N/A# define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a)
0N/A# define GENERATE_C2_VM_TYPE_ENTRY(a, b)
0N/A# define CHECK_C2_VM_TYPE_ENTRY(a, b)
0N/A# define GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY(a)
0N/A# define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a)
0N/A#define GENERATE_VM_INT_CONSTANT_LAST_ENTRY() \
0N/A# define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value)
0N/A#define GENERATE_VM_LONG_CONSTANT_LAST_ENTRY() \
0N/A# define GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value)
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/A CHECK_NO_OP, \
0N/AASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySuperclassNameOffset, VMTypeEntry, superclassName);
0N/AJNIEXPORT VMLongConstantEntry* gHotSpotVMLongConstants = VMStructs::localHotSpotVMLongConstants;
0N/Avoid vmStructs_init() {