globals.hpp revision 4445:0ca3dd0ffaba
1266423Sjfv/* 2266423Sjfv * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 3279033Sjfv * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4266423Sjfv * 5266423Sjfv * This code is free software; you can redistribute it and/or modify it 6266423Sjfv * under the terms of the GNU General Public License version 2 only, as 7266423Sjfv * published by the Free Software Foundation. 8266423Sjfv * 9266423Sjfv * This code is distributed in the hope that it will be useful, but WITHOUT 10266423Sjfv * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11266423Sjfv * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12266423Sjfv * version 2 for more details (a copy is included in the LICENSE file that 13266423Sjfv * accompanied this code). 14266423Sjfv * 15266423Sjfv * You should have received a copy of the GNU General Public License version 16266423Sjfv * 2 along with this work; if not, write to the Free Software Foundation, 17266423Sjfv * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18266423Sjfv * 19266423Sjfv * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20266423Sjfv * or visit www.oracle.com if you need additional information or have any 21266423Sjfv * questions. 22266423Sjfv * 23266423Sjfv */ 24266423Sjfv 25266423Sjfv#ifndef SHARE_VM_RUNTIME_GLOBALS_HPP 26266423Sjfv#define SHARE_VM_RUNTIME_GLOBALS_HPP 27266423Sjfv 28266423Sjfv#include "utilities/debug.hpp" 29266423Sjfv 30266423Sjfv// use this for flags that are true per default in the tiered build 31266423Sjfv// but false in non-tiered builds, and vice versa 32266423Sjfv#ifdef TIERED 33266423Sjfv#define trueInTiered true 34266423Sjfv#define falseInTiered false 35279033Sjfv#else 36266423Sjfv#define trueInTiered false 37266423Sjfv#define falseInTiered true 38277084Sjfv#endif 39279033Sjfv 40279033Sjfv#ifdef TARGET_ARCH_x86 41270346Sjfv# include "globals_x86.hpp" 42270346Sjfv#endif 43269198Sjfv#ifdef TARGET_ARCH_sparc 44277262Sjfv# include "globals_sparc.hpp" 45277262Sjfv#endif 46277262Sjfv#ifdef TARGET_ARCH_zero 47277262Sjfv# include "globals_zero.hpp" 48266423Sjfv#endif 49266423Sjfv#ifdef TARGET_ARCH_arm 50266423Sjfv# include "globals_arm.hpp" 51299552Serj#endif 52266423Sjfv#ifdef TARGET_ARCH_ppc 53266423Sjfv# include "globals_ppc.hpp" 54266423Sjfv#endif 55266423Sjfv#ifdef TARGET_OS_FAMILY_linux 56266423Sjfv# include "globals_linux.hpp" 57270346Sjfv#endif 58266423Sjfv#ifdef TARGET_OS_FAMILY_solaris 59266423Sjfv# include "globals_solaris.hpp" 60266423Sjfv#endif 61266423Sjfv#ifdef TARGET_OS_FAMILY_windows 62266423Sjfv# include "globals_windows.hpp" 63270346Sjfv#endif 64266423Sjfv#ifdef TARGET_OS_FAMILY_bsd 65266423Sjfv# include "globals_bsd.hpp" 66266423Sjfv#endif 67266423Sjfv#ifdef TARGET_OS_ARCH_linux_x86 68266423Sjfv# include "globals_linux_x86.hpp" 69266423Sjfv#endif 70266423Sjfv#ifdef TARGET_OS_ARCH_linux_sparc 71270346Sjfv# include "globals_linux_sparc.hpp" 72284049Sjfv#endif 73266423Sjfv#ifdef TARGET_OS_ARCH_linux_zero 74266423Sjfv# include "globals_linux_zero.hpp" 75266423Sjfv#endif 76266423Sjfv#ifdef TARGET_OS_ARCH_solaris_x86 77266423Sjfv# include "globals_solaris_x86.hpp" 78266423Sjfv#endif 79266423Sjfv#ifdef TARGET_OS_ARCH_solaris_sparc 80266423Sjfv# include "globals_solaris_sparc.hpp" 81270346Sjfv#endif 82266423Sjfv#ifdef TARGET_OS_ARCH_windows_x86 83266423Sjfv# include "globals_windows_x86.hpp" 84266423Sjfv#endif 85266423Sjfv#ifdef TARGET_OS_ARCH_linux_arm 86266423Sjfv# include "globals_linux_arm.hpp" 87266423Sjfv#endif 88266423Sjfv#ifdef TARGET_OS_ARCH_linux_ppc 89270346Sjfv# include "globals_linux_ppc.hpp" 90270346Sjfv#endif 91270346Sjfv#ifdef TARGET_OS_ARCH_bsd_x86 92270346Sjfv# include "globals_bsd_x86.hpp" 93270346Sjfv#endif 94270346Sjfv#ifdef TARGET_OS_ARCH_bsd_zero 95270346Sjfv# include "globals_bsd_zero.hpp" 96270346Sjfv#endif 97270346Sjfv#ifdef COMPILER1 98270346Sjfv#ifdef TARGET_ARCH_x86 99299547Serj# include "c1_globals_x86.hpp" 100270346Sjfv#endif 101270346Sjfv#ifdef TARGET_ARCH_sparc 102270346Sjfv# include "c1_globals_sparc.hpp" 103270346Sjfv#endif 104270346Sjfv#ifdef TARGET_ARCH_arm 105270346Sjfv# include "c1_globals_arm.hpp" 106279033Sjfv#endif 107270346Sjfv#ifdef TARGET_ARCH_ppc 108270346Sjfv# include "c1_globals_ppc.hpp" 109270346Sjfv#endif 110270346Sjfv#ifdef TARGET_OS_FAMILY_linux 111270346Sjfv# include "c1_globals_linux.hpp" 112270346Sjfv#endif 113270346Sjfv#ifdef TARGET_OS_FAMILY_solaris 114299546Serj# include "c1_globals_solaris.hpp" 115299546Serj#endif 116299547Serj#ifdef TARGET_OS_FAMILY_windows 117270346Sjfv# include "c1_globals_windows.hpp" 118270346Sjfv#endif 119270346Sjfv#ifdef TARGET_OS_FAMILY_bsd 120279858Sjfv# include "c1_globals_bsd.hpp" 121270346Sjfv#endif 122270346Sjfv#endif 123270346Sjfv#ifdef COMPILER2 124274205Sjfv#ifdef TARGET_ARCH_x86 125266423Sjfv# include "c2_globals_x86.hpp" 126279858Sjfv#endif 127279858Sjfv#ifdef TARGET_ARCH_sparc 128279858Sjfv# include "c2_globals_sparc.hpp" 129279858Sjfv#endif 130279858Sjfv#ifdef TARGET_ARCH_arm 131266423Sjfv# include "c2_globals_arm.hpp" 132270346Sjfv#endif 133270346Sjfv#ifdef TARGET_OS_FAMILY_linux 134270346Sjfv# include "c2_globals_linux.hpp" 135270346Sjfv#endif 136270346Sjfv#ifdef TARGET_OS_FAMILY_solaris 137270346Sjfv# include "c2_globals_solaris.hpp" 138266423Sjfv#endif 139270346Sjfv#ifdef TARGET_OS_FAMILY_windows 140270346Sjfv# include "c2_globals_windows.hpp" 141270346Sjfv#endif 142270346Sjfv#ifdef TARGET_OS_FAMILY_bsd 143270346Sjfv# include "c2_globals_bsd.hpp" 144270346Sjfv#endif 145266423Sjfv#endif 146270346Sjfv#ifdef SHARK 147279858Sjfv#ifdef TARGET_ARCH_zero 148270346Sjfv# include "shark_globals_zero.hpp" 149270346Sjfv#endif 150270346Sjfv#endif 151270346Sjfv 152270346Sjfv#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK) 153270346Sjfvdefine_pd_global(bool, BackgroundCompilation, false); 154270346Sjfvdefine_pd_global(bool, UseTLAB, false); 155279858Sjfvdefine_pd_global(bool, CICompileOSR, false); 156266423Sjfvdefine_pd_global(bool, UseTypeProfile, false); 157299549Serjdefine_pd_global(bool, UseOnStackReplacement, false); 158299549Serjdefine_pd_global(bool, InlineIntrinsics, false); 159279858Sjfvdefine_pd_global(bool, PreferInterpreterNativeStubs, true); 160299549Serjdefine_pd_global(bool, ProfileInterpreter, false); 161299549Serjdefine_pd_global(bool, ProfileTraps, false); 162299549Serjdefine_pd_global(bool, TieredCompilation, false); 163299549Serj 164299549Serjdefine_pd_global(intx, CompileThreshold, 0); 165299549Serjdefine_pd_global(intx, BackEdgeThreshold, 0); 166299552Serj 167299552Serjdefine_pd_global(intx, OnStackReplacePercentage, 0); 168299552Serjdefine_pd_global(bool, ResizeTLAB, false); 169299549Serjdefine_pd_global(intx, FreqInlineSize, 0); 170299549Serjdefine_pd_global(intx, InlineSmallCode, 0); 171299549Serjdefine_pd_global(intx, NewSizeThreadIncrease, 4*K); 172299549Serjdefine_pd_global(intx, InlineClassNatives, true); 173299549Serjdefine_pd_global(intx, InlineUnsafeOps, true); 174299549Serjdefine_pd_global(intx, InitialCodeCacheSize, 160*K); 175299549Serjdefine_pd_global(intx, ReservedCodeCacheSize, 32*M); 176266423Sjfvdefine_pd_global(intx, CodeCacheExpansionSize, 32*K); 177270346Sjfvdefine_pd_global(intx, CodeCacheMinBlockLength, 1); 178270346Sjfvdefine_pd_global(uintx,MetaspaceSize, ScaleForWordSize(4*M)); 179270346Sjfvdefine_pd_global(bool, NeverActAsServerClassMachine, true); 180270346Sjfvdefine_pd_global(uint64_t,MaxRAM, 1ULL*G); 181266423Sjfv#define CI_COMPILER_COUNT 0 182266423Sjfv#else 183270346Sjfv 184266423Sjfv#ifdef COMPILER2 185266423Sjfv#define CI_COMPILER_COUNT 2 186270346Sjfv#else 187270346Sjfv#define CI_COMPILER_COUNT 1 188266423Sjfv#endif // COMPILER2 189270346Sjfv 190266423Sjfv#endif // no compilers 191266423Sjfv 192270346Sjfv// string type aliases used only in this file 193270346Sjfvtypedef const char* ccstr; 194279858Sjfvtypedef const char* ccstrlist; // represents string arguments which accumulate 195270346Sjfv 196270346Sjfvenum FlagValueOrigin { 197270346Sjfv DEFAULT = 0, 198266423Sjfv COMMAND_LINE = 1, 199270346Sjfv ENVIRON_VAR = 2, 200266423Sjfv CONFIG_FILE = 3, 201299547Serj MANAGEMENT = 4, 202299547Serj ERGONOMIC = 5, 203266423Sjfv ATTACH_ON_DEMAND = 6, 204266423Sjfv INTERNAL = 99 205279858Sjfv}; 206279858Sjfv 207279858Sjfvstruct Flag { 208299546Serj const char *type; 209299546Serj const char *name; 210279858Sjfv void* addr; 211279858Sjfv 212279858Sjfv NOT_PRODUCT(const char *doc;) 213279858Sjfv 214279858Sjfv const char *kind; 215279858Sjfv FlagValueOrigin origin; 216279858Sjfv 217279858Sjfv // points to all Flags static array 218279858Sjfv static Flag *flags; 219279858Sjfv 220266423Sjfv // number of flags 221266423Sjfv static size_t numFlags; 222266423Sjfv 223266423Sjfv static Flag* find_flag(char* name, size_t length, bool allow_locked = false); 224270346Sjfv 225266423Sjfv bool is_bool() const { return strcmp(type, "bool") == 0; } 226270346Sjfv bool get_bool() const { return *((bool*) addr); } 227270346Sjfv void set_bool(bool value) { *((bool*) addr) = value; } 228270346Sjfv 229270346Sjfv bool is_intx() const { return strcmp(type, "intx") == 0; } 230279858Sjfv intx get_intx() const { return *((intx*) addr); } 231299546Serj void set_intx(intx value) { *((intx*) addr) = value; } 232299546Serj 233299546Serj bool is_uintx() const { return strcmp(type, "uintx") == 0; } 234279858Sjfv uintx get_uintx() const { return *((uintx*) addr); } 235266423Sjfv void set_uintx(uintx value) { *((uintx*) addr) = value; } 236266423Sjfv 237266423Sjfv bool is_uint64_t() const { return strcmp(type, "uint64_t") == 0; } 238270346Sjfv uint64_t get_uint64_t() const { return *((uint64_t*) addr); } 239270346Sjfv void set_uint64_t(uint64_t value) { *((uint64_t*) addr) = value; } 240266423Sjfv 241266423Sjfv bool is_double() const { return strcmp(type, "double") == 0; } 242270346Sjfv double get_double() const { return *((double*) addr); } 243270346Sjfv void set_double(double value) { *((double*) addr) = value; } 244266423Sjfv 245270346Sjfv bool is_ccstr() const { return strcmp(type, "ccstr") == 0 || strcmp(type, "ccstrlist") == 0; } 246270346Sjfv bool ccstr_accumulates() const { return strcmp(type, "ccstrlist") == 0; } 247279860Sjfv ccstr get_ccstr() const { return *((ccstr*) addr); } 248279860Sjfv void set_ccstr(ccstr value) { *((ccstr*) addr) = value; } 249279860Sjfv 250279860Sjfv bool is_unlocker() const; 251266423Sjfv bool is_unlocked() const; 252269198Sjfv bool is_writeable() const; 253269198Sjfv bool is_external() const; 254270346Sjfv 255269198Sjfv bool is_unlocker_ext() const; 256269198Sjfv bool is_unlocked_ext() const; 257270346Sjfv bool is_writeable_ext() const; 258270346Sjfv bool is_external_ext() const; 259270346Sjfv 260270346Sjfv void get_locked_message(char*, int) const; 261270346Sjfv void get_locked_message_ext(char*, int) const; 262270346Sjfv 263270346Sjfv void print_on(outputStream* st, bool withComments = false ); 264266423Sjfv void print_as_flag(outputStream* st); 265266423Sjfv}; 266266423Sjfv 267270346Sjfv// debug flags control various aspects of the VM and are global accessible 268270346Sjfv 269270346Sjfv// use FlagSetting to temporarily change some debug flag 270270346Sjfv// e.g. FlagSetting fs(DebugThisAndThat, true); 271266423Sjfv// restored to previous value upon leaving scope 272266423Sjfvclass FlagSetting { 273266423Sjfv bool val; 274266423Sjfv bool* flag; 275266423Sjfv public: 276270346Sjfv FlagSetting(bool& fl, bool newValue) { flag = &fl; val = fl; fl = newValue; } 277270346Sjfv ~FlagSetting() { *flag = val; } 278270346Sjfv}; 279270346Sjfv 280266423Sjfv 281266423Sjfvclass CounterSetting { 282266423Sjfv intx* counter; 283266423Sjfv public: 284266423Sjfv CounterSetting(intx* cnt) { counter = cnt; (*counter)++; } 285266423Sjfv ~CounterSetting() { (*counter)--; } 286270346Sjfv}; 287270346Sjfv 288270346Sjfv 289270346Sjfvclass IntFlagSetting { 290266423Sjfv intx val; 291266423Sjfv intx* flag; 292266423Sjfv public: 293266423Sjfv IntFlagSetting(intx& fl, intx newValue) { flag = &fl; val = fl; fl = newValue; } 294266423Sjfv ~IntFlagSetting() { *flag = val; } 295266423Sjfv}; 296270346Sjfv 297270346Sjfv 298270346Sjfvclass DoubleFlagSetting { 299270346Sjfv double val; 300266423Sjfv double* flag; 301270346Sjfv public: 302270346Sjfv DoubleFlagSetting(double& fl, double newValue) { flag = &fl; val = fl; fl = newValue; } 303270346Sjfv ~DoubleFlagSetting() { *flag = val; } 304270346Sjfv}; 305266423Sjfv 306270346Sjfv 307270346Sjfvclass CommandLineFlags { 308270346Sjfv public: 309270346Sjfv static bool boolAt(char* name, size_t len, bool* value); 310270346Sjfv static bool boolAt(char* name, bool* value) { return boolAt(name, strlen(name), value); } 311270346Sjfv static bool boolAtPut(char* name, size_t len, bool* value, FlagValueOrigin origin); 312270346Sjfv static bool boolAtPut(char* name, bool* value, FlagValueOrigin origin) { return boolAtPut(name, strlen(name), value, origin); } 313270346Sjfv 314270346Sjfv static bool intxAt(char* name, size_t len, intx* value); 315270346Sjfv static bool intxAt(char* name, intx* value) { return intxAt(name, strlen(name), value); } 316270346Sjfv static bool intxAtPut(char* name, size_t len, intx* value, FlagValueOrigin origin); 317270346Sjfv static bool intxAtPut(char* name, intx* value, FlagValueOrigin origin) { return intxAtPut(name, strlen(name), value, origin); } 318270346Sjfv 319266423Sjfv static bool uintxAt(char* name, size_t len, uintx* value); 320270346Sjfv static bool uintxAt(char* name, uintx* value) { return uintxAt(name, strlen(name), value); } 321270346Sjfv static bool uintxAtPut(char* name, size_t len, uintx* value, FlagValueOrigin origin); 322266423Sjfv static bool uintxAtPut(char* name, uintx* value, FlagValueOrigin origin) { return uintxAtPut(name, strlen(name), value, origin); } 323266423Sjfv 324279860Sjfv static bool uint64_tAt(char* name, size_t len, uint64_t* value); 325279860Sjfv static bool uint64_tAt(char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); } 326279860Sjfv static bool uint64_tAtPut(char* name, size_t len, uint64_t* value, FlagValueOrigin origin); 327279860Sjfv static bool uint64_tAtPut(char* name, uint64_t* value, FlagValueOrigin origin) { return uint64_tAtPut(name, strlen(name), value, origin); } 328274205Sjfv 329270346Sjfv static bool doubleAt(char* name, size_t len, double* value); 330266423Sjfv static bool doubleAt(char* name, double* value) { return doubleAt(name, strlen(name), value); } 331266423Sjfv static bool doubleAtPut(char* name, size_t len, double* value, FlagValueOrigin origin); 332266423Sjfv static bool doubleAtPut(char* name, double* value, FlagValueOrigin origin) { return doubleAtPut(name, strlen(name), value, origin); } 333266423Sjfv 334266423Sjfv static bool ccstrAt(char* name, size_t len, ccstr* value); 335266423Sjfv static bool ccstrAt(char* name, ccstr* value) { return ccstrAt(name, strlen(name), value); } 336266423Sjfv static bool ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin); 337266423Sjfv static bool ccstrAtPut(char* name, ccstr* value, FlagValueOrigin origin) { return ccstrAtPut(name, strlen(name), value, origin); } 338279858Sjfv 339269198Sjfv // Returns false if name is not a command line flag. 340279858Sjfv static bool wasSetOnCmdline(const char* name, bool* value); 341279858Sjfv static void printSetFlags(outputStream* out); 342279858Sjfv 343266423Sjfv static void printFlags(outputStream* out, bool withComments); 344266423Sjfv 345266423Sjfv static void verify() PRODUCT_RETURN; 346270346Sjfv}; 347266423Sjfv 348266423Sjfv// use this for flags that are true by default in the debug version but 349266423Sjfv// false in the optimized version, and vice versa 350266423Sjfv#ifdef ASSERT 351266423Sjfv#define trueInDebug true 352266423Sjfv#define falseInDebug false 353270346Sjfv#else 354266423Sjfv#define trueInDebug false 355270346Sjfv#define falseInDebug true 356266423Sjfv#endif 357266423Sjfv 358266423Sjfv// use this for flags that are true per default in the product build 359266423Sjfv// but false in development builds, and vice versa 360269198Sjfv#ifdef PRODUCT 361266423Sjfv#define trueInProduct true 362299552Serj#define falseInProduct false 363270346Sjfv#else 364299552Serj#define trueInProduct false 365266423Sjfv#define falseInProduct true 366266423Sjfv#endif 367266423Sjfv 368266423Sjfv#ifdef JAVASE_EMBEDDED 369266423Sjfv#define falseInEmbedded false 370266423Sjfv#else 371266423Sjfv#define falseInEmbedded true 372266423Sjfv#endif 373270346Sjfv 374266423Sjfv// develop flags are settable / visible only during development and are constant in the PRODUCT version 375266423Sjfv// product flags are always settable / visible 376266423Sjfv// notproduct flags are settable / visible only during development and are not declared in the PRODUCT version 377266423Sjfv 378266423Sjfv// A flag must be declared with one of the following types: 379266423Sjfv// bool, intx, uintx, ccstr. 380266423Sjfv// The type "ccstr" is an alias for "const char*" and is used 381266423Sjfv// only in this file, because the macrology requires single-token type names. 382266423Sjfv 383266423Sjfv// Note: Diagnostic options not meant for VM tuning or for product modes. 384270346Sjfv// They are to be used for VM quality assurance or field diagnosis 385270346Sjfv// of VM bugs. They are hidden so that users will not be encouraged to 386266423Sjfv// try them as if they were VM ordinary execution options. However, they 387269198Sjfv// are available in the product version of the VM. Under instruction 388269198Sjfv// from support engineers, VM customers can turn them on to collect 389269198Sjfv// diagnostic information about VM problems. To use a VM diagnostic 390270346Sjfv// option, you must first specify +UnlockDiagnosticVMOptions. 391270346Sjfv// (This master switch also affects the behavior of -Xprintflags.) 392270346Sjfv// 393269198Sjfv// experimental flags are in support of features that are not 394266423Sjfv// part of the officially supported product, but are available 395266423Sjfv// for experimenting with. They could, for example, be performance 396266423Sjfv// features that may not have undergone full or rigorous QA, but which may 397266423Sjfv// help performance in some cases and released for experimentation 398266423Sjfv// by the community of users and developers. This flag also allows one to 399266423Sjfv// be able to build a fully supported product that nonetheless also 400266423Sjfv// ships with some unsupported, lightly tested, experimental features. 401266423Sjfv// Like the UnlockDiagnosticVMOptions flag above, there is a corresponding 402266423Sjfv// UnlockExperimentalVMOptions flag, which allows the control and 403266423Sjfv// modification of the experimental flags. 404266423Sjfv// 405266423Sjfv// Nota bene: neither diagnostic nor experimental options should be used casually, 406266423Sjfv// and they are not supported on production loads, except under explicit 407266423Sjfv// direction from support engineers. 408266423Sjfv// 409266423Sjfv// manageable flags are writeable external product flags. 410266423Sjfv// They are dynamically writeable through the JDK management interface 411266423Sjfv// (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. 412270346Sjfv// These flags are external exported interface (see CCC). The list of 413266423Sjfv// manageable flags can be queried programmatically through the management 414270346Sjfv// interface. 415266423Sjfv// 416299552Serj// A flag can be made as "manageable" only if 417266423Sjfv// - the flag is defined in a CCC as an external exported interface. 418266423Sjfv// - the VM implementation supports dynamic setting of the flag. 419279858Sjfv// This implies that the VM must *always* query the flag variable 420279858Sjfv// and not reuse state related to the flag state at any given time. 421279858Sjfv// - you want the flag to be queried programmatically by the customers. 422279858Sjfv// 423266423Sjfv// product_rw flags are writeable internal product flags. 424270346Sjfv// They are like "manageable" flags but for internal/private use. 425266423Sjfv// The list of product_rw flags are internal/private flags which 426266423Sjfv// may be changed/removed in a future release. It can be set 427266423Sjfv// through the management interface to get/set value 428266423Sjfv// when the name of flag is supplied. 429266423Sjfv// 430266423Sjfv// A flag can be made as "product_rw" only if 431266423Sjfv// - the VM implementation supports dynamic setting of the flag. 432266423Sjfv// This implies that the VM must *always* query the flag variable 433266423Sjfv// and not reuse state related to the flag state at any given time. 434266423Sjfv// 435266423Sjfv// Note that when there is a need to support develop flags to be writeable, 436266423Sjfv// it can be done in the same way as product_rw. 437266423Sjfv 438266423Sjfv#define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \ 439270346Sjfv \ 440266423Sjfv lp64_product(bool, UseCompressedOops, false, \ 441266423Sjfv "Use 32-bit object references in 64-bit VM " \ 442266423Sjfv "lp64_product means flag is always constant in 32 bit VM") \ 443266423Sjfv \ 444274205Sjfv lp64_product(bool, UseCompressedKlassPointers, false, \ 445266423Sjfv "Use 32-bit klass pointers in 64-bit VM " \ 446266423Sjfv "lp64_product means flag is always constant in 32 bit VM") \ 447266423Sjfv \ 448266423Sjfv notproduct(bool, CheckCompressedOops, true, \ 449266423Sjfv "generate checks in encoding/decoding code in debug VM") \ 450266423Sjfv \ 451266423Sjfv product_pd(uintx, HeapBaseMinAddress, \ 452266423Sjfv "OS specific low limit for heap base address") \ 453269198Sjfv \ 454266423Sjfv diagnostic(bool, PrintCompressedOopsMode, false, \ 455266423Sjfv "Print compressed oops base address and encoding mode") \ 456279858Sjfv \ 457279858Sjfv lp64_product(intx, ObjectAlignmentInBytes, 8, \ 458266423Sjfv "Default object alignment in bytes, 8 is minimum") \ 459270346Sjfv \ 460266423Sjfv product(bool, AssumeMP, false, \ 461266423Sjfv "Instruct the VM to assume multiple processors are available") \ 462266423Sjfv \ 463266423Sjfv /* UseMembar is theoretically a temp flag used for memory barrier \ 464266423Sjfv * removal testing. It was supposed to be removed before FCS but has \ 465266423Sjfv * been re-added (see 6401008) */ \ 466269198Sjfv product_pd(bool, UseMembar, \ 467266423Sjfv "(Unstable) Issues membars on thread state transitions") \ 468266423Sjfv \ 469299549Serj /* Temp PPC Flag to allow disabling the use of lwsync on ppc platforms \ 470269198Sjfv * that don't support it. This will be replaced by processor detection \ 471269198Sjfv * logic. \ 472269198Sjfv */ \ 473266423Sjfv product(bool, UsePPCLWSYNC, true, \ 474266423Sjfv "Use lwsync instruction if true, else use slower sync") \ 475270346Sjfv \ 476270346Sjfv develop(bool, CleanChunkPoolAsync, falseInEmbedded, \ 477270346Sjfv "Whether to clean the chunk pool asynchronously") \ 478270346Sjfv \ 479266423Sjfv /* Temporary: See 6948537 */ \ 480299549Serj experimental(bool, UseMemSetInBOT, true, \ 481299549Serj "(Unstable) uses memset in BOT updates in GC code") \ 482299549Serj \ 483266423Sjfv diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \ 484266423Sjfv "Enable normal processing of flags relating to field diagnostics")\ 485266423Sjfv \ 486299549Serj experimental(bool, UnlockExperimentalVMOptions, false, \ 487299549Serj "Enable normal processing of flags relating to experimental features")\ 488266423Sjfv \ 489266423Sjfv product(bool, JavaMonitorsInStackTrace, true, \ 490266423Sjfv "Print info. about Java monitor locks when the stacks are dumped")\ 491266423Sjfv \ 492266423Sjfv product_pd(bool, UseLargePages, \ 493266423Sjfv "Use large page memory") \ 494299549Serj \ 495299549Serj product_pd(bool, UseLargePagesIndividualAllocation, \ 496299549Serj "Allocate large pages individually for better affinity") \ 497299549Serj \ 498299549Serj develop(bool, LargePagesIndividualAllocationInjectError, false, \ 499299549Serj "Fail large pages individual allocation") \ 500299552Serj \ 501299552Serj develop(bool, TracePageSizes, false, \ 502299549Serj "Trace page size selection and usage.") \ 503269198Sjfv \ 504269198Sjfv product(bool, UseNUMA, false, \ 505269198Sjfv "Use NUMA if available") \ 506299549Serj \ 507299549Serj product(bool, UseNUMAInterleaving, false, \ 508266423Sjfv "Interleave memory across NUMA nodes if available") \ 509266423Sjfv \ 510266423Sjfv product(uintx, NUMAInterleaveGranularity, 2*M, \ 511269198Sjfv "Granularity to use for NUMA interleaving on Windows OS") \ 512269198Sjfv \ 513269198Sjfv product(bool, ForceNUMA, false, \ 514269198Sjfv "Force NUMA optimizations on single-node/UMA systems") \ 515269198Sjfv \ 516269198Sjfv product(intx, NUMAChunkResizeWeight, 20, \ 517269198Sjfv "Percentage (0-100) used to weight the current sample when " \ 518269198Sjfv "computing exponentially decaying average for " \ 519269198Sjfv "AdaptiveNUMAChunkSizing") \ 520269198Sjfv \ 521266423Sjfv product(intx, NUMASpaceResizeRate, 1*G, \ 522266423Sjfv "Do not reallocate more that this amount per collection") \ 523266423Sjfv \ 524266423Sjfv product(bool, UseAdaptiveNUMAChunkSizing, true, \ 525266423Sjfv "Enable adaptive chunk sizing for NUMA") \ 526270346Sjfv \ 527266423Sjfv product(bool, NUMAStats, false, \ 528266423Sjfv "Print NUMA stats in detailed heap information") \ 529266423Sjfv \ 530266423Sjfv product(intx, NUMAPageScanRate, 256, \ 531266423Sjfv "Maximum number of pages to include in the page scan procedure") \ 532266423Sjfv \ 533279858Sjfv product_pd(bool, NeedsDeoptSuspend, \ 534279858Sjfv "True for register window machines (sparc/ia64)") \ 535266423Sjfv \ 536266423Sjfv product(intx, UseSSE, 99, \ 537266423Sjfv "Highest supported SSE instructions set on x86/x64") \ 538266423Sjfv \ 539266423Sjfv product(bool, UseAES, false, \ 540266423Sjfv "Control whether AES instructions can be used on x86/x64") \ 541266423Sjfv \ 542266423Sjfv product(uintx, LargePageSizeInBytes, 0, \ 543266423Sjfv "Large page size (0 to let VM choose the page size") \ 544266423Sjfv \ 545266423Sjfv product(uintx, LargePageHeapSizeThreshold, 128*M, \ 546269198Sjfv "Use large pages if max heap is at least this big") \ 547269198Sjfv \ 548269198Sjfv product(bool, ForceTimeHighResolution, false, \ 549266423Sjfv "Using high time resolution(For Win32 only)") \ 550266423Sjfv \ 551266423Sjfv develop(bool, TraceItables, false, \ 552266423Sjfv "Trace initialization and use of itables") \ 553266423Sjfv \ 554266423Sjfv develop(bool, TracePcPatching, false, \ 555266423Sjfv "Trace usage of frame::patch_pc") \ 556266423Sjfv \ 557266423Sjfv develop(bool, TraceJumps, false, \ 558274205Sjfv "Trace assembly jumps in thread ring buffer") \ 559270346Sjfv \ 560266423Sjfv develop(bool, TraceRelocator, false, \ 561266423Sjfv "Trace the bytecode relocator") \ 562266423Sjfv \ 563266423Sjfv develop(bool, TraceLongCompiles, false, \ 564266423Sjfv "Print out every time compilation is longer than " \ 565279033Sjfv "a given threashold") \ 566279033Sjfv \ 567279033Sjfv develop(bool, SafepointALot, false, \ 568279033Sjfv "Generates a lot of safepoints. Works with " \ 569299547Serj "GuaranteedSafepointInterval") \ 570279033Sjfv \ 571279033Sjfv product_pd(bool, BackgroundCompilation, \ 572299547Serj "A thread requesting compilation is not blocked during " \ 573299547Serj "compilation") \ 574270346Sjfv \ 575279033Sjfv product(bool, PrintVMQWaitTime, false, \ 576266423Sjfv "Prints out the waiting time in VM operation queue") \ 577299547Serj \ 578284049Sjfv develop(bool, NoYieldsInMicrolock, false, \ 579266423Sjfv "Disable yields in microlock") \ 580299547Serj \ 581274205Sjfv develop(bool, TraceOopMapGeneration, false, \ 582274205Sjfv "Shows oopmap generation") \ 583274205Sjfv \ 584266423Sjfv product(bool, MethodFlushing, true, \ 585274205Sjfv "Reclamation of zombie and not-entrant methods") \ 586266423Sjfv \ 587279033Sjfv develop(bool, VerifyStack, false, \ 588279033Sjfv "Verify stack of each thread when it is entering a runtime call") \ 589299547Serj \ 590299546Serj diagnostic(bool, ForceUnreachable, false, \ 591279033Sjfv "Make all non code cache addresses to be unreachable with forcing use of 64bit literal fixups") \ 592279033Sjfv \ 593299547Serj notproduct(bool, StressDerivedPointers, false, \ 594299548Serj "Force scavenge when a derived pointers is detected on stack " \ 595299547Serj "after rtm call") \ 596299547Serj \ 597299547Serj develop(bool, TraceDerivedPointers, false, \ 598299547Serj "Trace traversal of derived pointers on stack") \ 599299547Serj \ 600299547Serj notproduct(bool, TraceCodeBlobStacks, false, \ 601279033Sjfv "Trace stack-walk of codeblobs") \ 602266423Sjfv \ 603270346Sjfv product(bool, PrintJNIResolving, false, \ 604266423Sjfv "Used to implement -v:jni") \ 605266423Sjfv \ 606299546Serj notproduct(bool, PrintRewrites, false, \ 607299546Serj "Print methods that are being rewritten") \ 608299546Serj \ 609299549Serj product(bool, UseInlineCaches, true, \ 610299549Serj "Use Inline Caches for virtual calls ") \ 611299549Serj \ 612270346Sjfv develop(bool, InlineArrayCopy, true, \ 613270346Sjfv "inline arraycopy native that is known to be part of " \ 614270346Sjfv "base library DLL") \ 615266423Sjfv \ 616266423Sjfv develop(bool, InlineObjectHash, true, \ 617266423Sjfv "inline Object::hashCode() native that is known to be part " \ 618270346Sjfv "of base library DLL") \ 619266423Sjfv \ 620270346Sjfv develop(bool, InlineNatives, true, \ 621266423Sjfv "inline natives that are known to be part of base library DLL") \ 622279858Sjfv \ 623279858Sjfv develop(bool, InlineMathNatives, true, \ 624279858Sjfv "inline SinD, CosD, etc.") \ 625279858Sjfv \ 626279858Sjfv develop(bool, InlineClassNatives, true, \ 627279858Sjfv "inline Class.isInstance, etc") \ 628279858Sjfv \ 629279858Sjfv develop(bool, InlineThreadNatives, true, \ 630279858Sjfv "inline Thread.currentThread, etc") \ 631279858Sjfv \ 632279858Sjfv develop(bool, InlineUnsafeOps, true, \ 633279858Sjfv "inline memory ops (native methods) from sun.misc.Unsafe") \ 634274205Sjfv \ 635279858Sjfv product(bool, CriticalJNINatives, true, \ 636299552Serj "check for critical JNI entry points") \ 637279858Sjfv \ 638279858Sjfv notproduct(bool, StressCriticalJNINatives, false, \ 639279858Sjfv "Exercise register saving code in critical natives") \ 640299552Serj \ 641299552Serj product(bool, UseSSE42Intrinsics, false, \ 642279858Sjfv "SSE4.2 versions of intrinsics") \ 643279858Sjfv \ 644279858Sjfv product(bool, UseAESIntrinsics, false, \ 645279860Sjfv "use intrinsics for AES versions of crypto") \ 646279860Sjfv \ 647279860Sjfv develop(bool, TraceCallFixup, false, \ 648270346Sjfv "traces all call fixups") \ 649266423Sjfv \ 650266423Sjfv develop(bool, DeoptimizeALot, false, \ 651266423Sjfv "deoptimize at every exit from the runtime system") \ 652274205Sjfv \ 653274205Sjfv notproduct(ccstrlist, DeoptimizeOnlyAt, "", \ 654266423Sjfv "a comma separated list of bcis to deoptimize at") \ 655266423Sjfv \ 656266423Sjfv product(bool, DeoptimizeRandom, false, \ 657266423Sjfv "deoptimize random frames on random exit from the runtime system")\ 658266423Sjfv \ 659270346Sjfv notproduct(bool, ZombieALot, false, \ 660274205Sjfv "creates zombies (non-entrant) at exit from the runt. system") \ 661270346Sjfv \ 662266423Sjfv product(bool, UnlinkSymbolsALot, false, \ 663266423Sjfv "unlink unreferenced symbols from the symbol table at safepoints")\ 664266423Sjfv \ 665266423Sjfv notproduct(bool, WalkStackALot, false, \ 666266423Sjfv "trace stack (no print) at every exit from the runtime system") \ 667266423Sjfv \ 668266423Sjfv product(bool, Debugging, false, \ 669266423Sjfv "set when executing debug methods in debug.ccp " \ 670266423Sjfv "(to prevent triggering assertions)") \ 671266423Sjfv \ 672266423Sjfv notproduct(bool, StrictSafepointChecks, trueInDebug, \ 673266423Sjfv "Enable strict checks that safepoints cannot happen for threads " \ 674266423Sjfv "that used No_Safepoint_Verifier") \ 675266423Sjfv \ 676270346Sjfv notproduct(bool, VerifyLastFrame, false, \ 677266423Sjfv "Verify oops on last frame on entry to VM") \ 678270346Sjfv \ 679266423Sjfv develop(bool, TraceHandleAllocation, false, \ 680270346Sjfv "Prints out warnings when suspicious many handles are allocated") \ 681266423Sjfv \ 682279858Sjfv product(bool, UseCompilerSafepoints, true, \ 683279858Sjfv "Stop at safepoints in compiled code") \ 684279858Sjfv \ 685266423Sjfv product(bool, FailOverToOldVerifier, true, \ 686270346Sjfv "fail over to old verifier when split verifier fails") \ 687266423Sjfv \ 688266423Sjfv develop(bool, ShowSafepointMsgs, false, \ 689266423Sjfv "Show msg. about safepoint synch.") \ 690266423Sjfv \ 691266423Sjfv product(bool, SafepointTimeout, false, \ 692266423Sjfv "Time out and warn or fail after SafepointTimeoutDelay " \ 693266423Sjfv "milliseconds if failed to reach safepoint") \ 694279858Sjfv \ 695279858Sjfv develop(bool, DieOnSafepointTimeout, false, \ 696279858Sjfv "Die upon failure to reach safepoint (see SafepointTimeout)") \ 697279858Sjfv \ 698279858Sjfv /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */ \ 699279858Sjfv /* typically, at most a few retries are needed */ \ 700279858Sjfv product(intx, SuspendRetryCount, 50, \ 701279858Sjfv "Maximum retry count for an external suspend request") \ 702279033Sjfv \ 703299547Serj product(intx, SuspendRetryDelay, 5, \ 704279033Sjfv "Milliseconds to delay per retry (* current_retry_count)") \ 705266423Sjfv \ 706299546Serj product(bool, AssertOnSuspendWaitFailure, false, \ 707266423Sjfv "Assert/Guarantee on external suspend wait failure") \ 708266423Sjfv \ 709266423Sjfv product(bool, TraceSuspendWaitFailures, false, \ 710266423Sjfv "Trace external suspend wait failures") \ 711266423Sjfv \ 712266423Sjfv product(bool, MaxFDLimit, true, \ 713266423Sjfv "Bump the number of file descriptors to max in solaris.") \ 714266423Sjfv \ 715266423Sjfv diagnostic(bool, LogEvents, true, \ 716266423Sjfv "Enable the various ring buffer event logs") \ 717266423Sjfv \ 718266423Sjfv diagnostic(intx, LogEventsBufferEntries, 10, \ 719266423Sjfv "Enable the various ring buffer event logs") \ 720266423Sjfv \ 721266423Sjfv product(bool, BytecodeVerificationRemote, true, \ 722266423Sjfv "Enables the Java bytecode verifier for remote classes") \ 723266423Sjfv \ 724266423Sjfv product(bool, BytecodeVerificationLocal, false, \ 725266423Sjfv "Enables the Java bytecode verifier for local classes") \ 726266423Sjfv \ 727279860Sjfv develop(bool, ForceFloatExceptions, trueInDebug, \ 728279860Sjfv "Force exceptions on FP stack under/overflow") \ 729279860Sjfv \ 730270346Sjfv develop(bool, VerifyStackAtCalls, false, \ 731266423Sjfv "Verify that the stack pointer is unchanged after calls") \ 732266423Sjfv \ 733270346Sjfv develop(bool, TraceJavaAssertions, false, \ 734270346Sjfv "Trace java language assertions") \ 735266423Sjfv \ 736266423Sjfv notproduct(bool, CheckAssertionStatusDirectives, false, \ 737266423Sjfv "temporary - see javaClasses.cpp") \ 738266423Sjfv \ 739266423Sjfv notproduct(bool, PrintMallocFree, false, \ 740266423Sjfv "Trace calls to C heap malloc/free allocation") \ 741266423Sjfv \ 742266423Sjfv product(bool, PrintOopAddress, false, \ 743266423Sjfv "Always print the location of the oop") \ 744266423Sjfv \ 745270346Sjfv notproduct(bool, VerifyCodeCacheOften, false, \ 746266423Sjfv "Verify compiled-code cache often") \ 747270346Sjfv \ 748270346Sjfv develop(bool, ZapDeadCompiledLocals, false, \ 749266423Sjfv "Zap dead locals in compiler frames") \ 750266423Sjfv \ 751266423Sjfv notproduct(bool, ZapDeadLocalsOld, false, \ 752266423Sjfv "Zap dead locals (old version, zaps all frames when " \ 753266423Sjfv "entering the VM") \ 754266423Sjfv \ 755266423Sjfv notproduct(bool, CheckOopishValues, false, \ 756266423Sjfv "Warn if value contains oop ( requires ZapDeadLocals)") \ 757266423Sjfv \ 758266423Sjfv develop(bool, UseMallocOnly, false, \ 759266423Sjfv "use only malloc/free for allocation (no resource area/arena)") \ 760270346Sjfv \ 761266423Sjfv develop(bool, PrintMalloc, false, \ 762266423Sjfv "print all malloc/free calls") \ 763266423Sjfv \ 764266423Sjfv develop(bool, PrintMallocStatistics, false, \ 765266423Sjfv "print malloc/free statistics") \ 766266423Sjfv \ 767266423Sjfv develop(bool, ZapResourceArea, trueInDebug, \ 768266423Sjfv "Zap freed resource/arena space with 0xABABABAB") \ 769266423Sjfv \ 770266423Sjfv notproduct(bool, ZapVMHandleArea, trueInDebug, \ 771266423Sjfv "Zap freed VM handle space with 0xBCBCBCBC") \ 772266423Sjfv \ 773266423Sjfv develop(bool, ZapJNIHandleArea, trueInDebug, \ 774266423Sjfv "Zap freed JNI handle space with 0xFEFEFEFE") \ 775266423Sjfv \ 776266423Sjfv notproduct(bool, ZapStackSegments, trueInDebug, \ 777266423Sjfv "Zap allocated/freed Stack segments with 0xFADFADED") \ 778266423Sjfv \ 779266423Sjfv develop(bool, ZapUnusedHeapArea, trueInDebug, \ 780266423Sjfv "Zap unused heap space with 0xBAADBABE") \ 781266423Sjfv \ 782266423Sjfv develop(bool, TraceZapUnusedHeapArea, false, \ 783266423Sjfv "Trace zapping of unused heap space") \ 784266423Sjfv \ 785266423Sjfv develop(bool, CheckZapUnusedHeapArea, false, \ 786266423Sjfv "Check zapping of unused heap space") \ 787266423Sjfv \ 788266423Sjfv develop(bool, ZapFillerObjects, trueInDebug, \ 789266423Sjfv "Zap filler objects with 0xDEAFBABE") \ 790266423Sjfv \ 791266423Sjfv develop(bool, PrintVMMessages, true, \ 792266423Sjfv "Print vm messages on console") \ 793266423Sjfv \ 794266423Sjfv product(bool, PrintGCApplicationConcurrentTime, false, \ 795266423Sjfv "Print the time the application has been running") \ 796270346Sjfv \ 797266423Sjfv product(bool, PrintGCApplicationStoppedTime, false, \ 798266423Sjfv "Print the time the application has been stopped") \ 799266423Sjfv \ 800266423Sjfv diagnostic(bool, VerboseVerification, false, \ 801266423Sjfv "Display detailed verification details") \ 802266423Sjfv \ 803266423Sjfv notproduct(uintx, ErrorHandlerTest, 0, \ 804266423Sjfv "If > 0, provokes an error after VM initialization; the value" \ 805266423Sjfv "determines which error to provoke. See test_error_handler()" \ 806266423Sjfv "in debug.cpp.") \ 807266423Sjfv \ 808266423Sjfv develop(bool, Verbose, false, \ 809266423Sjfv "Prints additional debugging information from other modes") \ 810266423Sjfv \ 811266423Sjfv develop(bool, PrintMiscellaneous, false, \ 812270346Sjfv "Prints uncategorized debugging information (requires +Verbose)") \ 813266423Sjfv \ 814266423Sjfv develop(bool, WizardMode, false, \ 815266423Sjfv "Prints much more debugging information") \ 816266423Sjfv \ 817266423Sjfv product(bool, ShowMessageBoxOnError, false, \ 818266423Sjfv "Keep process alive on VM fatal error") \ 819266423Sjfv \ 820266423Sjfv product(bool, CreateMinidumpOnCrash, false, \ 821266423Sjfv "Create minidump on VM fatal error") \ 822270346Sjfv \ 823270346Sjfv product_pd(bool, UseOSErrorReporting, \ 824266423Sjfv "Let VM fatal error propagate to the OS (ie. WER on Windows)") \ 825266423Sjfv \ 826266423Sjfv product(bool, SuppressFatalErrorMessage, false, \ 827266423Sjfv "Do NO Fatal Error report [Avoid deadlock]") \ 828266423Sjfv \ 829270346Sjfv product(ccstrlist, OnError, "", \ 830266423Sjfv "Run user-defined commands on fatal error; see VMError.cpp " \ 831266423Sjfv "for examples") \ 832266423Sjfv \ 833266423Sjfv product(ccstrlist, OnOutOfMemoryError, "", \ 834266423Sjfv "Run user-defined commands on first java.lang.OutOfMemoryError") \ 835266423Sjfv \ 836266423Sjfv manageable(bool, HeapDumpBeforeFullGC, false, \ 837266423Sjfv "Dump heap to file before any major stop-world GC") \ 838266423Sjfv \ 839266423Sjfv manageable(bool, HeapDumpAfterFullGC, false, \ 840266423Sjfv "Dump heap to file after any major stop-world GC") \ 841266423Sjfv \ 842270346Sjfv manageable(bool, HeapDumpOnOutOfMemoryError, false, \ 843266423Sjfv "Dump heap to file when java.lang.OutOfMemoryError is thrown") \ 844266423Sjfv \ 845266423Sjfv manageable(ccstr, HeapDumpPath, NULL, \ 846266423Sjfv "When HeapDumpOnOutOfMemoryError is on, the path (filename or" \ 847266423Sjfv "directory) of the dump file (defaults to java_pid<pid>.hprof" \ 848266423Sjfv "in the working directory)") \ 849266423Sjfv \ 850266423Sjfv develop(uintx, SegmentedHeapDumpThreshold, 2*G, \ 851266423Sjfv "Generate a segmented heap dump (JAVA PROFILE 1.0.2 format) " \ 852266423Sjfv "when the heap usage is larger than this") \ 853266423Sjfv \ 854266423Sjfv develop(uintx, HeapDumpSegmentSize, 1*G, \ 855270346Sjfv "Approximate segment size when generating a segmented heap dump") \ 856270346Sjfv \ 857266423Sjfv develop(bool, BreakAtWarning, false, \ 858266423Sjfv "Execute breakpoint upon encountering VM warning") \ 859266423Sjfv \ 860266423Sjfv develop(bool, TraceVMOperation, false, \ 861270346Sjfv "Trace vm operations") \ 862266423Sjfv \ 863266423Sjfv develop(bool, UseFakeTimers, false, \ 864266423Sjfv "Tells whether the VM should use system time or a fake timer") \ 865266423Sjfv \ 866266423Sjfv product(ccstr, NativeMemoryTracking, "off", \ 867266423Sjfv "Native memory tracking options") \ 868266423Sjfv \ 869266423Sjfv diagnostic(bool, PrintNMTStatistics, false, \ 870266423Sjfv "Print native memory tracking summary data if it is on") \ 871266423Sjfv \ 872266423Sjfv diagnostic(bool, AutoShutdownNMT, true, \ 873266423Sjfv "Automatically shutdown native memory tracking under stress " \ 874270346Sjfv "situation. When set to false, native memory tracking tries to " \ 875266423Sjfv "stay alive at the expense of JVM performance") \ 876266423Sjfv \ 877266423Sjfv diagnostic(bool, LogCompilation, false, \ 878266423Sjfv "Log compilation activity in detail to hotspot.log or LogFile") \ 879266423Sjfv \ 880266423Sjfv product(bool, PrintCompilation, false, \ 881266423Sjfv "Print compilations") \ 882266423Sjfv \ 883266423Sjfv diagnostic(bool, TraceNMethodInstalls, false, \ 884266423Sjfv "Trace nmethod intallation") \ 885266423Sjfv \ 886270346Sjfv diagnostic(intx, ScavengeRootsInCode, 2, \ 887266423Sjfv "0: do not allow scavengable oops in the code cache; " \ 888266423Sjfv "1: allow scavenging from the code cache; " \ 889266423Sjfv "2: emit as many constants as the compiler can see") \ 890266423Sjfv \ 891266423Sjfv product(bool, AlwaysRestoreFPU, false, \ 892266423Sjfv "Restore the FPU control word after every JNI call (expensive)") \ 893270346Sjfv \ 894266423Sjfv diagnostic(bool, PrintCompilation2, false, \ 895270346Sjfv "Print additional statistics per compilation") \ 896279858Sjfv \ 897299547Serj diagnostic(bool, PrintAdapterHandlers, false, \ 898299547Serj "Print code generated for i2c/c2i adapters") \ 899266423Sjfv \ 900266423Sjfv diagnostic(bool, VerifyAdapterCalls, trueInDebug, \ 901266423Sjfv "Verify that i2c/c2i adapters are called properly") \ 902266423Sjfv \ 903266423Sjfv develop(bool, VerifyAdapterSharing, false, \ 904266423Sjfv "Verify that the code for shared adapters is the equivalent") \ 905266423Sjfv \ 906266423Sjfv diagnostic(bool, PrintAssembly, false, \ 907266423Sjfv "Print assembly code (using external disassembler.so)") \ 908266423Sjfv \ 909266423Sjfv diagnostic(ccstr, PrintAssemblyOptions, NULL, \ 910266423Sjfv "Options string passed to disassembler.so") \ 911266423Sjfv \ 912266423Sjfv diagnostic(bool, PrintNMethods, false, \ 913266423Sjfv "Print assembly code for nmethods when generated") \ 914266423Sjfv \ 915266423Sjfv diagnostic(bool, PrintNativeNMethods, false, \ 916266423Sjfv "Print assembly code for native nmethods when generated") \ 917266423Sjfv \ 918266423Sjfv develop(bool, PrintDebugInfo, false, \ 919266423Sjfv "Print debug information for all nmethods when generated") \ 920266423Sjfv \ 921266423Sjfv develop(bool, PrintRelocations, false, \ 922266423Sjfv "Print relocation information for all nmethods when generated") \ 923266423Sjfv \ 924270346Sjfv develop(bool, PrintDependencies, false, \ 925271900Sbz "Print dependency information for all nmethods when generated") \ 926266423Sjfv \ 927266423Sjfv develop(bool, PrintExceptionHandlers, false, \ 928271900Sbz "Print exception handler tables for all nmethods when generated") \ 929266423Sjfv \ 930266423Sjfv develop(bool, StressCompiledExceptionHandlers, false, \ 931266423Sjfv "Exercise compiled exception handlers") \ 932266423Sjfv \ 933266423Sjfv develop(bool, InterceptOSException, false, \ 934266423Sjfv "Starts debugger when an implicit OS (e.g., NULL) " \ 935270346Sjfv "exception happens") \ 936266423Sjfv \ 937266423Sjfv product(bool, PrintCodeCache, false, \ 938266423Sjfv "Print the code cache memory usage when exiting") \ 939270346Sjfv \ 940266423Sjfv develop(bool, PrintCodeCache2, false, \ 941266423Sjfv "Print detailed usage info on the code cache when exiting") \ 942266423Sjfv \ 943266423Sjfv product(bool, PrintCodeCacheOnCompilation, false, \ 944270346Sjfv "Print the code cache memory usage each time a method is compiled") \ 945270346Sjfv \ 946266423Sjfv diagnostic(bool, PrintStubCode, false, \ 947266423Sjfv "Print generated stub code") \ 948266423Sjfv \ 949266423Sjfv product(bool, StackTraceInThrowable, true, \ 950270346Sjfv "Collect backtrace in throwable when exception happens") \ 951266423Sjfv \ 952266423Sjfv product(bool, OmitStackTraceInFastThrow, true, \ 953266423Sjfv "Omit backtraces for some 'hot' exceptions in optimized code") \ 954266423Sjfv \ 955270346Sjfv product(bool, ProfilerPrintByteCodeStatistics, false, \ 956266423Sjfv "Prints byte code statictics when dumping profiler output") \ 957299547Serj \ 958299547Serj product(bool, ProfilerRecordPC, false, \ 959299547Serj "Collects tick for each 16 byte interval of compiled code") \ 960299547Serj \ 961299547Serj product(bool, ProfileVM, false, \ 962299547Serj "Profiles ticks that fall within VM (either in the VM Thread " \ 963299547Serj "or VM code called through stubs)") \ 964299547Serj \ 965270346Sjfv product(bool, ProfileIntervals, false, \ 966299547Serj "Prints profiles for each interval (see ProfileIntervalsTicks)") \ 967299547Serj \ 968299547Serj notproduct(bool, ProfilerCheckIntervals, false, \ 969266423Sjfv "Collect and print info on spacing of profiler ticks") \ 970270346Sjfv \ 971266423Sjfv develop(bool, PrintJVMWarnings, false, \ 972299547Serj "Prints warnings for unimplemented JVM functions") \ 973299547Serj \ 974299547Serj product(bool, PrintWarnings, true, \ 975299547Serj "Prints JVM warnings to output stream") \ 976299547Serj \ 977299547Serj notproduct(uintx, WarnOnStalledSpinLock, 0, \ 978299547Serj "Prints warnings for stalled SpinLocks") \ 979299547Serj \ 980299547Serj product(bool, RegisterFinalizersAtInit, true, \ 981299547Serj "Register finalizable objects at end of Object.<init> or " \ 982299547Serj "after allocation") \ 983266423Sjfv \ 984266423Sjfv develop(bool, RegisterReferences, true, \ 985266423Sjfv "Tells whether the VM should register soft/weak/final/phantom " \ 986270346Sjfv "references") \ 987270346Sjfv \ 988270346Sjfv develop(bool, IgnoreRewrites, false, \ 989270346Sjfv "Supress rewrites of bytecodes in the oopmap generator. " \ 990270346Sjfv "This is unsafe!") \ 991266423Sjfv \ 992266423Sjfv develop(bool, PrintCodeCacheExtension, false, \ 993266423Sjfv "Print extension of code cache") \ 994266423Sjfv \ 995266423Sjfv develop(bool, UsePrivilegedStack, true, \ 996270346Sjfv "Enable the security JVM functions") \ 997270346Sjfv \ 998270346Sjfv develop(bool, ProtectionDomainVerification, true, \ 999270346Sjfv "Verifies protection domain before resolution in system " \ 1000270346Sjfv "dictionary") \ 1001266423Sjfv \ 1002266423Sjfv product(bool, ClassUnloading, true, \ 1003266423Sjfv "Do unloading of classes") \ 1004266423Sjfv \ 1005284049Sjfv develop(bool, DisableStartThread, false, \ 1006284049Sjfv "Disable starting of additional Java threads " \ 1007284049Sjfv "(for debugging only)") \ 1008266423Sjfv \ 1009266423Sjfv develop(bool, MemProfiling, false, \ 1010266423Sjfv "Write memory usage profiling to log file") \ 1011266423Sjfv \ 1012266423Sjfv notproduct(bool, PrintSystemDictionaryAtExit, false, \ 1013266423Sjfv "Prints the system dictionary at exit") \ 1014266423Sjfv \ 1015266423Sjfv experimental(intx, PredictedLoadedClassCount, 0, \ 1016270346Sjfv "Experimental: Tune loaded class cache starting size.") \ 1017266423Sjfv \ 1018266423Sjfv diagnostic(bool, UnsyncloadClass, false, \ 1019266423Sjfv "Unstable: VM calls loadClass unsynchronized. Custom " \ 1020266423Sjfv "class loader must call VM synchronized for findClass " \ 1021266423Sjfv "and defineClass.") \ 1022266423Sjfv \ 1023266423Sjfv product(bool, AlwaysLockClassLoader, false, \ 1024266423Sjfv "Require the VM to acquire the class loader lock before calling " \ 1025266423Sjfv "loadClass() even for class loaders registering " \ 1026266423Sjfv "as parallel capable") \ 1027266423Sjfv \ 1028266423Sjfv product(bool, AllowParallelDefineClass, false, \ 1029266423Sjfv "Allow parallel defineClass requests for class loaders " \ 1030266423Sjfv "registering as parallel capable") \ 1031270346Sjfv \ 1032270346Sjfv product(bool, MustCallLoadClassInternal, false, \ 1033270346Sjfv "Call loadClassInternal() rather than loadClass()") \ 1034266423Sjfv \ 1035266423Sjfv product_pd(bool, DontYieldALot, \ 1036266423Sjfv "Throw away obvious excess yield calls (for SOLARIS only)") \ 1037266423Sjfv \ 1038266423Sjfv product_pd(bool, ConvertSleepToYield, \ 1039266423Sjfv "Converts sleep(0) to thread yield " \ 1040266423Sjfv "(may be off for SOLARIS to improve GUI)") \ 1041270346Sjfv \ 1042266423Sjfv product(bool, ConvertYieldToSleep, false, \ 1043266423Sjfv "Converts yield to a sleep of MinSleepInterval to simulate Win32 "\ 1044266423Sjfv "behavior (SOLARIS only)") \ 1045266423Sjfv \ 1046266423Sjfv product(bool, UseBoundThreads, true, \ 1047266423Sjfv "Bind user level threads to kernel threads (for SOLARIS only)") \ 1048266423Sjfv \ 1049266423Sjfv develop(bool, UseDetachedThreads, true, \ 1050266423Sjfv "Use detached threads that are recycled upon termination " \ 1051266423Sjfv "(for SOLARIS only)") \ 1052266423Sjfv \ 1053266423Sjfv product(bool, UseLWPSynchronization, true, \ 1054266423Sjfv "Use LWP-based instead of libthread-based synchronization " \ 1055266423Sjfv "(SPARC only)") \ 1056266423Sjfv \ 1057266423Sjfv product(ccstr, SyncKnobs, NULL, \ 1058266423Sjfv "(Unstable) Various monitor synchronization tunables") \ 1059266423Sjfv \ 1060266423Sjfv product(intx, EmitSync, 0, \ 1061266423Sjfv "(Unsafe,Unstable) " \ 1062270346Sjfv " Controls emission of inline sync fast-path code") \ 1063266423Sjfv \ 1064266423Sjfv product(intx, MonitorBound, 0, "Bound Monitor population") \ 1065270346Sjfv \ 1066266423Sjfv product(bool, MonitorInUseLists, false, "Track Monitors for Deflation") \ 1067266423Sjfv \ 1068266423Sjfv product(intx, SyncFlags, 0, "(Unsafe,Unstable) Experimental Sync flags" ) \ 1069266423Sjfv \ 1070266423Sjfv product(intx, SyncVerbose, 0, "(Unstable)" ) \ 1071266423Sjfv \ 1072266423Sjfv product(intx, ClearFPUAtPark, 0, "(Unsafe,Unstable)" ) \ 1073270346Sjfv \ 1074266423Sjfv product(intx, hashCode, 5, \ 1075299547Serj "(Unstable) select hashCode generation algorithm" ) \ 1076299547Serj \ 1077266423Sjfv product(intx, WorkAroundNPTLTimedWaitHang, 1, \ 1078266423Sjfv "(Unstable, Linux-specific)" \ 1079266423Sjfv " avoid NPTL-FUTEX hang pthread_cond_timedwait" ) \ 1080299546Serj \ 1081299546Serj product(bool, FilterSpuriousWakeups, true, \ 1082299546Serj "Prevent spurious or premature wakeups from object.wait " \ 1083266423Sjfv "(Solaris only)") \ 1084266423Sjfv \ 1085266423Sjfv product(intx, NativeMonitorTimeout, -1, "(Unstable)" ) \ 1086266423Sjfv product(intx, NativeMonitorFlags, 0, "(Unstable)" ) \ 1087266423Sjfv product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" ) \ 1088266423Sjfv \ 1089266423Sjfv develop(bool, UsePthreads, false, \ 1090266423Sjfv "Use pthread-based instead of libthread-based synchronization " \ 1091266423Sjfv "(SPARC only)") \ 1092266423Sjfv \ 1093266423Sjfv product(bool, AdjustConcurrency, false, \ 1094266423Sjfv "call thr_setconcurrency at thread create time to avoid " \ 1095299551Serj "LWP starvation on MP systems (For Solaris Only)") \ 1096299551Serj \ 1097266423Sjfv product(bool, ReduceSignalUsage, false, \ 1098266423Sjfv "Reduce the use of OS signals in Java and/or the VM") \ 1099266423Sjfv \ 1100266423Sjfv develop_pd(bool, ShareVtableStubs, \ 1101266423Sjfv "Share vtable stubs (smaller code but worse branch prediction") \ 1102266423Sjfv \ 1103266423Sjfv develop(bool, LoadLineNumberTables, true, \ 1104266423Sjfv "Tells whether the class file parser loads line number tables") \ 1105266423Sjfv \ 1106266423Sjfv develop(bool, LoadLocalVariableTables, true, \ 1107266423Sjfv "Tells whether the class file parser loads local variable tables")\ 1108266423Sjfv \ 1109266423Sjfv develop(bool, LoadLocalVariableTypeTables, true, \ 1110270346Sjfv "Tells whether the class file parser loads local variable type tables")\ 1111266423Sjfv \ 1112266423Sjfv product(bool, AllowUserSignalHandlers, false, \ 1113299548Serj "Do not complain if the application installs signal handlers " \ 1114266423Sjfv "(Solaris & Linux only)") \ 1115299548Serj \ 1116266423Sjfv product(bool, UseSignalChaining, true, \ 1117266423Sjfv "Use signal-chaining to invoke signal handlers installed " \ 1118270346Sjfv "by the application (Solaris & Linux only)") \ 1119266423Sjfv \ 1120299548Serj product(bool, UseAltSigs, false, \ 1121270346Sjfv "Use alternate signals instead of SIGUSR1 & SIGUSR2 for VM " \ 1122270346Sjfv "internal signals (Solaris only)") \ 1123266423Sjfv \ 1124266423Sjfv product(bool, AllowJNIEnvProxy, false, \ 1125266423Sjfv "Allow JNIEnv proxies for jdbx") \ 1126266423Sjfv \ 1127270346Sjfv product(bool, JNIDetachReleasesMonitors, true, \ 1128266423Sjfv "JNI DetachCurrentThread releases monitors owned by thread") \ 1129266423Sjfv \ 1130270346Sjfv product(bool, RestoreMXCSROnJNICalls, false, \ 1131266423Sjfv "Restore MXCSR when returning from JNI calls") \ 1132266423Sjfv \ 1133270346Sjfv product(bool, CheckJNICalls, false, \ 1134270346Sjfv "Verify all arguments to JNI calls") \ 1135270346Sjfv \ 1136266423Sjfv product(bool, UseFastJNIAccessors, true, \ 1137270346Sjfv "Use optimized versions of Get<Primitive>Field") \ 1138266423Sjfv \ 1139270346Sjfv product(bool, EagerXrunInit, false, \ 1140266423Sjfv "Eagerly initialize -Xrun libraries; allows startup profiling, " \ 1141266423Sjfv " but not all -Xrun libraries may support the state of the VM at this time") \ 1142266423Sjfv \ 1143279858Sjfv product(bool, PreserveAllAnnotations, false, \ 1144279858Sjfv "Preserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations") \ 1145266423Sjfv \ 1146270346Sjfv develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \ 1147266423Sjfv "Number of OutOfMemoryErrors preallocated with backtrace") \ 1148299547Serj \ 1149299547Serj product(bool, LazyBootClassLoader, true, \ 1150299547Serj "Enable/disable lazy opening of boot class path entries") \ 1151299547Serj \ 1152299547Serj product(bool, UseXMMForArrayCopy, false, \ 1153299548Serj "Use SSE2 MOVQ instruction for Arraycopy") \ 1154299548Serj \ 1155299548Serj product(intx, FieldsAllocationStyle, 1, \ 1156266423Sjfv "0 - type based with oops first, 1 - with oops last, " \ 1157266423Sjfv "2 - oops in super and sub classes are together") \ 1158266423Sjfv \ 1159266423Sjfv product(bool, CompactFields, true, \ 1160266423Sjfv "Allocate nonstatic fields in gaps between previous fields") \ 1161266423Sjfv \ 1162299548Serj notproduct(bool, PrintCompactFieldsSavings, false, \ 1163299548Serj "Print how many words were saved with CompactFields") \ 1164299548Serj \ 1165299548Serj notproduct(bool, PrintFieldLayout, false, \ 1166299548Serj "Print field layout for each class") \ 1167299548Serj \ 1168299548Serj product(intx, ContendedPaddingWidth, 128, \ 1169299548Serj "How many bytes to pad the fields/classes marked @Contended with")\ 1170299548Serj \ 1171299548Serj product(bool, EnableContended, true, \ 1172299548Serj "Enable @Contended annotation support") \ 1173299548Serj \ 1174299548Serj product(bool, RestrictContended, true, \ 1175299548Serj "Restrict @Contended to trusted classes") \ 1176299548Serj \ 1177299548Serj product(bool, UseBiasedLocking, true, \ 1178299548Serj "Enable biased locking in JVM") \ 1179299548Serj \ 1180299548Serj product(intx, BiasedLockingStartupDelay, 4000, \ 1181299548Serj "Number of milliseconds to wait before enabling biased locking") \ 1182299548Serj \ 1183299548Serj diagnostic(bool, PrintBiasedLockingStatistics, false, \ 1184299548Serj "Print statistics of biased locking in JVM") \ 1185299548Serj \ 1186299548Serj product(intx, BiasedLockingBulkRebiasThreshold, 20, \ 1187299548Serj "Threshold of number of revocations per type to try to " \ 1188299548Serj "rebias all objects in the heap of that type") \ 1189299548Serj \ 1190299548Serj product(intx, BiasedLockingBulkRevokeThreshold, 40, \ 1191299548Serj "Threshold of number of revocations per type to permanently " \ 1192299548Serj "revoke biases of all objects in the heap of that type") \ 1193299548Serj \ 1194299548Serj product(intx, BiasedLockingDecayTime, 25000, \ 1195299548Serj "Decay time (in milliseconds) to re-enable bulk rebiasing of a " \ 1196299548Serj "type after previous bulk rebias") \ 1197299548Serj \ 1198299548Serj /* tracing */ \ 1199299548Serj \ 1200299548Serj notproduct(bool, TraceRuntimeCalls, false, \ 1201299548Serj "Trace run-time calls") \ 1202299548Serj \ 1203299548Serj develop(bool, TraceJNICalls, false, \ 1204299548Serj "Trace JNI calls") \ 1205299548Serj \ 1206299548Serj notproduct(bool, TraceJVMCalls, false, \ 1207299548Serj "Trace JVM calls") \ 1208299548Serj \ 1209299548Serj product(ccstr, TraceJVMTI, NULL, \ 1210299548Serj "Trace flags for JVMTI functions and events") \ 1211299548Serj \ 1212299548Serj /* This option can change an EMCP method into an obsolete method. */ \ 1213299548Serj /* This can affect tests that except specific methods to be EMCP. */ \ 1214299548Serj /* This option should be used with caution. */ \ 1215299548Serj product(bool, StressLdcRewrite, false, \ 1216299548Serj "Force ldc -> ldc_w rewrite during RedefineClasses") \ 1217299548Serj \ 1218299548Serj product(intx, TraceRedefineClasses, 0, \ 1219299548Serj "Trace level for JVMTI RedefineClasses") \ 1220299548Serj \ 1221299548Serj develop(bool, StressMethodComparator, false, \ 1222299548Serj "run the MethodComparator on all loaded methods") \ 1223299548Serj \ 1224299548Serj /* change to false by default sometime after Mustang */ \ 1225299548Serj product(bool, VerifyMergedCPBytecodes, true, \ 1226299548Serj "Verify bytecodes after RedefineClasses constant pool merging") \ 1227299548Serj \ 1228299548Serj develop(bool, TraceJNIHandleAllocation, false, \ 1229299548Serj "Trace allocation/deallocation of JNI handle blocks") \ 1230299548Serj \ 1231299548Serj develop(bool, TraceThreadEvents, false, \ 1232299548Serj "Trace all thread events") \ 1233299552Serj \ 1234299548Serj develop(bool, TraceBytecodes, false, \ 1235299548Serj "Trace bytecode execution") \ 1236299548Serj \ 1237299548Serj develop(bool, TraceClassInitialization, false, \ 1238299548Serj "Trace class initialization") \ 1239299548Serj \ 1240299548Serj develop(bool, TraceExceptions, false, \ 1241299548Serj "Trace exceptions") \ 1242299548Serj \ 1243299548Serj develop(bool, TraceICs, false, \ 1244299548Serj "Trace inline cache changes") \ 1245299548Serj \ 1246299548Serj notproduct(bool, TraceInvocationCounterOverflow, false, \ 1247299548Serj "Trace method invocation counter overflow") \ 1248299548Serj \ 1249299548Serj develop(bool, TraceInlineCacheClearing, false, \ 1250299548Serj "Trace clearing of inline caches in nmethods") \ 1251299548Serj \ 1252299548Serj develop(bool, TraceDependencies, false, \ 1253299548Serj "Trace dependencies") \ 1254299548Serj \ 1255299548Serj develop(bool, VerifyDependencies, trueInDebug, \ 1256299548Serj "Exercise and verify the compilation dependency mechanism") \ 1257299548Serj \ 1258299548Serj develop(bool, TraceNewOopMapGeneration, false, \ 1259299552Serj "Trace OopMapGeneration") \ 1260299548Serj \ 1261299548Serj develop(bool, TraceNewOopMapGenerationDetailed, false, \ 1262299548Serj "Trace OopMapGeneration: print detailed cell states") \ 1263299548Serj \ 1264299548Serj develop(bool, TimeOopMap, false, \ 1265299548Serj "Time calls to GenerateOopMap::compute_map() in sum") \ 1266299548Serj \ 1267299548Serj develop(bool, TimeOopMap2, false, \ 1268299548Serj "Time calls to GenerateOopMap::compute_map() individually") \ 1269299548Serj \ 1270299548Serj develop(bool, TraceMonitorMismatch, false, \ 1271299548Serj "Trace monitor matching failures during OopMapGeneration") \ 1272299548Serj \ 1273299548Serj develop(bool, TraceOopMapRewrites, false, \ 1274299548Serj "Trace rewritting of method oops during oop map generation") \ 1275299548Serj \ 1276266423Sjfv develop(bool, TraceSafepoint, false, \ 1277270346Sjfv "Trace safepoint operations") \ 1278266423Sjfv \ 1279270346Sjfv develop(bool, TraceICBuffer, false, \ 1280299547Serj "Trace usage of IC buffer") \ 1281266423Sjfv \ 1282299548Serj develop(bool, TraceCompiledIC, false, \ 1283299548Serj "Trace changes of compiled IC") \ 1284299548Serj \ 1285299548Serj notproduct(bool, TraceZapDeadLocals, false, \ 1286299548Serj "Trace zapping dead locals") \ 1287299548Serj \ 1288299548Serj develop(bool, TraceStartupTime, false, \ 1289299548Serj "Trace setup time") \ 1290299548Serj \ 1291299548Serj develop(bool, TraceProtectionDomainVerification, false, \ 1292299548Serj "Trace protection domain verifcation") \ 1293299548Serj \ 1294299548Serj develop(bool, TraceClearedExceptions, false, \ 1295299547Serj "Prints when an exception is forcibly cleared") \ 1296299547Serj \ 1297299547Serj product(bool, TraceClassResolution, false, \ 1298299547Serj "Trace all constant pool resolutions (for debugging)") \ 1299299547Serj \ 1300299547Serj product(bool, TraceBiasedLocking, false, \ 1301299547Serj "Trace biased locking in JVM") \ 1302299547Serj \ 1303299547Serj product(bool, TraceMonitorInflation, false, \ 1304299547Serj "Trace monitor inflation in JVM") \ 1305270346Sjfv \ 1306270346Sjfv /* gc */ \ 1307270346Sjfv \ 1308266423Sjfv product(bool, UseSerialGC, false, \ 1309266423Sjfv "Use the serial garbage collector") \ 1310266423Sjfv \ 1311266423Sjfv product(bool, UseG1GC, false, \ 1312266423Sjfv "Use the Garbage-First garbage collector") \ 1313266423Sjfv \ 1314266423Sjfv product(bool, UseParallelGC, false, \ 1315266423Sjfv "Use the Parallel Scavenge garbage collector") \ 1316266423Sjfv \ 1317270346Sjfv product(bool, UseParallelOldGC, false, \ 1318266423Sjfv "Use the Parallel Old garbage collector") \ 1319270346Sjfv \ 1320270346Sjfv product(uintx, HeapMaximumCompactionInterval, 20, \ 1321266423Sjfv "How often should we maximally compact the heap (not allowing " \ 1322266423Sjfv "any dead space)") \ 1323266423Sjfv \ 1324266423Sjfv product(uintx, HeapFirstMaximumCompactionCount, 3, \ 1325266423Sjfv "The collection count for the first maximum compaction") \ 1326266423Sjfv \ 1327270346Sjfv product(bool, UseMaximumCompactionOnSystemGC, true, \ 1328270346Sjfv "In the Parallel Old garbage collector maximum compaction for " \ 1329270346Sjfv "a system GC") \ 1330266423Sjfv \ 1331270346Sjfv product(uintx, ParallelOldDeadWoodLimiterMean, 50, \ 1332270346Sjfv "The mean used by the par compact dead wood" \ 1333266423Sjfv "limiter (a number between 0-100).") \ 1334266423Sjfv \ 1335266423Sjfv product(uintx, ParallelOldDeadWoodLimiterStdDev, 80, \ 1336266423Sjfv "The standard deviation used by the par compact dead wood" \ 1337266423Sjfv "limiter (a number between 0-100).") \ 1338266423Sjfv \ 1339266423Sjfv product(uintx, ParallelGCThreads, 0, \ 1340270346Sjfv "Number of parallel threads parallel gc will use") \ 1341266423Sjfv \ 1342266423Sjfv product(bool, UseDynamicNumberOfGCThreads, false, \ 1343266423Sjfv "Dynamically choose the number of parallel threads " \ 1344266423Sjfv "parallel gc will use") \ 1345266423Sjfv \ 1346266423Sjfv diagnostic(bool, ForceDynamicNumberOfGCThreads, false, \ 1347266423Sjfv "Force dynamic selection of the number of" \ 1348266423Sjfv "parallel threads parallel gc will use to aid debugging") \ 1349266423Sjfv \ 1350266423Sjfv product(uintx, HeapSizePerGCThread, ScaleForWordSize(64*M), \ 1351270346Sjfv "Size of heap (bytes) per GC thread used in calculating the " \ 1352266423Sjfv "number of GC threads") \ 1353270346Sjfv \ 1354266423Sjfv product(bool, TraceDynamicGCThreads, false, \ 1355270346Sjfv "Trace the dynamic GC thread usage") \ 1356270346Sjfv \ 1357266423Sjfv develop(bool, ParallelOldGCSplitALot, false, \ 1358266423Sjfv "Provoke splitting (copying data from a young gen space to" \ 1359266423Sjfv "multiple destination spaces)") \ 1360266423Sjfv \ 1361266423Sjfv develop(uintx, ParallelOldGCSplitInterval, 3, \ 1362266423Sjfv "How often to provoke splitting a young gen space") \ 1363266423Sjfv \ 1364266423Sjfv product(uintx, ConcGCThreads, 0, \ 1365266423Sjfv "Number of threads concurrent gc will use") \ 1366266423Sjfv \ 1367266423Sjfv product(uintx, YoungPLABSize, 4096, \ 1368266423Sjfv "Size of young gen promotion labs (in HeapWords)") \ 1369266423Sjfv \ 1370266423Sjfv product(uintx, OldPLABSize, 1024, \ 1371266423Sjfv "Size of old gen promotion labs (in HeapWords)") \ 1372266423Sjfv \ 1373266423Sjfv product(uintx, GCTaskTimeStampEntries, 200, \ 1374266423Sjfv "Number of time stamp entries per gc worker thread") \ 1375266423Sjfv \ 1376279858Sjfv product(bool, AlwaysTenure, false, \ 1377279858Sjfv "Always tenure objects in eden. (ParallelGC only)") \ 1378279858Sjfv \ 1379279858Sjfv product(bool, NeverTenure, false, \ 1380279858Sjfv "Never tenure objects in eden, May tenure on overflow " \ 1381266423Sjfv "(ParallelGC only)") \ 1382266423Sjfv \ 1383266423Sjfv product(bool, ScavengeBeforeFullGC, true, \ 1384266423Sjfv "Scavenge youngest generation before each full GC, " \ 1385266423Sjfv "used with UseParallelGC") \ 1386270346Sjfv \ 1387266423Sjfv develop(bool, ScavengeWithObjectsInToSpace, false, \ 1388270346Sjfv "Allow scavenges to occur when to_space contains objects.") \ 1389270346Sjfv \ 1390266423Sjfv product(bool, UseConcMarkSweepGC, false, \ 1391266423Sjfv "Use Concurrent Mark-Sweep GC in the old generation") \ 1392270346Sjfv \ 1393266423Sjfv product(bool, ExplicitGCInvokesConcurrent, false, \ 1394266423Sjfv "A System.gc() request invokes a concurrent collection;" \ 1395266423Sjfv " (effective only when UseConcMarkSweepGC)") \ 1396266423Sjfv \ 1397266423Sjfv product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false, \ 1398266423Sjfv "A System.gc() request invokes a concurrent collection and " \ 1399266423Sjfv "also unloads classes during such a concurrent gc cycle " \ 1400266423Sjfv "(effective only when UseConcMarkSweepGC)") \ 1401266423Sjfv \ 1402266423Sjfv product(bool, GCLockerInvokesConcurrent, false, \ 1403266423Sjfv "The exit of a JNI CS necessitating a scavenge also" \ 1404266423Sjfv " kicks off a bkgrd concurrent collection") \ 1405266423Sjfv \ 1406266423Sjfv product(uintx, GCLockerEdenExpansionPercent, 5, \ 1407270346Sjfv "How much the GC can expand the eden by while the GC locker " \ 1408266423Sjfv "is active (as a percentage)") \ 1409266423Sjfv \ 1410266423Sjfv diagnostic(intx, GCLockerRetryAllocationCount, 2, \ 1411266423Sjfv "Number of times to retry allocations when" \ 1412266423Sjfv " blocked by the GC locker") \ 1413266423Sjfv \ 1414266423Sjfv develop(bool, UseCMSAdaptiveFreeLists, true, \ 1415266423Sjfv "Use Adaptive Free Lists in the CMS generation") \ 1416266423Sjfv \ 1417266423Sjfv develop(bool, UseAsyncConcMarkSweepGC, true, \ 1418266423Sjfv "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\ 1419270346Sjfv \ 1420266423Sjfv develop(bool, RotateCMSCollectionTypes, false, \ 1421270346Sjfv "Rotate the CMS collections among concurrent and STW") \ 1422270346Sjfv \ 1423266423Sjfv product(bool, UseCMSBestFit, true, \ 1424266423Sjfv "Use CMS best fit allocation strategy") \ 1425266423Sjfv \ 1426266423Sjfv product(bool, UseCMSCollectionPassing, true, \ 1427269198Sjfv "Use passing of collection from background to foreground") \ 1428269198Sjfv \ 1429269198Sjfv product(bool, UseParNewGC, false, \ 1430269198Sjfv "Use parallel threads in the new generation.") \ 1431266423Sjfv \ 1432266423Sjfv product(bool, ParallelGCVerbose, false, \ 1433270346Sjfv "Verbose output for parallel GC.") \ 1434266423Sjfv \ 1435270346Sjfv product(intx, ParallelGCBufferWastePct, 10, \ 1436270346Sjfv "wasted fraction of parallel allocation buffer.") \ 1437266423Sjfv \ 1438266423Sjfv diagnostic(bool, ParallelGCRetainPLAB, false, \ 1439266423Sjfv "Retain parallel allocation buffers across scavenges; " \ 1440266423Sjfv " -- disabled because this currently conflicts with " \ 1441266423Sjfv " parallel card scanning under certain conditions ") \ 1442266423Sjfv \ 1443266423Sjfv product(intx, TargetPLABWastePct, 10, \ 1444270346Sjfv "target wasted space in last buffer as pct of overall allocation")\ 1445266423Sjfv \ 1446270346Sjfv product(uintx, PLABWeight, 75, \ 1447270346Sjfv "Percentage (0-100) used to weight the current sample when" \ 1448266423Sjfv "computing exponentially decaying average for ResizePLAB.") \ 1449266423Sjfv \ 1450266423Sjfv product(bool, ResizePLAB, true, \ 1451266423Sjfv "Dynamically resize (survivor space) promotion labs") \ 1452270346Sjfv \ 1453266423Sjfv product(bool, PrintPLAB, false, \ 1454266423Sjfv "Print (survivor space) promotion labs sizing decisions") \ 1455266423Sjfv \ 1456266423Sjfv product(intx, ParGCArrayScanChunk, 50, \ 1457266423Sjfv "Scan a subset and push remainder, if array is bigger than this") \ 1458266423Sjfv \ 1459266423Sjfv product(bool, ParGCUseLocalOverflow, false, \ 1460266423Sjfv "Instead of a global overflow list, use local overflow stacks") \ 1461266423Sjfv \ 1462266423Sjfv product(bool, ParGCTrimOverflow, true, \ 1463266423Sjfv "Eagerly trim the local overflow lists (when ParGCUseLocalOverflow") \ 1464270346Sjfv \ 1465266423Sjfv notproduct(bool, ParGCWorkQueueOverflowALot, false, \ 1466270346Sjfv "Whether we should simulate work queue overflow in ParNew") \ 1467266423Sjfv \ 1468299549Serj notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000, \ 1469299549Serj "An `interval' counter that determines how frequently " \ 1470266423Sjfv "we simulate overflow; a smaller number increases frequency") \ 1471266423Sjfv \ 1472266423Sjfv product(uintx, ParGCDesiredObjsFromOverflowList, 20, \ 1473266423Sjfv "The desired number of objects to claim from the overflow list") \ 1474266423Sjfv \ 1475266423Sjfv diagnostic(uintx, ParGCStridesPerThread, 2, \ 1476266423Sjfv "The number of strides per worker thread that we divide up the " \ 1477299549Serj "card table scanning work into") \ 1478299549Serj \ 1479299549Serj diagnostic(intx, ParGCCardsPerStrideChunk, 256, \ 1480299549Serj "The number of cards in each chunk of the parallel chunks used " \ 1481266423Sjfv "during card table scanning") \ 1482269198Sjfv \ 1483270346Sjfv product(uintx, CMSParPromoteBlocksToClaim, 16, \ 1484299549Serj "Number of blocks to attempt to claim when refilling CMS LAB for "\ 1485269198Sjfv "parallel GC.") \ 1486266423Sjfv \ 1487299549Serj product(uintx, OldPLABWeight, 50, \ 1488299549Serj "Percentage (0-100) used to weight the current sample when" \ 1489299549Serj "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \ 1490299549Serj \ 1491299549Serj product(bool, ResizeOldPLAB, true, \ 1492299549Serj "Dynamically resize (old gen) promotion labs") \ 1493299549Serj \ 1494299549Serj product(bool, PrintOldPLAB, false, \ 1495299549Serj "Print (old gen) promotion labs sizing decisions") \ 1496299549Serj \ 1497299549Serj product(uintx, CMSOldPLABMin, 16, \ 1498299549Serj "Min size of CMS gen promotion lab caches per worker per blksize")\ 1499299549Serj \ 1500299549Serj product(uintx, CMSOldPLABMax, 1024, \ 1501299549Serj "Max size of CMS gen promotion lab caches per worker per blksize")\ 1502299549Serj \ 1503299549Serj product(uintx, CMSOldPLABNumRefills, 4, \ 1504299549Serj "Nominal number of refills of CMS gen promotion lab cache" \ 1505299549Serj " per worker per block size") \ 1506299549Serj \ 1507299549Serj product(bool, CMSOldPLABResizeQuicker, false, \ 1508299549Serj "Whether to react on-the-fly during a scavenge to a sudden" \ 1509299549Serj " change in block demand rate") \ 1510299549Serj \ 1511299549Serj product(uintx, CMSOldPLABToleranceFactor, 4, \ 1512299549Serj "The tolerance of the phase-change detector for on-the-fly" \ 1513299549Serj " PLAB resizing during a scavenge") \ 1514299549Serj \ 1515299549Serj product(uintx, CMSOldPLABReactivityFactor, 2, \ 1516299549Serj "The gain in the feedback loop for on-the-fly PLAB resizing" \ 1517299549Serj " during a scavenge") \ 1518299549Serj \ 1519299549Serj product(bool, AlwaysPreTouch, false, \ 1520299549Serj "It forces all freshly committed pages to be pre-touched.") \ 1521299549Serj \ 1522299549Serj product_pd(intx, CMSYoungGenPerWorker, \ 1523299549Serj "The maximum size of young gen chosen by default per GC worker " \ 1524299549Serj "thread available") \ 1525279858Sjfv \ 1526279858Sjfv product(bool, CMSIncrementalMode, false, \ 1527266423Sjfv "Whether CMS GC should operate in \"incremental\" mode") \ 1528279858Sjfv \ 1529279858Sjfv product(uintx, CMSIncrementalDutyCycle, 10, \ 1530279858Sjfv "CMS incremental mode duty cycle (a percentage, 0-100). If" \ 1531266423Sjfv "CMSIncrementalPacing is enabled, then this is just the initial" \ 1532266423Sjfv "value") \ 1533266423Sjfv \ 1534266423Sjfv product(bool, CMSIncrementalPacing, true, \ 1535266423Sjfv "Whether the CMS incremental mode duty cycle should be " \ 1536299549Serj "automatically adjusted") \ 1537299549Serj \ 1538266423Sjfv product(uintx, CMSIncrementalDutyCycleMin, 0, \ 1539266423Sjfv "Lower bound on the duty cycle when CMSIncrementalPacing is " \ 1540266423Sjfv "enabled (a percentage, 0-100)") \ 1541266423Sjfv \ 1542266423Sjfv product(uintx, CMSIncrementalSafetyFactor, 10, \ 1543266423Sjfv "Percentage (0-100) used to add conservatism when computing the " \ 1544266423Sjfv "duty cycle") \ 1545266423Sjfv \ 1546266423Sjfv product(uintx, CMSIncrementalOffset, 0, \ 1547266423Sjfv "Percentage (0-100) by which the CMS incremental mode duty cycle" \ 1548266423Sjfv " is shifted to the right within the period between young GCs") \ 1549270346Sjfv \ 1550266423Sjfv product(uintx, CMSExpAvgFactor, 50, \ 1551270346Sjfv "Percentage (0-100) used to weight the current sample when" \ 1552279858Sjfv "computing exponential averages for CMS statistics.") \ 1553266423Sjfv \ 1554266423Sjfv product(uintx, CMS_FLSWeight, 75, \ 1555270346Sjfv "Percentage (0-100) used to weight the current sample when" \ 1556270346Sjfv "computing exponentially decating averages for CMS FLS statistics.") \ 1557266423Sjfv \ 1558279858Sjfv product(uintx, CMS_FLSPadding, 1, \ 1559284049Sjfv "The multiple of deviation from mean to use for buffering" \ 1560270346Sjfv "against volatility in free list demand.") \ 1561266423Sjfv \ 1562266423Sjfv product(uintx, FLSCoalescePolicy, 2, \ 1563266423Sjfv "CMS: Aggression level for coalescing, increasing from 0 to 4") \ 1564266423Sjfv \ 1565279858Sjfv product(bool, FLSAlwaysCoalesceLarge, false, \ 1566270346Sjfv "CMS: Larger free blocks are always available for coalescing") \ 1567266423Sjfv \ 1568266423Sjfv product(double, FLSLargestBlockCoalesceProximity, 0.99, \ 1569266423Sjfv "CMS: the smaller the percentage the greater the coalition force")\ 1570266423Sjfv \ 1571299545Serj product(double, CMSSmallCoalSurplusPercent, 1.05, \ 1572299545Serj "CMS: the factor by which to inflate estimated demand of small" \ 1573266423Sjfv " block sizes to prevent coalescing with an adjoining block") \ 1574266423Sjfv \ 1575266423Sjfv product(double, CMSLargeCoalSurplusPercent, 0.95, \ 1576266423Sjfv "CMS: the factor by which to inflate estimated demand of large" \ 1577266423Sjfv " block sizes to prevent coalescing with an adjoining block") \ 1578266423Sjfv \ 1579266423Sjfv product(double, CMSSmallSplitSurplusPercent, 1.10, \ 1580266423Sjfv "CMS: the factor by which to inflate estimated demand of small" \ 1581266423Sjfv " block sizes to prevent splitting to supply demand for smaller" \ 1582266423Sjfv " blocks") \ 1583266423Sjfv \ 1584269198Sjfv product(double, CMSLargeSplitSurplusPercent, 1.00, \ 1585269198Sjfv "CMS: the factor by which to inflate estimated demand of large" \ 1586269198Sjfv " block sizes to prevent splitting to supply demand for smaller" \ 1587269198Sjfv " blocks") \ 1588269198Sjfv \ 1589269198Sjfv product(bool, CMSExtrapolateSweep, false, \ 1590299552Serj "CMS: cushion for block demand during sweep") \ 1591299552Serj \ 1592299552Serj product(uintx, CMS_SweepWeight, 75, \ 1593266423Sjfv "Percentage (0-100) used to weight the current sample when " \ 1594266423Sjfv "computing exponentially decaying average for inter-sweep " \ 1595266423Sjfv "duration") \ 1596266423Sjfv \ 1597266423Sjfv product(uintx, CMS_SweepPadding, 1, \ 1598266423Sjfv "The multiple of deviation from mean to use for buffering " \ 1599266423Sjfv "against volatility in inter-sweep duration.") \ 1600266423Sjfv \ 1601266423Sjfv product(uintx, CMS_SweepTimerThresholdMillis, 10, \ 1602266423Sjfv "Skip block flux-rate sampling for an epoch unless inter-sweep " \ 1603270346Sjfv "duration exceeds this threhold in milliseconds") \ 1604270346Sjfv \ 1605270346Sjfv develop(bool, CMSTraceIncrementalMode, false, \ 1606299552Serj "Trace CMS incremental mode") \ 1607299552Serj \ 1608299552Serj develop(bool, CMSTraceIncrementalPacing, false, \ 1609299552Serj "Trace CMS incremental mode pacing computation") \ 1610299552Serj \ 1611266423Sjfv develop(bool, CMSTraceThreadState, false, \ 1612266423Sjfv "Trace the CMS thread state (enable the trace_state() method)") \ 1613266423Sjfv \ 1614266423Sjfv product(bool, CMSClassUnloadingEnabled, true, \ 1615266423Sjfv "Whether class unloading enabled when using CMS GC") \ 1616266423Sjfv \ 1617266423Sjfv product(uintx, CMSClassUnloadingMaxInterval, 0, \ 1618266423Sjfv "When CMS class unloading is enabled, the maximum CMS cycle count"\ 1619266423Sjfv " for which classes may not be unloaded") \ 1620266423Sjfv \ 1621266423Sjfv product(bool, CMSCompactWhenClearAllSoftRefs, true, \ 1622299552Serj "Compact when asked to collect CMS gen with clear_all_soft_refs") \ 1623299552Serj \ 1624299552Serj product(bool, UseCMSCompactAtFullCollection, true, \ 1625284049Sjfv "Use mark sweep compact at full collections") \ 1626284049Sjfv \ 1627284049Sjfv product(uintx, CMSFullGCsBeforeCompaction, 0, \ 1628284049Sjfv "Number of CMS full collection done before compaction if > 0") \ 1629299552Serj \ 1630299552Serj develop(intx, CMSDictionaryChoice, 0, \ 1631299552Serj "Use BinaryTreeDictionary as default in the CMS generation") \ 1632284049Sjfv \ 1633284049Sjfv product(uintx, CMSIndexedFreeListReplenish, 4, \ 1634284049Sjfv "Replenish an indexed free list with this number of chunks") \ 1635284049Sjfv \ 1636284049Sjfv product(bool, CMSReplenishIntermediate, true, \ 1637284049Sjfv "Replenish all intermediate free-list caches") \ 1638284049Sjfv \ 1639284049Sjfv product(bool, CMSSplitIndexedFreeListBlocks, true, \ 1640284049Sjfv "When satisfying batched demand, split blocks from the " \ 1641284049Sjfv "IndexedFreeList whose size is a multiple of requested size") \ 1642299552Serj \ 1643299552Serj product(bool, CMSLoopWarn, false, \ 1644299552Serj "Warn in case of excessive CMS looping") \ 1645279033Sjfv \ 1646279033Sjfv develop(bool, CMSOverflowEarlyRestoration, false, \ 1647299552Serj "Whether preserved marks should be restored early") \ 1648284049Sjfv \ 1649279033Sjfv product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M), \ 1650284049Sjfv "Size of marking stack") \ 1651284049Sjfv \ 1652284049Sjfv product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M), \ 1653284049Sjfv "Max size of marking stack") \ 1654299552Serj \ 1655299552Serj notproduct(bool, CMSMarkStackOverflowALot, false, \ 1656299552Serj "Whether we should simulate frequent marking stack / work queue" \ 1657284049Sjfv " overflow") \ 1658284049Sjfv \ 1659284049Sjfv notproduct(uintx, CMSMarkStackOverflowInterval, 1000, \ 1660284049Sjfv "An `interval' counter that determines how frequently" \ 1661284049Sjfv " we simulate overflow; a smaller number increases frequency") \ 1662284049Sjfv \ 1663284049Sjfv product(uintx, CMSMaxAbortablePrecleanLoops, 0, \ 1664284049Sjfv "(Temporary, subject to experimentation)" \ 1665284049Sjfv "Maximum number of abortable preclean iterations, if > 0") \ 1666284049Sjfv \ 1667284049Sjfv product(intx, CMSMaxAbortablePrecleanTime, 5000, \ 1668299552Serj "(Temporary, subject to experimentation)" \ 1669299552Serj "Maximum time in abortable preclean in ms") \ 1670299552Serj \ 1671299545Serj product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100, \ 1672284049Sjfv "(Temporary, subject to experimentation)" \ 1673284049Sjfv "Nominal minimum work per abortable preclean iteration") \ 1674284049Sjfv \ 1675284049Sjfv manageable(intx, CMSAbortablePrecleanWaitMillis, 100, \ 1676284049Sjfv "(Temporary, subject to experimentation)" \ 1677284049Sjfv " Time that we sleep between iterations when not given" \ 1678284049Sjfv " enough work per iteration") \ 1679299552Serj \ 1680284049Sjfv product(uintx, CMSRescanMultiple, 32, \ 1681284049Sjfv "Size (in cards) of CMS parallel rescan task") \ 1682284049Sjfv \ 1683299552Serj product(uintx, CMSConcMarkMultiple, 32, \ 1684266423Sjfv "Size (in cards) of CMS concurrent MT marking task") \ 1685266423Sjfv \ 1686266423Sjfv product(bool, CMSAbortSemantics, false, \ 1687266423Sjfv "Whether abort-on-overflow semantics is implemented") \ 1688266423Sjfv \ 1689266423Sjfv product(bool, CMSParallelRemarkEnabled, true, \ 1690266423Sjfv "Whether parallel remark enabled (only if ParNewGC)") \ 1691266423Sjfv \ 1692266423Sjfv product(bool, CMSParallelSurvivorRemarkEnabled, true, \ 1693266423Sjfv "Whether parallel remark of survivor space" \ 1694270346Sjfv " enabled (effective only if CMSParallelRemarkEnabled)") \ 1695266423Sjfv \ 1696266423Sjfv product(bool, CMSPLABRecordAlways, true, \ 1697266423Sjfv "Whether to always record survivor space PLAB bdries" \ 1698266423Sjfv " (effective only if CMSParallelSurvivorRemarkEnabled)") \ 1699299545Serj \ 1700299545Serj product(bool, CMSConcurrentMTEnabled, true, \ 1701299545Serj "Whether multi-threaded concurrent work enabled (if ParNewGC)") \ 1702299545Serj \ 1703299545Serj product(bool, CMSPrecleaningEnabled, true, \ 1704266423Sjfv "Whether concurrent precleaning enabled") \ 1705270346Sjfv \ 1706266423Sjfv product(uintx, CMSPrecleanIter, 3, \ 1707270346Sjfv "Maximum number of precleaning iteration passes") \ 1708266423Sjfv \ 1709266423Sjfv product(uintx, CMSPrecleanNumerator, 2, \ 1710270346Sjfv "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \ 1711266423Sjfv " ratio") \ 1712266423Sjfv \ 1713266423Sjfv product(uintx, CMSPrecleanDenominator, 3, \ 1714266423Sjfv "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \ 1715299545Serj " ratio") \ 1716269198Sjfv \ 1717269198Sjfv product(bool, CMSPrecleanRefLists1, true, \ 1718266423Sjfv "Preclean ref lists during (initial) preclean phase") \ 1719266423Sjfv \ 1720266423Sjfv product(bool, CMSPrecleanRefLists2, false, \ 1721270346Sjfv "Preclean ref lists during abortable preclean phase") \ 1722266423Sjfv \ 1723266423Sjfv product(bool, CMSPrecleanSurvivors1, false, \ 1724266423Sjfv "Preclean survivors during (initial) preclean phase") \ 1725266423Sjfv \ 1726266423Sjfv product(bool, CMSPrecleanSurvivors2, true, \ 1727266423Sjfv "Preclean survivors during abortable preclean phase") \ 1728266423Sjfv \ 1729270346Sjfv product(uintx, CMSPrecleanThreshold, 1000, \ 1730266423Sjfv "Don't re-iterate if #dirty cards less than this") \ 1731270346Sjfv \ 1732266423Sjfv product(bool, CMSCleanOnEnter, true, \ 1733266423Sjfv "Clean-on-enter optimization for reducing number of dirty cards") \ 1734266423Sjfv \ 1735266423Sjfv product(uintx, CMSRemarkVerifyVariant, 1, \ 1736266423Sjfv "Choose variant (1,2) of verification following remark") \ 1737266423Sjfv \ 1738270346Sjfv product(uintx, CMSScheduleRemarkEdenSizeThreshold, 2*M, \ 1739266423Sjfv "If Eden used is below this value, don't try to schedule remark") \ 1740266423Sjfv \ 1741266423Sjfv product(uintx, CMSScheduleRemarkEdenPenetration, 50, \ 1742266423Sjfv "The Eden occupancy % at which to try and schedule remark pause") \ 1743266423Sjfv \ 1744266423Sjfv product(uintx, CMSScheduleRemarkSamplingRatio, 5, \ 1745266423Sjfv "Start sampling Eden top at least before yg occupancy reaches" \ 1746266423Sjfv " 1/<ratio> of the size at which we plan to schedule remark") \ 1747266423Sjfv \ 1748266423Sjfv product(uintx, CMSSamplingGrain, 16*K, \ 1749266423Sjfv "The minimum distance between eden samples for CMS (see above)") \ 1750266423Sjfv \ 1751266423Sjfv product(bool, CMSScavengeBeforeRemark, false, \ 1752266423Sjfv "Attempt scavenge before the CMS remark step") \ 1753266423Sjfv \ 1754266423Sjfv develop(bool, CMSTraceSweeper, false, \ 1755266423Sjfv "Trace some actions of the CMS sweeper") \ 1756266423Sjfv \ 1757266423Sjfv product(uintx, CMSWorkQueueDrainThreshold, 10, \ 1758266423Sjfv "Don't drain below this size per parallel worker/thief") \ 1759266423Sjfv \ 1760266423Sjfv manageable(intx, CMSWaitDuration, 2000, \ 1761266423Sjfv "Time in milliseconds that CMS thread waits for young GC") \ 1762266423Sjfv \ 1763266423Sjfv develop(uintx, CMSCheckInterval, 1000, \ 1764266423Sjfv "Interval in milliseconds that CMS thread checks if it " \ 1765266423Sjfv "should start a collection cycle") \ 1766266423Sjfv \ 1767266423Sjfv product(bool, CMSYield, true, \ 1768266423Sjfv "Yield between steps of concurrent mark & sweep") \ 1769266423Sjfv \ 1770266423Sjfv product(uintx, CMSBitMapYieldQuantum, 10*M, \ 1771266423Sjfv "Bitmap operations should process at most this many bits" \ 1772266423Sjfv "between yields") \ 1773266423Sjfv \ 1774266423Sjfv product(bool, CMSDumpAtPromotionFailure, false, \ 1775266423Sjfv "Dump useful information about the state of the CMS old " \ 1776266423Sjfv " generation upon a promotion failure.") \ 1777266423Sjfv \ 1778266423Sjfv product(bool, CMSPrintChunksInDump, false, \ 1779266423Sjfv "In a dump enabled by CMSDumpAtPromotionFailure, include " \ 1780266423Sjfv " more detailed information about the free chunks.") \ 1781266423Sjfv \ 1782266423Sjfv product(bool, CMSPrintObjectsInDump, false, \ 1783266423Sjfv "In a dump enabled by CMSDumpAtPromotionFailure, include " \ 1784266423Sjfv " more detailed information about the allocated objects.") \ 1785266423Sjfv \ 1786266423Sjfv diagnostic(bool, FLSVerifyAllHeapReferences, false, \ 1787266423Sjfv "Verify that all refs across the FLS boundary " \ 1788266423Sjfv " are to valid objects") \ 1789266423Sjfv \ 1790266423Sjfv diagnostic(bool, FLSVerifyLists, false, \ 1791266423Sjfv "Do lots of (expensive) FreeListSpace verification") \ 1792266423Sjfv \ 1793266423Sjfv diagnostic(bool, FLSVerifyIndexTable, false, \ 1794266423Sjfv "Do lots of (expensive) FLS index table verification") \ 1795270346Sjfv \ 1796266423Sjfv develop(bool, FLSVerifyDictionary, false, \ 1797266423Sjfv "Do lots of (expensive) FLS dictionary verification") \ 1798266423Sjfv \ 1799266423Sjfv develop(bool, VerifyBlockOffsetArray, false, \ 1800266423Sjfv "Do (expensive!) block offset array verification") \ 1801266423Sjfv \ 1802266423Sjfv diagnostic(bool, BlockOffsetArrayUseUnallocatedBlock, false, \ 1803266423Sjfv "Maintain _unallocated_block in BlockOffsetArray" \ 1804266423Sjfv " (currently applicable only to CMS collector)") \ 1805266423Sjfv \ 1806266423Sjfv develop(bool, TraceCMSState, false, \ 1807266423Sjfv "Trace the state of the CMS collection") \ 1808266423Sjfv \ 1809266423Sjfv product(intx, RefDiscoveryPolicy, 0, \ 1810266423Sjfv "Whether reference-based(0) or referent-based(1)") \ 1811266423Sjfv \ 1812266423Sjfv product(bool, ParallelRefProcEnabled, false, \ 1813266423Sjfv "Enable parallel reference processing whenever possible") \ 1814266423Sjfv \ 1815266423Sjfv product(bool, ParallelRefProcBalancingEnabled, true, \ 1816266423Sjfv "Enable balancing of reference processing queues") \ 1817266423Sjfv \ 1818266423Sjfv product(uintx, CMSTriggerRatio, 80, \ 1819266423Sjfv "Percentage of MinHeapFreeRatio in CMS generation that is " \ 1820266423Sjfv "allocated before a CMS collection cycle commences") \ 1821266423Sjfv \ 1822266423Sjfv product(uintx, CMSBootstrapOccupancy, 50, \ 1823266423Sjfv "Percentage CMS generation occupancy at which to " \ 1824266423Sjfv "initiate CMS collection for bootstrapping collection stats") \ 1825266423Sjfv \ 1826266423Sjfv product(intx, CMSInitiatingOccupancyFraction, -1, \ 1827266423Sjfv "Percentage CMS generation occupancy to start a CMS collection " \ 1828266423Sjfv "cycle. A negative value means that CMSTriggerRatio is used") \ 1829266423Sjfv \ 1830266423Sjfv product(uintx, InitiatingHeapOccupancyPercent, 45, \ 1831266423Sjfv "Percentage of the (entire) heap occupancy to start a " \ 1832266423Sjfv "concurrent GC cycle. It is used by GCs that trigger a " \ 1833266423Sjfv "concurrent GC cycle based on the occupancy of the entire heap, " \ 1834266423Sjfv "not just one of the generations (e.g., G1). A value of 0 " \ 1835266423Sjfv "denotes 'do constant GC cycles'.") \ 1836270346Sjfv \ 1837266423Sjfv product(bool, UseCMSInitiatingOccupancyOnly, false, \ 1838266423Sjfv "Only use occupancy as a crierion for starting a CMS collection") \ 1839266423Sjfv \ 1840266423Sjfv product(intx, CMSIsTooFullPercentage, 98, \ 1841266423Sjfv "An absolute ceiling above which CMS will always consider the " \ 1842266423Sjfv "unloading of classes when class unloading is enabled") \ 1843270346Sjfv \ 1844266423Sjfv develop(bool, CMSTestInFreeList, false, \ 1845266423Sjfv "Check if the coalesced range is already in the " \ 1846266423Sjfv "free lists as claimed") \ 1847266423Sjfv \ 1848266423Sjfv notproduct(bool, CMSVerifyReturnedBytes, false, \ 1849266423Sjfv "Check that all the garbage collected was returned to the " \ 1850266423Sjfv "free lists.") \ 1851266423Sjfv \ 1852266423Sjfv notproduct(bool, ScavengeALot, false, \ 1853266423Sjfv "Force scavenge at every Nth exit from the runtime system " \ 1854266423Sjfv "(N=ScavengeALotInterval)") \ 1855266423Sjfv \ 1856266423Sjfv develop(bool, FullGCALot, false, \ 1857266423Sjfv "Force full gc at every Nth exit from the runtime system " \ 1858266423Sjfv "(N=FullGCALotInterval)") \ 1859270346Sjfv \ 1860266423Sjfv notproduct(bool, GCALotAtAllSafepoints, false, \ 1861266423Sjfv "Enforce ScavengeALot/GCALot at all potential safepoints") \ 1862266423Sjfv \ 1863266423Sjfv product(bool, PrintPromotionFailure, false, \ 1864266423Sjfv "Print additional diagnostic information following " \ 1865266423Sjfv " promotion failure") \ 1866266423Sjfv \ 1867266423Sjfv notproduct(bool, PromotionFailureALot, false, \ 1868266423Sjfv "Use promotion failure handling on every youngest generation " \ 1869266423Sjfv "collection") \ 1870270346Sjfv \ 1871266423Sjfv develop(uintx, PromotionFailureALotCount, 1000, \ 1872266423Sjfv "Number of promotion failures occurring at ParGCAllocBuffer" \ 1873266423Sjfv "refill attempts (ParNew) or promotion attempts " \ 1874266423Sjfv "(other young collectors) ") \ 1875266423Sjfv \ 1876270346Sjfv develop(uintx, PromotionFailureALotInterval, 5, \ 1877270346Sjfv "Total collections between promotion failures alot") \ 1878266423Sjfv \ 1879266423Sjfv experimental(intx, WorkStealingSleepMillis, 1, \ 1880270346Sjfv "Sleep time when sleep is used for yields") \ 1881266423Sjfv \ 1882266423Sjfv experimental(uintx, WorkStealingYieldsBeforeSleep, 5000, \ 1883266423Sjfv "Number of yields before a sleep is done during workstealing") \ 1884266423Sjfv \ 1885270346Sjfv experimental(uintx, WorkStealingHardSpins, 4096, \ 1886266423Sjfv "Number of iterations in a spin loop between checks on " \ 1887266423Sjfv "time out of hard spin") \ 1888266423Sjfv \ 1889270346Sjfv experimental(uintx, WorkStealingSpinToYieldRatio, 10, \ 1890266423Sjfv "Ratio of hard spins to calls to yield") \ 1891266423Sjfv \ 1892266423Sjfv develop(uintx, ObjArrayMarkingStride, 512, \ 1893270346Sjfv "Number of ObjArray elements to push onto the marking stack" \ 1894266423Sjfv "before pushing a continuation entry") \ 1895266423Sjfv \ 1896266423Sjfv develop(bool, MetadataAllocationFailALot, false, \ 1897266423Sjfv "Fail metadata allocations at intervals controlled by " \ 1898270346Sjfv "MetadataAllocationFailALotInterval") \ 1899266423Sjfv \ 1900266423Sjfv develop(uintx, MetadataAllocationFailALotInterval, 1000, \ 1901266423Sjfv "metadata allocation failure alot interval") \ 1902266423Sjfv \ 1903266423Sjfv develop(bool, MetaDataDeallocateALot, false, \ 1904266423Sjfv "Deallocation bunches of metadata at intervals controlled by " \ 1905266423Sjfv "MetaDataAllocateALotInterval") \ 1906266423Sjfv \ 1907266423Sjfv develop(uintx, MetaDataDeallocateALotInterval, 100, \ 1908266423Sjfv "Metadata deallocation alot interval") \ 1909266423Sjfv \ 1910270346Sjfv develop(bool, TraceMetadataChunkAllocation, false, \ 1911266423Sjfv "Trace chunk metadata allocations") \ 1912266423Sjfv \ 1913266423Sjfv product(bool, TraceMetadataHumongousAllocation, false, \ 1914266423Sjfv "Trace humongous metadata allocations") \ 1915266423Sjfv \ 1916266423Sjfv develop(bool, TraceMetavirtualspaceAllocation, false, \ 1917266423Sjfv "Trace virtual space metadata allocations") \ 1918270346Sjfv \ 1919266423Sjfv notproduct(bool, ExecuteInternalVMTests, false, \ 1920266423Sjfv "Enable execution of internal VM tests.") \ 1921266423Sjfv \ 1922266423Sjfv product_pd(bool, UseTLAB, "Use thread-local object allocation") \ 1923266423Sjfv \ 1924266423Sjfv product_pd(bool, ResizeTLAB, \ 1925266423Sjfv "Dynamically resize tlab size for threads") \ 1926266423Sjfv \ 1927266423Sjfv product(bool, ZeroTLAB, false, \ 1928299551Serj "Zero out the newly created TLAB") \ 1929299551Serj \ 1930266423Sjfv product(bool, FastTLABRefill, true, \ 1931266423Sjfv "Use fast TLAB refill code") \ 1932266423Sjfv \ 1933270346Sjfv product(bool, PrintTLAB, false, \ 1934266423Sjfv "Print various TLAB related information") \ 1935270346Sjfv \ 1936266423Sjfv product(bool, TLABStats, true, \ 1937270346Sjfv "Print various TLAB related information") \ 1938270346Sjfv \ 1939266423Sjfv EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \ 1940266423Sjfv "Enable LowMemoryProtection")) \ 1941266423Sjfv \ 1942266423Sjfv product_pd(bool, NeverActAsServerClassMachine, \ 1943266423Sjfv "Never act like a server-class machine") \ 1944266423Sjfv \ 1945266423Sjfv product(bool, AlwaysActAsServerClassMachine, false, \ 1946266423Sjfv "Always act like a server-class machine") \ 1947266423Sjfv \ 1948266423Sjfv product_pd(uint64_t, MaxRAM, \ 1949270346Sjfv "Real memory size (in bytes) used to set maximum heap size") \ 1950266423Sjfv \ 1951266423Sjfv product(uintx, ErgoHeapSizeLimit, 0, \ 1952269198Sjfv "Maximum ergonomically set heap size (in bytes); zero means use " \ 1953266423Sjfv "MaxRAM / MaxRAMFraction") \ 1954266423Sjfv \ 1955266423Sjfv product(uintx, MaxRAMFraction, 4, \ 1956266423Sjfv "Maximum fraction (1/n) of real memory used for maximum heap " \ 1957266423Sjfv "size") \ 1958266423Sjfv \ 1959266423Sjfv product(uintx, DefaultMaxRAMFraction, 4, \ 1960266423Sjfv "Maximum fraction (1/n) of real memory used for maximum heap " \ 1961266423Sjfv "size; deprecated: to be renamed to MaxRAMFraction") \ 1962266423Sjfv \ 1963266423Sjfv product(uintx, MinRAMFraction, 2, \ 1964266423Sjfv "Minimum fraction (1/n) of real memory used for maxmimum heap " \ 1965266423Sjfv "size on systems with small physical memory size") \ 1966270346Sjfv \ 1967269198Sjfv product(uintx, InitialRAMFraction, 64, \ 1968269198Sjfv "Fraction (1/n) of real memory used for initial heap size") \ 1969269198Sjfv \ 1970269198Sjfv develop(uintx, MaxVirtMemFraction, 2, \ 1971269198Sjfv "Maximum fraction (1/n) of virtual memory used for ergonomically" \ 1972269198Sjfv "determining maximum heap size") \ 1973269198Sjfv \ 1974269198Sjfv product(bool, UseAutoGCSelectPolicy, false, \ 1975269198Sjfv "Use automatic collection selection policy") \ 1976270346Sjfv \ 1977277084Sjfv product(uintx, AutoGCSelectPauseMillis, 5000, \ 1978266423Sjfv "Automatic GC selection pause threshhold in ms") \ 1979269198Sjfv \ 1980277084Sjfv product(bool, UseAdaptiveSizePolicy, true, \ 1981270346Sjfv "Use adaptive generation sizing policies") \ 1982266423Sjfv \ 1983266423Sjfv product(bool, UsePSAdaptiveSurvivorSizePolicy, true, \ 1984266423Sjfv "Use adaptive survivor sizing policies") \ 1985266423Sjfv \ 1986266423Sjfv product(bool, UseAdaptiveGenerationSizePolicyAtMinorCollection, true, \ 1987266423Sjfv "Use adaptive young-old sizing policies at minor collections") \ 1988266423Sjfv \ 1989270346Sjfv product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true, \ 1990266423Sjfv "Use adaptive young-old sizing policies at major collections") \ 1991266423Sjfv \ 1992266423Sjfv product(bool, UseAdaptiveSizePolicyWithSystemGC, false, \ 1993266423Sjfv "Use statistics from System.GC for adaptive size policy") \ 1994270346Sjfv \ 1995266423Sjfv product(bool, UseAdaptiveGCBoundary, false, \ 1996266423Sjfv "Allow young-old boundary to move") \ 1997266423Sjfv \ 1998266423Sjfv develop(bool, TraceAdaptiveGCBoundary, false, \ 1999266423Sjfv "Trace young-old boundary moves") \ 2000266423Sjfv \ 2001266423Sjfv develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1, \ 2002266423Sjfv "Resize the virtual spaces of the young or old generations") \ 2003270346Sjfv \ 2004266423Sjfv product(uintx, AdaptiveSizeThroughPutPolicy, 0, \ 2005270346Sjfv "Policy for changeing generation size for throughput goals") \ 2006266423Sjfv \ 2007266423Sjfv product(uintx, AdaptiveSizePausePolicy, 0, \ 2008266423Sjfv "Policy for changing generation size for pause goals") \ 2009266423Sjfv \ 2010299547Serj develop(bool, PSAdjustTenuredGenForMinorPause, false, \ 2011266423Sjfv "Adjust tenured generation to achive a minor pause goal") \ 2012279033Sjfv \ 2013266423Sjfv develop(bool, PSAdjustYoungGenForMajorPause, false, \ 2014266423Sjfv "Adjust young generation to achive a major pause goal") \ 2015266423Sjfv \ 2016279858Sjfv product(uintx, AdaptiveSizePolicyInitializingSteps, 20, \ 2017279858Sjfv "Number of steps where heuristics is used before data is used") \ 2018279033Sjfv \ 2019266423Sjfv develop(uintx, AdaptiveSizePolicyReadyThreshold, 5, \ 2020266423Sjfv "Number of collections before the adaptive sizing is started") \ 2021277084Sjfv \ 2022277084Sjfv product(uintx, AdaptiveSizePolicyOutputInterval, 0, \ 2023277084Sjfv "Collecton interval for printing information; zero => never") \ 2024277084Sjfv \ 2025277084Sjfv product(bool, UseAdaptiveSizePolicyFootprintGoal, true, \ 2026279858Sjfv "Use adaptive minimum footprint as a goal") \ 2027279858Sjfv \ 2028279858Sjfv product(uintx, AdaptiveSizePolicyWeight, 10, \ 2029279858Sjfv "Weight given to exponential resizing, between 0 and 100") \ 2030279858Sjfv \ 2031279858Sjfv product(uintx, AdaptiveTimeWeight, 25, \ 2032266423Sjfv "Weight given to time in adaptive policy, between 0 and 100") \ 2033266423Sjfv \ 2034266423Sjfv product(uintx, PausePadding, 1, \ 2035266423Sjfv "How much buffer to keep for pause time") \ 2036266423Sjfv \ 2037299547Serj product(uintx, PromotedPadding, 3, \ 2038266423Sjfv "How much buffer to keep for promotion failure") \ 2039266423Sjfv \ 2040266423Sjfv product(uintx, SurvivorPadding, 3, \ 2041266423Sjfv "How much buffer to keep for survivor overflow") \ 2042266423Sjfv \ 2043266423Sjfv product(uintx, ThresholdTolerance, 10, \ 2044266423Sjfv "Allowed collection cost difference between generations") \ 2045266423Sjfv \ 2046299547Serj product(uintx, AdaptiveSizePolicyCollectionCostMargin, 50, \ 2047299547Serj "If collection costs are within margin, reduce both by full " \ 2048299547Serj "delta") \ 2049299547Serj \ 2050299547Serj product(uintx, YoungGenerationSizeIncrement, 20, \ 2051299547Serj "Adaptive size percentage change in young generation") \ 2052299547Serj \ 2053299547Serj product(uintx, YoungGenerationSizeSupplement, 80, \ 2054299547Serj "Supplement to YoungedGenerationSizeIncrement used at startup") \ 2055299547Serj \ 2056266423Sjfv product(uintx, YoungGenerationSizeSupplementDecay, 8, \ 2057266423Sjfv "Decay factor to YoungedGenerationSizeSupplement") \ 2058266423Sjfv \ 2059266423Sjfv product(uintx, TenuredGenerationSizeIncrement, 20, \ 2060266423Sjfv "Adaptive size percentage change in tenured generation") \ 2061266423Sjfv \ 2062266423Sjfv product(uintx, TenuredGenerationSizeSupplement, 80, \ 2063266423Sjfv "Supplement to TenuredGenerationSizeIncrement used at startup") \ 2064299547Serj \ 2065266423Sjfv product(uintx, TenuredGenerationSizeSupplementDecay, 2, \ 2066270346Sjfv "Decay factor to TenuredGenerationSizeIncrement") \ 2067266423Sjfv \ 2068266423Sjfv product(uintx, MaxGCPauseMillis, max_uintx, \ 2069299547Serj "Adaptive size policy maximum GC pause time goal in msec, " \ 2070266423Sjfv "or (G1 Only) the max. GC time per MMU time slice") \ 2071299547Serj \ 2072299547Serj product(uintx, GCPauseIntervalMillis, 0, \ 2073299547Serj "Time slice for MMU specification") \ 2074299547Serj \ 2075299547Serj product(uintx, MaxGCMinorPauseMillis, max_uintx, \ 2076279858Sjfv "Adaptive size policy maximum GC minor pause time goal in msec") \ 2077279858Sjfv \ 2078279858Sjfv product(uintx, GCTimeRatio, 99, \ 2079279858Sjfv "Adaptive size policy application time to GC time ratio") \ 2080270346Sjfv \ 2081266423Sjfv product(uintx, AdaptiveSizeDecrementScaleFactor, 4, \ 2082266423Sjfv "Adaptive size scale down factor for shrinking") \ 2083266423Sjfv \ 2084266423Sjfv product(bool, UseAdaptiveSizeDecayMajorGCCost, true, \ 2085266423Sjfv "Adaptive size decays the major cost for long major intervals") \ 2086266423Sjfv \ 2087266423Sjfv product(uintx, AdaptiveSizeMajorGCDecayTimeScale, 10, \ 2088266423Sjfv "Time scale over which major costs decay") \ 2089266423Sjfv \ 2090266423Sjfv product(uintx, MinSurvivorRatio, 3, \ 2091266423Sjfv "Minimum ratio of young generation/survivor space size") \ 2092266423Sjfv \ 2093270346Sjfv product(uintx, InitialSurvivorRatio, 8, \ 2094266423Sjfv "Initial ratio of eden/survivor space size") \ 2095266423Sjfv \ 2096270346Sjfv product(uintx, BaseFootPrintEstimate, 256*M, \ 2097270346Sjfv "Estimate of footprint other than Java Heap") \ 2098266423Sjfv \ 2099266423Sjfv product(bool, UseGCOverheadLimit, true, \ 2100266423Sjfv "Use policy to limit of proportion of time spent in GC " \ 2101266423Sjfv "before an OutOfMemory error is thrown") \ 2102266423Sjfv \ 2103266423Sjfv product(uintx, GCTimeLimit, 98, \ 2104266423Sjfv "Limit of proportion of time spent in GC before an OutOfMemory" \ 2105299548Serj "error is thrown (used with GCHeapFreeLimit)") \ 2106266423Sjfv \ 2107266423Sjfv product(uintx, GCHeapFreeLimit, 2, \ 2108266423Sjfv "Minimum percentage of free space after a full GC before an " \ 2109266423Sjfv "OutOfMemoryError is thrown (used with GCTimeLimit)") \ 2110266423Sjfv \ 2111266423Sjfv develop(uintx, AdaptiveSizePolicyGCTimeLimitThreshold, 5, \ 2112266423Sjfv "Number of consecutive collections before gc time limit fires") \ 2113270346Sjfv \ 2114266423Sjfv product(bool, PrintAdaptiveSizePolicy, false, \ 2115266423Sjfv "Print information about AdaptiveSizePolicy") \ 2116299552Serj \ 2117266423Sjfv product(intx, PrefetchCopyIntervalInBytes, -1, \ 2118266423Sjfv "How far ahead to prefetch destination area (<= 0 means off)") \ 2119266423Sjfv \ 2120270346Sjfv product(intx, PrefetchScanIntervalInBytes, -1, \ 2121270346Sjfv "How far ahead to prefetch scan area (<= 0 means off)") \ 2122270346Sjfv \ 2123266423Sjfv product(intx, PrefetchFieldsAhead, -1, \ 2124266423Sjfv "How many fields ahead to prefetch in oop scan (<= 0 means off)") \ 2125266423Sjfv \ 2126270346Sjfv diagnostic(bool, VerifyBeforeExit, trueInDebug, \ 2127279858Sjfv "Verify system before exiting") \ 2128279858Sjfv \ 2129279858Sjfv diagnostic(bool, VerifyBeforeGC, false, \ 2130279858Sjfv "Verify memory system before GC") \ 2131279858Sjfv \ 2132270346Sjfv diagnostic(bool, VerifyAfterGC, false, \ 2133266423Sjfv "Verify memory system after GC") \ 2134266423Sjfv \ 2135266423Sjfv diagnostic(bool, VerifyDuringGC, false, \ 2136266423Sjfv "Verify memory system during GC (between phases)") \ 2137266423Sjfv \ 2138266423Sjfv diagnostic(bool, GCParallelVerificationEnabled, true, \ 2139266423Sjfv "Enable parallel memory system verification") \ 2140299546Serj \ 2141299546Serj diagnostic(bool, DeferInitialCardMark, false, \ 2142299546Serj "When +ReduceInitialCardMarks, explicitly defer any that " \ 2143299546Serj "may arise from new_pre_store_barrier") \ 2144299546Serj \ 2145299546Serj diagnostic(bool, VerifyRememberedSets, false, \ 2146266423Sjfv "Verify GC remembered sets") \ 2147299546Serj \ 2148299546Serj diagnostic(bool, VerifyObjectStartArray, true, \ 2149299546Serj "Verify GC object start array if verify before/after") \ 2150299546Serj \ 2151299546Serj product(bool, DisableExplicitGC, false, \ 2152299546Serj "Tells whether calling System.gc() does a full GC") \ 2153299546Serj \ 2154299546Serj notproduct(bool, CheckMemoryInitialization, false, \ 2155299546Serj "Checks memory initialization") \ 2156299546Serj \ 2157299546Serj product(bool, CollectGen0First, false, \ 2158299546Serj "Collect youngest generation before each full GC") \ 2159299546Serj \ 2160299546Serj diagnostic(bool, BindCMSThreadToCPU, false, \ 2161299546Serj "Bind CMS Thread to CPU if possible") \ 2162299546Serj \ 2163299546Serj diagnostic(uintx, CPUForCMSThread, 0, \ 2164299546Serj "When BindCMSThreadToCPU is true, the CPU to bind CMS thread to") \ 2165299546Serj \ 2166299546Serj product(bool, BindGCTaskThreadsToCPUs, false, \ 2167299546Serj "Bind GCTaskThreads to CPUs if possible") \ 2168299546Serj \ 2169299546Serj product(bool, UseGCTaskAffinity, false, \ 2170299546Serj "Use worker affinity when asking for GCTasks") \ 2171299546Serj \ 2172299546Serj product(uintx, ProcessDistributionStride, 4, \ 2173299546Serj "Stride through processors when distributing processes") \ 2174299546Serj \ 2175299546Serj product(uintx, CMSCoordinatorYieldSleepCount, 10, \ 2176299546Serj "number of times the coordinator GC thread will sleep while " \ 2177299546Serj "yielding before giving up and resuming GC") \ 2178299546Serj \ 2179299546Serj product(uintx, CMSYieldSleepCount, 0, \ 2180299546Serj "number of times a GC thread (minus the coordinator) " \ 2181299546Serj "will sleep while yielding before giving up and resuming GC") \ 2182299546Serj \ 2183299546Serj /* gc tracing */ \ 2184299546Serj manageable(bool, PrintGC, false, \ 2185299546Serj "Print message at garbage collect") \ 2186299546Serj \ 2187299546Serj manageable(bool, PrintGCDetails, false, \ 2188299546Serj "Print more details at garbage collect") \ 2189299546Serj \ 2190299546Serj manageable(bool, PrintGCDateStamps, false, \ 2191299546Serj "Print date stamps at garbage collect") \ 2192299546Serj \ 2193266423Sjfv manageable(bool, PrintGCTimeStamps, false, \ 2194266423Sjfv "Print timestamps at garbage collect") \ 2195266423Sjfv \ 2196266423Sjfv product(bool, PrintGCTaskTimeStamps, false, \ 2197266423Sjfv "Print timestamps for individual gc worker thread tasks") \ 2198266423Sjfv \ 2199270346Sjfv develop(intx, ConcGCYieldTimeout, 0, \ 2200266423Sjfv "If non-zero, assert that GC threads yield within this # of ms.") \ 2201266423Sjfv \ 2202270346Sjfv notproduct(bool, TraceMarkSweep, false, \ 2203270346Sjfv "Trace mark sweep") \ 2204266423Sjfv \ 2205266423Sjfv product(bool, PrintReferenceGC, false, \ 2206299545Serj "Print times spent handling reference objects during GC " \ 2207299545Serj " (enabled only when PrintGCDetails)") \ 2208299545Serj \ 2209266423Sjfv develop(bool, TraceReferenceGC, false, \ 2210299546Serj "Trace handling of soft/weak/final/phantom references") \ 2211266423Sjfv \ 2212266423Sjfv develop(bool, TraceFinalizerRegistration, false, \ 2213266423Sjfv "Trace registration of final references") \ 2214266423Sjfv \ 2215299546Serj notproduct(bool, TraceScavenge, false, \ 2216299546Serj "Trace scavenge") \ 2217266423Sjfv \ 2218266423Sjfv product_rw(bool, TraceClassLoading, false, \ 2219266423Sjfv "Trace all classes loaded") \ 2220266423Sjfv \ 2221266423Sjfv product(bool, TraceClassLoadingPreorder, false, \ 2222270346Sjfv "Trace all classes loaded in order referenced (not loaded)") \ 2223266423Sjfv \ 2224266423Sjfv product_rw(bool, TraceClassUnloading, false, \ 2225266423Sjfv "Trace unloading of classes") \ 2226266423Sjfv \ 2227266423Sjfv product_rw(bool, TraceLoaderConstraints, false, \ 2228266423Sjfv "Trace loader constraints") \ 2229266423Sjfv \ 2230266423Sjfv develop(bool, TraceClassLoaderData, false, \ 2231266423Sjfv "Trace class loader loader_data lifetime") \ 2232266423Sjfv \ 2233266423Sjfv product(uintx, InitialBootClassLoaderMetaspaceSize, \ 2234277084Sjfv NOT_LP64(2200*K) LP64_ONLY(4*M), \ 2235266423Sjfv "Initial size of the boot class loader data metaspace") \ 2236266423Sjfv \ 2237266423Sjfv product(bool, TraceGen0Time, false, \ 2238266423Sjfv "Trace accumulated time for Gen 0 collection") \ 2239266423Sjfv \ 2240299546Serj product(bool, TraceGen1Time, false, \ 2241299546Serj "Trace accumulated time for Gen 1 collection") \ 2242266423Sjfv \ 2243266423Sjfv product(bool, PrintTenuringDistribution, false, \ 2244266423Sjfv "Print tenuring age information") \ 2245266423Sjfv \ 2246266423Sjfv product_rw(bool, PrintHeapAtGC, false, \ 2247270346Sjfv "Print heap layout before and after each GC") \ 2248266423Sjfv \ 2249266423Sjfv product_rw(bool, PrintHeapAtGCExtended, false, \ 2250266423Sjfv "Prints extended information about the layout of the heap " \ 2251266423Sjfv "when -XX:+PrintHeapAtGC is set") \ 2252266423Sjfv \ 2253299546Serj product(bool, PrintHeapAtSIGBREAK, true, \ 2254266423Sjfv "Print heap layout in response to SIGBREAK") \ 2255277084Sjfv \ 2256277084Sjfv manageable(bool, PrintClassHistogramBeforeFullGC, false, \ 2257277084Sjfv "Print a class histogram before any major stop-world GC") \ 2258277084Sjfv \ 2259266423Sjfv manageable(bool, PrintClassHistogramAfterFullGC, false, \ 2260266423Sjfv "Print a class histogram after any major stop-world GC") \ 2261266423Sjfv \ 2262266423Sjfv manageable(bool, PrintClassHistogram, false, \ 2263266423Sjfv "Print a histogram of class instances") \ 2264266423Sjfv \ 2265266423Sjfv develop(bool, TraceWorkGang, false, \ 2266266423Sjfv "Trace activities of work gangs") \ 2267266423Sjfv \ 2268266423Sjfv product(bool, TraceParallelOldGCTasks, false, \ 2269266423Sjfv "Trace multithreaded GC activity") \ 2270270346Sjfv \ 2271266423Sjfv develop(bool, TraceBlockOffsetTable, false, \ 2272266423Sjfv "Print BlockOffsetTable maps") \ 2273266423Sjfv \ 2274266423Sjfv develop(bool, TraceCardTableModRefBS, false, \ 2275266423Sjfv "Print CardTableModRefBS maps") \ 2276270346Sjfv \ 2277299552Serj develop(bool, TraceGCTaskManager, false, \ 2278266423Sjfv "Trace actions of the GC task manager") \ 2279269198Sjfv \ 2280269198Sjfv develop(bool, TraceGCTaskQueue, false, \ 2281269198Sjfv "Trace actions of the GC task queues") \ 2282269198Sjfv \ 2283269198Sjfv diagnostic(bool, TraceGCTaskThread, false, \ 2284269198Sjfv "Trace actions of the GC task threads") \ 2285269198Sjfv \ 2286269198Sjfv product(bool, PrintParallelOldGCPhaseTimes, false, \ 2287269198Sjfv "Print the time taken by each parallel old gc phase." \ 2288269198Sjfv "PrintGCDetails must also be enabled.") \ 2289269198Sjfv \ 2290269198Sjfv develop(bool, TraceParallelOldGCMarkingPhase, false, \ 2291269198Sjfv "Trace parallel old gc marking phase") \ 2292269198Sjfv \ 2293269198Sjfv develop(bool, TraceParallelOldGCSummaryPhase, false, \ 2294269198Sjfv "Trace parallel old gc summary phase") \ 2295269198Sjfv \ 2296269198Sjfv develop(bool, TraceParallelOldGCCompactionPhase, false, \ 2297269198Sjfv "Trace parallel old gc compaction phase") \ 2298269198Sjfv \ 2299269198Sjfv develop(bool, TraceParallelOldGCDensePrefix, false, \ 2300266423Sjfv "Trace parallel old gc dense prefix computation") \ 2301270346Sjfv \ 2302266423Sjfv develop(bool, IgnoreLibthreadGPFault, false, \ 2303266423Sjfv "Suppress workaround for libthread GP fault") \ 2304266423Sjfv \ 2305266423Sjfv product(bool, PrintJNIGCStalls, false, \ 2306266423Sjfv "Print diagnostic message when GC is stalled" \ 2307299549Serj "by JNI critical section") \ 2308299552Serj \ 2309266423Sjfv /* GC log rotation setting */ \ 2310266423Sjfv \ 2311266423Sjfv product(bool, UseGCLogFileRotation, false, \ 2312266423Sjfv "Prevent large gclog file for long running app. " \ 2313266423Sjfv "Requires -Xloggc:<filename>") \ 2314266423Sjfv \ 2315266423Sjfv product(uintx, NumberOfGCLogFiles, 0, \ 2316299552Serj "Number of gclog files in rotation, " \ 2317266423Sjfv "Default: 0, no rotation") \ 2318266423Sjfv \ 2319266423Sjfv product(uintx, GCLogFileSize, 0, \ 2320266423Sjfv "GC log file size, Default: 0 bytes, no rotation " \ 2321266423Sjfv "Only valid with UseGCLogFileRotation") \ 2322299552Serj \ 2323270346Sjfv /* JVMTI heap profiling */ \ 2324270346Sjfv \ 2325299546Serj diagnostic(bool, TraceJVMTIObjectTagging, false, \ 2326299546Serj "Trace JVMTI object tagging calls") \ 2327299546Serj \ 2328299546Serj diagnostic(bool, VerifyBeforeIteration, false, \ 2329299546Serj "Verify memory system before JVMTI iteration") \ 2330299546Serj \ 2331266423Sjfv /* compiler interface */ \ 2332277084Sjfv \ 2333277084Sjfv develop(bool, CIPrintCompilerName, false, \ 2334277084Sjfv "when CIPrint is active, print the name of the active compiler") \ 2335277084Sjfv \ 2336277084Sjfv develop(bool, CIPrintCompileQueue, false, \ 2337277084Sjfv "display the contents of the compile queue whenever a " \ 2338266423Sjfv "compilation is enqueued") \ 2339266423Sjfv \ 2340266423Sjfv develop(bool, CIPrintRequests, false, \ 2341266423Sjfv "display every request for compilation") \ 2342266423Sjfv \ 2343266423Sjfv product(bool, CITime, false, \ 2344266423Sjfv "collect timing information for compilation") \ 2345266423Sjfv \ 2346266423Sjfv develop(bool, CITimeEach, false, \ 2347266423Sjfv "display timing information after each successful compilation") \ 2348266423Sjfv \ 2349266423Sjfv develop(bool, CICountOSR, false, \ 2350266423Sjfv "use a separate counter when assigning ids to osr compilations") \ 2351266423Sjfv \ 2352266423Sjfv develop(bool, CICompileNatives, true, \ 2353266423Sjfv "compile native methods if supported by the compiler") \ 2354266423Sjfv \ 2355266423Sjfv develop_pd(bool, CICompileOSR, \ 2356266423Sjfv "compile on stack replacement methods if supported by the " \ 2357266423Sjfv "compiler") \ 2358277084Sjfv \ 2359277084Sjfv develop(bool, CIPrintMethodCodes, false, \ 2360277084Sjfv "print method bytecodes of the compiled code") \ 2361277084Sjfv \ 2362277084Sjfv develop(bool, CIPrintTypeFlow, false, \ 2363277084Sjfv "print the results of ciTypeFlow analysis") \ 2364277084Sjfv \ 2365277084Sjfv develop(bool, CITraceTypeFlow, false, \ 2366277084Sjfv "detailed per-bytecode tracing of ciTypeFlow analysis") \ 2367277084Sjfv \ 2368277084Sjfv develop(intx, OSROnlyBCI, -1, \ 2369277084Sjfv "OSR only at this bci. Negative values mean exclude that bci") \ 2370277084Sjfv \ 2371277084Sjfv /* compiler */ \ 2372277084Sjfv \ 2373277084Sjfv product(intx, CICompilerCount, CI_COMPILER_COUNT, \ 2374277084Sjfv "Number of compiler threads to run") \ 2375277084Sjfv \ 2376277084Sjfv product(intx, CompilationPolicyChoice, 0, \ 2377266423Sjfv "which compilation policy (0/1)") \ 2378266423Sjfv \ 2379299552Serj develop(bool, UseStackBanging, true, \ 2380299552Serj "use stack banging for stack overflow checks (required for " \ 2381266423Sjfv "proper StackOverflow handling; disable only to measure cost " \ 2382270346Sjfv "of stackbanging)") \ 2383270346Sjfv \ 2384299552Serj develop(bool, UseStrictFP, true, \ 2385299547Serj "use strict fp if modifier strictfp is set") \ 2386266423Sjfv \ 2387299552Serj develop(bool, GenerateSynchronizationCode, true, \ 2388299547Serj "generate locking/unlocking code for synchronized methods and " \ 2389266423Sjfv "monitors") \ 2390266423Sjfv \ 2391266423Sjfv develop(bool, GenerateCompilerNullChecks, true, \ 2392266423Sjfv "Generate explicit null checks for loads/stores/calls") \ 2393266423Sjfv \ 2394299547Serj develop(bool, GenerateRangeChecks, true, \ 2395266423Sjfv "Generate range checks for array accesses") \ 2396266423Sjfv \ 2397270346Sjfv develop_pd(bool, ImplicitNullChecks, \ 2398266423Sjfv "generate code for implicit null checks") \ 2399266423Sjfv \ 2400270346Sjfv product(bool, PrintSafepointStatistics, false, \ 2401266423Sjfv "print statistics about safepoint synchronization") \ 2402266423Sjfv \ 2403266423Sjfv product(intx, PrintSafepointStatisticsCount, 300, \ 2404266423Sjfv "total number of safepoint statistics collected " \ 2405266423Sjfv "before printing them out") \ 2406266423Sjfv \ 2407266423Sjfv product(intx, PrintSafepointStatisticsTimeout, -1, \ 2408266423Sjfv "print safepoint statistics only when safepoint takes" \ 2409266423Sjfv " more than PrintSafepointSatisticsTimeout in millis") \ 2410299549Serj \ 2411266423Sjfv product(bool, TraceSafepointCleanupTime, false, \ 2412266423Sjfv "print the break down of clean up tasks performed during" \ 2413266423Sjfv " safepoint") \ 2414266423Sjfv \ 2415266423Sjfv product(bool, Inline, true, \ 2416266423Sjfv "enable inlining") \ 2417299547Serj \ 2418299547Serj product(bool, ClipInlining, true, \ 2419299547Serj "clip inlining if aggregate method exceeds DesiredMethodLimit") \ 2420299547Serj \ 2421299547Serj develop(bool, UseCHA, true, \ 2422266423Sjfv "enable CHA") \ 2423299547Serj \ 2424299547Serj product(bool, UseTypeProfile, true, \ 2425266423Sjfv "Check interpreter profile for historically monomorphic calls") \ 2426266423Sjfv \ 2427266423Sjfv notproduct(bool, TimeCompiler, false, \ 2428266423Sjfv "time the compiler") \ 2429266423Sjfv \ 2430266423Sjfv diagnostic(bool, PrintInlining, false, \ 2431266423Sjfv "prints inlining optimizations") \ 2432266423Sjfv \ 2433266423Sjfv product(bool, UsePopCountInstruction, false, \ 2434299545Serj "Use population count instruction") \ 2435266423Sjfv \ 2436266423Sjfv develop(bool, EagerInitialization, false, \ 2437266423Sjfv "Eagerly initialize classes if possible") \ 2438270346Sjfv \ 2439266423Sjfv develop(bool, TraceMethodReplacement, false, \ 2440266423Sjfv "Print when methods are replaced do to recompilation") \ 2441266423Sjfv \ 2442266423Sjfv develop(bool, PrintMethodFlushing, false, \ 2443266423Sjfv "print the nmethods being flushed") \ 2444266423Sjfv \ 2445270346Sjfv develop(bool, UseRelocIndex, false, \ 2446266423Sjfv "use an index to speed random access to relocations") \ 2447299545Serj \ 2448266423Sjfv develop(bool, StressCodeBuffers, false, \ 2449299545Serj "Exercise code buffer expansion and other rare state changes") \ 2450299545Serj \ 2451299545Serj diagnostic(bool, DebugNonSafepoints, trueInDebug, \ 2452266423Sjfv "Generate extra debugging info for non-safepoints in nmethods") \ 2453266423Sjfv \ 2454266423Sjfv product(bool, PrintVMOptions, false, \ 2455266423Sjfv "Print flags that appeared on the command line") \ 2456266423Sjfv \ 2457266423Sjfv product(bool, IgnoreUnrecognizedVMOptions, false, \ 2458266423Sjfv "Ignore unrecognized VM options") \ 2459266423Sjfv \ 2460270346Sjfv product(bool, PrintCommandLineFlags, false, \ 2461266423Sjfv "Print flags specified on command line or set by ergonomics") \ 2462266423Sjfv \ 2463266423Sjfv product(bool, PrintFlagsInitial, false, \ 2464266423Sjfv "Print all VM flags before argument processing and exit VM") \ 2465266423Sjfv \ 2466266423Sjfv product(bool, PrintFlagsFinal, false, \ 2467266423Sjfv "Print all VM flags after argument and ergonomic processing") \ 2468266423Sjfv \ 2469266423Sjfv notproduct(bool, PrintFlagsWithComments, false, \ 2470266423Sjfv "Print all VM flags with default values and descriptions and exit")\ 2471266423Sjfv \ 2472266423Sjfv diagnostic(bool, SerializeVMOutput, true, \ 2473266423Sjfv "Use a mutex to serialize output to tty and hotspot.log") \ 2474266423Sjfv \ 2475266423Sjfv diagnostic(bool, DisplayVMOutput, true, \ 2476266423Sjfv "Display all VM output on the tty, independently of LogVMOutput") \ 2477266423Sjfv \ 2478266423Sjfv diagnostic(bool, LogVMOutput, trueInDebug, \ 2479266423Sjfv "Save VM output to hotspot.log, or to LogFile") \ 2480266423Sjfv \ 2481266423Sjfv diagnostic(ccstr, LogFile, NULL, \ 2482266423Sjfv "If LogVMOutput is on, save VM output to this file [hotspot.log]") \ 2483266423Sjfv \ 2484266423Sjfv product(ccstr, ErrorFile, NULL, \ 2485266423Sjfv "If an error occurs, save the error data to this file " \ 2486266423Sjfv "[default: ./hs_err_pid%p.log] (%p replaced with pid)") \ 2487266423Sjfv \ 2488266423Sjfv product(bool, DisplayVMOutputToStderr, false, \ 2489266423Sjfv "If DisplayVMOutput is true, display all VM output to stderr") \ 2490266423Sjfv \ 2491266423Sjfv product(bool, DisplayVMOutputToStdout, false, \ 2492266423Sjfv "If DisplayVMOutput is true, display all VM output to stdout") \ 2493266423Sjfv \ 2494270346Sjfv product(bool, UseHeavyMonitors, false, \ 2495266423Sjfv "use heavyweight instead of lightweight Java monitors") \ 2496266423Sjfv \ 2497266423Sjfv product(bool, PrintStringTableStatistics, false, \ 2498266423Sjfv "print statistics about the StringTable and SymbolTable") \ 2499270346Sjfv \ 2500270346Sjfv notproduct(bool, PrintSymbolTableSizeHistogram, false, \ 2501266423Sjfv "print histogram of the symbol table") \ 2502266423Sjfv \ 2503266423Sjfv notproduct(bool, ExitVMOnVerifyError, false, \ 2504266423Sjfv "standard exit from VM if bytecode verify error " \ 2505266423Sjfv "(only in debug mode)") \ 2506266423Sjfv \ 2507266423Sjfv notproduct(ccstr, AbortVMOnException, NULL, \ 2508266423Sjfv "Call fatal if this exception is thrown. Example: " \ 2509266423Sjfv "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \ 2510270346Sjfv \ 2511266423Sjfv notproduct(ccstr, AbortVMOnExceptionMessage, NULL, \ 2512266423Sjfv "Call fatal if the exception pointed by AbortVMOnException " \ 2513270346Sjfv "has this message.") \ 2514270346Sjfv \ 2515266423Sjfv develop(bool, DebugVtables, false, \ 2516270346Sjfv "add debugging code to vtable dispatch") \ 2517270346Sjfv \ 2518270346Sjfv develop(bool, PrintVtables, false, \ 2519270346Sjfv "print vtables when printing klass") \ 2520270346Sjfv \ 2521270346Sjfv notproduct(bool, PrintVtableStats, false, \ 2522266423Sjfv "print vtables stats at end of run") \ 2523266423Sjfv \ 2524266423Sjfv develop(bool, TraceCreateZombies, false, \ 2525266423Sjfv "trace creation of zombie nmethods") \ 2526266423Sjfv \ 2527270346Sjfv notproduct(bool, IgnoreLockingAssertions, false, \ 2528266423Sjfv "disable locking assertions (for speed)") \ 2529266423Sjfv \ 2530270346Sjfv product(bool, RangeCheckElimination, true, \ 2531270346Sjfv "Eliminate range checks") \ 2532266423Sjfv \ 2533266423Sjfv develop_pd(bool, UncommonNullCast, \ 2534270346Sjfv "track occurrences of null in casts; adjust compiler tactics") \ 2535266423Sjfv \ 2536266423Sjfv develop(bool, TypeProfileCasts, true, \ 2537266423Sjfv "treat casts like calls for purposes of type profiling") \ 2538266423Sjfv \ 2539266423Sjfv develop(bool, DelayCompilationDuringStartup, true, \ 2540270346Sjfv "Delay invoking the compiler until main application class is " \ 2541266423Sjfv "loaded") \ 2542266423Sjfv \ 2543266423Sjfv develop(bool, CompileTheWorld, false, \ 2544266423Sjfv "Compile all methods in all classes in bootstrap class path " \ 2545266423Sjfv "(stress test)") \ 2546266423Sjfv \ 2547266423Sjfv develop(bool, CompileTheWorldPreloadClasses, true, \ 2548266423Sjfv "Preload all classes used by a class before start loading") \ 2549266423Sjfv \ 2550299552Serj notproduct(intx, CompileTheWorldSafepointInterval, 100, \ 2551266423Sjfv "Force a safepoint every n compiles so sweeper can keep up") \ 2552266423Sjfv \ 2553266423Sjfv develop(bool, FillDelaySlots, true, \ 2554266423Sjfv "Fill delay slots (on SPARC only)") \ 2555266423Sjfv \ 2556266423Sjfv develop(bool, TimeLivenessAnalysis, false, \ 2557266423Sjfv "Time computation of bytecode liveness analysis") \ 2558270346Sjfv \ 2559272285Srstone develop(bool, TraceLivenessGen, false, \ 2560266423Sjfv "Trace the generation of liveness analysis information") \ 2561266423Sjfv \ 2562266423Sjfv notproduct(bool, TraceLivenessQuery, false, \ 2563266423Sjfv "Trace queries of liveness analysis information") \ 2564266423Sjfv \ 2565266423Sjfv notproduct(bool, CollectIndexSetStatistics, false, \ 2566266423Sjfv "Collect information about IndexSets") \ 2567266423Sjfv \ 2568266423Sjfv develop(bool, UseLoopSafepoints, true, \ 2569270346Sjfv "Generate Safepoint nodes in every loop") \ 2570266423Sjfv \ 2571266423Sjfv develop(intx, FastAllocateSizeLimit, 128*K, \ 2572266423Sjfv /* Note: This value is zero mod 1<<13 for a cheap sparc set. */ \ 2573266423Sjfv "Inline allocations larger than this in doublewords must go slow")\ 2574299547Serj \ 2575266423Sjfv product(bool, AggressiveOpts, false, \ 2576270346Sjfv "Enable aggressive optimizations - see arguments.cpp") \ 2577270346Sjfv \ 2578266423Sjfv product(bool, UseStringCache, false, \ 2579299547Serj "Enable String cache capabilities on String.java") \ 2580266423Sjfv \ 2581266423Sjfv /* statistics */ \ 2582270346Sjfv develop(bool, CountCompiledCalls, false, \ 2583266423Sjfv "counts method invocations") \ 2584266423Sjfv \ 2585266423Sjfv notproduct(bool, CountRuntimeCalls, false, \ 2586266423Sjfv "counts VM runtime calls") \ 2587266423Sjfv \ 2588266423Sjfv develop(bool, CountJNICalls, false, \ 2589266423Sjfv "counts jni method invocations") \ 2590266423Sjfv \ 2591266423Sjfv notproduct(bool, CountJVMCalls, false, \ 2592266423Sjfv "counts jvm method invocations") \ 2593266423Sjfv \ 2594299547Serj notproduct(bool, CountRemovableExceptions, false, \ 2595266423Sjfv "count exceptions that could be replaced by branches due to " \ 2596299547Serj "inlining") \ 2597299547Serj \ 2598266423Sjfv notproduct(bool, ICMissHistogram, false, \ 2599266423Sjfv "produce histogram of IC misses") \ 2600266423Sjfv \ 2601266423Sjfv notproduct(bool, PrintClassStatistics, false, \ 2602266423Sjfv "prints class statistics at end of run") \ 2603266423Sjfv \ 2604266423Sjfv notproduct(bool, PrintMethodStatistics, false, \ 2605266423Sjfv "prints method statistics at end of run") \ 2606266423Sjfv \ 2607266423Sjfv /* interpreter */ \ 2608266423Sjfv develop(bool, ClearInterpreterLocals, false, \ 2609266423Sjfv "Always clear local variables of interpreter activations upon " \ 2610266423Sjfv "entry") \ 2611299547Serj \ 2612266423Sjfv product_pd(bool, RewriteBytecodes, \ 2613299547Serj "Allow rewriting of bytecodes (bytecodes are not immutable)") \ 2614299547Serj \ 2615299547Serj product_pd(bool, RewriteFrequentPairs, \ 2616266423Sjfv "Rewrite frequently used bytecode pairs into a single bytecode") \ 2617299547Serj \ 2618299547Serj diagnostic(bool, PrintInterpreter, false, \ 2619299547Serj "Prints the generated interpreter code") \ 2620299547Serj \ 2621299547Serj product(bool, UseInterpreter, true, \ 2622299547Serj "Use interpreter for non-compiled methods") \ 2623299547Serj \ 2624299547Serj develop(bool, UseFastSignatureHandlers, true, \ 2625266423Sjfv "Use fast signature handlers for native calls") \ 2626266423Sjfv \ 2627266423Sjfv product(bool, UseLoopCounter, true, \ 2628299547Serj "Increment invocation counter on backward branch") \ 2629299547Serj \ 2630266423Sjfv product(bool, UseFastEmptyMethods, true, \ 2631266423Sjfv "Use fast method entry code for empty methods") \ 2632266423Sjfv \ 2633266423Sjfv product(bool, UseFastAccessorMethods, true, \ 2634266423Sjfv "Use fast method entry code for accessor methods") \ 2635266423Sjfv \ 2636266423Sjfv product_pd(bool, UseOnStackReplacement, \ 2637266423Sjfv "Use on stack replacement, calls runtime if invoc. counter " \ 2638266423Sjfv "overflows in loop") \ 2639266423Sjfv \ 2640266423Sjfv notproduct(bool, TraceOnStackReplacement, false, \ 2641274205Sjfv "Trace on stack replacement") \ 2642274205Sjfv \ 2643274205Sjfv product_pd(bool, PreferInterpreterNativeStubs, \ 2644274205Sjfv "Use always interpreter stubs for native methods invoked via " \ 2645274205Sjfv "interpreter") \ 2646274205Sjfv \ 2647266423Sjfv develop(bool, CountBytecodes, false, \ 2648274205Sjfv "Count number of bytecodes executed") \ 2649274205Sjfv \ 2650279858Sjfv develop(bool, PrintBytecodeHistogram, false, \ 2651279858Sjfv "Print histogram of the executed bytecodes") \ 2652279858Sjfv \ 2653279858Sjfv develop(bool, PrintBytecodePairHistogram, false, \ 2654274205Sjfv "Print histogram of the executed bytecode pairs") \ 2655284049Sjfv \ 2656279033Sjfv diagnostic(bool, PrintSignatureHandlers, false, \ 2657274205Sjfv "Print code generated for native method signature handlers") \ 2658274205Sjfv \ 2659279033Sjfv develop(bool, VerifyOops, false, \ 2660274205Sjfv "Do plausibility checks for oops") \ 2661274205Sjfv \ 2662274205Sjfv develop(bool, CheckUnhandledOops, false, \ 2663274205Sjfv "Check for unhandled oops in VM code") \ 2664274205Sjfv \ 2665274205Sjfv develop(bool, VerifyJNIFields, trueInDebug, \ 2666274205Sjfv "Verify jfieldIDs for instance fields") \ 2667279033Sjfv \ 2668279033Sjfv notproduct(bool, VerifyJNIEnvThread, false, \ 2669279033Sjfv "Verify JNIEnv.thread == Thread::current() when entering VM " \ 2670279033Sjfv "from JNI") \ 2671279033Sjfv \ 2672274205Sjfv develop(bool, VerifyFPU, false, \ 2673274205Sjfv "Verify FPU state (check for NaN's, etc.)") \ 2674274205Sjfv \ 2675274205Sjfv develop(bool, VerifyThread, false, \ 2676274205Sjfv "Watch the thread register for corruption (SPARC only)") \ 2677284049Sjfv \ 2678284049Sjfv develop(bool, VerifyActivationFrameSize, false, \ 2679284049Sjfv "Verify that activation frame didn't become smaller than its " \ 2680284049Sjfv "minimal size") \ 2681284049Sjfv \ 2682284049Sjfv develop(bool, TraceFrequencyInlining, false, \ 2683284049Sjfv "Trace frequency based inlining") \ 2684284049Sjfv \ 2685284049Sjfv develop_pd(bool, InlineIntrinsics, \ 2686284049Sjfv "Inline intrinsics that can be statically resolved") \ 2687284049Sjfv \ 2688284049Sjfv product_pd(bool, ProfileInterpreter, \ 2689284049Sjfv "Profile at the bytecode level during interpretation") \ 2690284049Sjfv \ 2691284049Sjfv develop_pd(bool, ProfileTraps, \ 2692284049Sjfv "Profile deoptimization traps at the bytecode level") \ 2693284049Sjfv \ 2694284049Sjfv product(intx, ProfileMaturityPercentage, 20, \ 2695284049Sjfv "number of method invocations/branches (expressed as % of " \ 2696284049Sjfv "CompileThreshold) before using the method's profile") \ 2697284049Sjfv \ 2698284049Sjfv develop(bool, PrintMethodData, false, \ 2699284049Sjfv "Print the results of +ProfileInterpreter at end of run") \ 2700284049Sjfv \ 2701284049Sjfv develop(bool, VerifyDataPointer, trueInDebug, \ 2702284049Sjfv "Verify the method data pointer during interpreter profiling") \ 2703284049Sjfv \ 2704284049Sjfv develop(bool, VerifyCompiledCode, false, \ 2705284049Sjfv "Include miscellaneous runtime verifications in nmethod code; " \ 2706284049Sjfv "default off because it disturbs nmethod size heuristics") \ 2707284049Sjfv \ 2708284049Sjfv notproduct(bool, CrashGCForDumpingJavaThread, false, \ 2709284049Sjfv "Manually make GC thread crash then dump java stack trace; " \ 2710284049Sjfv "Test only") \ 2711284049Sjfv \ 2712284049Sjfv /* compilation */ \ 2713284049Sjfv product(bool, UseCompiler, true, \ 2714284049Sjfv "use compilation") \ 2715284049Sjfv \ 2716284049Sjfv develop(bool, TraceCompilationPolicy, false, \ 2717284049Sjfv "Trace compilation policy") \ 2718284049Sjfv \ 2719284049Sjfv develop(bool, TimeCompilationPolicy, false, \ 2720274205Sjfv "Time the compilation policy") \ 2721274205Sjfv \ 2722266423Sjfv product(bool, UseCounterDecay, true, \ 2723266423Sjfv "adjust recompilation counters") \ 2724266423Sjfv \ 2725266423Sjfv develop(intx, CounterHalfLifeTime, 30, \ 2726266423Sjfv "half-life time of invocation counters (in secs)") \ 2727266423Sjfv \ 2728270346Sjfv develop(intx, CounterDecayMinIntervalLength, 500, \ 2729266423Sjfv "Min. ms. between invocation of CounterDecay") \ 2730266423Sjfv \ 2731266423Sjfv product(bool, AlwaysCompileLoopMethods, false, \ 2732270346Sjfv "when using recompilation, never interpret methods " \ 2733279033Sjfv "containing loops") \ 2734266423Sjfv \ 2735266423Sjfv product(bool, DontCompileHugeMethods, true, \ 2736270346Sjfv "don't compile methods > HugeMethodLimit") \ 2737266423Sjfv \ 2738266423Sjfv /* Bytecode escape analysis estimation. */ \ 2739266423Sjfv product(bool, EstimateArgEscape, true, \ 2740266423Sjfv "Analyze bytecodes to estimate escape state of arguments") \ 2741266423Sjfv \ 2742266423Sjfv product(intx, BCEATraceLevel, 0, \ 2743266423Sjfv "How much tracing to do of bytecode escape analysis estimates") \ 2744266423Sjfv \ 2745299546Serj product(intx, MaxBCEAEstimateLevel, 5, \ 2746270346Sjfv "Maximum number of nested calls that are analyzed by BC EA.") \ 2747266423Sjfv \ 2748266423Sjfv product(intx, MaxBCEAEstimateSize, 150, \ 2749270346Sjfv "Maximum bytecode size of a method to be analyzed by BC EA.") \ 2750266423Sjfv \ 2751274205Sjfv product(intx, AllocatePrefetchStyle, 1, \ 2752272227Sglebius "0 = no prefetch, " \ 2753272227Sglebius "1 = prefetch instructions for each allocation, " \ 2754272227Sglebius "2 = use TLAB watermark to gate allocation prefetch, " \ 2755270346Sjfv "3 = use BIS instruction on Sparc for allocation prefetch") \ 2756266423Sjfv \ 2757270346Sjfv product(intx, AllocatePrefetchDistance, -1, \ 2758266423Sjfv "Distance to prefetch ahead of allocation pointer") \ 2759266423Sjfv \ 2760266423Sjfv product(intx, AllocatePrefetchLines, 3, \ 2761266423Sjfv "Number of lines to prefetch ahead of array allocation pointer") \ 2762266423Sjfv \ 2763266423Sjfv product(intx, AllocateInstancePrefetchLines, 1, \ 2764266423Sjfv "Number of lines to prefetch ahead of instance allocation pointer") \ 2765266423Sjfv \ 2766266423Sjfv product(intx, AllocatePrefetchStepSize, 16, \ 2767266423Sjfv "Step size in bytes of sequential prefetch instructions") \ 2768270856Sglebius \ 2769266423Sjfv product(intx, AllocatePrefetchInstr, 0, \ 2770266423Sjfv "Prefetch instruction to prefetch ahead of allocation pointer") \ 2771266423Sjfv \ 2772266423Sjfv /* deoptimization */ \ 2773266423Sjfv develop(bool, TraceDeoptimization, false, \ 2774266423Sjfv "Trace deoptimization") \ 2775266423Sjfv \ 2776266423Sjfv develop(bool, DebugDeoptimization, false, \ 2777266423Sjfv "Tracing various information while debugging deoptimization") \ 2778266423Sjfv \ 2779266423Sjfv product(intx, SelfDestructTimer, 0, \ 2780266423Sjfv "Will cause VM to terminate after a given time (in minutes) " \ 2781266423Sjfv "(0 means off)") \ 2782266423Sjfv \ 2783266423Sjfv product(intx, MaxJavaStackTraceDepth, 1024, \ 2784266423Sjfv "Max. no. of lines in the stack trace for Java exceptions " \ 2785266423Sjfv "(0 means all)") \ 2786266423Sjfv \ 2787266423Sjfv NOT_EMBEDDED(diagnostic(intx, GuaranteedSafepointInterval, 1000, \ 2788270346Sjfv "Guarantee a safepoint (at least) every so many milliseconds " \ 2789266423Sjfv "(0 means none)")) \ 2790266423Sjfv \ 2791266423Sjfv EMBEDDED_ONLY(product(intx, GuaranteedSafepointInterval, 0, \ 2792266423Sjfv "Guarantee a safepoint (at least) every so many milliseconds " \ 2793266423Sjfv "(0 means none)")) \ 2794266423Sjfv \ 2795266423Sjfv product(intx, SafepointTimeoutDelay, 10000, \ 2796266423Sjfv "Delay in milliseconds for option SafepointTimeout") \ 2797270346Sjfv \ 2798270346Sjfv product(intx, NmethodSweepFraction, 16, \ 2799266423Sjfv "Number of invocations of sweeper to cover all nmethods") \ 2800279033Sjfv \ 2801279033Sjfv product(intx, NmethodSweepCheckInterval, 5, \ 2802279033Sjfv "Compilers wake up every n seconds to possibly sweep nmethods") \ 2803274205Sjfv \ 2804274205Sjfv notproduct(bool, LogSweeper, false, \ 2805277084Sjfv "Keep a ring buffer of sweeper activity") \ 2806279033Sjfv \ 2807279033Sjfv notproduct(intx, SweeperLogEntries, 1024, \ 2808279033Sjfv "Number of records in the ring buffer of sweeper activity") \ 2809274205Sjfv \ 2810274205Sjfv notproduct(intx, MemProfilingInterval, 500, \ 2811274205Sjfv "Time between each invocation of the MemProfiler") \ 2812279033Sjfv \ 2813279033Sjfv develop(intx, MallocCatchPtr, -1, \ 2814279033Sjfv "Hit breakpoint when mallocing/freeing this pointer") \ 2815279033Sjfv \ 2816279033Sjfv notproduct(intx, AssertRepeat, 1, \ 2817266423Sjfv "number of times to evaluate expression in assert " \ 2818279033Sjfv "(to estimate overhead); only works with -DUSE_REPEATED_ASSERTS") \ 2819279033Sjfv \ 2820266423Sjfv notproduct(ccstrlist, SuppressErrorAt, "", \ 2821266423Sjfv "List of assertions (file:line) to muzzle") \ 2822266423Sjfv \ 2823266423Sjfv notproduct(uintx, HandleAllocationLimit, 1024, \ 2824274205Sjfv "Threshold for HandleMark allocation when +TraceHandleAllocation "\ 2825274205Sjfv "is used") \ 2826266423Sjfv \ 2827266423Sjfv develop(uintx, TotalHandleAllocationLimit, 1024, \ 2828266423Sjfv "Threshold for total handle allocation when " \ 2829279858Sjfv "+TraceHandleAllocation is used") \ 2830299547Serj \ 2831279858Sjfv develop(intx, StackPrintLimit, 100, \ 2832279858Sjfv "number of stack frames to print in VM-level stack dump") \ 2833279858Sjfv \ 2834266423Sjfv notproduct(intx, MaxElementPrintSize, 256, \ 2835279858Sjfv "maximum number of elements to print") \ 2836299547Serj \ 2837279858Sjfv notproduct(intx, MaxSubklassPrintSize, 4, \ 2838279858Sjfv "maximum number of subklasses to print when printing klass") \ 2839266423Sjfv \ 2840299547Serj product(intx, MaxInlineLevel, 9, \ 2841299547Serj "maximum number of nested calls that are inlined") \ 2842279858Sjfv \ 2843299547Serj product(intx, MaxRecursiveInlineLevel, 1, \ 2844299547Serj "maximum number of nested recursive calls that are inlined") \ 2845299547Serj \ 2846279858Sjfv product_pd(intx, InlineSmallCode, \ 2847279858Sjfv "Only inline already compiled methods if their code size is " \ 2848279858Sjfv "less than this") \ 2849299547Serj \ 2850299547Serj product(intx, MaxInlineSize, 35, \ 2851279858Sjfv "maximum bytecode size of a method to be inlined") \ 2852299547Serj \ 2853299547Serj product_pd(intx, FreqInlineSize, \ 2854266423Sjfv "maximum bytecode size of a frequent method to be inlined") \ 2855266423Sjfv \ 2856266423Sjfv product(intx, MaxTrivialSize, 6, \ 2857266423Sjfv "maximum bytecode size of a trivial method to be inlined") \ 2858279033Sjfv \ 2859279033Sjfv product(intx, MinInliningThreshold, 250, \ 2860279033Sjfv "min. invocation count a method needs to have to be inlined") \ 2861266423Sjfv \ 2862266423Sjfv develop(intx, MethodHistogramCutoff, 100, \ 2863266423Sjfv "cutoff value for method invoc. histogram (+CountCalls)") \ 2864279033Sjfv \ 2865266423Sjfv develop(intx, ProfilerNumberOfInterpretedMethods, 25, \ 2866279033Sjfv "# of interpreted methods to show in profile") \ 2867279033Sjfv \ 2868266423Sjfv develop(intx, ProfilerNumberOfCompiledMethods, 25, \ 2869266423Sjfv "# of compiled methods to show in profile") \ 2870266423Sjfv \ 2871279858Sjfv develop(intx, ProfilerNumberOfStubMethods, 25, \ 2872266423Sjfv "# of stub methods to show in profile") \ 2873266423Sjfv \ 2874279033Sjfv develop(intx, ProfilerNumberOfRuntimeStubNodes, 25, \ 2875266423Sjfv "# of runtime stub nodes to show in profile") \ 2876266423Sjfv \ 2877266423Sjfv product(intx, ProfileIntervalsTicks, 100, \ 2878266423Sjfv "# of ticks between printing of interval profile " \ 2879279858Sjfv "(+ProfileIntervals)") \ 2880279858Sjfv \ 2881266423Sjfv notproduct(intx, ScavengeALotInterval, 1, \ 2882266423Sjfv "Interval between which scavenge will occur with +ScavengeALot") \ 2883270346Sjfv \ 2884279858Sjfv notproduct(intx, FullGCALotInterval, 1, \ 2885279858Sjfv "Interval between which full gc will occur with +FullGCALot") \ 2886266423Sjfv \ 2887279858Sjfv notproduct(intx, FullGCALotStart, 0, \ 2888279858Sjfv "For which invocation to start FullGCAlot") \ 2889279858Sjfv \ 2890279858Sjfv notproduct(intx, FullGCALotDummies, 32*K, \ 2891279858Sjfv "Dummy object allocated with +FullGCALot, forcing all objects " \ 2892279858Sjfv "to move") \ 2893279858Sjfv \ 2894279858Sjfv develop(intx, DontYieldALotInterval, 10, \ 2895266423Sjfv "Interval between which yields will be dropped (milliseconds)") \ 2896279033Sjfv \ 2897279858Sjfv develop(intx, MinSleepInterval, 1, \ 2898279858Sjfv "Minimum sleep() interval (milliseconds) when " \ 2899266423Sjfv "ConvertSleepToYield is off (used for SOLARIS)") \ 2900279033Sjfv \ 2901279033Sjfv develop(intx, ProfilerPCTickThreshold, 15, \ 2902266423Sjfv "Number of ticks in a PC buckets to be a hotspot") \ 2903279033Sjfv \ 2904279033Sjfv notproduct(intx, DeoptimizeALotInterval, 5, \ 2905279033Sjfv "Number of exits until DeoptimizeALot kicks in") \ 2906279033Sjfv \ 2907279033Sjfv notproduct(intx, ZombieALotInterval, 5, \ 2908279033Sjfv "Number of exits until ZombieALot kicks in") \ 2909279033Sjfv \ 2910279033Sjfv develop(bool, StressNonEntrant, false, \ 2911279033Sjfv "Mark nmethods non-entrant at registration") \ 2912279033Sjfv \ 2913279858Sjfv diagnostic(intx, MallocVerifyInterval, 0, \ 2914279033Sjfv "if non-zero, verify C heap after every N calls to " \ 2915279033Sjfv "malloc/realloc/free") \ 2916279033Sjfv \ 2917279033Sjfv diagnostic(intx, MallocVerifyStart, 0, \ 2918279033Sjfv "if non-zero, start verifying C heap after Nth call to " \ 2919279033Sjfv "malloc/realloc/free") \ 2920266423Sjfv \ 2921266423Sjfv diagnostic(uintx, MallocMaxTestWords, 0, \ 2922279858Sjfv "if non-zero, max # of Words that malloc/realloc can allocate " \ 2923279858Sjfv "(for testing only)") \ 2924266423Sjfv \ 2925279033Sjfv product(intx, TypeProfileWidth, 2, \ 2926279033Sjfv "number of receiver types to record in call/cast profile") \ 2927299548Serj \ 2928279033Sjfv develop(intx, BciProfileWidth, 2, \ 2929266423Sjfv "number of return bci's to record in ret profile") \ 2930270346Sjfv \ 2931299548Serj product(intx, PerMethodRecompilationCutoff, 400, \ 2932266423Sjfv "After recompiling N times, stay in the interpreter (-1=>'Inf')") \ 2933266423Sjfv \ 2934266423Sjfv product(intx, PerBytecodeRecompilationCutoff, 200, \ 2935266423Sjfv "Per-BCI limit on repeated recompilation (-1=>'Inf')") \ 2936266423Sjfv \ 2937266423Sjfv product(intx, PerMethodTrapLimit, 100, \ 2938266423Sjfv "Limit on traps (of one kind) in a method (includes inlines)") \ 2939266423Sjfv \ 2940266423Sjfv product(intx, PerBytecodeTrapLimit, 4, \ 2941266423Sjfv "Limit on traps (of one kind) at a particular BCI") \ 2942266423Sjfv \ 2943266423Sjfv develop(intx, InlineFrequencyRatio, 20, \ 2944266423Sjfv "Ratio of call site execution to caller method invocation") \ 2945266423Sjfv \ 2946299545Serj develop_pd(intx, InlineFrequencyCount, \ 2947299552Serj "Count of call site execution necessary to trigger frequent " \ 2948299548Serj "inlining") \ 2949266423Sjfv \ 2950266423Sjfv develop(intx, InlineThrowCount, 50, \ 2951266423Sjfv "Force inlining of interpreted methods that throw this often") \ 2952266423Sjfv \ 2953266423Sjfv develop(intx, InlineThrowMaxSize, 200, \ 2954299548Serj "Force inlining of throwing methods smaller than this") \ 2955266423Sjfv \ 2956299548Serj develop(intx, ProfilerNodeSize, 1024, \ 2957266423Sjfv "Size in K to allocate for the Profile Nodes of each thread") \ 2958266423Sjfv \ 2959266423Sjfv product_pd(intx, PreInflateSpin, \ 2960266423Sjfv "Number of times to spin wait before inflation") \ 2961266423Sjfv \ 2962270346Sjfv /* gc parameters */ \ 2963266423Sjfv product(uintx, InitialHeapSize, 0, \ 2964266423Sjfv "Initial heap size (in bytes); zero means OldSize + NewSize") \ 2965266423Sjfv \ 2966279858Sjfv product(uintx, MaxHeapSize, ScaleForWordSize(96*M), \ 2967279858Sjfv "Maximum heap size (in bytes)") \ 2968279033Sjfv \ 2969279033Sjfv product(uintx, OldSize, ScaleForWordSize(4*M), \ 2970299548Serj "Initial tenured generation size (in bytes)") \ 2971299548Serj \ 2972279033Sjfv product(uintx, NewSize, ScaleForWordSize(1*M), \ 2973279033Sjfv "Initial new generation size (in bytes)") \ 2974266423Sjfv \ 2975266423Sjfv product(uintx, MaxNewSize, max_uintx, \ 2976266423Sjfv "Maximum new generation size (in bytes), max_uintx means set " \ 2977266423Sjfv "ergonomically") \ 2978266423Sjfv \ 2979266423Sjfv product(uintx, PretenureSizeThreshold, 0, \ 2980266423Sjfv "Maximum size in bytes of objects allocated in DefNew " \ 2981266423Sjfv "generation; zero means no maximum") \ 2982266423Sjfv \ 2983266423Sjfv product(uintx, TLABSize, 0, \ 2984266423Sjfv "Starting TLAB size (in bytes); zero means set ergonomically") \ 2985266423Sjfv \ 2986266423Sjfv product(uintx, MinTLABSize, 2*K, \ 2987279858Sjfv "Minimum allowed TLAB size (in bytes)") \ 2988266423Sjfv \ 2989266423Sjfv product(uintx, TLABAllocationWeight, 35, \ 2990269198Sjfv "Allocation averaging weight") \ 2991269198Sjfv \ 2992269198Sjfv product(uintx, TLABWasteTargetPercent, 1, \ 2993269198Sjfv "Percentage of Eden that can be wasted") \ 2994269198Sjfv \ 2995266423Sjfv product(uintx, TLABRefillWasteFraction, 64, \ 2996266423Sjfv "Max TLAB waste at a refill (internal fragmentation)") \ 2997266423Sjfv \ 2998266423Sjfv product(uintx, TLABWasteIncrement, 4, \ 2999266423Sjfv "Increment allowed waste at slow allocation") \ 3000266423Sjfv \ 3001266423Sjfv product(uintx, SurvivorRatio, 8, \ 3002266423Sjfv "Ratio of eden/survivor space size") \ 3003266423Sjfv \ 3004266423Sjfv product(uintx, NewRatio, 2, \ 3005266423Sjfv "Ratio of new/old generation sizes") \ 3006266423Sjfv \ 3007266423Sjfv product_pd(uintx, NewSizeThreadIncrease, \ 3008266423Sjfv "Additional size added to desired new generation size per " \ 3009266423Sjfv "non-daemon thread (in bytes)") \ 3010266423Sjfv \ 3011270346Sjfv product_pd(uintx, MetaspaceSize, \ 3012266423Sjfv "Initial size of Metaspaces (in bytes)") \ 3013266423Sjfv \ 3014270346Sjfv product(uintx, MaxMetaspaceSize, max_uintx, \ 3015266423Sjfv "Maximum size of Metaspaces (in bytes)") \ 3016266423Sjfv \ 3017279858Sjfv product(uintx, ClassMetaspaceSize, 2*M, \ 3018266423Sjfv "Maximum size of InstanceKlass area in Metaspace used for " \ 3019266423Sjfv "UseCompressedKlassPointers") \ 3020266423Sjfv \ 3021266423Sjfv product(uintx, MinHeapFreeRatio, 40, \ 3022266423Sjfv "Min percentage of heap free after GC to avoid expansion") \ 3023266423Sjfv \ 3024266423Sjfv product(uintx, MaxHeapFreeRatio, 70, \ 3025266423Sjfv "Max percentage of heap free after GC to avoid shrinking") \ 3026266423Sjfv \ 3027266423Sjfv product(intx, SoftRefLRUPolicyMSPerMB, 1000, \ 3028266423Sjfv "Number of milliseconds per MB of free space in the heap") \ 3029266423Sjfv \ 3030266423Sjfv product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K), \ 3031266423Sjfv "Min change in heap space due to GC (in bytes)") \ 3032266423Sjfv \ 3033266423Sjfv product(uintx, MinMetaspaceExpansion, ScaleForWordSize(256*K), \ 3034279858Sjfv "Min expansion of Metaspace (in bytes)") \ 3035266423Sjfv \ 3036266423Sjfv product(uintx, MinMetaspaceFreeRatio, 40, \ 3037266423Sjfv "Min percentage of Metaspace free after GC to avoid expansion") \ 3038266423Sjfv \ 3039266423Sjfv product(uintx, MaxMetaspaceFreeRatio, 70, \ 3040266423Sjfv "Max percentage of Metaspace free after GC to avoid shrinking") \ 3041266423Sjfv \ 3042266423Sjfv product(uintx, MaxMetaspaceExpansion, ScaleForWordSize(4*M), \ 3043266423Sjfv "Max expansion of Metaspace without full GC (in bytes)") \ 3044266423Sjfv \ 3045266423Sjfv product(intx, QueuedAllocationWarningCount, 0, \ 3046266423Sjfv "Number of times an allocation that queues behind a GC " \ 3047266423Sjfv "will retry before printing a warning") \ 3048266423Sjfv \ 3049266423Sjfv diagnostic(uintx, VerifyGCStartAt, 0, \ 3050266423Sjfv "GC invoke count where +VerifyBefore/AfterGC kicks in") \ 3051266423Sjfv \ 3052266423Sjfv diagnostic(intx, VerifyGCLevel, 0, \ 3053266423Sjfv "Generation level at which to start +VerifyBefore/AfterGC") \ 3054266423Sjfv \ 3055266423Sjfv product(uintx, MaxTenuringThreshold, 15, \ 3056266423Sjfv "Maximum value for tenuring threshold") \ 3057266423Sjfv \ 3058270346Sjfv product(uintx, InitialTenuringThreshold, 7, \ 3059266423Sjfv "Initial value for tenuring threshold") \ 3060266423Sjfv \ 3061266423Sjfv product(uintx, TargetSurvivorRatio, 50, \ 3062266423Sjfv "Desired percentage of survivor space used after scavenge") \ 3063299545Serj \ 3064279860Sjfv product(uintx, MarkSweepDeadRatio, 5, \ 3065279860Sjfv "Percentage (0-100) of the old gen allowed as dead wood." \ 3066279860Sjfv "Serial mark sweep treats this as both the min and max value." \ 3067279860Sjfv "CMS uses this value only if it falls back to mark sweep." \ 3068279860Sjfv "Par compact uses a variable scale based on the density of the" \ 3069279860Sjfv "generation and treats this as the max value when the heap is" \ 3070279860Sjfv "either completely full or completely empty. Par compact also" \ 3071279860Sjfv "has a smaller default value; see arguments.cpp.") \ 3072279860Sjfv \ 3073266423Sjfv product(intx, MarkSweepAlwaysCompactCount, 4, \ 3074266423Sjfv "How often should we fully compact the heap (ignoring the dead " \ 3075266423Sjfv "space parameters)") \ 3076266423Sjfv \ 3077266423Sjfv product(intx, PrintCMSStatistics, 0, \ 3078266423Sjfv "Statistics for CMS") \ 3079266423Sjfv \ 3080266423Sjfv product(bool, PrintCMSInitiationStatistics, false, \ 3081266423Sjfv "Statistics for initiating a CMS collection") \ 3082266423Sjfv \ 3083266423Sjfv product(intx, PrintFLSStatistics, 0, \ 3084266423Sjfv "Statistics for CMS' FreeListSpace") \ 3085270346Sjfv \ 3086266423Sjfv product(intx, PrintFLSCensus, 0, \ 3087270346Sjfv "Census for CMS' FreeListSpace") \ 3088270346Sjfv \ 3089266423Sjfv develop(uintx, GCExpandToAllocateDelayMillis, 0, \ 3090266423Sjfv "Delay in ms between expansion and allocation") \ 3091299549Serj \ 3092299549Serj develop(uintx, GCWorkerDelayMillis, 0, \ 3093299549Serj "Delay in ms in scheduling GC workers") \ 3094266423Sjfv \ 3095266423Sjfv product(intx, DeferThrSuspendLoopCount, 4000, \ 3096266423Sjfv "(Unstable) Number of times to iterate in safepoint loop " \ 3097266423Sjfv " before blocking VM threads ") \ 3098266423Sjfv \ 3099266423Sjfv product(intx, DeferPollingPageLoopCount, -1, \ 3100270346Sjfv "(Unsafe,Unstable) Number of iterations in safepoint loop " \ 3101270346Sjfv "before changing safepoint polling page to RO ") \ 3102266423Sjfv \ 3103271834Sbz product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)") \ 3104270346Sjfv \ 3105270346Sjfv product(bool, PSChunkLargeArrays, true, \ 3106266423Sjfv "true: process large arrays in chunks") \ 3107266423Sjfv \ 3108266423Sjfv product(uintx, GCDrainStackTargetSize, 64, \ 3109270346Sjfv "how many entries we'll try to leave on the stack during " \ 3110270346Sjfv "parallel GC") \ 3111266423Sjfv \ 3112271834Sbz /* stack parameters */ \ 3113270346Sjfv product_pd(intx, StackYellowPages, \ 3114270346Sjfv "Number of yellow zone (recoverable overflows) pages") \ 3115266423Sjfv \ 3116266423Sjfv product_pd(intx, StackRedPages, \ 3117266423Sjfv "Number of red zone (unrecoverable overflows) pages") \ 3118266423Sjfv \ 3119299549Serj product_pd(intx, StackShadowPages, \ 3120266423Sjfv "Number of shadow zone (for overflow checking) pages" \ 3121279858Sjfv " this should exceed the depth of the VM and native call stack") \ 3122279858Sjfv \ 3123279858Sjfv product_pd(intx, ThreadStackSize, \ 3124279858Sjfv "Thread Stack Size (in Kbytes)") \ 3125279858Sjfv \ 3126279858Sjfv product_pd(intx, VMThreadStackSize, \ 3127279858Sjfv "Non-Java Thread Stack Size (in Kbytes)") \ 3128279858Sjfv \ 3129266423Sjfv product_pd(intx, CompilerThreadStackSize, \ 3130266423Sjfv "Compiler Thread Stack Size (in Kbytes)") \ 3131266423Sjfv \ 3132266423Sjfv develop_pd(uintx, JVMInvokeMethodSlack, \ 3133266423Sjfv "Stack space (bytes) required for JVM_InvokeMethod to complete") \ 3134266423Sjfv \ 3135266423Sjfv product(uintx, ThreadSafetyMargin, 50*M, \ 3136266423Sjfv "Thread safety margin is used on fixed-stack LinuxThreads (on " \ 3137266423Sjfv "Linux/x86 only) to prevent heap-stack collision. Set to 0 to " \ 3138266423Sjfv "disable this feature") \ 3139266423Sjfv \ 3140266423Sjfv /* code cache parameters */ \ 3141266423Sjfv develop(uintx, CodeCacheSegmentSize, 64, \ 3142266423Sjfv "Code cache segment size (in bytes) - smallest unit of " \ 3143266423Sjfv "allocation") \ 3144266423Sjfv \ 3145270346Sjfv develop_pd(intx, CodeEntryAlignment, \ 3146266423Sjfv "Code entry alignment for generated code (in bytes)") \ 3147266423Sjfv \ 3148270346Sjfv product_pd(intx, OptoLoopAlignment, \ 3149270346Sjfv "Align inner loops to zero relative to this modulus") \ 3150266423Sjfv \ 3151266423Sjfv product_pd(uintx, InitialCodeCacheSize, \ 3152266423Sjfv "Initial code cache size (in bytes)") \ 3153266423Sjfv \ 3154266423Sjfv product_pd(uintx, ReservedCodeCacheSize, \ 3155266423Sjfv "Reserved code cache size (in bytes) - maximum code cache size") \ 3156266423Sjfv \ 3157266423Sjfv product(uintx, CodeCacheMinimumFreeSpace, 500*K, \ 3158266423Sjfv "When less than X space left, we stop compiling.") \ 3159266423Sjfv \ 3160279858Sjfv product_pd(uintx, CodeCacheExpansionSize, \ 3161266423Sjfv "Code cache expansion size (in bytes)") \ 3162266423Sjfv \ 3163266423Sjfv develop_pd(uintx, CodeCacheMinBlockLength, \ 3164270346Sjfv "Minimum number of segments in a code cache block.") \ 3165266423Sjfv \ 3166266423Sjfv notproduct(bool, ExitOnFullCodeCache, false, \ 3167266423Sjfv "Exit the VM if we fill the code cache.") \ 3168266423Sjfv \ 3169266423Sjfv product(bool, UseCodeCacheFlushing, true, \ 3170266423Sjfv "Attempt to clean the code cache before shutting off compiler") \ 3171266423Sjfv \ 3172266423Sjfv product(intx, MinCodeCacheFlushingInterval, 30, \ 3173270346Sjfv "Min number of seconds between code cache cleaning sessions") \ 3174266423Sjfv \ 3175266423Sjfv product(uintx, CodeCacheFlushingMinimumFreeSpace, 1500*K, \ 3176269198Sjfv "When less than X space left, start code cache cleaning") \ 3177269198Sjfv \ 3178266423Sjfv /* interpreter debugging */ \ 3179266423Sjfv develop(intx, BinarySwitchThreshold, 5, \ 3180269198Sjfv "Minimal number of lookupswitch entries for rewriting to binary " \ 3181266423Sjfv "switch") \ 3182266423Sjfv \ 3183266423Sjfv develop(intx, StopInterpreterAt, 0, \ 3184266423Sjfv "Stops interpreter execution at specified bytecode number") \ 3185266423Sjfv \ 3186266423Sjfv develop(intx, TraceBytecodesAt, 0, \ 3187269198Sjfv "Traces bytecodes starting with specified bytecode number") \ 3188269198Sjfv \ 3189269198Sjfv /* compiler interface */ \ 3190271834Sbz develop(intx, CIStart, 0, \ 3191271834Sbz "the id of the first compilation to permit") \ 3192266423Sjfv \ 3193266423Sjfv develop(intx, CIStop, -1, \ 3194266423Sjfv "the id of the last compilation to permit") \ 3195266423Sjfv \ 3196266423Sjfv develop(intx, CIStartOSR, 0, \ 3197266423Sjfv "the id of the first osr compilation to permit " \ 3198266423Sjfv "(CICountOSR must be on)") \ 3199266423Sjfv \ 3200270346Sjfv develop(intx, CIStopOSR, -1, \ 3201266423Sjfv "the id of the last osr compilation to permit " \ 3202266423Sjfv "(CICountOSR must be on)") \ 3203266423Sjfv \ 3204266423Sjfv develop(intx, CIBreakAtOSR, -1, \ 3205266423Sjfv "id of osr compilation to break at") \ 3206266423Sjfv \ 3207266423Sjfv develop(intx, CIBreakAt, -1, \ 3208299547Serj "id of compilation to break at") \ 3209266423Sjfv \ 3210266423Sjfv product(ccstrlist, CompileOnly, "", \ 3211266423Sjfv "List of methods (pkg/class.name) to restrict compilation to") \ 3212266423Sjfv \ 3213266423Sjfv product(ccstr, CompileCommandFile, NULL, \ 3214266423Sjfv "Read compiler commands from this file [.hotspot_compiler]") \ 3215266423Sjfv \ 3216266423Sjfv product(ccstrlist, CompileCommand, "", \ 3217266423Sjfv "Prepend to .hotspot_compiler; e.g. log,java/lang/String.<init>") \ 3218266423Sjfv \ 3219266423Sjfv develop(bool, ReplayCompiles, false, \ 3220266423Sjfv "Enable replay of compilations from ReplayDataFile") \ 3221266423Sjfv \ 3222266423Sjfv develop(ccstr, ReplayDataFile, "replay.txt", \ 3223269198Sjfv "file containing compilation replay information") \ 3224266423Sjfv \ 3225266423Sjfv develop(intx, ReplaySuppressInitializers, 2, \ 3226266423Sjfv "Controls handling of class initialization during replay" \ 3227266423Sjfv "0 - don't do anything special" \ 3228266423Sjfv "1 - treat all class initializers as empty" \ 3229266423Sjfv "2 - treat class initializers for application classes as empty" \ 3230271834Sbz "3 - allow all class initializers to run during bootstrap but" \ 3231271834Sbz " pretend they are empty after starting replay") \ 3232266423Sjfv \ 3233266423Sjfv develop(bool, ReplayIgnoreInitErrors, false, \ 3234266423Sjfv "Ignore exceptions thrown during initialization for replay") \ 3235266423Sjfv \ 3236266423Sjfv develop(bool, DumpReplayDataOnError, true, \ 3237266423Sjfv "record replay data for crashing compiler threads") \ 3238266423Sjfv \ 3239266423Sjfv product(bool, CICompilerCountPerCPU, false, \ 3240266423Sjfv "1 compiler thread for log(N CPUs)") \ 3241270346Sjfv \ 3242266423Sjfv develop(intx, CIFireOOMAt, -1, \ 3243266423Sjfv "Fire OutOfMemoryErrors throughout CI for testing the compiler " \ 3244266423Sjfv "(non-negative value throws OOM after this many CI accesses " \ 3245266423Sjfv "in each compile)") \ 3246266423Sjfv \ 3247266423Sjfv notproduct(bool, CIObjectFactoryVerify, false, \ 3248266423Sjfv "enable potentially expensive verification in ciObjectFactory") \ 3249266423Sjfv \ 3250266423Sjfv /* Priorities */ \ 3251266423Sjfv product_pd(bool, UseThreadPriorities, "Use native thread priorities") \ 3252266423Sjfv \ 3253266423Sjfv product(intx, ThreadPriorityPolicy, 0, \ 3254266423Sjfv "0 : Normal. "\ 3255266423Sjfv " VM chooses priorities that are appropriate for normal "\ 3256266423Sjfv " applications. On Solaris NORM_PRIORITY and above are mapped "\ 3257271834Sbz " to normal native priority. Java priorities below NORM_PRIORITY"\ 3258266423Sjfv " map to lower native priority values. On Windows applications"\ 3259271834Sbz " are allowed to use higher native priorities. However, with "\ 3260266423Sjfv " ThreadPriorityPolicy=0, VM will not use the highest possible"\ 3261266423Sjfv " native priority, THREAD_PRIORITY_TIME_CRITICAL, as it may "\ 3262266423Sjfv " interfere with system threads. On Linux thread priorities "\ 3263266423Sjfv " are ignored because the OS does not support static priority "\ 3264266423Sjfv " in SCHED_OTHER scheduling class which is the only choice for"\ 3265266423Sjfv " non-root, non-realtime applications. "\ 3266266423Sjfv "1 : Aggressive. "\ 3267266423Sjfv " Java thread priorities map over to the entire range of "\ 3268266423Sjfv " native thread priorities. Higher Java thread priorities map "\ 3269266423Sjfv " to higher native thread priorities. This policy should be "\ 3270266423Sjfv " used with care, as sometimes it can cause performance "\ 3271270346Sjfv " degradation in the application and/or the entire system. On "\ 3272266423Sjfv " Linux this policy requires root privilege.") \ 3273270346Sjfv \ 3274266423Sjfv product(bool, ThreadPriorityVerbose, false, \ 3275266423Sjfv "Print priority changes") \ 3276266423Sjfv \ 3277266423Sjfv product(intx, DefaultThreadPriority, -1, \ 3278266423Sjfv "The native priority at which threads run if not elsewhere " \ 3279266423Sjfv "specified (-1 means no change)") \ 3280266423Sjfv \ 3281266423Sjfv product(intx, CompilerThreadPriority, -1, \ 3282266423Sjfv "The native priority at which compiler threads should run " \ 3283266423Sjfv "(-1 means no change)") \ 3284266423Sjfv \ 3285270346Sjfv product(intx, VMThreadPriority, -1, \ 3286266423Sjfv "The native priority at which the VM thread should run " \ 3287266423Sjfv "(-1 means no change)") \ 3288266423Sjfv \ 3289266423Sjfv product(bool, CompilerThreadHintNoPreempt, true, \ 3290266423Sjfv "(Solaris only) Give compiler threads an extra quanta") \ 3291270346Sjfv \ 3292266423Sjfv product(bool, VMThreadHintNoPreempt, false, \ 3293270346Sjfv "(Solaris only) Give VM thread an extra quanta") \ 3294270346Sjfv \ 3295266423Sjfv product(intx, JavaPriority1_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3296266423Sjfv product(intx, JavaPriority2_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3297270346Sjfv product(intx, JavaPriority3_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3298266423Sjfv product(intx, JavaPriority4_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3299270346Sjfv product(intx, JavaPriority5_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3300270346Sjfv product(intx, JavaPriority6_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3301266423Sjfv product(intx, JavaPriority7_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3302270346Sjfv product(intx, JavaPriority8_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3303270346Sjfv product(intx, JavaPriority9_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3304266423Sjfv product(intx, JavaPriority10_To_OSPriority,-1, "Map Java priorities to OS priorities") \ 3305266423Sjfv \ 3306270346Sjfv experimental(bool, UseCriticalJavaThreadPriority, false, \ 3307266423Sjfv "Java thread priority 10 maps to critical scheduling priority") \ 3308270346Sjfv \ 3309270346Sjfv experimental(bool, UseCriticalCompilerThreadPriority, false, \ 3310266423Sjfv "Compiler thread(s) run at critical scheduling priority") \ 3311266423Sjfv \ 3312266423Sjfv experimental(bool, UseCriticalCMSThreadPriority, false, \ 3313266423Sjfv "ConcurrentMarkSweep thread runs at critical scheduling priority")\ 3314266423Sjfv \ 3315266423Sjfv /* compiler debugging */ \ 3316266423Sjfv notproduct(intx, CompileTheWorldStartAt, 1, \ 3317266423Sjfv "First class to consider when using +CompileTheWorld") \ 3318266423Sjfv \ 3319266423Sjfv notproduct(intx, CompileTheWorldStopAt, max_jint, \ 3320270346Sjfv "Last class to consider when using +CompileTheWorld") \ 3321270346Sjfv \ 3322266423Sjfv develop(intx, NewCodeParameter, 0, \ 3323266423Sjfv "Testing Only: Create a dedicated integer parameter before " \ 3324266423Sjfv "putback") \ 3325270346Sjfv \ 3326270346Sjfv /* new oopmap storage allocation */ \ 3327266423Sjfv develop(intx, MinOopMapAllocation, 8, \ 3328266423Sjfv "Minimum number of OopMap entries in an OopMapSet") \ 3329266423Sjfv \ 3330270346Sjfv /* Background Compilation */ \ 3331266423Sjfv develop(intx, LongCompileThreshold, 50, \ 3332266423Sjfv "Used with +TraceLongCompiles") \ 3333266423Sjfv \ 3334266423Sjfv product(intx, StarvationMonitorInterval, 200, \ 3335266423Sjfv "Pause between each check in ms") \ 3336266423Sjfv \ 3337266423Sjfv /* recompilation */ \ 3338266423Sjfv product_pd(intx, CompileThreshold, \ 3339266423Sjfv "number of interpreted method invocations before (re-)compiling") \ 3340266423Sjfv \ 3341266423Sjfv product_pd(intx, BackEdgeThreshold, \ 3342266423Sjfv "Interpreter Back edge threshold at which an OSR compilation is invoked")\ 3343266423Sjfv \ 3344266423Sjfv product(intx, Tier0InvokeNotifyFreqLog, 7, \ 3345270346Sjfv "Interpreter (tier 0) invocation notification frequency.") \ 3346266423Sjfv \ 3347270346Sjfv product(intx, Tier2InvokeNotifyFreqLog, 11, \ 3348266423Sjfv "C1 without MDO (tier 2) invocation notification frequency.") \ 3349266423Sjfv \ 3350266423Sjfv product(intx, Tier3InvokeNotifyFreqLog, 10, \ 3351266423Sjfv "C1 with MDO profiling (tier 3) invocation notification " \ 3352266423Sjfv "frequency.") \ 3353266423Sjfv \ 3354266423Sjfv product(intx, Tier23InlineeNotifyFreqLog, 20, \ 3355266423Sjfv "Inlinee invocation (tiers 2 and 3) notification frequency") \ 3356266423Sjfv \ 3357266423Sjfv product(intx, Tier0BackedgeNotifyFreqLog, 10, \ 3358266423Sjfv "Interpreter (tier 0) invocation notification frequency.") \ 3359270346Sjfv \ 3360266423Sjfv product(intx, Tier2BackedgeNotifyFreqLog, 14, \ 3361266423Sjfv "C1 without MDO (tier 2) invocation notification frequency.") \ 3362266423Sjfv \ 3363266423Sjfv product(intx, Tier3BackedgeNotifyFreqLog, 13, \ 3364270346Sjfv "C1 with MDO profiling (tier 3) invocation notification " \ 3365266423Sjfv "frequency.") \ 3366270346Sjfv \ 3367270346Sjfv product(intx, Tier2CompileThreshold, 0, \ 3368266423Sjfv "threshold at which tier 2 compilation is invoked") \ 3369266423Sjfv \ 3370270346Sjfv product(intx, Tier2BackEdgeThreshold, 0, \ 3371266423Sjfv "Back edge threshold at which tier 2 compilation is invoked") \ 3372270346Sjfv \ 3373270346Sjfv product(intx, Tier3InvocationThreshold, 200, \ 3374266423Sjfv "Compile if number of method invocations crosses this " \ 3375270346Sjfv "threshold") \ 3376270346Sjfv \ 3377266423Sjfv product(intx, Tier3MinInvocationThreshold, 100, \ 3378266423Sjfv "Minimum invocation to compile at tier 3") \ 3379270346Sjfv \ 3380266423Sjfv product(intx, Tier3CompileThreshold, 2000, \ 3381270346Sjfv "Threshold at which tier 3 compilation is invoked (invocation " \ 3382270346Sjfv "minimum must be satisfied.") \ 3383266423Sjfv \ 3384266423Sjfv product(intx, Tier3BackEdgeThreshold, 60000, \ 3385266423Sjfv "Back edge threshold at which tier 3 OSR compilation is invoked") \ 3386266423Sjfv \ 3387266423Sjfv product(intx, Tier4InvocationThreshold, 5000, \ 3388266423Sjfv "Compile if number of method invocations crosses this " \ 3389266423Sjfv "threshold") \ 3390266423Sjfv \ 3391266423Sjfv product(intx, Tier4MinInvocationThreshold, 600, \ 3392266423Sjfv "Minimum invocation to compile at tier 4") \ 3393270346Sjfv \ 3394270346Sjfv product(intx, Tier4CompileThreshold, 15000, \ 3395266423Sjfv "Threshold at which tier 4 compilation is invoked (invocation " \ 3396266423Sjfv "minimum must be satisfied.") \ 3397266423Sjfv \ 3398266423Sjfv product(intx, Tier4BackEdgeThreshold, 40000, \ 3399270346Sjfv "Back edge threshold at which tier 4 OSR compilation is invoked") \ 3400270346Sjfv \ 3401266423Sjfv product(intx, Tier3DelayOn, 5, \ 3402266423Sjfv "If C2 queue size grows over this amount per compiler thread " \ 3403266423Sjfv "stop compiling at tier 3 and start compiling at tier 2") \ 3404270346Sjfv \ 3405266423Sjfv product(intx, Tier3DelayOff, 2, \ 3406266423Sjfv "If C2 queue size is less than this amount per compiler thread " \ 3407266423Sjfv "allow methods compiled at tier 2 transition to tier 3") \ 3408266423Sjfv \ 3409266423Sjfv product(intx, Tier3LoadFeedback, 5, \ 3410266423Sjfv "Tier 3 thresholds will increase twofold when C1 queue size " \ 3411266423Sjfv "reaches this amount per compiler thread") \ 3412266423Sjfv \ 3413279858Sjfv product(intx, Tier4LoadFeedback, 3, \ 3414266423Sjfv "Tier 4 thresholds will increase twofold when C2 queue size " \ 3415266423Sjfv "reaches this amount per compiler thread") \ 3416279858Sjfv \ 3417279858Sjfv product(intx, TieredCompileTaskTimeout, 50, \ 3418279858Sjfv "Kill compile task if method was not used within " \ 3419279858Sjfv "given timeout in milliseconds") \ 3420279858Sjfv \ 3421279858Sjfv product(intx, TieredStopAtLevel, 4, \ 3422279858Sjfv "Stop at given compilation level") \ 3423279858Sjfv \ 3424279858Sjfv product(intx, Tier0ProfilingStartPercentage, 200, \ 3425279858Sjfv "Start profiling in interpreter if the counters exceed tier 3" \ 3426279858Sjfv "thresholds by the specified percentage") \ 3427279858Sjfv \ 3428279858Sjfv product(intx, TieredRateUpdateMinTime, 1, \ 3429279858Sjfv "Minimum rate sampling interval (in milliseconds)") \ 3430279858Sjfv \ 3431279858Sjfv product(intx, TieredRateUpdateMaxTime, 25, \ 3432279858Sjfv "Maximum rate sampling interval (in milliseconds)") \ 3433270346Sjfv \ 3434266423Sjfv product_pd(bool, TieredCompilation, \ 3435266423Sjfv "Enable tiered compilation") \ 3436270346Sjfv \ 3437270346Sjfv product(bool, PrintTieredEvents, false, \ 3438269198Sjfv "Print tiered events notifications") \ 3439266423Sjfv \ 3440266423Sjfv product_pd(intx, OnStackReplacePercentage, \ 3441266423Sjfv "NON_TIERED number of method invocations/branches (expressed as %"\ 3442266423Sjfv "of CompileThreshold) before (re-)compiling OSR code") \ 3443279858Sjfv \ 3444266423Sjfv product(intx, InterpreterProfilePercentage, 33, \ 3445279858Sjfv "NON_TIERED number of method invocations/branches (expressed as %"\ 3446279858Sjfv "of CompileThreshold) before profiling in the interpreter") \ 3447266423Sjfv \ 3448269198Sjfv develop(intx, MaxRecompilationSearchLength, 10, \ 3449269198Sjfv "max. # frames to inspect searching for recompilee") \ 3450279858Sjfv \ 3451266423Sjfv develop(intx, MaxInterpretedSearchLength, 3, \ 3452266423Sjfv "max. # interp. frames to skip when searching for recompilee") \ 3453266423Sjfv \ 3454266423Sjfv develop(intx, DesiredMethodLimit, 8000, \ 3455266423Sjfv "desired max. method size (in bytecodes) after inlining") \ 3456266423Sjfv \ 3457266423Sjfv develop(intx, HugeMethodLimit, 8000, \ 3458266423Sjfv "don't compile methods larger than this if " \ 3459266423Sjfv "+DontCompileHugeMethods") \ 3460279858Sjfv \ 3461279858Sjfv /* New JDK 1.4 reflection implementation */ \ 3462266423Sjfv \ 3463266423Sjfv develop(bool, UseNewReflection, true, \ 3464266423Sjfv "Temporary flag for transition to reflection based on dynamic " \ 3465269198Sjfv "bytecode generation in 1.4; can no longer be turned off in 1.4 " \ 3466279858Sjfv "JDK, and is unneeded in 1.3 JDK, but marks most places VM " \ 3467279858Sjfv "changes were needed") \ 3468266423Sjfv \ 3469266423Sjfv develop(bool, VerifyReflectionBytecodes, false, \ 3470269198Sjfv "Force verification of 1.4 reflection bytecodes. Does not work " \ 3471269198Sjfv "in situations like that described in 4486457 or for " \ 3472269198Sjfv "constructors generated for serialization, so can not be enabled "\ 3473269198Sjfv "in product.") \ 3474266423Sjfv \ 3475266423Sjfv product(bool, ReflectionWrapResolutionErrors, true, \ 3476269198Sjfv "Temporary flag for transition to AbstractMethodError wrapped " \ 3477266423Sjfv "in InvocationTargetException. See 6531596") \ 3478266423Sjfv \ 3479266423Sjfv \ 3480266423Sjfv develop(intx, FastSuperclassLimit, 8, \ 3481266423Sjfv "Depth of hardwired instanceof accelerator array") \ 3482269198Sjfv \ 3483266423Sjfv /* Properties for Java libraries */ \ 3484266423Sjfv \ 3485269198Sjfv product(uintx, MaxDirectMemorySize, 0, \ 3486266423Sjfv "Maximum total size of NIO direct-buffer allocations") \ 3487266423Sjfv \ 3488266423Sjfv /* temporary developer defined flags */ \ 3489266423Sjfv \ 3490266423Sjfv diagnostic(bool, UseNewCode, false, \ 3491266423Sjfv "Testing Only: Use the new version while testing") \ 3492266423Sjfv \ 3493266423Sjfv diagnostic(bool, UseNewCode2, false, \ 3494266423Sjfv "Testing Only: Use the new version while testing") \ 3495270346Sjfv \ 3496266423Sjfv diagnostic(bool, UseNewCode3, false, \ 3497266423Sjfv "Testing Only: Use the new version while testing") \ 3498266423Sjfv \ 3499266423Sjfv /* flags for performance data collection */ \ 3500266423Sjfv \ 3501266423Sjfv product(bool, UsePerfData, falseInEmbedded, \ 3502266423Sjfv "Flag to disable jvmstat instrumentation for performance testing" \ 3503266423Sjfv "and problem isolation purposes.") \ 3504266423Sjfv \ 3505266423Sjfv product(bool, PerfDataSaveToFile, false, \ 3506270346Sjfv "Save PerfData memory to hsperfdata_<pid> file on exit") \ 3507266423Sjfv \ 3508266423Sjfv product(ccstr, PerfDataSaveFile, NULL, \ 3509266423Sjfv "Save PerfData memory to the specified absolute pathname," \ 3510270346Sjfv "%p in the file name if present will be replaced by pid") \ 3511266423Sjfv \ 3512266423Sjfv product(intx, PerfDataSamplingInterval, 50 /*ms*/, \ 3513266423Sjfv "Data sampling interval in milliseconds") \ 3514270346Sjfv \ 3515266423Sjfv develop(bool, PerfTraceDataCreation, false, \ 3516266423Sjfv "Trace creation of Performance Data Entries") \ 3517266423Sjfv \ 3518266423Sjfv develop(bool, PerfTraceMemOps, false, \ 3519266423Sjfv "Trace PerfMemory create/attach/detach calls") \ 3520266423Sjfv \ 3521266423Sjfv product(bool, PerfDisableSharedMem, false, \ 3522266423Sjfv "Store performance data in standard memory") \ 3523269198Sjfv \ 3524266423Sjfv product(intx, PerfDataMemorySize, 32*K, \ 3525266423Sjfv "Size of performance data memory region. Will be rounded " \ 3526266423Sjfv "up to a multiple of the native os page size.") \ 3527266423Sjfv \ 3528266423Sjfv product(intx, PerfMaxStringConstLength, 1024, \ 3529266423Sjfv "Maximum PerfStringConstant string length before truncation") \ 3530266423Sjfv \ 3531266423Sjfv product(bool, PerfAllowAtExitRegistration, false, \ 3532266423Sjfv "Allow registration of atexit() methods") \ 3533266423Sjfv \ 3534270346Sjfv product(bool, PerfBypassFileSystemCheck, false, \ 3535297753Spfg "Bypass Win32 file system criteria checks (Windows Only)") \ 3536266423Sjfv \ 3537266423Sjfv product(intx, UnguardOnExecutionViolation, 0, \ 3538266423Sjfv "Unguard page and retry on no-execute fault (Win32 only)" \ 3539266423Sjfv "0=off, 1=conservative, 2=aggressive") \ 3540266423Sjfv \ 3541266423Sjfv /* Serviceability Support */ \ 3542266423Sjfv \ 3543266423Sjfv product(bool, ManagementServer, false, \ 3544266423Sjfv "Create JMX Management Server") \ 3545270346Sjfv \ 3546266423Sjfv product(bool, DisableAttachMechanism, false, \ 3547266423Sjfv "Disable mechanism that allows tools to attach to this VM") \ 3548266423Sjfv \ 3549269198Sjfv product(bool, StartAttachListener, false, \ 3550266423Sjfv "Always start Attach Listener at VM startup") \ 3551266423Sjfv \ 3552266423Sjfv manageable(bool, PrintConcurrentLocks, false, \ 3553266423Sjfv "Print java.util.concurrent locks in thread dump") \ 3554270346Sjfv \ 3555266423Sjfv product(bool, TransmitErrorReport, false, \ 3556270346Sjfv "Enable error report transmission on erroneous termination") \ 3557266423Sjfv \ 3558266423Sjfv product(ccstr, ErrorReportServer, NULL, \ 3559266423Sjfv "Override built-in error report server address") \ 3560266423Sjfv \ 3561266423Sjfv /* Shared spaces */ \ 3562266423Sjfv \ 3563266423Sjfv product(bool, UseSharedSpaces, true, \ 3564266423Sjfv "Use shared spaces for metadata") \ 3565266423Sjfv \ 3566266423Sjfv product(bool, RequireSharedSpaces, false, \ 3567266423Sjfv "Require shared spaces for metadata") \ 3568266423Sjfv \ 3569266423Sjfv product(bool, DumpSharedSpaces, false, \ 3570266423Sjfv "Special mode: JVM reads a class list, loads classes, builds " \ 3571266423Sjfv "shared spaces, and dumps the shared spaces to a file to be " \ 3572266423Sjfv "used in future JVM runs.") \ 3573266423Sjfv \ 3574266423Sjfv product(bool, PrintSharedSpaces, false, \ 3575266423Sjfv "Print usage of shared spaces") \ 3576266423Sjfv \ 3577266423Sjfv product(uintx, SharedReadWriteSize, NOT_LP64(12*M) LP64_ONLY(16*M), \ 3578266423Sjfv "Size of read-write space for metadata (in bytes)") \ 3579266423Sjfv \ 3580266423Sjfv product(uintx, SharedReadOnlySize, NOT_LP64(12*M) LP64_ONLY(16*M), \ 3581266423Sjfv "Size of read-only space for metadata (in bytes)") \ 3582266423Sjfv \ 3583266423Sjfv product(uintx, SharedMiscDataSize, NOT_LP64(2*M) LP64_ONLY(4*M), \ 3584266423Sjfv "Size of the shared miscellaneous data area (in bytes)") \ 3585266423Sjfv \ 3586266423Sjfv product(uintx, SharedMiscCodeSize, 120*K, \ 3587266423Sjfv "Size of the shared miscellaneous code area (in bytes)") \ 3588266423Sjfv \ 3589266423Sjfv product(uintx, SharedBaseAddress, LP64_ONLY(32*G) \ 3590266423Sjfv NOT_LP64(LINUX_ONLY(2*G) NOT_LINUX(0)), \ 3591266423Sjfv "Address to allocate shared memory region for class data") \ 3592266423Sjfv \ 3593270346Sjfv diagnostic(bool, EnableInvokeDynamic, true, \ 3594297753Spfg "support JSR 292 (method handles, invokedynamic, " \ 3595266423Sjfv "anonymous classes") \ 3596266423Sjfv \ 3597266423Sjfv diagnostic(bool, PrintMethodHandleStubs, false, \ 3598266423Sjfv "Print generated stub code for method handles") \ 3599266423Sjfv \ 3600266423Sjfv develop(bool, TraceMethodHandles, false, \ 3601266423Sjfv "trace internal method handle operations") \ 3602266423Sjfv \ 3603284049Sjfv diagnostic(bool, VerifyMethodHandles, trueInDebug, \ 3604266423Sjfv "perform extra checks when constructing method handles") \ 3605270346Sjfv \ 3606266423Sjfv diagnostic(bool, ShowHiddenFrames, false, \ 3607266423Sjfv "show method handle implementation frames (usually hidden)") \ 3608270346Sjfv \ 3609266423Sjfv experimental(bool, TrustFinalNonStaticFields, false, \ 3610270346Sjfv "trust final non-static declarations for constant folding") \ 3611266423Sjfv \ 3612266423Sjfv develop(bool, TraceInvokeDynamic, false, \ 3613277084Sjfv "trace internal invoke dynamic operations") \ 3614277084Sjfv \ 3615277084Sjfv diagnostic(bool, PauseAtStartup, false, \ 3616277084Sjfv "Causes the VM to pause at startup time and wait for the pause " \ 3617277084Sjfv "file to be removed (default: ./vm.paused.<pid>)") \ 3618277084Sjfv \ 3619277084Sjfv diagnostic(ccstr, PauseAtStartupFile, NULL, \ 3620277084Sjfv "The file to create and for whose removal to await when pausing " \ 3621277084Sjfv "at startup. (default: ./vm.paused.<pid>)") \ 3622277084Sjfv \ 3623277084Sjfv diagnostic(bool, PauseAtExit, false, \ 3624266423Sjfv "Pause and wait for keypress on exit if a debugger is attached") \ 3625277084Sjfv \ 3626277084Sjfv product(bool, ExtendedDTraceProbes, false, \ 3627277084Sjfv "Enable performance-impacting dtrace probes") \ 3628277084Sjfv \ 3629266423Sjfv product(bool, DTraceMethodProbes, false, \ 3630266423Sjfv "Enable dtrace probes for method-entry and method-exit") \ 3631277084Sjfv \ 3632277084Sjfv product(bool, DTraceAllocProbes, false, \ 3633266423Sjfv "Enable dtrace probes for object allocation") \ 3634266423Sjfv \ 3635277084Sjfv product(bool, DTraceMonitorProbes, false, \ 3636277084Sjfv "Enable dtrace probes for monitor events") \ 3637277084Sjfv \ 3638277084Sjfv product(bool, RelaxAccessControlCheck, false, \ 3639277084Sjfv "Relax the access control checks in the verifier") \ 3640277084Sjfv \ 3641277084Sjfv diagnostic(bool, PrintDTraceDOF, false, \ 3642277084Sjfv "Print the DTrace DOF passed to the system for JSDT probes") \ 3643277084Sjfv \ 3644277084Sjfv product(uintx, StringTableSize, defaultStringTableSize, \ 3645279033Sjfv "Number of buckets in the interned String table") \ 3646277151Sjfv \ 3647277084Sjfv develop(bool, TraceDefaultMethods, false, \ 3648277084Sjfv "Trace the default method processing steps") \ 3649277084Sjfv \ 3650277084Sjfv develop(bool, ParseAllGenericSignatures, false, \ 3651277084Sjfv "Parse all generic signatures while classloading") \ 3652266423Sjfv \ 3653266423Sjfv develop(bool, VerifyGenericSignatures, false, \ 3654266423Sjfv "Abort VM on erroneous or inconsistent generic signatures") \ 3655266423Sjfv \ 3656266423Sjfv product(bool, UseVMInterruptibleIO, false, \ 3657266423Sjfv "(Unstable, Solaris-specific) Thread interrupt before or with " \ 3658266423Sjfv "EINTR for I/O operations results in OS_INTRPT. The default value"\ 3659266423Sjfv " of this flag is true for JDK 6 and earlier") \ 3660266423Sjfv \ 3661266423Sjfv diagnostic(bool, WhiteBoxAPI, false, \ 3662266423Sjfv "Enable internal testing APIs") \ 3663266423Sjfv \ 3664277084Sjfv product(bool, PrintGCCause, true, \ 3665266423Sjfv "Include GC cause in GC logging") \ 3666266423Sjfv \ 3667266423Sjfv product(bool, AllowNonVirtualCalls, false, \ 3668266423Sjfv "Obey the ACC_SUPER flag and allow invokenonvirtual calls") 3669266423Sjfv 3670266423Sjfv/* 3671266423Sjfv * Macros for factoring of globals 3672266423Sjfv */ 3673266423Sjfv 3674266423Sjfv// Interface macros 3675277084Sjfv#define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; 3676277084Sjfv#define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; 3677277084Sjfv#define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; 3678277084Sjfv#define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name; 3679277084Sjfv#define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; 3680277084Sjfv#define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; 3681277084Sjfv#ifdef PRODUCT 3682277262Sjfv#define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; 3683277084Sjfv#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name; 3684277084Sjfv#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) 3685277084Sjfv#else 3686266423Sjfv#define DECLARE_DEVELOPER_FLAG(type, name, value, doc) extern "C" type name; 3687277084Sjfv#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) extern "C" type name; 3688266423Sjfv#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) extern "C" type name; 3689266423Sjfv#endif 3690266423Sjfv// Special LP64 flags, product only needed for now. 3691266423Sjfv#ifdef _LP64 3692266423Sjfv#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; 3693270346Sjfv#else 3694266423Sjfv#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value; 3695266423Sjfv#endif // _LP64 3696266423Sjfv 3697266423Sjfv// Implementation macros 3698266423Sjfv#define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc) type name = value; 3699266423Sjfv#define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc) type name = pd_##name; 3700266423Sjfv#define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value; 3701266423Sjfv#define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value; 3702266423Sjfv#define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value; 3703266423Sjfv#define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value; 3704266423Sjfv#ifdef PRODUCT 3705270346Sjfv#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */ 3706266423Sjfv#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) /* flag name is constant */ 3707270346Sjfv#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) 3708266423Sjfv#else 3709270346Sjfv#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) type name = value; 3710266423Sjfv#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) type name = pd_##name; 3711266423Sjfv#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) type name = value; 3712266423Sjfv#endif 3713266423Sjfv#ifdef _LP64 3714266423Sjfv#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value; 3715266423Sjfv#else 3716266423Sjfv#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */ 3717270346Sjfv#endif // _LP64 3718266423Sjfv 3719270346SjfvRUNTIME_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG, DECLARE_MANAGEABLE_FLAG, DECLARE_PRODUCT_RW_FLAG, DECLARE_LP64_PRODUCT_FLAG) 3720270346Sjfv 3721266423SjfvRUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG) 3722266423Sjfv 3723266423SjfvARCH_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_EXPERIMENTAL_FLAG, DECLARE_NOTPRODUCT_FLAG) 3724266423Sjfv 3725266423Sjfv// Extensions 3726266423Sjfv 3727266423Sjfv#include "runtime/globals_ext.hpp" 3728266423Sjfv 3729270346Sjfv#endif // SHARE_VM_RUNTIME_GLOBALS_HPP 3730266423Sjfv