src/share/vm/runtime/vmStructs.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File cms-comp Sdiff src/share/vm/runtime

src/share/vm/runtime/vmStructs.cpp

Print this page




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));


src/share/vm/runtime/vmStructs.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File