< prev index next >

src/hotspot/share/runtime/vmStructs.cpp

Print this page


   1 /*
   2  * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 110 
 111 #include CPU_HEADER(vmStructs)
 112 #include OS_HEADER(vmStructs)
 113 #include OS_CPU_HEADER(vmStructs)
 114 
 115 #if INCLUDE_ALL_GCS
 116 #include "gc/cms/compactibleFreeListSpace.hpp"
 117 #include "gc/cms/concurrentMarkSweepGeneration.hpp"
 118 #include "gc/cms/concurrentMarkSweepThread.hpp"
 119 #include "gc/cms/parNewGeneration.hpp"
 120 #include "gc/cms/vmStructs_cms.hpp"
 121 #include "gc/cms/vmStructs_parNew.hpp"
 122 #include "gc/g1/vmStructs_g1.hpp"
 123 #include "gc/parallel/asPSOldGen.hpp"
 124 #include "gc/parallel/asPSYoungGen.hpp"
 125 #include "gc/parallel/parallelScavengeHeap.hpp"
 126 #include "gc/parallel/psOldGen.hpp"
 127 #include "gc/parallel/psVirtualspace.hpp"
 128 #include "gc/parallel/psYoungGen.hpp"
 129 #include "gc/parallel/vmStructs_parallelgc.hpp"

 130 #endif // INCLUDE_ALL_GCS
 131 
 132 #if INCLUDE_JVMCI
 133 # include "jvmci/vmStructs_jvmci.hpp"
 134 #endif
 135 
 136 #if INCLUDE_TRACE
 137 #include "runtime/vmStructs_trace.hpp"
 138 #endif
 139 
 140 #include "runtime/vmStructs_ext.hpp"
 141 
 142 #ifdef COMPILER2
 143 #include "opto/addnode.hpp"
 144 #include "opto/block.hpp"
 145 #include "opto/callnode.hpp"
 146 #include "opto/castnode.hpp"
 147 #include "opto/cfgnode.hpp"
 148 #include "opto/chaitin.hpp"
 149 #include "opto/convertnode.hpp"


1373   declare_toplevel_type(void*)                                            \
1374   declare_toplevel_type(int*)                                             \
1375   declare_toplevel_type(char*)                                            \
1376   declare_toplevel_type(char**)                                           \
1377   declare_toplevel_type(u_char*)                                          \
1378   declare_toplevel_type(unsigned char*)                                   \
1379   declare_toplevel_type(volatile unsigned char*)                          \
1380                                                                           \
1381   /*******************************************************************/   \
1382   /* Types which it will be handy to have available over in the SA   */   \
1383   /* in order to do platform-independent address -> integer coercion */   \
1384   /* (note: these will be looked up by name)                         */   \
1385   /*******************************************************************/   \
1386                                                                           \
1387   declare_unsigned_integer_type(size_t)                                   \
1388   declare_integer_type(ssize_t)                                           \
1389   declare_integer_type(intx)                                              \
1390   declare_integer_type(intptr_t)                                          \
1391   declare_unsigned_integer_type(uintx)                                    \
1392   declare_unsigned_integer_type(uintptr_t)                                \

1393   declare_unsigned_integer_type(uint32_t)                                 \
1394   declare_unsigned_integer_type(uint64_t)                                 \
1395                                                                           \
1396   /******************************************/                            \
1397   /* OopDesc hierarchy (NOTE: some missing) */                            \
1398   /******************************************/                            \
1399                                                                           \
1400   declare_toplevel_type(oopDesc)                                          \
1401     declare_type(arrayOopDesc, oopDesc)                                   \
1402       declare_type(objArrayOopDesc, arrayOopDesc)                         \
1403     declare_type(instanceOopDesc, oopDesc)                                \
1404     declare_type(markOopDesc, oopDesc)                                    \
1405                                                                           \
1406   /**************************************************/                    \
1407   /* MetadataOopDesc hierarchy (NOTE: some missing) */                    \
1408   /**************************************************/                    \
1409                                                                           \
1410   declare_toplevel_type(CompiledICHolder)                                 \
1411   declare_toplevel_type(MetaspaceObj)                                     \
1412     declare_type(Metadata, MetaspaceObj)                                  \


