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,
|