516 #define trueInDebug false 517 #define falseInDebug true 518 #endif 519 520 // use this for flags that are true per default in the product build 521 // but false in development builds, and vice versa 522 #ifdef PRODUCT 523 #define trueInProduct true 524 #define falseInProduct false 525 #else 526 #define trueInProduct false 527 #define falseInProduct true 528 #endif 529 530 #ifdef JAVASE_EMBEDDED 531 #define falseInEmbedded false 532 #else 533 #define falseInEmbedded true 534 #endif 535 536 // develop flags are settable / visible only during development and are constant in the PRODUCT version 537 // product flags are always settable / visible 538 // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version 539 540 // A flag must be declared with one of the following types: 541 // bool, int, uint, intx, uintx, size_t, ccstr, double, or uint64_t. 542 // The type "ccstr" is an alias for "const char*" and is used 543 // only in this file, because the macrology requires single-token type names. 544 545 // Note: Diagnostic options not meant for VM tuning or for product modes. 546 // They are to be used for VM quality assurance or field diagnosis 547 // of VM bugs. They are hidden so that users will not be encouraged to 548 // try them as if they were VM ordinary execution options. However, they 549 // are available in the product version of the VM. Under instruction 550 // from support engineers, VM customers can turn them on to collect 551 // diagnostic information about VM problems. To use a VM diagnostic 552 // option, you must first specify +UnlockDiagnosticVMOptions. 553 // (This master switch also affects the behavior of -Xprintflags.) 554 // 555 // experimental flags are in support of features that are not 4084 "archive specified by -XX:SharedArchiveFile)") \ 4085 \ 4086 product(bool, RequireSharedSpaces, false, \ 4087 "Require shared spaces for metadata") \ 4088 \ 4089 product(bool, DumpSharedSpaces, false, \ 4090 "Special mode: JVM reads a class list, loads classes, builds " \ 4091 "shared spaces, and dumps the shared spaces to a file to be " \ 4092 "used in future JVM runs") \ 4093 \ 4094 product(bool, PrintSharedSpaces, false, \ 4095 "Print usage of shared spaces") \ 4096 \ 4097 product(bool, PrintSharedArchiveAndExit, false, \ 4098 "Print shared archive file contents") \ 4099 \ 4100 product(bool, PrintSharedDictionary, false, \ 4101 "If PrintSharedArchiveAndExit is true, also print the shared " \ 4102 "dictionary") \ 4103 \ 4104 product(size_t, SharedReadWriteSize, NOT_LP64(12*M) LP64_ONLY(16*M), \ 4105 "Size of read-write space for metadata (in bytes)") \ 4106 \ 4107 product(size_t, SharedReadOnlySize, NOT_LP64(12*M) LP64_ONLY(16*M), \ 4108 "Size of read-only space for metadata (in bytes)") \ 4109 \ 4110 product(uintx, SharedMiscDataSize, NOT_LP64(2*M) LP64_ONLY(4*M), \ 4111 "Size of the shared miscellaneous data area (in bytes)") \ 4112 \ 4113 product(uintx, SharedMiscCodeSize, 120*K, \ 4114 "Size of the shared miscellaneous code area (in bytes)") \ 4115 \ 4116 product(uintx, SharedBaseAddress, LP64_ONLY(32*G) \ 4117 NOT_LP64(LINUX_ONLY(2*G) NOT_LINUX(0)), \ 4118 "Address to allocate shared memory region for class data") \ 4119 \ 4120 product(uintx, SharedSymbolTableBucketSize, 4, \ 4121 "Average number of symbols per bucket in shared table") \ 4122 range(2, 246) \ 4123 \ 4124 diagnostic(bool, IgnoreUnverifiableClassesDuringDump, false, \ 4125 "Do not quit -Xshare:dump even if we encounter unverifiable " \ 4126 "classes. Just exclude them from the shared dictionary.") \ 4127 \ 4128 diagnostic(bool, PrintMethodHandleStubs, false, \ 4129 "Print generated stub code for method handles") \ 4130 \ 4131 develop(bool, TraceMethodHandles, false, \ 4132 "trace internal method handle operations") \ 4133 \ 4134 diagnostic(bool, VerifyMethodHandles, trueInDebug, \ 4135 "perform extra checks when constructing method handles") \ 4136 \ 4137 diagnostic(bool, ShowHiddenFrames, false, \ 4138 "show method handle implementation frames (usually hidden)") \ | 516 #define trueInDebug false 517 #define falseInDebug true 518 #endif 519 520 // use this for flags that are true per default in the product build 521 // but false in development builds, and vice versa 522 #ifdef PRODUCT 523 #define trueInProduct true 524 #define falseInProduct false 525 #else 526 #define trueInProduct false 527 #define falseInProduct true 528 #endif 529 530 #ifdef JAVASE_EMBEDDED 531 #define falseInEmbedded false 532 #else 533 #define falseInEmbedded true 534 #endif 535 536 // metaspace defaults 537 #define DEFAULT_VTBL_LIST_SIZE (17) // number of entries in the shared space vtable list. 538 #define DEFAULT_VTBL_VIRTUALS_COUNT (200) // maximum number of virtual functions 539 // If virtual functions are added to Metadata, 540 // this number needs to be increased. Also, 541 // SharedMiscCodeSize will need to be increased. 542 // The following 2 sizes were based on 543 // MetaspaceShared::generate_vtable_methods() 544 #define DEFAULT_VTBL_METHOD_SIZE (16) // conservative size of the mov1 and jmp instructions 545 // for the x64 platform 546 #define DEFAULT_VTBL_COMMON_CODE_SIZE (1*K) // conservative size of the "common_code" for the x64 platform 547 548 #define DEFAULT_SHARED_READ_WRITE_SIZE (NOT_LP64(12*M) LP64_ONLY(16*M)) 549 #define MIN_SHARED_READ_WRITE_SIZE (NOT_LP64(7*M) LP64_ONLY(12*M)) 550 551 #define DEFAULT_SHARED_READ_ONLY_SIZE (NOT_LP64(12*M) LP64_ONLY(16*M)) 552 #define MIN_SHARED_READ_ONLY_SIZE (NOT_LP64(8*M) LP64_ONLY(9*M)) 553 554 // the MIN_SHARED_MISC_DATA_SIZE and MIN_SHARED_MISC_CODE_SIZE estimates are based on 555 // MetaspaceShared::generate_vtable_methods(). 556 // The minimum size only accounts for the vtable methods. Any size less than the 557 // minimum required size would cause vm crash when allocating the vtable methods. 558 #define SHARED_MISC_SIZE_FOR(size) (DEFAULT_VTBL_VIRTUALS_COUNT*DEFAULT_VTBL_LIST_SIZE*size) 559 560 #define DEFAULT_SHARED_MISC_DATA_SIZE (NOT_LP64(2*M) LP64_ONLY(4*M)) 561 #define MIN_SHARED_MISC_DATA_SIZE (SHARED_MISC_SIZE_FOR(sizeof(void*))) 562 563 #define DEFAULT_SHARED_MISC_CODE_SIZE (120*K) 564 #define MIN_SHARED_MISC_CODE_SIZE (SHARED_MISC_SIZE_FOR(sizeof(void*))+SHARED_MISC_SIZE_FOR(DEFAULT_VTBL_METHOD_SIZE)+DEFAULT_VTBL_COMMON_CODE_SIZE) 565 566 #define DEFAULT_COMBINED_SIZE (DEFAULT_SHARED_READ_WRITE_SIZE+DEFAULT_SHARED_READ_ONLY_SIZE+DEFAULT_SHARED_MISC_DATA_SIZE+DEFAULT_SHARED_MISC_CODE_SIZE) 567 568 #define SHARED_PAGE ((size_t)os::vm_page_size()) 569 #define MAX_SHARED_DELTA (0x7FFFFFFF) 570 #define MAX_SHARED_READ_WRITE_SIZE (MAX_SHARED_DELTA-(DEFAULT_SHARED_READ_ONLY_SIZE+DEFAULT_SHARED_MISC_DATA_SIZE+DEFAULT_SHARED_MISC_CODE_SIZE)-SHARED_PAGE) 571 #define MAX_SHARED_READ_ONLY_SIZE (MAX_SHARED_DELTA-(DEFAULT_SHARED_READ_WRITE_SIZE+DEFAULT_SHARED_MISC_DATA_SIZE+DEFAULT_SHARED_MISC_CODE_SIZE)-SHARED_PAGE) 572 #define MAX_SHARED_MISC_DATA_SIZE (MAX_SHARED_DELTA-(DEFAULT_SHARED_READ_WRITE_SIZE+DEFAULT_SHARED_READ_ONLY_SIZE+DEFAULT_SHARED_MISC_CODE_SIZE)-SHARED_PAGE) 573 #define MAX_SHARED_MISC_CODE_SIZE (MAX_SHARED_DELTA-(DEFAULT_SHARED_READ_WRITE_SIZE+DEFAULT_SHARED_READ_ONLY_SIZE+DEFAULT_SHARED_MISC_DATA_SIZE)-SHARED_PAGE) 574 575 576 // develop flags are settable / visible only during development and are constant in the PRODUCT version 577 // product flags are always settable / visible 578 // notproduct flags are settable / visible only during development and are not declared in the PRODUCT version 579 580 // A flag must be declared with one of the following types: 581 // bool, int, uint, intx, uintx, size_t, ccstr, double, or uint64_t. 582 // The type "ccstr" is an alias for "const char*" and is used 583 // only in this file, because the macrology requires single-token type names. 584 585 // Note: Diagnostic options not meant for VM tuning or for product modes. 586 // They are to be used for VM quality assurance or field diagnosis 587 // of VM bugs. They are hidden so that users will not be encouraged to 588 // try them as if they were VM ordinary execution options. However, they 589 // are available in the product version of the VM. Under instruction 590 // from support engineers, VM customers can turn them on to collect 591 // diagnostic information about VM problems. To use a VM diagnostic 592 // option, you must first specify +UnlockDiagnosticVMOptions. 593 // (This master switch also affects the behavior of -Xprintflags.) 594 // 595 // experimental flags are in support of features that are not 4124 "archive specified by -XX:SharedArchiveFile)") \ 4125 \ 4126 product(bool, RequireSharedSpaces, false, \ 4127 "Require shared spaces for metadata") \ 4128 \ 4129 product(bool, DumpSharedSpaces, false, \ 4130 "Special mode: JVM reads a class list, loads classes, builds " \ 4131 "shared spaces, and dumps the shared spaces to a file to be " \ 4132 "used in future JVM runs") \ 4133 \ 4134 product(bool, PrintSharedSpaces, false, \ 4135 "Print usage of shared spaces") \ 4136 \ 4137 product(bool, PrintSharedArchiveAndExit, false, \ 4138 "Print shared archive file contents") \ 4139 \ 4140 product(bool, PrintSharedDictionary, false, \ 4141 "If PrintSharedArchiveAndExit is true, also print the shared " \ 4142 "dictionary") \ 4143 \ 4144 product(size_t, SharedReadWriteSize, DEFAULT_SHARED_READ_WRITE_SIZE, \ 4145 "Size of read-write space for metadata (in bytes)") \ 4146 range(MIN_SHARED_READ_WRITE_SIZE, MAX_SHARED_READ_WRITE_SIZE) \ 4147 \ 4148 product(size_t, SharedReadOnlySize, DEFAULT_SHARED_READ_ONLY_SIZE, \ 4149 "Size of read-only space for metadata (in bytes)") \ 4150 range(MIN_SHARED_READ_ONLY_SIZE, MAX_SHARED_READ_ONLY_SIZE) \ 4151 \ 4152 product(size_t, SharedMiscDataSize, DEFAULT_SHARED_MISC_DATA_SIZE, \ 4153 "Size of the shared miscellaneous data area (in bytes)") \ 4154 range(MIN_SHARED_MISC_DATA_SIZE, MAX_SHARED_MISC_DATA_SIZE) \ 4155 \ 4156 product(size_t, SharedMiscCodeSize, DEFAULT_SHARED_MISC_CODE_SIZE, \ 4157 "Size of the shared miscellaneous code area (in bytes)") \ 4158 range(MIN_SHARED_MISC_CODE_SIZE, MAX_SHARED_MISC_CODE_SIZE) \ 4159 \ 4160 product(size_t, SharedBaseAddress, LP64_ONLY(32*G) \ 4161 NOT_LP64(LINUX_ONLY(2*G) NOT_LINUX(0)), \ 4162 "Address to allocate shared memory region for class data") \ 4163 range(0, SIZE_MAX) \ 4164 \ 4165 product(uintx, SharedSymbolTableBucketSize, 4, \ 4166 "Average number of symbols per bucket in shared table") \ 4167 range(2, 246) \ 4168 \ 4169 diagnostic(bool, IgnoreUnverifiableClassesDuringDump, false, \ 4170 "Do not quit -Xshare:dump even if we encounter unverifiable " \ 4171 "classes. Just exclude them from the shared dictionary.") \ 4172 \ 4173 diagnostic(bool, PrintMethodHandleStubs, false, \ 4174 "Print generated stub code for method handles") \ 4175 \ 4176 develop(bool, TraceMethodHandles, false, \ 4177 "trace internal method handle operations") \ 4178 \ 4179 diagnostic(bool, VerifyMethodHandles, trueInDebug, \ 4180 "perform extra checks when constructing method handles") \ 4181 \ 4182 diagnostic(bool, ShowHiddenFrames, false, \ 4183 "show method handle implementation frames (usually hidden)") \ |