3004 GENERATE_STATIC_VM_STRUCT_ENTRY,
3005 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3006 GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3007 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3008 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3009 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3010 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3011
3012 VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3013 GENERATE_STATIC_VM_STRUCT_ENTRY,
3014 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3015 GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3016 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3017 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3018 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3019 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3020
3021 GENERATE_VM_STRUCT_LAST_ENTRY()
3022 };
3023
3024 VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
3025
3026 VM_TYPES(GENERATE_VM_TYPE_ENTRY,
3027 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3028 GENERATE_OOP_VM_TYPE_ENTRY,
3029 GENERATE_INTEGER_VM_TYPE_ENTRY,
3030 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3031 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3032 GENERATE_C2_VM_TYPE_ENTRY,
3033 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3034
3035 #if INCLUDE_ALL_GCS
3036 VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY,
3037 GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3038
3039 VM_TYPES_CMS(GENERATE_VM_TYPE_ENTRY,
3040 GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3041
3042 VM_TYPES_PARNEW(GENERATE_VM_TYPE_ENTRY)
3043
3066 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3067 GENERATE_OOP_VM_TYPE_ENTRY,
3068 GENERATE_INTEGER_VM_TYPE_ENTRY,
3069 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3070 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3071 GENERATE_C2_VM_TYPE_ENTRY,
3072 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3073
3074 VM_TYPES_OS_CPU(GENERATE_VM_TYPE_ENTRY,
3075 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3076 GENERATE_OOP_VM_TYPE_ENTRY,
3077 GENERATE_INTEGER_VM_TYPE_ENTRY,
3078 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3079 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3080 GENERATE_C2_VM_TYPE_ENTRY,
3081 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3082
3083 GENERATE_VM_TYPE_LAST_ENTRY()
3084 };
3085
3086 VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
3087
3088 VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY,
3089 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3090 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3091 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3092 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3093
3094 #if INCLUDE_ALL_GCS
3095 VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY)
3096
3097 VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY)
3098
3099 VM_INT_CONSTANTS_G1(GENERATE_VM_INT_CONSTANT_ENTRY,
3100 GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY)
3101 #endif // INCLUDE_ALL_GCS
3102
3103 #if INCLUDE_TRACE
3104 VM_INT_CONSTANTS_TRACE(GENERATE_VM_INT_CONSTANT_ENTRY)
3105 #endif
3108 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3109 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3110 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3111 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3112
3113 VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3114 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3115 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3116 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3117 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3118
3119 VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3120 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3121 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3122 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3123 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3124
3125 GENERATE_VM_INT_CONSTANT_LAST_ENTRY()
3126 };
3127
3128 VMLongConstantEntry VMStructs::localHotSpotVMLongConstants[] = {
3129
3130 VM_LONG_CONSTANTS(GENERATE_VM_LONG_CONSTANT_ENTRY,
3131 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3132 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3133 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3134 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3135
3136 VM_LONG_CONSTANTS_OS(GENERATE_VM_LONG_CONSTANT_ENTRY,
3137 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3138 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3139 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3140 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3141
3142 VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3143 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3144 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3145 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3146 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3147
3148 VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3149 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3150 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3151 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3152 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3153
3154 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY()
3155 };
3156
3157 // This is used both to check the types of referenced fields and, in
3158 // debug builds, to ensure that all of the field types are present.
3159 void
3160 VMStructs::init() {
3161 VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3162 CHECK_STATIC_VM_STRUCT_ENTRY,
3163 CHECK_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY,
3164 CHECK_NO_OP,
3165 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3166 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3167 CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
3168 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
3169 CHECK_NO_OP,
3170 CHECK_NO_OP);
3171
3172 #if INCLUDE_ALL_GCS
3173 VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3174 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3175 CHECK_STATIC_VM_STRUCT_ENTRY);
3176
3428 os::free(s);
3429 }
3430 if (!isRecurse) {
3431 tty->print_cr("type \"%s\" not found", typeName);
3432 }
3433 return 0;
3434 }
3435
3436
3437 int
3438 VMStructs::findType(const char* typeName) {
3439 VMTypeEntry* types = gHotSpotVMTypes;
3440
3441 return recursiveFindType(types, typeName, false);
3442 }
3443 #endif
3444
3445 void vmStructs_init() {
3446 debug_only(VMStructs::init());
3447 }
3448
3449 #ifndef PRODUCT
3450 void VMStructs::test() {
3451 // Make sure last entry in the each array is indeed the correct end marker.
3452 // The reason why these are static is to make sure they are zero initialized.
3453 // Putting them on the stack will leave some garbage in the padding of some fields.
3454 static VMStructEntry struct_last_entry = GENERATE_VM_STRUCT_LAST_ENTRY();
3455 assert(memcmp(&localHotSpotVMStructs[(sizeof(localHotSpotVMStructs) / sizeof(VMStructEntry)) - 1],
3456 &struct_last_entry,
3457 sizeof(VMStructEntry)) == 0, "Incorrect last entry in localHotSpotVMStructs");
3458
3459 static VMTypeEntry type_last_entry = GENERATE_VM_TYPE_LAST_ENTRY();
3460 assert(memcmp(&localHotSpotVMTypes[sizeof(localHotSpotVMTypes) / sizeof(VMTypeEntry) - 1],
3461 &type_last_entry,
3462 sizeof(VMTypeEntry)) == 0, "Incorrect last entry in localHotSpotVMTypes");
3463
3464 static VMIntConstantEntry int_last_entry = GENERATE_VM_INT_CONSTANT_LAST_ENTRY();
3465 assert(memcmp(&localHotSpotVMIntConstants[sizeof(localHotSpotVMIntConstants) / sizeof(VMIntConstantEntry) - 1],
3466 &int_last_entry,
3467 sizeof(VMIntConstantEntry)) == 0, "Incorrect last entry in localHotSpotVMIntConstants");
3468
3469 static VMLongConstantEntry long_last_entry = GENERATE_VM_LONG_CONSTANT_LAST_ENTRY();
3470 assert(memcmp(&localHotSpotVMLongConstants[sizeof(localHotSpotVMLongConstants) / sizeof(VMLongConstantEntry) - 1],
3471 &long_last_entry,
3472 sizeof(VMLongConstantEntry)) == 0, "Incorrect last entry in localHotSpotVMLongConstants");
3473
3474
3475 // Check for duplicate entries in type array
3476 for (int i = 0; localHotSpotVMTypes[i].typeName != NULL; i++) {
3477 for (int j = i + 1; localHotSpotVMTypes[j].typeName != NULL; j++) {
3478 if (strcmp(localHotSpotVMTypes[i].typeName, localHotSpotVMTypes[j].typeName) == 0) {
3479 tty->print_cr("Duplicate entries for '%s'", localHotSpotVMTypes[i].typeName);
3480 assert(false, "Duplicate types in localHotSpotVMTypes array");
3481 }
3482 }
3483 }
3484 }
3485
3486 void VMStructs_test() {
3487 VMStructs::test();
3488 }
3489 #endif
|
3004 GENERATE_STATIC_VM_STRUCT_ENTRY,
3005 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3006 GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3007 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3008 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3009 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3010 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3011
3012 VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3013 GENERATE_STATIC_VM_STRUCT_ENTRY,
3014 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
3015 GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
3016 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3017 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY,
3018 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY,
3019 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY)
3020
3021 GENERATE_VM_STRUCT_LAST_ENTRY()
3022 };
3023
3024 size_t VMStructs::localHotSpotVMStructsLength() {
3025 return sizeof(localHotSpotVMStructs) / sizeof(VMStructEntry);
3026 }
3027
3028 VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
3029
3030 VM_TYPES(GENERATE_VM_TYPE_ENTRY,
3031 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3032 GENERATE_OOP_VM_TYPE_ENTRY,
3033 GENERATE_INTEGER_VM_TYPE_ENTRY,
3034 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3035 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3036 GENERATE_C2_VM_TYPE_ENTRY,
3037 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3038
3039 #if INCLUDE_ALL_GCS
3040 VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY,
3041 GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3042
3043 VM_TYPES_CMS(GENERATE_VM_TYPE_ENTRY,
3044 GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
3045
3046 VM_TYPES_PARNEW(GENERATE_VM_TYPE_ENTRY)
3047
3070 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3071 GENERATE_OOP_VM_TYPE_ENTRY,
3072 GENERATE_INTEGER_VM_TYPE_ENTRY,
3073 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3074 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3075 GENERATE_C2_VM_TYPE_ENTRY,
3076 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3077
3078 VM_TYPES_OS_CPU(GENERATE_VM_TYPE_ENTRY,
3079 GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
3080 GENERATE_OOP_VM_TYPE_ENTRY,
3081 GENERATE_INTEGER_VM_TYPE_ENTRY,
3082 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY,
3083 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY,
3084 GENERATE_C2_VM_TYPE_ENTRY,
3085 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY)
3086
3087 GENERATE_VM_TYPE_LAST_ENTRY()
3088 };
3089
3090 size_t VMStructs::localHotSpotVMTypesLength() {
3091 return sizeof(localHotSpotVMTypes) / sizeof(VMTypeEntry);
3092 }
3093
3094 VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
3095
3096 VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY,
3097 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3098 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3099 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3100 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3101
3102 #if INCLUDE_ALL_GCS
3103 VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY)
3104
3105 VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY)
3106
3107 VM_INT_CONSTANTS_G1(GENERATE_VM_INT_CONSTANT_ENTRY,
3108 GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY)
3109 #endif // INCLUDE_ALL_GCS
3110
3111 #if INCLUDE_TRACE
3112 VM_INT_CONSTANTS_TRACE(GENERATE_VM_INT_CONSTANT_ENTRY)
3113 #endif
3116 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3117 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3118 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3119 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3120
3121 VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3122 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3123 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3124 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3125 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3126
3127 VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
3128 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
3129 GENERATE_C1_VM_INT_CONSTANT_ENTRY,
3130 GENERATE_C2_VM_INT_CONSTANT_ENTRY,
3131 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY)
3132
3133 GENERATE_VM_INT_CONSTANT_LAST_ENTRY()
3134 };
3135
3136 size_t VMStructs::localHotSpotVMIntConstantsLength() {
3137 return sizeof(localHotSpotVMIntConstants) / sizeof(VMIntConstantEntry);
3138 }
3139
3140 VMLongConstantEntry VMStructs::localHotSpotVMLongConstants[] = {
3141
3142 VM_LONG_CONSTANTS(GENERATE_VM_LONG_CONSTANT_ENTRY,
3143 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3144 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3145 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3146 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3147
3148 VM_LONG_CONSTANTS_OS(GENERATE_VM_LONG_CONSTANT_ENTRY,
3149 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3150 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3151 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3152 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3153
3154 VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3155 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3156 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3157 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3158 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3159
3160 VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY,
3161 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY,
3162 GENERATE_C1_VM_LONG_CONSTANT_ENTRY,
3163 GENERATE_C2_VM_LONG_CONSTANT_ENTRY,
3164 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY)
3165
3166 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY()
3167 };
3168
3169 size_t VMStructs::localHotSpotVMLongConstantsLength() {
3170 return sizeof(localHotSpotVMLongConstants) / sizeof(VMLongConstantEntry);
3171 }
3172
3173 // This is used both to check the types of referenced fields and, in
3174 // debug builds, to ensure that all of the field types are present.
3175 void
3176 VMStructs::init() {
3177 VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3178 CHECK_STATIC_VM_STRUCT_ENTRY,
3179 CHECK_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY,
3180 CHECK_NO_OP,
3181 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3182 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY,
3183 CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY,
3184 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY,
3185 CHECK_NO_OP,
3186 CHECK_NO_OP);
3187
3188 #if INCLUDE_ALL_GCS
3189 VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
3190 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY,
3191 CHECK_STATIC_VM_STRUCT_ENTRY);
3192
3444 os::free(s);
3445 }
3446 if (!isRecurse) {
3447 tty->print_cr("type \"%s\" not found", typeName);
3448 }
3449 return 0;
3450 }
3451
3452
3453 int
3454 VMStructs::findType(const char* typeName) {
3455 VMTypeEntry* types = gHotSpotVMTypes;
3456
3457 return recursiveFindType(types, typeName, false);
3458 }
3459 #endif
3460
3461 void vmStructs_init() {
3462 debug_only(VMStructs::init());
3463 }
|