3006              GENERATE_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY,
3007              GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3008              GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3009              GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3010              GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY,
3011              GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3012              GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3013              GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3014 
3015 #if INCLUDE_ALL_GCS
3016   VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3017                         GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3018                         GENERATE_STATIC_VM_STRUCT_ENTRY)
3019 
3020   VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3021                  GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3022                  GENERATE_STATIC_VM_STRUCT_ENTRY)
3023 
3024   VM_STRUCTS_G1(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3025                 GENERATE_STATIC_VM_STRUCT_ENTRY)



3026 #endif // INCLUDE_ALL_GCS
3027 
3028 #if INCLUDE_TRACE
3029   VM_STRUCTS_TRACE(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3030                    GENERATE_STATIC_VM_STRUCT_ENTRY)
3031 #endif
3032 
3033   VM_STRUCTS_EXT(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3034                  GENERATE_STATIC_VM_STRUCT_ENTRY)
3035 
3036   VM_STRUCTS_OS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3037                 GENERATE_STATIC_VM_STRUCT_ENTRY,
3038                 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3039                 GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3040                 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3041                 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3042                 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3043                 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3044 
3045   VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,


3073            GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3074            GENERATE_OOP_VM_TYPE_ENTRY,
3075            GENERATE_INTEGER_VM_TYPE_ENTRY,
3076            GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3077            GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3078            GENERATE_C2_VM_TYPE_ENTRY,
3079            GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3080 
3081 #if INCLUDE_ALL_GCS
3082   VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY,
3083                       GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3084 
3085   VM_TYPES_CMS(GENERATE_VM_TYPE_ENTRY,
3086                GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3087 
3088   VM_TYPES_PARNEW(GENERATE_VM_TYPE_ENTRY)
3089 
3090   VM_TYPES_G1(GENERATE_VM_TYPE_ENTRY,
3091               GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3092               GENERATE_INTEGER_VM_TYPE_ENTRY)



3093 #endif // INCLUDE_ALL_GCS
3094 
3095 #if INCLUDE_TRACE
3096   VM_TYPES_TRACE(GENERATE_VM_TYPE_ENTRY,
3097               GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3098 #endif
3099 
3100   VM_TYPES_EXT(GENERATE_VM_TYPE_ENTRY,
3101                GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3102 
3103   VM_TYPES_OS(GENERATE_VM_TYPE_ENTRY,
3104               GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3105               GENERATE_OOP_VM_TYPE_ENTRY,
3106               GENERATE_INTEGER_VM_TYPE_ENTRY,
3107               GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3108               GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3109               GENERATE_C2_VM_TYPE_ENTRY,
3110               GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3111 
3112   VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY,


3132 
3133 size_t VMStructs::localHotSpotVMTypesLength() {
3134   return sizeof(localHotSpotVMTypes) / sizeof(VMTypeEntry);
3135 }
3136 
3137 VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
3138 
3139   VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY,
3140                    GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3141                    GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3142                    GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3143                    GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3144 
3145 #if INCLUDE_ALL_GCS
3146   VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY)
3147 
3148   VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY)
3149 
3150   VM_INT_CONSTANTS_G1(GENERATE_VM_INT_CONSTANT_ENTRY,
3151                       GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY)



3152 #endif // INCLUDE_ALL_GCS
3153 
3154 #if INCLUDE_TRACE
3155   VM_INT_CONSTANTS_TRACE(GENERATE_VM_INT_CONSTANT_ENTRY)
3156 #endif
3157 
3158   VM_INT_CONSTANTS_OS(GENERATE_VM_INT_CONSTANT_ENTRY,
3159                       GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3160                       GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3161                       GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3162                       GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3163 
3164   VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3165                        GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3166                        GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3167                        GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3168                        GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3169 
3170   VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3171                           GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,


3189                     GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3190 
3191   VM_LONG_CONSTANTS_OS(GENERATE_VM_LONG_CONSTANT_ENTRY,
3192                        GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3193                        GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3194                        GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3195                        GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3196 
3197   VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3198                         GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3199                         GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3200                         GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3201                         GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3202 
3203   VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3204                            GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3205                            GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3206                            GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3207                            GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3208 





3209   GENERATE_VM_LONG_CONSTANT_LAST_ENTRY()
3210 };
3211 
3212 size_t VMStructs::localHotSpotVMLongConstantsLength() {
3213   return sizeof(localHotSpotVMLongConstants) / sizeof(VMLongConstantEntry);
3214 }
3215 
3216 // This is used both to check the types of referenced fields and, in
3217 // debug builds, to ensure that all of the field types are present.
3218 void
3219 VMStructs::init() {
3220   VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3221              CHECK_STATIC_VM_STRUCT_ENTRY,
3222              CHECK_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY,
3223              CHECK_NO_OP,
3224              CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3225              CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3226              CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
3227              CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
3228              CHECK_NO_OP,
3229              CHECK_NO_OP);
3230 
3231 #if INCLUDE_ALL_GCS
3232   VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3233                         CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3234                         CHECK_STATIC_VM_STRUCT_ENTRY);
3235 
3236   VM_STRUCTS_CMS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3237                  CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3238                  CHECK_STATIC_VM_STRUCT_ENTRY);
3239 
3240   VM_STRUCTS_G1(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3241                 CHECK_STATIC_VM_STRUCT_ENTRY);
3242 



3243 #endif // INCLUDE_ALL_GCS
3244 
3245 #if INCLUDE_TRACE
3246   VM_STRUCTS_TRACE(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3247                    CHECK_STATIC_VM_STRUCT_ENTRY);
3248 #endif
3249 
3250   VM_STRUCTS_EXT(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3251                  CHECK_STATIC_VM_STRUCT_ENTRY);
3252 
3253   VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3254                  CHECK_STATIC_VM_STRUCT_ENTRY,
3255                  CHECK_NO_OP,
3256                  CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3257                  CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3258                  CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
3259                  CHECK_NO_OP,
3260                  CHECK_NO_OP);
3261 
3262   VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,


3273            CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3274            CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3275            CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3276            CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
3277            CHECK_C2_VM_TYPE_ENTRY,
3278            CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY);
3279 
3280 #if INCLUDE_ALL_GCS
3281   VM_TYPES_PARALLELGC(CHECK_VM_TYPE_ENTRY,
3282                       CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3283 
3284   VM_TYPES_CMS(CHECK_VM_TYPE_ENTRY,
3285                CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3286 
3287   VM_TYPES_PARNEW(CHECK_VM_TYPE_ENTRY)
3288 
3289   VM_TYPES_G1(CHECK_VM_TYPE_ENTRY,
3290               CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3291               CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3292 


3293 #endif // INCLUDE_ALL_GCS
3294 
3295 #if INCLUDE_TRACE
3296   VM_TYPES_TRACE(CHECK_VM_TYPE_ENTRY,
3297               CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3298 #endif
3299 
3300   VM_TYPES_EXT(CHECK_VM_TYPE_ENTRY,
3301                CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3302 
3303   VM_TYPES_CPU(CHECK_VM_TYPE_ENTRY,
3304                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3305                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3306                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3307                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3308                CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
3309                CHECK_C2_VM_TYPE_ENTRY,
3310                CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY);
3311 
3312   VM_TYPES_OS_CPU(CHECK_VM_TYPE_ENTRY,


3347                         CHECK_NO_OP));
3348   debug_only(VM_STRUCTS(CHECK_NO_OP,
3349                         ENSURE_FIELD_TYPE_PRESENT,
3350                         ENSURE_FIELD_TYPE_PRESENT,
3351                         CHECK_NO_OP,
3352                         ENSURE_FIELD_TYPE_PRESENT,
3353                         ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT,
3354                         ENSURE_C1_FIELD_TYPE_PRESENT,
3355                         ENSURE_C2_FIELD_TYPE_PRESENT,
3356                         CHECK_NO_OP,
3357                         CHECK_NO_OP));
3358 #if INCLUDE_ALL_GCS
3359   debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT,
3360                                    ENSURE_FIELD_TYPE_PRESENT,
3361                                    ENSURE_FIELD_TYPE_PRESENT));
3362   debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT,
3363                             ENSURE_FIELD_TYPE_PRESENT,
3364                             ENSURE_FIELD_TYPE_PRESENT));
3365   debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT,
3366                            ENSURE_FIELD_TYPE_PRESENT));


