mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8004747: Remove last_entry from VM_STRUCT macros
Instead of passing in last_entry to all the VM_ macros just expand it in the main vmStructs.cpp file. Reviewed-by: dholmes, sspitsyn, minqi
This commit is contained in:
parent
472004ca58
commit
e7e6443c6d
12 changed files with 179 additions and 326 deletions
|
@ -257,8 +257,7 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
c1_nonstatic_field, \
|
||||
c2_nonstatic_field, \
|
||||
unchecked_c1_static_field, \
|
||||
unchecked_c2_static_field, \
|
||||
last_entry) \
|
||||
unchecked_c2_static_field) \
|
||||
\
|
||||
/******************************************************************/ \
|
||||
/* OopDesc and Klass hierarchies (NOTE: MethodData* incomplete) */ \
|
||||
|
@ -1238,9 +1237,6 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
nonstatic_field(FreeList<Metablock>, _count, ssize_t) \
|
||||
nonstatic_field(MetablockTreeDictionary, _total_size, size_t)
|
||||
|
||||
/* NOTE that we do not use the last_entry() macro here; it is used */
|
||||
/* in vmStructs_<os>_<cpu>.hpp's VM_STRUCTS_OS_CPU macro (and must */
|
||||
/* be present there) */
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// VM_TYPES
|
||||
|
@ -1280,8 +1276,7 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
declare_unsigned_integer_type, \
|
||||
declare_c1_toplevel_type, \
|
||||
declare_c2_type, \
|
||||
declare_c2_toplevel_type, \
|
||||
last_entry) \
|
||||
declare_c2_toplevel_type) \
|
||||
\
|
||||
/*************************************************************/ \
|
||||
/* Java primitive types -- required by the SA implementation */ \
|
||||
|
@ -2098,10 +2093,6 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
declare_type(MetablockTreeDictionary, FreeBlockDictionary<Metablock>)
|
||||
|
||||
|
||||
/* NOTE that we do not use the last_entry() macro here; it is used */
|
||||
/* in vmStructs_<os>_<cpu>.hpp's VM_TYPES_OS_CPU macro (and must be */
|
||||
/* present there) */
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// VM_INT_CONSTANTS
|
||||
//
|
||||
|
@ -2114,8 +2105,7 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
declare_preprocessor_constant, \
|
||||
declare_c1_constant, \
|
||||
declare_c2_constant, \
|
||||
declare_c2_preprocessor_constant, \
|
||||
last_entry) \
|
||||
declare_c2_preprocessor_constant) \
|
||||
\
|
||||
/******************/ \
|
||||
/* Useful globals */ \
|
||||
|
@ -2483,9 +2473,6 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
declare_c2_preprocessor_constant("SAVED_ON_ENTRY_REG_COUNT", SAVED_ON_ENTRY_REG_COUNT) \
|
||||
declare_c2_preprocessor_constant("C_SAVED_ON_ENTRY_REG_COUNT", C_SAVED_ON_ENTRY_REG_COUNT)
|
||||
|
||||
/* NOTE that we do not use the last_entry() macro here; it is used */
|
||||
/* in vmStructs_<os>_<cpu>.hpp's VM_INT_CONSTANTS_OS_CPU macro (and */
|
||||
/* must be present there) */
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// VM_LONG_CONSTANTS
|
||||
|
@ -2495,7 +2482,7 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
// enums, etc., while "declare_preprocessor_constant" must be used for
|
||||
// all #defined constants.
|
||||
|
||||
#define VM_LONG_CONSTANTS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant, last_entry) \
|
||||
#define VM_LONG_CONSTANTS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \
|
||||
\
|
||||
/*********************/ \
|
||||
/* MarkOop constants */ \
|
||||
|
@ -2541,11 +2528,7 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
/* Constants in markOop used by CMS. */ \
|
||||
declare_constant(markOopDesc::cms_shift) \
|
||||
declare_constant(markOopDesc::cms_mask) \
|
||||
declare_constant(markOopDesc::size_shift) \
|
||||
|
||||
/* NOTE that we do not use the last_entry() macro here; it is used */
|
||||
/* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and */
|
||||
/* must be present there) */
|
||||
declare_constant(markOopDesc::size_shift)
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
|
@ -2608,9 +2591,6 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
// This is a no-op macro for unchecked fields
|
||||
#define CHECK_NO_OP(a, b, c)
|
||||
|
||||
// This is a no-op macro for the sentinel value
|
||||
#define CHECK_SENTINEL()
|
||||
|
||||
//
|
||||
// Build-specific macros:
|
||||
//
|
||||
|
@ -2789,48 +2769,47 @@ typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
|
|||
// as long as class VMStructs is a friend
|
||||
VMStructEntry VMStructs::localHotSpotVMStructs[] = {
|
||||
|
||||
VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_VM_STRUCT_LAST_ENTRY)
|
||||
VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
|
||||
|
||||
#ifndef SERIALGC
|
||||
VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY)
|
||||
|
||||
VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY)
|
||||
|
||||
VM_STRUCTS_G1(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
VM_STRUCTS_G1(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY)
|
||||
#endif // SERIALGC
|
||||
|
||||
VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_VM_STRUCT_LAST_ENTRY)
|
||||
VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
|
||||
|
||||
VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
|
||||
GENERATE_VM_STRUCT_LAST_ENTRY)
|
||||
VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_STATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
|
||||
GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
|
||||
|
||||
GENERATE_VM_STRUCT_LAST_ENTRY()
|
||||
};
|
||||
|
||||
VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
|
||||
|
@ -2842,8 +2821,7 @@ VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
|
|||
GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
|
||||
GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
GENERATE_C2_VM_TYPE_ENTRY,
|
||||
GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
GENERATE_VM_TYPE_LAST_ENTRY)
|
||||
GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
|
||||
|
||||
#ifndef SERIALGC
|
||||
VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY,
|
||||
|
@ -2865,8 +2843,7 @@ VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
|
|||
GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
|
||||
GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
GENERATE_C2_VM_TYPE_ENTRY,
|
||||
GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
GENERATE_VM_TYPE_LAST_ENTRY)
|
||||
GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
|
||||
|
||||
VM_TYPES_OS_CPU(GENERATE_VM_TYPE_ENTRY,
|
||||
GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
|
@ -2875,8 +2852,9 @@ VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
|
|||
GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
|
||||
GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
GENERATE_C2_VM_TYPE_ENTRY,
|
||||
GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
GENERATE_VM_TYPE_LAST_ENTRY)
|
||||
GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
|
||||
|
||||
GENERATE_VM_TYPE_LAST_ENTRY()
|
||||
};
|
||||
|
||||
VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
|
||||
|
@ -2885,8 +2863,7 @@ VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
|
|||
GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C1_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C2_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_VM_INT_CONSTANT_LAST_ENTRY)
|
||||
GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
|
||||
|
||||
#ifndef SERIALGC
|
||||
VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY)
|
||||
|
@ -2898,15 +2875,15 @@ VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
|
|||
GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C1_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C2_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_VM_INT_CONSTANT_LAST_ENTRY)
|
||||
GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
|
||||
|
||||
VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C1_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C2_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
||||
GENERATE_VM_INT_CONSTANT_LAST_ENTRY)
|
||||
GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
|
||||
|
||||
GENERATE_VM_INT_CONSTANT_LAST_ENTRY()
|
||||
};
|
||||
|
||||
VMLongConstantEntry VMStructs::localHotSpotVMLongConstants[] = {
|
||||
|
@ -2915,22 +2892,21 @@ VMLongConstantEntry VMStructs::localHotSpotVMLongConstants[] = {
|
|||
GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_VM_LONG_CONSTANT_LAST_ENTRY)
|
||||
GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
|
||||
|
||||
VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_VM_LONG_CONSTANT_LAST_ENTRY)
|
||||
GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
|
||||
|
||||
VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
|
||||
GENERATE_VM_LONG_CONSTANT_LAST_ENTRY)
|
||||
GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
|
||||
|
||||
GENERATE_VM_LONG_CONSTANT_LAST_ENTRY()
|
||||
};
|
||||
|
||||
// This is used both to check the types of referenced fields and, in
|
||||
|
@ -2945,8 +2921,7 @@ VMStructs::init() {
|
|||
CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_SENTINEL);
|
||||
CHECK_NO_OP);
|
||||
|
||||
#ifndef SERIALGC
|
||||
VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
|
@ -2967,8 +2942,7 @@ VMStructs::init() {
|
|||
CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_SENTINEL);
|
||||
CHECK_NO_OP);
|
||||
|
||||
VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
CHECK_STATIC_VM_STRUCT_ENTRY,
|
||||
|
@ -2977,8 +2951,7 @@ VMStructs::init() {
|
|||
CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_SENTINEL);
|
||||
CHECK_NO_OP);
|
||||
|
||||
VM_TYPES(CHECK_VM_TYPE_ENTRY,
|
||||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
||||
|
@ -2987,8 +2960,7 @@ VMStructs::init() {
|
|||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
||||
CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
CHECK_C2_VM_TYPE_ENTRY,
|
||||
CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
CHECK_SENTINEL);
|
||||
CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY);
|
||||
|
||||
#ifndef SERIALGC
|
||||
VM_TYPES_PARALLELGC(CHECK_VM_TYPE_ENTRY,
|
||||
|
@ -3010,8 +2982,7 @@ VMStructs::init() {
|
|||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
||||
CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
CHECK_C2_VM_TYPE_ENTRY,
|
||||
CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
CHECK_SENTINEL);
|
||||
CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY);
|
||||
|
||||
VM_TYPES_OS_CPU(CHECK_VM_TYPE_ENTRY,
|
||||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
||||
|
@ -3020,8 +2991,7 @@ VMStructs::init() {
|
|||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
||||
CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
CHECK_C2_VM_TYPE_ENTRY,
|
||||
CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY,
|
||||
CHECK_SENTINEL);
|
||||
CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY);
|
||||
|
||||
//
|
||||
// Split VM_STRUCTS() invocation into two parts to allow MS VC++ 6.0
|
||||
|
@ -3040,53 +3010,49 @@ VMStructs::init() {
|
|||
// Solstice NFS setup. If everyone switches to local workspaces on
|
||||
// Win32, we can put this back in.
|
||||
#ifndef _WINDOWS
|
||||
debug_only(VM_STRUCTS(ENSURE_FIELD_TYPE_PRESENT, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_SENTINEL));
|
||||
debug_only(VM_STRUCTS(CHECK_NO_OP, \
|
||||
ENSURE_FIELD_TYPE_PRESENT, \
|
||||
CHECK_NO_OP, \
|
||||
ENSURE_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_C1_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_C2_FIELD_TYPE_PRESENT, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_SENTINEL));
|
||||
debug_only(VM_STRUCTS(ENSURE_FIELD_TYPE_PRESENT,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP));
|
||||
debug_only(VM_STRUCTS(CHECK_NO_OP,
|
||||
ENSURE_FIELD_TYPE_PRESENT,
|
||||
CHECK_NO_OP,
|
||||
ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT,
|
||||
ENSURE_C1_FIELD_TYPE_PRESENT,
|
||||
ENSURE_C2_FIELD_TYPE_PRESENT,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP));
|
||||
#ifndef SERIALGC
|
||||
debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT, \
|
||||
debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_FIELD_TYPE_PRESENT));
|
||||
debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_FIELD_TYPE_PRESENT, \
|
||||
debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_FIELD_TYPE_PRESENT));
|
||||
debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT, \
|
||||
debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_FIELD_TYPE_PRESENT));
|
||||
#endif // SERIALGC
|
||||
debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_FIELD_TYPE_PRESENT, \
|
||||
CHECK_NO_OP, \
|
||||
ENSURE_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_C2_FIELD_TYPE_PRESENT, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_SENTINEL));
|
||||
debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_FIELD_TYPE_PRESENT, \
|
||||
CHECK_NO_OP, \
|
||||
ENSURE_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
|
||||
ENSURE_C2_FIELD_TYPE_PRESENT, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_NO_OP, \
|
||||
CHECK_SENTINEL));
|
||||
debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_FIELD_TYPE_PRESENT,
|
||||
CHECK_NO_OP,
|
||||
ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT,
|
||||
ENSURE_C2_FIELD_TYPE_PRESENT,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP));
|
||||
debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_FIELD_TYPE_PRESENT,
|
||||
CHECK_NO_OP,
|
||||
ENSURE_FIELD_TYPE_PRESENT,
|
||||
ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT,
|
||||
ENSURE_C2_FIELD_TYPE_PRESENT,
|
||||
CHECK_NO_OP,
|
||||
CHECK_NO_OP));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -3206,6 +3172,30 @@ void vmStructs_init() {
|
|||
|
||||
#ifndef PRODUCT
|
||||
void VMStructs::test() {
|
||||
// Make sure last entry in the each array is indeed the correct end marker.
|
||||
// The reason why these are static is to make sure they are zero initialized.
|
||||
// Putting them on the stack will leave some garbage in the padding of some fields.
|
||||
static VMStructEntry struct_last_entry = GENERATE_VM_STRUCT_LAST_ENTRY();
|
||||
assert(memcmp(&localHotSpotVMStructs[(sizeof(localHotSpotVMStructs) / sizeof(VMStructEntry)) - 1],
|
||||
&struct_last_entry,
|
||||
sizeof(VMStructEntry)) == 0, "Incorrect last entry in localHotSpotVMStructs");
|
||||
|
||||
static VMTypeEntry type_last_entry = GENERATE_VM_TYPE_LAST_ENTRY();
|
||||
assert(memcmp(&localHotSpotVMTypes[sizeof(localHotSpotVMTypes) / sizeof(VMTypeEntry) - 1],
|
||||
&type_last_entry,
|
||||
sizeof(VMTypeEntry)) == 0, "Incorrect last entry in localHotSpotVMTypes");
|
||||
|
||||
static VMIntConstantEntry int_last_entry = GENERATE_VM_INT_CONSTANT_LAST_ENTRY();
|
||||
assert(memcmp(&localHotSpotVMIntConstants[sizeof(localHotSpotVMIntConstants) / sizeof(VMIntConstantEntry) - 1],
|
||||
&int_last_entry,
|
||||
sizeof(VMIntConstantEntry)) == 0, "Incorrect last entry in localHotSpotVMIntConstants");
|
||||
|
||||
static VMLongConstantEntry long_last_entry = GENERATE_VM_LONG_CONSTANT_LAST_ENTRY();
|
||||
assert(memcmp(&localHotSpotVMLongConstants[sizeof(localHotSpotVMLongConstants) / sizeof(VMLongConstantEntry) - 1],
|
||||
&long_last_entry,
|
||||
sizeof(VMLongConstantEntry)) == 0, "Incorrect last entry in localHotSpotVMLongConstants");
|
||||
|
||||
|
||||
// Check for duplicate entries in type array
|
||||
for (int i = 0; localHotSpotVMTypes[i].typeName != NULL; i++) {
|
||||
for (int j = i + 1; localHotSpotVMTypes[j].typeName != NULL; j++) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue