1677 declare_constant(markOopDesc::lock_mask) \
1678 declare_constant(markOopDesc::lock_mask_in_place) \
1679 declare_constant(markOopDesc::biased_lock_mask) \
1680 declare_constant(markOopDesc::biased_lock_mask_in_place) \
1681 declare_constant(markOopDesc::biased_lock_bit_in_place) \
1682 declare_constant(markOopDesc::age_mask) \
1683 declare_constant(markOopDesc::age_mask_in_place) \
1684 declare_constant(markOopDesc::hash_mask) \
1685 declare_constant(markOopDesc::hash_mask_in_place) \
1686 declare_constant(markOopDesc::biased_lock_alignment) \
1687 \
1688 declare_constant(markOopDesc::locked_value) \
1689 declare_constant(markOopDesc::unlocked_value) \
1690 declare_constant(markOopDesc::monitor_value) \
1691 declare_constant(markOopDesc::marked_value) \
1692 declare_constant(markOopDesc::biased_lock_pattern) \
1693 \
1694 declare_constant(markOopDesc::no_hash) \
1695 declare_constant(markOopDesc::no_hash_in_place) \
1696 declare_constant(markOopDesc::no_lock_in_place) \
1697 declare_constant(markOopDesc::max_age)
1698
1699 /* NOTE that we do not use the last_entry() macro here; it is used */
1700 /* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and */
1701 /* must be present there) */
1702
1703
1704 //--------------------------------------------------------------------------------
1705 // Macros operating on the above lists
1706 //--------------------------------------------------------------------------------
1707
1708 // This utility macro quotes the passed string
1709 #define QUOTE(x) #x
1710
1711 //--------------------------------------------------------------------------------
1712 // VMStructEntry macros
1713 //
1714
1715 // This macro generates a VMStructEntry line for a nonstatic field
1716 #define GENERATE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
1717 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL },
1941 // These initializers are allowed to access private fields in classes
1942 // as long as class VMStructs is a friend
1943 VMStructEntry VMStructs::localHotSpotVMStructs[] = {
1944
1945 VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1946 GENERATE_STATIC_VM_STRUCT_ENTRY, \
1947 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
1948 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1949 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
1950 GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY, \
1951 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
1952 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1953 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1954 GENERATE_VM_STRUCT_LAST_ENTRY)
1955
1956 #ifndef SERIALGC
1957 VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1958 GENERATE_STATIC_VM_STRUCT_ENTRY)
1959
1960 VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1961 GENERATE_STATIC_VM_STRUCT_ENTRY)
1962 #endif // SERIALGC
1963
1964 VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1965 GENERATE_STATIC_VM_STRUCT_ENTRY, \
1966 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
1967 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1968 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
1969 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
1970 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1971 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1972 GENERATE_VM_STRUCT_LAST_ENTRY)
1973
1974 VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1975 GENERATE_STATIC_VM_STRUCT_ENTRY, \
1976 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
1977 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1978 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
1979 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
1980 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
2082 // This is used both to check the types of referenced fields and, in
2083 // debug builds, to ensure that all of the field types are present.
2084 void
2085 VMStructs::init() {
2086 VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2087 CHECK_STATIC_VM_STRUCT_ENTRY,
2088 CHECK_NO_OP,
2089 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
2090 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
2091 CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
2092 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
2093 CHECK_NO_OP,
2094 CHECK_NO_OP,
2095 CHECK_SENTINEL);
2096
2097 #ifndef SERIALGC
2098 VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2099 CHECK_STATIC_VM_STRUCT_ENTRY);
2100
2101 VM_STRUCTS_CMS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2102 CHECK_STATIC_VM_STRUCT_ENTRY);
2103 #endif // SERIALGC
2104
2105 VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2106 CHECK_STATIC_VM_STRUCT_ENTRY,
2107 CHECK_NO_OP,
2108 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
2109 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
2110 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
2111 CHECK_NO_OP,
2112 CHECK_NO_OP,
2113 CHECK_SENTINEL);
2114
2115 VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2116 CHECK_STATIC_VM_STRUCT_ENTRY,
2117 CHECK_NO_OP,
2118 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
2119 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
2120 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
2121 CHECK_NO_OP,
2186 CHECK_NO_OP, \
2187 CHECK_NO_OP, \
2188 CHECK_NO_OP, \
2189 CHECK_NO_OP, \
2190 CHECK_NO_OP, \
2191 CHECK_SENTINEL));
2192 debug_only(VM_STRUCTS(CHECK_NO_OP, \
2193 ENSURE_FIELD_TYPE_PRESENT, \
2194 CHECK_NO_OP, \
2195 ENSURE_FIELD_TYPE_PRESENT, \
2196 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
2197 ENSURE_C1_FIELD_TYPE_PRESENT, \
2198 ENSURE_C2_FIELD_TYPE_PRESENT, \
2199 CHECK_NO_OP, \
2200 CHECK_NO_OP, \
2201 CHECK_SENTINEL));
2202 #ifndef SERIALGC
2203 debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT, \
2204 ENSURE_FIELD_TYPE_PRESENT));
2205 debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT, \
2206 ENSURE_FIELD_TYPE_PRESENT));
2207 #endif // SERIALGC
2208 debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
2209 ENSURE_FIELD_TYPE_PRESENT, \
2210 CHECK_NO_OP, \
2211 ENSURE_FIELD_TYPE_PRESENT, \
2212 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
2213 ENSURE_C2_FIELD_TYPE_PRESENT, \
2214 CHECK_NO_OP, \
2215 CHECK_NO_OP, \
2216 CHECK_SENTINEL));
2217 debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
2218 ENSURE_FIELD_TYPE_PRESENT, \
2219 CHECK_NO_OP, \
2220 ENSURE_FIELD_TYPE_PRESENT, \
2221 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
2222 ENSURE_C2_FIELD_TYPE_PRESENT, \
2223 CHECK_NO_OP, \
2224 CHECK_NO_OP, \
2225 CHECK_SENTINEL));
|
1677 declare_constant(markOopDesc::lock_mask) \
1678 declare_constant(markOopDesc::lock_mask_in_place) \
1679 declare_constant(markOopDesc::biased_lock_mask) \
1680 declare_constant(markOopDesc::biased_lock_mask_in_place) \
1681 declare_constant(markOopDesc::biased_lock_bit_in_place) \
1682 declare_constant(markOopDesc::age_mask) \
1683 declare_constant(markOopDesc::age_mask_in_place) \
1684 declare_constant(markOopDesc::hash_mask) \
1685 declare_constant(markOopDesc::hash_mask_in_place) \
1686 declare_constant(markOopDesc::biased_lock_alignment) \
1687 \
1688 declare_constant(markOopDesc::locked_value) \
1689 declare_constant(markOopDesc::unlocked_value) \
1690 declare_constant(markOopDesc::monitor_value) \
1691 declare_constant(markOopDesc::marked_value) \
1692 declare_constant(markOopDesc::biased_lock_pattern) \
1693 \
1694 declare_constant(markOopDesc::no_hash) \
1695 declare_constant(markOopDesc::no_hash_in_place) \
1696 declare_constant(markOopDesc::no_lock_in_place) \
1697 declare_constant(markOopDesc::max_age) \
1698 \
1699 /* Constants in markOop used by CMS. */ \
1700 declare_constant(markOopDesc::cms_bits) \
1701 declare_constant(markOopDesc::cms_shift) \
1702 declare_constant(markOopDesc::cms_mask) \
1703 declare_constant(markOopDesc::cms_mask_in_place) \
1704 declare_constant(markOopDesc::cms_free_chunk_pattern) \
1705 declare_constant(markOopDesc::cms_no_coalesce_pattern) \
1706 declare_constant(markOopDesc::size_shift) \
1707 declare_constant(markOopDesc::size_bits) \
1708 declare_constant(markOopDesc::size_mask) \
1709 declare_constant(markOopDesc::size_mask_in_place)
1710
1711 /* NOTE that we do not use the last_entry() macro here; it is used */
1712 /* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and */
1713 /* must be present there) */
1714
1715
1716 //--------------------------------------------------------------------------------
1717 // Macros operating on the above lists
1718 //--------------------------------------------------------------------------------
1719
1720 // This utility macro quotes the passed string
1721 #define QUOTE(x) #x
1722
1723 //--------------------------------------------------------------------------------
1724 // VMStructEntry macros
1725 //
1726
1727 // This macro generates a VMStructEntry line for a nonstatic field
1728 #define GENERATE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \
1729 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL },
1953 // These initializers are allowed to access private fields in classes
1954 // as long as class VMStructs is a friend
1955 VMStructEntry VMStructs::localHotSpotVMStructs[] = {
1956
1957 VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1958 GENERATE_STATIC_VM_STRUCT_ENTRY, \
1959 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
1960 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1961 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
1962 GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY, \
1963 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
1964 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1965 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1966 GENERATE_VM_STRUCT_LAST_ENTRY)
1967
1968 #ifndef SERIALGC
1969 VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1970 GENERATE_STATIC_VM_STRUCT_ENTRY)
1971
1972 VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1973 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1974 GENERATE_STATIC_VM_STRUCT_ENTRY)
1975 #endif // SERIALGC
1976
1977 VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1978 GENERATE_STATIC_VM_STRUCT_ENTRY, \
1979 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
1980 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1981 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
1982 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
1983 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1984 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
1985 GENERATE_VM_STRUCT_LAST_ENTRY)
1986
1987 VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1988 GENERATE_STATIC_VM_STRUCT_ENTRY, \
1989 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \
1990 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \
1991 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \
1992 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \
1993 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \
2095 // This is used both to check the types of referenced fields and, in
2096 // debug builds, to ensure that all of the field types are present.
2097 void
2098 VMStructs::init() {
2099 VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2100 CHECK_STATIC_VM_STRUCT_ENTRY,
2101 CHECK_NO_OP,
2102 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
2103 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
2104 CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
2105 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
2106 CHECK_NO_OP,
2107 CHECK_NO_OP,
2108 CHECK_SENTINEL);
2109
2110 #ifndef SERIALGC
2111 VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2112 CHECK_STATIC_VM_STRUCT_ENTRY);
2113
2114 VM_STRUCTS_CMS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2115 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
2116 CHECK_STATIC_VM_STRUCT_ENTRY);
2117 #endif // SERIALGC
2118
2119 VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2120 CHECK_STATIC_VM_STRUCT_ENTRY,
2121 CHECK_NO_OP,
2122 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
2123 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
2124 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
2125 CHECK_NO_OP,
2126 CHECK_NO_OP,
2127 CHECK_SENTINEL);
2128
2129 VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
2130 CHECK_STATIC_VM_STRUCT_ENTRY,
2131 CHECK_NO_OP,
2132 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
2133 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
2134 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
2135 CHECK_NO_OP,
2200 CHECK_NO_OP, \
2201 CHECK_NO_OP, \
2202 CHECK_NO_OP, \
2203 CHECK_NO_OP, \
2204 CHECK_NO_OP, \
2205 CHECK_SENTINEL));
2206 debug_only(VM_STRUCTS(CHECK_NO_OP, \
2207 ENSURE_FIELD_TYPE_PRESENT, \
2208 CHECK_NO_OP, \
2209 ENSURE_FIELD_TYPE_PRESENT, \
2210 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
2211 ENSURE_C1_FIELD_TYPE_PRESENT, \
2212 ENSURE_C2_FIELD_TYPE_PRESENT, \
2213 CHECK_NO_OP, \
2214 CHECK_NO_OP, \
2215 CHECK_SENTINEL));
2216 #ifndef SERIALGC
2217 debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT, \
2218 ENSURE_FIELD_TYPE_PRESENT));
2219 debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT, \
2220 ENSURE_FIELD_TYPE_PRESENT, \
2221 ENSURE_FIELD_TYPE_PRESENT));
2222 #endif // SERIALGC
2223 debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
2224 ENSURE_FIELD_TYPE_PRESENT, \
2225 CHECK_NO_OP, \
2226 ENSURE_FIELD_TYPE_PRESENT, \
2227 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
2228 ENSURE_C2_FIELD_TYPE_PRESENT, \
2229 CHECK_NO_OP, \
2230 CHECK_NO_OP, \
2231 CHECK_SENTINEL));
2232 debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT, \
2233 ENSURE_FIELD_TYPE_PRESENT, \
2234 CHECK_NO_OP, \
2235 ENSURE_FIELD_TYPE_PRESENT, \
2236 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \
2237 ENSURE_C2_FIELD_TYPE_PRESENT, \
2238 CHECK_NO_OP, \
2239 CHECK_NO_OP, \
2240 CHECK_SENTINEL));
|