3367 #endif // INCLUDE_ALL_GCS
3368 
3369 #if INCLUDE_TRACE
3370   debug_only(VM_STRUCTS_TRACE(ENSURE_FIELD_TYPE_PRESENT,
3371                            ENSURE_FIELD_TYPE_PRESENT));
3372 #endif
3373 
3374   debug_only(VM_STRUCTS_EXT(ENSURE_FIELD_TYPE_PRESENT,
3375                             ENSURE_FIELD_TYPE_PRESENT));
3376 
3377   debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT,
3378                             ENSURE_FIELD_TYPE_PRESENT,
3379                             CHECK_NO_OP,
3380                             ENSURE_FIELD_TYPE_PRESENT,
3381                             ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT,
3382                             ENSURE_C2_FIELD_TYPE_PRESENT,
3383                             CHECK_NO_OP,
3384                             CHECK_NO_OP));
3385   debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT,
3386                                ENSURE_FIELD_TYPE_PRESENT,


   1 /*
   2  * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 110 
 111 #include CPU_HEADER(vmStructs)
 112 #include OS_HEADER(vmStructs)
 113 #include OS_CPU_HEADER(vmStructs)
 114 
 115 #if INCLUDE_ALL_GCS
 116 #include "gc/cms/compactibleFreeListSpace.hpp"
 117 #include "gc/cms/concurrentMarkSweepGeneration.hpp"
 118 #include "gc/cms/concurrentMarkSweepThread.hpp"
 119 #include "gc/cms/parNewGeneration.hpp"
 120 #include "gc/cms/vmStructs_cms.hpp"
 121 #include "gc/cms/vmStructs_parNew.hpp"
 122 #include "gc/g1/vmStructs_g1.hpp"
 123 #include "gc/parallel/asPSOldGen.hpp"
 124 #include "gc/parallel/asPSYoungGen.hpp"
 125 #include "gc/parallel/parallelScavengeHeap.hpp"
 126 #include "gc/parallel/psOldGen.hpp"
 127 #include "gc/parallel/psVirtualspace.hpp"
 128 #include "gc/parallel/psYoungGen.hpp"
 129 #include "gc/parallel/vmStructs_parallelgc.hpp"
 130 #include "gc/z/vmStructs_z.hpp"
 131 #endif // INCLUDE_ALL_GCS
 132 
 133 #if INCLUDE_JVMCI
 134 # include "jvmci/vmStructs_jvmci.hpp"
 135 #endif
 136 
 137 #if INCLUDE_TRACE
 138 #include "runtime/vmStructs_trace.hpp"
 139 #endif
 140 
 141 #include "runtime/vmStructs_ext.hpp"
 142 
 143 #ifdef COMPILER2
 144 #include "opto/addnode.hpp"
 145 #include "opto/block.hpp"
 146 #include "opto/callnode.hpp"
 147 #include "opto/castnode.hpp"
 148 #include "opto/cfgnode.hpp"
 149 #include "opto/chaitin.hpp"
 150 #include "opto/convertnode.hpp"


1374   declare_toplevel_type(void*)                                            \
1375   declare_toplevel_type(int*)                                             \
1376   declare_toplevel_type(char*)                                            \
1377   declare_toplevel_type(char**)                                           \
1378   declare_toplevel_type(u_char*)                                          \
1379   declare_toplevel_type(unsigned char*)                                   \
1380   declare_toplevel_type(volatile unsigned char*)                          \
1381                                                                           \
1382   /*******************************************************************/   \
1383   /* Types which it will be handy to have available over in the SA   */   \
1384   /* in order to do platform-independent address -> integer coercion */   \
1385   /* (note: these will be looked up by name)                         */   \
1386   /*******************************************************************/   \
1387                                                                           \
1388   declare_unsigned_integer_type(size_t)                                   \
1389   declare_integer_type(ssize_t)                                           \
1390   declare_integer_type(intx)                                              \
1391   declare_integer_type(intptr_t)                                          \
1392   declare_unsigned_integer_type(uintx)                                    \
1393   declare_unsigned_integer_type(uintptr_t)                                \
1394   declare_unsigned_integer_type(uint8_t)                                  \
1395   declare_unsigned_integer_type(uint32_t)                                 \
1396   declare_unsigned_integer_type(uint64_t)                                 \
1397                                                                           \
1398   /******************************************/                            \
1399   /* OopDesc hierarchy (NOTE: some missing) */                            \
1400   /******************************************/                            \
1401                                                                           \
1402   declare_toplevel_type(oopDesc)                                          \
1403     declare_type(arrayOopDesc, oopDesc)                                   \
1404       declare_type(objArrayOopDesc, arrayOopDesc)                         \
1405     declare_type(instanceOopDesc, oopDesc)                                \
1406     declare_type(markOopDesc, oopDesc)                                    \
1407                                                                           \
1408   /**************************************************/                    \
1409   /* MetadataOopDesc hierarchy (NOTE: some missing) */                    \
1410   /**************************************************/                    \
1411                                                                           \
1412   declare_toplevel_type(CompiledICHolder)                                 \
1413   declare_toplevel_type(MetaspaceObj)                                     \
1414     declare_type(Metadata, MetaspaceObj)                                  \


3008              GENERATE_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY,
3009              GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3010              GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3011              GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3012              GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY,
3013              GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3014              GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3015              GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3016 
3017 #if INCLUDE_ALL_GCS
3018   VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3019                         GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3020                         GENERATE_STATIC_VM_STRUCT_ENTRY)
3021 
3022   VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3023                  GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3024                  GENERATE_STATIC_VM_STRUCT_ENTRY)
3025 
3026   VM_STRUCTS_G1(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3027                 GENERATE_STATIC_VM_STRUCT_ENTRY)
3028 
3029   VM_STRUCTS_Z(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3030                GENERATE_STATIC_VM_STRUCT_ENTRY)
3031 #endif // INCLUDE_ALL_GCS
3032 
3033 #if INCLUDE_TRACE
3034   VM_STRUCTS_TRACE(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3035                    GENERATE_STATIC_VM_STRUCT_ENTRY)
3036 #endif
3037 
3038   VM_STRUCTS_EXT(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3039                  GENERATE_STATIC_VM_STRUCT_ENTRY)
3040 
3041   VM_STRUCTS_OS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3042                 GENERATE_STATIC_VM_STRUCT_ENTRY,
3043                 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3044                 GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3045                 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3046                 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3047                 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3048                 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3049 
3050   VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,


3078            GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3079            GENERATE_OOP_VM_TYPE_ENTRY,
3080            GENERATE_INTEGER_VM_TYPE_ENTRY,
3081            GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3082            GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3083            GENERATE_C2_VM_TYPE_ENTRY,
3084            GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3085 
3086 #if INCLUDE_ALL_GCS
3087   VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY,
3088                       GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3089 
3090   VM_TYPES_CMS(GENERATE_VM_TYPE_ENTRY,
3091                GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3092 
3093   VM_TYPES_PARNEW(GENERATE_VM_TYPE_ENTRY)
3094 
3095   VM_TYPES_G1(GENERATE_VM_TYPE_ENTRY,
3096               GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3097               GENERATE_INTEGER_VM_TYPE_ENTRY)
3098 
3099   VM_TYPES_Z(GENERATE_VM_TYPE_ENTRY,
3100              GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3101 #endif // INCLUDE_ALL_GCS
3102 
3103 #if INCLUDE_TRACE
3104   VM_TYPES_TRACE(GENERATE_VM_TYPE_ENTRY,
3105               GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3106 #endif
3107 
3108   VM_TYPES_EXT(GENERATE_VM_TYPE_ENTRY,
3109                GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3110 
3111   VM_TYPES_OS(GENERATE_VM_TYPE_ENTRY,
3112               GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3113               GENERATE_OOP_VM_TYPE_ENTRY,
3114               GENERATE_INTEGER_VM_TYPE_ENTRY,
3115               GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3116               GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3117               GENERATE_C2_VM_TYPE_ENTRY,
3118               GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3119 
3120   VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY,


3140 
3141 size_t VMStructs::localHotSpotVMTypesLength() {
3142   return sizeof(localHotSpotVMTypes) / sizeof(VMTypeEntry);
3143 }
3144 
3145 VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
3146 
3147   VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY,
3148                    GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3149                    GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3150                    GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3151                    GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3152 
3153 #if INCLUDE_ALL_GCS
3154   VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY)
3155 
3156   VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY)
3157 
3158   VM_INT_CONSTANTS_G1(GENERATE_VM_INT_CONSTANT_ENTRY,
3159                       GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY)
3160 
3161   VM_INT_CONSTANTS_Z(GENERATE_VM_INT_CONSTANT_ENTRY,
3162                      GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY)
3163 #endif // INCLUDE_ALL_GCS
3164 
3165 #if INCLUDE_TRACE
3166   VM_INT_CONSTANTS_TRACE(GENERATE_VM_INT_CONSTANT_ENTRY)
3167 #endif
3168 
3169   VM_INT_CONSTANTS_OS(GENERATE_VM_INT_CONSTANT_ENTRY,
3170                       GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3171                       GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3172                       GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3173                       GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3174 
3175   VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3176                        GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3177                        GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3178                        GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3179                        GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3180 
3181   VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3182                           GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,


3200                     GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3201 
3202   VM_LONG_CONSTANTS_OS(GENERATE_VM_LONG_CONSTANT_ENTRY,
3203                        GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3204                        GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3205                        GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3206                        GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3207 
3208   VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3209                         GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3210                         GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3211                         GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3212                         GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3213 
3214   VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3215                            GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3216                            GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3217                            GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3218                            GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3219 
3220 #if INCLUDE_ALL_GCS
3221   VM_LONG_CONSTANTS_Z(GENERATE_VM_INT_CONSTANT_ENTRY,
3222                       GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY)
3223 #endif // INCLUDE_ALL_GCS
3224 
3225   GENERATE_VM_LONG_CONSTANT_LAST_ENTRY()
3226 };
3227 
3228 size_t VMStructs::localHotSpotVMLongConstantsLength() {
3229   return sizeof(localHotSpotVMLongConstants) / sizeof(VMLongConstantEntry);
3230 }
3231 
3232 // This is used both to check the types of referenced fields and, in
3233 // debug builds, to ensure that all of the field types are present.
3234 void
3235 VMStructs::init() {
3236   VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3237              CHECK_STATIC_VM_STRUCT_ENTRY,
3238              CHECK_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY,
3239              CHECK_NO_OP,
3240              CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3241              CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3242              CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
3243              CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
3244              CHECK_NO_OP,
3245              CHECK_NO_OP);
3246 
3247 #if INCLUDE_ALL_GCS
3248   VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3249                         CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3250                         CHECK_STATIC_VM_STRUCT_ENTRY);
3251 
3252   VM_STRUCTS_CMS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3253                  CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3254                  CHECK_STATIC_VM_STRUCT_ENTRY);
3255 
3256   VM_STRUCTS_G1(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3257                 CHECK_STATIC_VM_STRUCT_ENTRY);
3258 
3259   VM_STRUCTS_Z(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3260                CHECK_STATIC_VM_STRUCT_ENTRY);
3261 
3262 #endif // INCLUDE_ALL_GCS
3263 
3264 #if INCLUDE_TRACE
3265   VM_STRUCTS_TRACE(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3266                    CHECK_STATIC_VM_STRUCT_ENTRY);
3267 #endif
3268 
3269   VM_STRUCTS_EXT(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3270                  CHECK_STATIC_VM_STRUCT_ENTRY);
3271 
3272   VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3273                  CHECK_STATIC_VM_STRUCT_ENTRY,
3274                  CHECK_NO_OP,
3275                  CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3276                  CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3277                  CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
3278                  CHECK_NO_OP,
3279                  CHECK_NO_OP);
3280 
3281   VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,


3292            CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3293            CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3294            CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3295            CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
3296            CHECK_C2_VM_TYPE_ENTRY,
3297            CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY);
3298 
3299 #if INCLUDE_ALL_GCS
3300   VM_TYPES_PARALLELGC(CHECK_VM_TYPE_ENTRY,
3301                       CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3302 
3303   VM_TYPES_CMS(CHECK_VM_TYPE_ENTRY,
3304                CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3305 
3306   VM_TYPES_PARNEW(CHECK_VM_TYPE_ENTRY)
3307 
3308   VM_TYPES_G1(CHECK_VM_TYPE_ENTRY,
3309               CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3310               CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3311 
3312   VM_TYPES_Z(CHECK_VM_TYPE_ENTRY,
3313              CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3314 #endif // INCLUDE_ALL_GCS
3315 
3316 #if INCLUDE_TRACE
3317   VM_TYPES_TRACE(CHECK_VM_TYPE_ENTRY,
3318               CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3319 #endif
3320 
3321   VM_TYPES_EXT(CHECK_VM_TYPE_ENTRY,
3322                CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
3323 
3324   VM_TYPES_CPU(CHECK_VM_TYPE_ENTRY,
3325                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3326                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3327                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3328                CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
3329                CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY,
3330                CHECK_C2_VM_TYPE_ENTRY,
3331                CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY);
3332 
3333   VM_TYPES_OS_CPU(CHECK_VM_TYPE_ENTRY,


3368                         CHECK_NO_OP));
3369   debug_only(VM_STRUCTS(CHECK_NO_OP,
3370                         ENSURE_FIELD_TYPE_PRESENT,
3371                         ENSURE_FIELD_TYPE_PRESENT,
3372                         CHECK_NO_OP,
3373                         ENSURE_FIELD_TYPE_PRESENT,
3374                         ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT,
3375                         ENSURE_C1_FIELD_TYPE_PRESENT,
3376                         ENSURE_C2_FIELD_TYPE_PRESENT,
3377                         CHECK_NO_OP,
3378                         CHECK_NO_OP));
3379 #if INCLUDE_ALL_GCS
3380   debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT,
3381                                    ENSURE_FIELD_TYPE_PRESENT,
3382                                    ENSURE_FIELD_TYPE_PRESENT));
3383   debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT,
3384                             ENSURE_FIELD_TYPE_PRESENT,
3385                             ENSURE_FIELD_TYPE_PRESENT));
3386   debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT,
3387                            ENSURE_FIELD_TYPE_PRESENT));
3388   debug_only(VM_STRUCTS_Z(ENSURE_FIELD_TYPE_PRESENT,
3389                           ENSURE_FIELD_TYPE_PRESENT));
3390 #endif // INCLUDE_ALL_GCS
3391 
3392 #if INCLUDE_TRACE
3393   debug_only(VM_STRUCTS_TRACE(ENSURE_FIELD_TYPE_PRESENT,
3394                            ENSURE_FIELD_TYPE_PRESENT));
3395 #endif
3396 
3397   debug_only(VM_STRUCTS_EXT(ENSURE_FIELD_TYPE_PRESENT,
3398                             ENSURE_FIELD_TYPE_PRESENT));
3399 
3400   debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT,
3401                             ENSURE_FIELD_TYPE_PRESENT,
3402                             CHECK_NO_OP,
3403                             ENSURE_FIELD_TYPE_PRESENT,
3404                             ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT,
3405                             ENSURE_C2_FIELD_TYPE_PRESENT,
3406                             CHECK_NO_OP,
3407                             CHECK_NO_OP));
3408   debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT,
3409                                ENSURE_FIELD_TYPE_PRESENT,


< prev index next >