globals.hpp revision 2215:dde920245681
1135446Strhodes/* 2262706Serwin * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 3135446Strhodes * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4135446Strhodes * 5174187Sdougb * This code is free software; you can redistribute it and/or modify it 6135446Strhodes * under the terms of the GNU General Public License version 2 only, as 7135446Strhodes * published by the Free Software Foundation. 8135446Strhodes * 9135446Strhodes * This code is distributed in the hope that it will be useful, but WITHOUT 10135446Strhodes * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11135446Strhodes * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12135446Strhodes * version 2 for more details (a copy is included in the LICENSE file that 13135446Strhodes * accompanied this code). 14135446Strhodes * 15135446Strhodes * You should have received a copy of the GNU General Public License version 16135446Strhodes * 2 along with this work; if not, write to the Free Software Foundation, 17135446Strhodes * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18254897Serwin * 19135446Strhodes * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20170222Sdougb * or visit www.oracle.com if you need additional information or have any 21170222Sdougb * questions. 22135446Strhodes * 23135446Strhodes */ 24135446Strhodes 25135446Strhodes#ifndef SHARE_VM_RUNTIME_GLOBALS_HPP 26135446Strhodes#define SHARE_VM_RUNTIME_GLOBALS_HPP 27135446Strhodes 28135446Strhodes#include "utilities/debug.hpp" 29135446Strhodes#ifdef TARGET_ARCH_x86 30135446Strhodes# include "globals_x86.hpp" 31135446Strhodes#endif 32135446Strhodes#ifdef TARGET_ARCH_sparc 33135446Strhodes# include "globals_sparc.hpp" 34135446Strhodes#endif 35135446Strhodes#ifdef TARGET_ARCH_zero 36170222Sdougb# include "globals_zero.hpp" 37170222Sdougb#endif 38170222Sdougb#ifdef TARGET_ARCH_arm 39170222Sdougb# include "globals_arm.hpp" 40170222Sdougb#endif 41170222Sdougb#ifdef TARGET_ARCH_ppc 42170222Sdougb# include "globals_ppc.hpp" 43170222Sdougb#endif 44170222Sdougb#ifdef TARGET_OS_FAMILY_linux 45170222Sdougb# include "globals_linux.hpp" 46170222Sdougb#endif 47135446Strhodes#ifdef TARGET_OS_FAMILY_solaris 48135446Strhodes# include "globals_solaris.hpp" 49262706Serwin#endif 50135446Strhodes#ifdef TARGET_OS_FAMILY_windows 51135446Strhodes# include "globals_windows.hpp" 52262706Serwin#endif 53135446Strhodes#ifdef TARGET_OS_ARCH_linux_x86 54135446Strhodes# include "globals_linux_x86.hpp" 55135446Strhodes#endif 56135446Strhodes#ifdef TARGET_OS_ARCH_linux_sparc 57135446Strhodes# include "globals_linux_sparc.hpp" 58224092Sdougb#endif 59135446Strhodes#ifdef TARGET_OS_ARCH_linux_zero 60135446Strhodes# include "globals_linux_zero.hpp" 61135446Strhodes#endif 62135446Strhodes#ifdef TARGET_OS_ARCH_solaris_x86 63135446Strhodes# include "globals_solaris_x86.hpp" 64135446Strhodes#endif 65135446Strhodes#ifdef TARGET_OS_ARCH_solaris_sparc 66135446Strhodes# include "globals_solaris_sparc.hpp" 67135446Strhodes#endif 68135446Strhodes#ifdef TARGET_OS_ARCH_windows_x86 69135446Strhodes# include "globals_windows_x86.hpp" 70135446Strhodes#endif 71234010Sdougb#ifdef TARGET_OS_ARCH_linux_arm 72135446Strhodes# include "globals_linux_arm.hpp" 73135446Strhodes#endif 74135446Strhodes#ifdef TARGET_OS_ARCH_linux_ppc 75135446Strhodes# include "globals_linux_ppc.hpp" 76153816Sdougb#endif 77135446Strhodes#ifdef COMPILER1 78224092Sdougb#ifdef TARGET_ARCH_x86 79135446Strhodes# include "c1_globals_x86.hpp" 80135446Strhodes#endif 81135446Strhodes#ifdef TARGET_ARCH_sparc 82135446Strhodes# include "c1_globals_sparc.hpp" 83224092Sdougb#endif 84135446Strhodes#ifdef TARGET_ARCH_arm 85135446Strhodes# include "c1_globals_arm.hpp" 86135446Strhodes#endif 87234010Sdougb#ifdef TARGET_ARCH_ppc 88135446Strhodes# include "c1_globals_ppc.hpp" 89135446Strhodes#endif 90135446Strhodes#ifdef TARGET_OS_FAMILY_linux 91135446Strhodes# include "c1_globals_linux.hpp" 92135446Strhodes#endif 93135446Strhodes#ifdef TARGET_OS_FAMILY_solaris 94224092Sdougb# include "c1_globals_solaris.hpp" 95224092Sdougb#endif 96135446Strhodes#ifdef TARGET_OS_FAMILY_windows 97135446Strhodes# include "c1_globals_windows.hpp" 98135446Strhodes#endif 99135446Strhodes#endif 100135446Strhodes#ifdef COMPILER2 101135446Strhodes#ifdef TARGET_ARCH_x86 102135446Strhodes# include "c2_globals_x86.hpp" 103135446Strhodes#endif 104135446Strhodes#ifdef TARGET_ARCH_sparc 105135446Strhodes# include "c2_globals_sparc.hpp" 106135446Strhodes#endif 107135446Strhodes#ifdef TARGET_ARCH_arm 108135446Strhodes# include "c2_globals_arm.hpp" 109135446Strhodes#endif 110135446Strhodes#ifdef TARGET_OS_FAMILY_linux 111135446Strhodes# include "c2_globals_linux.hpp" 112135446Strhodes#endif 113135446Strhodes#ifdef TARGET_OS_FAMILY_solaris 114153816Sdougb# include "c2_globals_solaris.hpp" 115135446Strhodes#endif 116153816Sdougb#ifdef TARGET_OS_FAMILY_windows 117135446Strhodes# include "c2_globals_windows.hpp" 118135446Strhodes#endif 119170222Sdougb#endif 120135446Strhodes#ifdef SHARK 121135446Strhodes#ifdef TARGET_ARCH_zero 122135446Strhodes# include "shark_globals_zero.hpp" 123135446Strhodes#endif 124135446Strhodes#endif 125135446Strhodes 126170222Sdougb#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK) 127135446Strhodesdefine_pd_global(bool, BackgroundCompilation, false); 128262706Serwindefine_pd_global(bool, UseTLAB, false); 129262706Serwindefine_pd_global(bool, CICompileOSR, false); 130135446Strhodesdefine_pd_global(bool, UseTypeProfile, false); 131135446Strhodesdefine_pd_global(bool, UseOnStackReplacement, false); 132170222Sdougbdefine_pd_global(bool, InlineIntrinsics, false); 133135446Strhodesdefine_pd_global(bool, PreferInterpreterNativeStubs, true); 134224092Sdougbdefine_pd_global(bool, ProfileInterpreter, false); 135135446Strhodesdefine_pd_global(bool, ProfileTraps, false); 136135446Strhodesdefine_pd_global(bool, TieredCompilation, false); 137135446Strhodes 138135446Strhodesdefine_pd_global(intx, CompileThreshold, 0); 139135446Strhodesdefine_pd_global(intx, BackEdgeThreshold, 0); 140135446Strhodes 141135446Strhodesdefine_pd_global(intx, OnStackReplacePercentage, 0); 142135446Strhodesdefine_pd_global(bool, ResizeTLAB, false); 143135446Strhodesdefine_pd_global(intx, FreqInlineSize, 0); 144135446Strhodesdefine_pd_global(intx, InlineSmallCode, 0); 145135446Strhodesdefine_pd_global(intx, NewSizeThreadIncrease, 4*K); 146135446Strhodesdefine_pd_global(intx, InlineClassNatives, true); 147135446Strhodesdefine_pd_global(intx, InlineUnsafeOps, true); 148170222Sdougbdefine_pd_global(intx, InitialCodeCacheSize, 160*K); 149170222Sdougbdefine_pd_global(intx, ReservedCodeCacheSize, 32*M); 150170222Sdougbdefine_pd_global(intx, CodeCacheExpansionSize, 32*K); 151170222Sdougbdefine_pd_global(intx, CodeCacheMinBlockLength, 1); 152170222Sdougbdefine_pd_global(uintx,PermSize, ScaleForWordSize(4*M)); 153170222Sdougbdefine_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M)); 154170222Sdougbdefine_pd_global(bool, NeverActAsServerClassMachine, true); 155170222Sdougbdefine_pd_global(uint64_t,MaxRAM, 1ULL*G); 156170222Sdougb#define CI_COMPILER_COUNT 0 157170222Sdougb#else 158174187Sdougb 159170222Sdougb#ifdef COMPILER2 160170222Sdougb#define CI_COMPILER_COUNT 2 161262706Serwin#else 162262706Serwin#define CI_COMPILER_COUNT 1 163262706Serwin#endif // COMPILER2 164170222Sdougb 165135446Strhodes#endif // no compilers 166170222Sdougb 167170222Sdougb 168170222Sdougb// string type aliases used only in this file 169170222Sdougbtypedef const char* ccstr; 170170222Sdougbtypedef const char* ccstrlist; // represents string arguments which accumulate 171170222Sdougb 172170222Sdougbenum FlagValueOrigin { 173135446Strhodes DEFAULT = 0, 174135446Strhodes COMMAND_LINE = 1, 175135446Strhodes ENVIRON_VAR = 2, 176135446Strhodes CONFIG_FILE = 3, 177135446Strhodes MANAGEMENT = 4, 178135446Strhodes ERGONOMIC = 5, 179170222Sdougb ATTACH_ON_DEMAND = 6, 180170222Sdougb INTERNAL = 99 181135446Strhodes}; 182135446Strhodes 183135446Strhodesstruct Flag { 184135446Strhodes const char *type; 185135446Strhodes const char *name; 186135446Strhodes void* addr; 187262706Serwin 188135446Strhodes NOT_PRODUCT(const char *doc;) 189135446Strhodes 190135446Strhodes const char *kind; 191135446Strhodes FlagValueOrigin origin; 192135446Strhodes 193135446Strhodes // points to all Flags static array 194135446Strhodes static Flag *flags; 195153816Sdougb 196135446Strhodes // number of flags 197135446Strhodes static size_t numFlags; 198135446Strhodes 199135446Strhodes static Flag* find_flag(char* name, size_t length); 200135446Strhodes 201135446Strhodes bool is_bool() const { return strcmp(type, "bool") == 0; } 202135446Strhodes bool get_bool() const { return *((bool*) addr); } 203135446Strhodes void set_bool(bool value) { *((bool*) addr) = value; } 204135446Strhodes 205153816Sdougb bool is_intx() const { return strcmp(type, "intx") == 0; } 206135446Strhodes intx get_intx() const { return *((intx*) addr); } 207135446Strhodes void set_intx(intx value) { *((intx*) addr) = value; } 208135446Strhodes 209135446Strhodes bool is_uintx() const { return strcmp(type, "uintx") == 0; } 210153816Sdougb uintx get_uintx() const { return *((uintx*) addr); } 211135446Strhodes void set_uintx(uintx value) { *((uintx*) addr) = value; } 212135446Strhodes 213135446Strhodes bool is_uint64_t() const { return strcmp(type, "uint64_t") == 0; } 214135446Strhodes uint64_t get_uint64_t() const { return *((uint64_t*) addr); } 215153816Sdougb void set_uint64_t(uint64_t value) { *((uint64_t*) addr) = value; } 216135446Strhodes 217135446Strhodes bool is_double() const { return strcmp(type, "double") == 0; } 218135446Strhodes double get_double() const { return *((double*) addr); } 219135446Strhodes void set_double(double value) { *((double*) addr) = value; } 220153816Sdougb 221135446Strhodes bool is_ccstr() const { return strcmp(type, "ccstr") == 0 || strcmp(type, "ccstrlist") == 0; } 222135446Strhodes bool ccstr_accumulates() const { return strcmp(type, "ccstrlist") == 0; } 223135446Strhodes ccstr get_ccstr() const { return *((ccstr*) addr); } 224153816Sdougb void set_ccstr(ccstr value) { *((ccstr*) addr) = value; } 225153816Sdougb 226153816Sdougb bool is_unlocker() const; 227135446Strhodes bool is_unlocked() const; 228153816Sdougb bool is_writeable() const; 229135446Strhodes bool is_external() const; 230153816Sdougb 231153816Sdougb void print_on(outputStream* st, bool withComments = false ); 232153816Sdougb void print_as_flag(outputStream* st); 233135446Strhodes}; 234135446Strhodes 235153816Sdougb// debug flags control various aspects of the VM and are global accessible 236135446Strhodes 237135446Strhodes// use FlagSetting to temporarily change some debug flag 238135446Strhodes// e.g. FlagSetting fs(DebugThisAndThat, true); 239153816Sdougb// restored to previous value upon leaving scope 240153816Sdougbclass FlagSetting { 241135446Strhodes bool val; 242135446Strhodes bool* flag; 243135446Strhodes public: 244135446Strhodes FlagSetting(bool& fl, bool newValue) { flag = &fl; val = fl; fl = newValue; } 245153816Sdougb ~FlagSetting() { *flag = val; } 246135446Strhodes}; 247135446Strhodes 248135446Strhodes 249135446Strhodesclass CounterSetting { 250135446Strhodes intx* counter; 251135446Strhodes public: 252153816Sdougb CounterSetting(intx* cnt) { counter = cnt; (*counter)++; } 253135446Strhodes ~CounterSetting() { (*counter)--; } 254135446Strhodes}; 255135446Strhodes 256135446Strhodes 257135446Strhodesclass IntFlagSetting { 258135446Strhodes intx val; 259153816Sdougb intx* flag; 260153816Sdougb public: 261153816Sdougb IntFlagSetting(intx& fl, intx newValue) { flag = &fl; val = fl; fl = newValue; } 262262706Serwin ~IntFlagSetting() { *flag = val; } 263262706Serwin}; 264135446Strhodes 265153816Sdougb 266153816Sdougbclass DoubleFlagSetting { 267153816Sdougb double val; 268135446Strhodes double* flag; 269135446Strhodes public: 270153816Sdougb DoubleFlagSetting(double& fl, double newValue) { flag = &fl; val = fl; fl = newValue; } 271153816Sdougb ~DoubleFlagSetting() { *flag = val; } 272153816Sdougb}; 273135446Strhodes 274153816Sdougb 275135446Strhodesclass CommandLineFlags { 276135446Strhodes public: 277153816Sdougb static bool boolAt(char* name, size_t len, bool* value); 278135446Strhodes static bool boolAt(char* name, bool* value) { return boolAt(name, strlen(name), value); } 279135446Strhodes static bool boolAtPut(char* name, size_t len, bool* value, FlagValueOrigin origin); 280135446Strhodes static bool boolAtPut(char* name, bool* value, FlagValueOrigin origin) { return boolAtPut(name, strlen(name), value, origin); } 281153816Sdougb 282153816Sdougb static bool intxAt(char* name, size_t len, intx* value); 283153816Sdougb static bool intxAt(char* name, intx* value) { return intxAt(name, strlen(name), value); } 284153816Sdougb static bool intxAtPut(char* name, size_t len, intx* value, FlagValueOrigin origin); 285153816Sdougb static bool intxAtPut(char* name, intx* value, FlagValueOrigin origin) { return intxAtPut(name, strlen(name), value, origin); } 286153816Sdougb 287153816Sdougb static bool uintxAt(char* name, size_t len, uintx* value); 288135446Strhodes static bool uintxAt(char* name, uintx* value) { return uintxAt(name, strlen(name), value); } 289153816Sdougb static bool uintxAtPut(char* name, size_t len, uintx* value, FlagValueOrigin origin); 290135446Strhodes static bool uintxAtPut(char* name, uintx* value, FlagValueOrigin origin) { return uintxAtPut(name, strlen(name), value, origin); } 291135446Strhodes 292135446Strhodes static bool uint64_tAt(char* name, size_t len, uint64_t* value); 293135446Strhodes static bool uint64_tAt(char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); } 294186462Sdougb static bool uint64_tAtPut(char* name, size_t len, uint64_t* value, FlagValueOrigin origin); 295135446Strhodes static bool uint64_tAtPut(char* name, uint64_t* value, FlagValueOrigin origin) { return uint64_tAtPut(name, strlen(name), value, origin); } 296135446Strhodes 297135446Strhodes static bool doubleAt(char* name, size_t len, double* value); 298153816Sdougb static bool doubleAt(char* name, double* value) { return doubleAt(name, strlen(name), value); } 299135446Strhodes static bool doubleAtPut(char* name, size_t len, double* value, FlagValueOrigin origin); 300135446Strhodes static bool doubleAtPut(char* name, double* value, FlagValueOrigin origin) { return doubleAtPut(name, strlen(name), value, origin); } 301153816Sdougb 302135446Strhodes static bool ccstrAt(char* name, size_t len, ccstr* value); 303135446Strhodes static bool ccstrAt(char* name, ccstr* value) { return ccstrAt(name, strlen(name), value); } 304135446Strhodes static bool ccstrAtPut(char* name, size_t len, ccstr* value, FlagValueOrigin origin); 305135446Strhodes static bool ccstrAtPut(char* name, ccstr* value, FlagValueOrigin origin) { return ccstrAtPut(name, strlen(name), value, origin); } 306135446Strhodes 307135446Strhodes // Returns false if name is not a command line flag. 308135446Strhodes static bool wasSetOnCmdline(const char* name, bool* value); 309135446Strhodes static void printSetFlags(); 310135446Strhodes 311135446Strhodes static void printFlags(bool withComments = false ); 312135446Strhodes 313135446Strhodes static void verify() PRODUCT_RETURN; 314135446Strhodes}; 315135446Strhodes 316135446Strhodes// use this for flags that are true by default in the debug version but 317135446Strhodes// false in the optimized version, and vice versa 318135446Strhodes#ifdef ASSERT 319135446Strhodes#define trueInDebug true 320135446Strhodes#define falseInDebug false 321135446Strhodes#else 322135446Strhodes#define trueInDebug false 323153816Sdougb#define falseInDebug true 324135446Strhodes#endif 325135446Strhodes 326135446Strhodes// use this for flags that are true per default in the product build 327135446Strhodes// but false in development builds, and vice versa 328135446Strhodes#ifdef PRODUCT 329135446Strhodes#define trueInProduct true 330135446Strhodes#define falseInProduct false 331153816Sdougb#else 332153816Sdougb#define trueInProduct false 333135446Strhodes#define falseInProduct true 334135446Strhodes#endif 335153816Sdougb 336135446Strhodes// use this for flags that are true per default in the tiered build 337135446Strhodes// but false in non-tiered builds, and vice versa 338135446Strhodes#ifdef TIERED 339143731Sdougb#define trueInTiered true 340143731Sdougb#define falseInTiered false 341170222Sdougb#else 342135446Strhodes#define trueInTiered false 343135446Strhodes#define falseInTiered true 344135446Strhodes#endif 345135446Strhodes 346135446Strhodes// develop flags are settable / visible only during development and are constant in the PRODUCT version 347135446Strhodes// product flags are always settable / visible 348135446Strhodes// notproduct flags are settable / visible only during development and are not declared in the PRODUCT version 349135446Strhodes 350135446Strhodes// A flag must be declared with one of the following types: 351135446Strhodes// bool, intx, uintx, ccstr. 352135446Strhodes// The type "ccstr" is an alias for "const char*" and is used 353135446Strhodes// only in this file, because the macrology requires single-token type names. 354135446Strhodes 355135446Strhodes// Note: Diagnostic options not meant for VM tuning or for product modes. 356135446Strhodes// They are to be used for VM quality assurance or field diagnosis 357135446Strhodes// of VM bugs. They are hidden so that users will not be encouraged to 358135446Strhodes// try them as if they were VM ordinary execution options. However, they 359135446Strhodes// are available in the product version of the VM. Under instruction 360135446Strhodes// from support engineers, VM customers can turn them on to collect 361135446Strhodes// diagnostic information about VM problems. To use a VM diagnostic 362135446Strhodes// option, you must first specify +UnlockDiagnosticVMOptions. 363165071Sdougb// (This master switch also affects the behavior of -Xprintflags.) 364165071Sdougb// 365165071Sdougb// experimental flags are in support of features that are not 366135446Strhodes// part of the officially supported product, but are available 367135446Strhodes// for experimenting with. They could, for example, be performance 368135446Strhodes// features that may not have undergone full or rigorous QA, but which may 369135446Strhodes// help performance in some cases and released for experimentation 370135446Strhodes// by the community of users and developers. This flag also allows one to 371135446Strhodes// be able to build a fully supported product that nonetheless also 372135446Strhodes// ships with some unsupported, lightly tested, experimental features. 373135446Strhodes// Like the UnlockDiagnosticVMOptions flag above, there is a corresponding 374135446Strhodes// UnlockExperimentalVMOptions flag, which allows the control and 375135446Strhodes// modification of the experimental flags. 376135446Strhodes// 377135446Strhodes// Nota bene: neither diagnostic nor experimental options should be used casually, 378135446Strhodes// and they are not supported on production loads, except under explicit 379135446Strhodes// direction from support engineers. 380135446Strhodes// 381135446Strhodes// manageable flags are writeable external product flags. 382135446Strhodes// They are dynamically writeable through the JDK management interface 383135446Strhodes// (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. 384135446Strhodes// These flags are external exported interface (see CCC). The list of 385135446Strhodes// manageable flags can be queried programmatically through the management 386135446Strhodes// interface. 387135446Strhodes// 388135446Strhodes// A flag can be made as "manageable" only if 389135446Strhodes// - the flag is defined in a CCC as an external exported interface. 390135446Strhodes// - the VM implementation supports dynamic setting of the flag. 391135446Strhodes// This implies that the VM must *always* query the flag variable 392135446Strhodes// and not reuse state related to the flag state at any given time. 393135446Strhodes// - you want the flag to be queried programmatically by the customers. 394135446Strhodes// 395135446Strhodes// product_rw flags are writeable internal product flags. 396135446Strhodes// They are like "manageable" flags but for internal/private use. 397135446Strhodes// The list of product_rw flags are internal/private flags which 398135446Strhodes// may be changed/removed in a future release. It can be set 399135446Strhodes// through the management interface to get/set value 400135446Strhodes// when the name of flag is supplied. 401135446Strhodes// 402135446Strhodes// A flag can be made as "product_rw" only if 403135446Strhodes// - the VM implementation supports dynamic setting of the flag. 404135446Strhodes// This implies that the VM must *always* query the flag variable 405135446Strhodes// and not reuse state related to the flag state at any given time. 406135446Strhodes// 407135446Strhodes// Note that when there is a need to support develop flags to be writeable, 408135446Strhodes// it can be done in the same way as product_rw. 409135446Strhodes 410224092Sdougb#define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \ 411135446Strhodes \ 412135446Strhodes lp64_product(bool, UseCompressedOops, false, \ 413135446Strhodes "Use 32-bit object references in 64-bit VM. " \ 414135446Strhodes "lp64_product means flag is always constant in 32 bit VM") \ 415135446Strhodes \ 416135446Strhodes notproduct(bool, CheckCompressedOops, true, \ 417135446Strhodes "generate checks in encoding/decoding code in debug VM") \ 418224092Sdougb \ 419224092Sdougb product_pd(uintx, HeapBaseMinAddress, \ 420224092Sdougb "OS specific low limit for heap base address") \ 421224092Sdougb \ 422224092Sdougb diagnostic(bool, PrintCompressedOopsMode, false, \ 423224092Sdougb "Print compressed oops base address and encoding mode") \ 424224092Sdougb \ 425224092Sdougb lp64_product(intx, ObjectAlignmentInBytes, 8, \ 426135446Strhodes "Default object alignment in bytes, 8 is minimum") \ 427224092Sdougb \ 428135446Strhodes /* UseMembar is theoretically a temp flag used for memory barrier \ 429224092Sdougb * removal testing. It was supposed to be removed before FCS but has \ 430224092Sdougb * been re-added (see 6401008) */ \ 431224092Sdougb product_pd(bool, UseMembar, \ 432224092Sdougb "(Unstable) Issues membars on thread state transitions") \ 433224092Sdougb \ 434224092Sdougb /* Temp PPC Flag to allow disabling the use of lwsync on ppc platforms \ 435224092Sdougb * that don't support it. This will be replaced by processor detection \ 436224092Sdougb * logic. \ 437224092Sdougb */ \ 438224092Sdougb product(bool, UsePPCLWSYNC, true, \ 439135446Strhodes "Use lwsync instruction if true, else use slower sync") \ 440224092Sdougb \ 441135446Strhodes /* Temporary: See 6948537 */ \ 442135446Strhodes experimental(bool, UseMemSetInBOT, true, \ 443170222Sdougb "(Unstable) uses memset in BOT updates in GC code") \ 444135446Strhodes \ 445135446Strhodes diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug, \ 446135446Strhodes "Enable normal processing of flags relating to field diagnostics")\ 447135446Strhodes \ 448135446Strhodes experimental(bool, UnlockExperimentalVMOptions, false, \ 449135446Strhodes "Enable normal processing of flags relating to experimental features")\ 450135446Strhodes \ 451262706Serwin product(bool, JavaMonitorsInStackTrace, true, \ 452135446Strhodes "Print info. about Java monitor locks when the stacks are dumped")\ 453135446Strhodes \ 454135446Strhodes product_pd(bool, UseLargePages, \ 455135446Strhodes "Use large page memory") \ 456135446Strhodes \ 457135446Strhodes product_pd(bool, UseLargePagesIndividualAllocation, \ 458135446Strhodes "Allocate large pages individually for better affinity") \ 459135446Strhodes \ 460135446Strhodes develop(bool, LargePagesIndividualAllocationInjectError, false, \ 461135446Strhodes "Fail large pages individual allocation") \ 462135446Strhodes \ 463135446Strhodes develop(bool, TracePageSizes, false, \ 464135446Strhodes "Trace page size selection and usage.") \ 465135446Strhodes \ 466135446Strhodes product(bool, UseNUMA, false, \ 467135446Strhodes "Use NUMA if available") \ 468262706Serwin \ 469135446Strhodes product(bool, ForceNUMA, false, \ 470135446Strhodes "Force NUMA optimizations on single-node/UMA systems") \ 471135446Strhodes \ 472135446Strhodes product(intx, NUMAChunkResizeWeight, 20, \ 473135446Strhodes "Percentage (0-100) used to weight the current sample when " \ 474135446Strhodes "computing exponentially decaying average for " \ 475135446Strhodes "AdaptiveNUMAChunkSizing") \ 476135446Strhodes \ 477135446Strhodes product(intx, NUMASpaceResizeRate, 1*G, \ 478135446Strhodes "Do not reallocate more that this amount per collection") \ 479135446Strhodes \ 480135446Strhodes product(bool, UseAdaptiveNUMAChunkSizing, true, \ 481135446Strhodes "Enable adaptive chunk sizing for NUMA") \ 482135446Strhodes \ 483135446Strhodes product(bool, NUMAStats, false, \ 484135446Strhodes "Print NUMA stats in detailed heap information") \ 485135446Strhodes \ 486135446Strhodes product(intx, NUMAPageScanRate, 256, \ 487135446Strhodes "Maximum number of pages to include in the page scan procedure") \ 488135446Strhodes \ 489135446Strhodes product_pd(bool, NeedsDeoptSuspend, \ 490135446Strhodes "True for register window machines (sparc/ia64)") \ 491135446Strhodes \ 492135446Strhodes product(intx, UseSSE, 99, \ 493135446Strhodes "Highest supported SSE instructions set on x86/x64") \ 494135446Strhodes \ 495135446Strhodes product(uintx, LargePageSizeInBytes, 0, \ 496135446Strhodes "Large page size (0 to let VM choose the page size") \ 497135446Strhodes \ 498262706Serwin product(uintx, LargePageHeapSizeThreshold, 128*M, \ 499135446Strhodes "Use large pages if max heap is at least this big") \ 500135446Strhodes \ 501135446Strhodes product(bool, ForceTimeHighResolution, false, \ 502135446Strhodes "Using high time resolution(For Win32 only)") \ 503135446Strhodes \ 504135446Strhodes develop(bool, TraceItables, false, \ 505135446Strhodes "Trace initialization and use of itables") \ 506135446Strhodes \ 507135446Strhodes develop(bool, TracePcPatching, false, \ 508135446Strhodes "Trace usage of frame::patch_pc") \ 509135446Strhodes \ 510135446Strhodes develop(bool, TraceJumps, false, \ 511135446Strhodes "Trace assembly jumps in thread ring buffer") \ 512135446Strhodes \ 513135446Strhodes develop(bool, TraceRelocator, false, \ 514135446Strhodes "Trace the bytecode relocator") \ 515135446Strhodes \ 516135446Strhodes develop(bool, TraceLongCompiles, false, \ 517135446Strhodes "Print out every time compilation is longer than " \ 518135446Strhodes "a given threashold") \ 519135446Strhodes \ 520135446Strhodes develop(bool, SafepointALot, false, \ 521135446Strhodes "Generates a lot of safepoints. Works with " \ 522135446Strhodes "GuaranteedSafepointInterval") \ 523135446Strhodes \ 524135446Strhodes product_pd(bool, BackgroundCompilation, \ 525135446Strhodes "A thread requesting compilation is not blocked during " \ 526135446Strhodes "compilation") \ 527135446Strhodes \ 528186462Sdougb product(bool, PrintVMQWaitTime, false, \ 529135446Strhodes "Prints out the waiting time in VM operation queue") \ 530135446Strhodes \ 531135446Strhodes develop(bool, BailoutToInterpreterForThrows, false, \ 532135446Strhodes "Compiled methods which throws/catches exceptions will be " \ 533135446Strhodes "deopt and intp.") \ 534135446Strhodes \ 535135446Strhodes develop(bool, NoYieldsInMicrolock, false, \ 536135446Strhodes "Disable yields in microlock") \ 537135446Strhodes \ 538135446Strhodes develop(bool, TraceOopMapGeneration, false, \ 539135446Strhodes "Shows oopmap generation") \ 540135446Strhodes \ 541135446Strhodes product(bool, MethodFlushing, true, \ 542135446Strhodes "Reclamation of zombie and not-entrant methods") \ 543135446Strhodes \ 544262706Serwin develop(bool, VerifyStack, false, \ 545135446Strhodes "Verify stack of each thread when it is entering a runtime call") \ 546135446Strhodes \ 547186462Sdougb develop(bool, ForceUnreachable, false, \ 548262706Serwin "(amd64) Make all non code cache addresses to be unreachable with rip-rel forcing use of 64bit literal fixups") \ 549262706Serwin \ 550262706Serwin notproduct(bool, StressDerivedPointers, false, \ 551262706Serwin "Force scavenge when a derived pointers is detected on stack " \ 552262706Serwin "after rtm call") \ 553135446Strhodes \ 554135446Strhodes develop(bool, TraceDerivedPointers, false, \ 555135446Strhodes "Trace traversal of derived pointers on stack") \ 556135446Strhodes \ 557135446Strhodes notproduct(bool, TraceCodeBlobStacks, false, \ 558135446Strhodes "Trace stack-walk of codeblobs") \ 559135446Strhodes \ 560135446Strhodes product(bool, PrintJNIResolving, false, \ 561135446Strhodes "Used to implement -v:jni") \ 562135446Strhodes \ 563135446Strhodes notproduct(bool, PrintRewrites, false, \ 564135446Strhodes "Print methods that are being rewritten") \ 565135446Strhodes \ 566135446Strhodes product(bool, UseInlineCaches, true, \ 567170222Sdougb "Use Inline Caches for virtual calls ") \ 568135446Strhodes \ 569135446Strhodes develop(bool, InlineArrayCopy, true, \ 570135446Strhodes "inline arraycopy native that is known to be part of " \ 571135446Strhodes "base library DLL") \ 572135446Strhodes \ 573143731Sdougb develop(bool, InlineObjectHash, true, \ 574135446Strhodes "inline Object::hashCode() native that is known to be part " \ 575135446Strhodes "of base library DLL") \ 576135446Strhodes \ 577135446Strhodes develop(bool, InlineObjectCopy, true, \ 578135446Strhodes "inline Object.clone and Arrays.copyOf[Range] intrinsics") \ 579135446Strhodes \ 580135446Strhodes develop(bool, InlineNatives, true, \ 581135446Strhodes "inline natives that are known to be part of base library DLL") \ 582135446Strhodes \ 583225361Sdougb develop(bool, InlineMathNatives, true, \ 584225361Sdougb "inline SinD, CosD, etc.") \ 585135446Strhodes \ 586135446Strhodes develop(bool, InlineClassNatives, true, \ 587135446Strhodes "inline Class.isInstance, etc") \ 588143731Sdougb \ 589135446Strhodes develop(bool, InlineAtomicLong, true, \ 590135446Strhodes "inline sun.misc.AtomicLong") \ 591135446Strhodes \ 592135446Strhodes develop(bool, InlineThreadNatives, true, \ 593135446Strhodes "inline Thread.currentThread, etc") \ 594135446Strhodes \ 595135446Strhodes develop(bool, InlineReflectionGetCallerClass, true, \ 596135446Strhodes "inline sun.reflect.Reflection.getCallerClass(), known to be part "\ 597135446Strhodes "of base library DLL") \ 598135446Strhodes \ 599135446Strhodes develop(bool, InlineUnsafeOps, true, \ 600135446Strhodes "inline memory ops (native methods) from sun.misc.Unsafe") \ 601135446Strhodes \ 602135446Strhodes develop(bool, ConvertCmpD2CmpF, true, \ 603135446Strhodes "Convert cmpD to cmpF when one input is constant in float range") \ 604135446Strhodes \ 605135446Strhodes develop(bool, ConvertFloat2IntClipping, true, \ 606143731Sdougb "Convert float2int clipping idiom to integer clipping") \ 607170222Sdougb \ 608135446Strhodes develop(bool, SpecialStringCompareTo, true, \ 609135446Strhodes "special version of string compareTo") \ 610135446Strhodes \ 611135446Strhodes develop(bool, SpecialStringIndexOf, true, \ 612135446Strhodes "special version of string indexOf") \ 613135446Strhodes \ 614135446Strhodes develop(bool, SpecialStringEquals, true, \ 615135446Strhodes "special version of string equals") \ 616135446Strhodes \ 617135446Strhodes develop(bool, SpecialArraysEquals, true, \ 618135446Strhodes "special version of Arrays.equals(char[],char[])") \ 619135446Strhodes \ 620135446Strhodes product(bool, UseSSE42Intrinsics, false, \ 621135446Strhodes "SSE4.2 versions of intrinsics") \ 622193149Sdougb \ 623193149Sdougb develop(bool, TraceCallFixup, false, \ 624193149Sdougb "traces all call fixups") \ 625193149Sdougb \ 626193149Sdougb develop(bool, DeoptimizeALot, false, \ 627135446Strhodes "deoptimize at every exit from the runtime system") \ 628135446Strhodes \ 629143731Sdougb notproduct(ccstrlist, DeoptimizeOnlyAt, "", \ 630135446Strhodes "a comma separated list of bcis to deoptimize at") \ 631135446Strhodes \ 632135446Strhodes product(bool, DeoptimizeRandom, false, \ 633135446Strhodes "deoptimize random frames on random exit from the runtime system")\ 634143731Sdougb \ 635135446Strhodes notproduct(bool, ZombieALot, false, \ 636135446Strhodes "creates zombies (non-entrant) at exit from the runt. system") \ 637135446Strhodes \ 638135446Strhodes product(bool, UnlinkSymbolsALot, false, \ 639135446Strhodes "unlink unreferenced symbols from the symbol table at safepoints")\ 640135446Strhodes \ 641135446Strhodes notproduct(bool, WalkStackALot, false, \ 642135446Strhodes "trace stack (no print) at every exit from the runtime system") \ 643135446Strhodes \ 644135446Strhodes develop(bool, Debugging, false, \ 645135446Strhodes "set when executing debug methods in debug.ccp " \ 646135446Strhodes "(to prevent triggering assertions)") \ 647135446Strhodes \ 648143731Sdougb notproduct(bool, StrictSafepointChecks, trueInDebug, \ 649135446Strhodes "Enable strict checks that safepoints cannot happen for threads " \ 650135446Strhodes "that used No_Safepoint_Verifier") \ 651143731Sdougb \ 652143731Sdougb notproduct(bool, VerifyLastFrame, false, \ 653143731Sdougb "Verify oops on last frame on entry to VM") \ 654143731Sdougb \ 655135446Strhodes develop(bool, TraceHandleAllocation, false, \ 656143731Sdougb "Prints out warnings when suspicious many handles are allocated") \ 657135446Strhodes \ 658135446Strhodes product(bool, UseCompilerSafepoints, true, \ 659135446Strhodes "Stop at safepoints in compiled code") \ 660135446Strhodes \ 661143731Sdougb product(bool, UseSplitVerifier, true, \ 662186462Sdougb "use split verifier with StackMapTable attributes") \ 663143731Sdougb \ 664143731Sdougb product(bool, FailOverToOldVerifier, true, \ 665143731Sdougb "fail over to old verifier when split verifier fails") \ 666143731Sdougb \ 667135446Strhodes develop(bool, ShowSafepointMsgs, false, \ 668186462Sdougb "Show msg. about safepoint synch.") \ 669143731Sdougb \ 670143731Sdougb product(bool, SafepointTimeout, false, \ 671143731Sdougb "Time out and warn or fail after SafepointTimeoutDelay " \ 672143731Sdougb "milliseconds if failed to reach safepoint") \ 673143731Sdougb \ 674143731Sdougb develop(bool, DieOnSafepointTimeout, false, \ 675143731Sdougb "Die upon failure to reach safepoint (see SafepointTimeout)") \ 676143731Sdougb \ 677135446Strhodes /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */ \ 678135446Strhodes /* typically, at most a few retries are needed */ \ 679135446Strhodes product(intx, SuspendRetryCount, 50, \ 680135446Strhodes "Maximum retry count for an external suspend request") \ 681135446Strhodes \ 682135446Strhodes product(intx, SuspendRetryDelay, 5, \ 683135446Strhodes "Milliseconds to delay per retry (* current_retry_count)") \ 684135446Strhodes \ 685135446Strhodes product(bool, AssertOnSuspendWaitFailure, false, \ 686135446Strhodes "Assert/Guarantee on external suspend wait failure") \ 687135446Strhodes \ 688135446Strhodes product(bool, TraceSuspendWaitFailures, false, \ 689135446Strhodes "Trace external suspend wait failures") \ 690135446Strhodes \ 691135446Strhodes product(bool, MaxFDLimit, true, \ 692135446Strhodes "Bump the number of file descriptors to max in solaris.") \ 693135446Strhodes \ 694135446Strhodes notproduct(bool, LogEvents, trueInDebug, \ 695135446Strhodes "Enable Event log") \ 696135446Strhodes \ 697135446Strhodes product(bool, BytecodeVerificationRemote, true, \ 698135446Strhodes "Enables the Java bytecode verifier for remote classes") \ 699135446Strhodes \ 700135446Strhodes product(bool, BytecodeVerificationLocal, false, \ 701135446Strhodes "Enables the Java bytecode verifier for local classes") \ 702135446Strhodes \ 703135446Strhodes develop(bool, ForceFloatExceptions, trueInDebug, \ 704135446Strhodes "Force exceptions on FP stack under/overflow") \ 705135446Strhodes \ 706135446Strhodes develop(bool, SoftMatchFailure, trueInProduct, \ 707170222Sdougb "If the DFA fails to match a node, print a message and bail out") \ 708135446Strhodes \ 709135446Strhodes develop(bool, VerifyStackAtCalls, false, \ 710135446Strhodes "Verify that the stack pointer is unchanged after calls") \ 711135446Strhodes \ 712135446Strhodes develop(bool, TraceJavaAssertions, false, \ 713135446Strhodes "Trace java language assertions") \ 714135446Strhodes \ 715135446Strhodes notproduct(bool, CheckAssertionStatusDirectives, false, \ 716135446Strhodes "temporary - see javaClasses.cpp") \ 717135446Strhodes \ 718143731Sdougb notproduct(bool, PrintMallocFree, false, \ 719135446Strhodes "Trace calls to C heap malloc/free allocation") \ 720135446Strhodes \ 721135446Strhodes product(bool, PrintOopAddress, false, \ 722135446Strhodes "Always print the location of the oop") \ 723135446Strhodes \ 724135446Strhodes notproduct(bool, VerifyCodeCacheOften, false, \ 725170222Sdougb "Verify compiled-code cache often") \ 726135446Strhodes \ 727135446Strhodes develop(bool, ZapDeadCompiledLocals, false, \ 728135446Strhodes "Zap dead locals in compiler frames") \ 729135446Strhodes \ 730135446Strhodes notproduct(bool, ZapDeadLocalsOld, false, \ 731135446Strhodes "Zap dead locals (old version, zaps all frames when " \ 732135446Strhodes "entering the VM") \ 733135446Strhodes \ 734135446Strhodes notproduct(bool, CheckOopishValues, false, \ 735135446Strhodes "Warn if value contains oop ( requires ZapDeadLocals)") \ 736135446Strhodes \ 737135446Strhodes develop(bool, UseMallocOnly, false, \ 738135446Strhodes "use only malloc/free for allocation (no resource area/arena)") \ 739135446Strhodes \ 740135446Strhodes develop(bool, PrintMalloc, false, \ 741135446Strhodes "print all malloc/free calls") \ 742135446Strhodes \ 743135446Strhodes develop(bool, PrintMallocStatistics, false, \ 744135446Strhodes "print malloc/free statistics") \ 745135446Strhodes \ 746135446Strhodes develop(bool, ZapResourceArea, trueInDebug, \ 747135446Strhodes "Zap freed resource/arena space with 0xABABABAB") \ 748135446Strhodes \ 749135446Strhodes notproduct(bool, ZapVMHandleArea, trueInDebug, \ 750135446Strhodes "Zap freed VM handle space with 0xBCBCBCBC") \ 751135446Strhodes \ 752135446Strhodes develop(bool, ZapJNIHandleArea, trueInDebug, \ 753135446Strhodes "Zap freed JNI handle space with 0xFEFEFEFE") \ 754135446Strhodes \ 755135446Strhodes notproduct(bool, ZapStackSegments, trueInDebug, \ 756135446Strhodes "Zap allocated/freed Stack segments with 0xFADFADED") \ 757135446Strhodes \ 758135446Strhodes develop(bool, ZapUnusedHeapArea, trueInDebug, \ 759234010Sdougb "Zap unused heap space with 0xBAADBABE") \ 760135446Strhodes \ 761135446Strhodes develop(bool, TraceZapUnusedHeapArea, false, \ 762135446Strhodes "Trace zapping of unused heap space") \ 763135446Strhodes \ 764135446Strhodes develop(bool, CheckZapUnusedHeapArea, false, \ 765135446Strhodes "Check zapping of unused heap space") \ 766135446Strhodes \ 767135446Strhodes develop(bool, ZapFillerObjects, trueInDebug, \ 768193149Sdougb "Zap filler objects with 0xDEAFBABE") \ 769135446Strhodes \ 770135446Strhodes develop(bool, PrintVMMessages, true, \ 771135446Strhodes "Print vm messages on console") \ 772153816Sdougb \ 773135446Strhodes product(bool, PrintGCApplicationConcurrentTime, false, \ 774135446Strhodes "Print the time the application has been running") \ 775135446Strhodes \ 776135446Strhodes product(bool, PrintGCApplicationStoppedTime, false, \ 777135446Strhodes "Print the time the application has been stopped") \ 778153816Sdougb \ 779135446Strhodes notproduct(uintx, ErrorHandlerTest, 0, \ 780135446Strhodes "If > 0, provokes an error after VM initialization; the value" \ 781135446Strhodes "determines which error to provoke. See test_error_handler()" \ 782170222Sdougb "in debug.cpp.") \ 783135446Strhodes \ 784135446Strhodes develop(bool, Verbose, false, \ 785135446Strhodes "Prints additional debugging information from other modes") \ 786135446Strhodes \ 787135446Strhodes develop(bool, PrintMiscellaneous, false, \ 788135446Strhodes "Prints uncategorized debugging information (requires +Verbose)") \ 789135446Strhodes \ 790135446Strhodes develop(bool, WizardMode, false, \ 791135446Strhodes "Prints much more debugging information") \ 792135446Strhodes \ 793135446Strhodes product(bool, ShowMessageBoxOnError, false, \ 794135446Strhodes "Keep process alive on VM fatal error") \ 795135446Strhodes \ 796135446Strhodes product(bool, CreateMinidumpOnCrash, false, \ 797135446Strhodes "Create minidump on VM fatal error") \ 798135446Strhodes \ 799135446Strhodes product_pd(bool, UseOSErrorReporting, \ 800135446Strhodes "Let VM fatal error propagate to the OS (ie. WER on Windows)") \ 801135446Strhodes \ 802170222Sdougb product(bool, SuppressFatalErrorMessage, false, \ 803170222Sdougb "Do NO Fatal Error report [Avoid deadlock]") \ 804135446Strhodes \ 805135446Strhodes product(ccstrlist, OnError, "", \ 806254402Serwin "Run user-defined commands on fatal error; see VMError.cpp " \ 807135446Strhodes "for examples") \ 808135446Strhodes \ 809135446Strhodes product(ccstrlist, OnOutOfMemoryError, "", \ 810135446Strhodes "Run user-defined commands on first java.lang.OutOfMemoryError") \ 811170222Sdougb \ 812135446Strhodes manageable(bool, HeapDumpBeforeFullGC, false, \ 813135446Strhodes "Dump heap to file before any major stop-world GC") \ 814135446Strhodes \ 815135446Strhodes manageable(bool, HeapDumpAfterFullGC, false, \ 816193149Sdougb "Dump heap to file after any major stop-world GC") \ 817135446Strhodes \ 818135446Strhodes manageable(bool, HeapDumpOnOutOfMemoryError, false, \ 819135446Strhodes "Dump heap to file when java.lang.OutOfMemoryError is thrown") \ 820135446Strhodes \ 821135446Strhodes manageable(ccstr, HeapDumpPath, NULL, \ 822135446Strhodes "When HeapDumpOnOutOfMemoryError is on, the path (filename or" \ 823135446Strhodes "directory) of the dump file (defaults to java_pid<pid>.hprof" \ 824135446Strhodes "in the working directory)") \ 825135446Strhodes \ 826135446Strhodes develop(uintx, SegmentedHeapDumpThreshold, 2*G, \ 827135446Strhodes "Generate a segmented heap dump (JAVA PROFILE 1.0.2 format) " \ 828254402Serwin "when the heap usage is larger than this") \ 829135446Strhodes \ 830254402Serwin develop(uintx, HeapDumpSegmentSize, 1*G, \ 831135446Strhodes "Approximate segment size when generating a segmented heap dump") \ 832254402Serwin \ 833135446Strhodes develop(bool, BreakAtWarning, false, \ 834135446Strhodes "Execute breakpoint upon encountering VM warning") \ 835135446Strhodes \ 836135446Strhodes product_pd(bool, UseVectoredExceptions, \ 837135446Strhodes "Temp Flag - Use Vectored Exceptions rather than SEH (Windows Only)") \ 838135446Strhodes \ 839135446Strhodes develop(bool, TraceVMOperation, false, \ 840135446Strhodes "Trace vm operations") \ 841135446Strhodes \ 842135446Strhodes develop(bool, UseFakeTimers, false, \ 843135446Strhodes "Tells whether the VM should use system time or a fake timer") \ 844135446Strhodes \ 845135446Strhodes diagnostic(bool, LogCompilation, false, \ 846135446Strhodes "Log compilation activity in detail to hotspot.log or LogFile") \ 847135446Strhodes \ 848135446Strhodes product(bool, PrintCompilation, false, \ 849193149Sdougb "Print compilations") \ 850135446Strhodes \ 851135446Strhodes diagnostic(bool, TraceNMethodInstalls, false, \ 852135446Strhodes "Trace nmethod intallation") \ 853153816Sdougb \ 854135446Strhodes diagnostic(intx, ScavengeRootsInCode, 0, \ 855153816Sdougb "0: do not allow scavengable oops in the code cache; " \ 856135446Strhodes "1: allow scavenging from the code cache; " \ 857135446Strhodes "2: emit as many constants as the compiler can see") \ 858135446Strhodes \ 859135446Strhodes diagnostic(bool, TraceOSRBreakpoint, false, \ 860135446Strhodes "Trace OSR Breakpoint ") \ 861135446Strhodes \ 862135446Strhodes diagnostic(bool, TraceCompileTriggered, false, \ 863170222Sdougb "Trace compile triggered") \ 864135446Strhodes \ 865135446Strhodes diagnostic(bool, TraceTriggers, false, \ 866135446Strhodes "Trace triggers") \ 867135446Strhodes \ 868135446Strhodes product(bool, AlwaysRestoreFPU, false, \ 869135446Strhodes "Restore the FPU control word after every JNI call (expensive)") \ 870135446Strhodes \ 871135446Strhodes notproduct(bool, PrintCompilation2, false, \ 872135446Strhodes "Print additional statistics per compilation") \ 873135446Strhodes \ 874135446Strhodes diagnostic(bool, PrintAdapterHandlers, false, \ 875135446Strhodes "Print code generated for i2c/c2i adapters") \ 876135446Strhodes \ 877135446Strhodes develop(bool, VerifyAdapterSharing, false, \ 878170222Sdougb "Verify that the code for shared adapters is the equivalent") \ 879170222Sdougb \ 880135446Strhodes diagnostic(bool, PrintAssembly, false, \ 881135446Strhodes "Print assembly code (using external disassembler.so)") \ 882135446Strhodes \ 883135446Strhodes diagnostic(ccstr, PrintAssemblyOptions, NULL, \ 884135446Strhodes "Options string passed to disassembler.so") \ 885135446Strhodes \ 886135446Strhodes diagnostic(bool, PrintNMethods, false, \ 887170222Sdougb "Print assembly code for nmethods when generated") \ 888135446Strhodes \ 889135446Strhodes diagnostic(bool, PrintNativeNMethods, false, \ 890135446Strhodes "Print assembly code for native nmethods when generated") \ 891135446Strhodes \ 892135446Strhodes develop(bool, PrintDebugInfo, false, \ 893135446Strhodes "Print debug information for all nmethods when generated") \ 894135446Strhodes \ 895135446Strhodes develop(bool, PrintRelocations, false, \ 896135446Strhodes "Print relocation information for all nmethods when generated") \ 897135446Strhodes \ 898135446Strhodes develop(bool, PrintDependencies, false, \ 899135446Strhodes "Print dependency information for all nmethods when generated") \ 900135446Strhodes \ 901135446Strhodes develop(bool, PrintExceptionHandlers, false, \ 902135446Strhodes "Print exception handler tables for all nmethods when generated") \ 903135446Strhodes \ 904135446Strhodes develop(bool, InterceptOSException, false, \ 905135446Strhodes "Starts debugger when an implicit OS (e.g., NULL) " \ 906135446Strhodes "exception happens") \ 907135446Strhodes \ 908135446Strhodes notproduct(bool, PrintCodeCache, false, \ 909135446Strhodes "Print the compiled_code cache when exiting") \ 910135446Strhodes \ 911135446Strhodes develop(bool, PrintCodeCache2, false, \ 912135446Strhodes "Print detailed info on the compiled_code cache when exiting") \ 913135446Strhodes \ 914135446Strhodes diagnostic(bool, PrintStubCode, false, \ 915135446Strhodes "Print generated stub code") \ 916135446Strhodes \ 917135446Strhodes product(bool, StackTraceInThrowable, true, \ 918135446Strhodes "Collect backtrace in throwable when exception happens") \ 919135446Strhodes \ 920135446Strhodes product(bool, OmitStackTraceInFastThrow, true, \ 921135446Strhodes "Omit backtraces for some 'hot' exceptions in optimized code") \ 922135446Strhodes \ 923135446Strhodes product(bool, ProfilerPrintByteCodeStatistics, false, \ 924135446Strhodes "Prints byte code statictics when dumping profiler output") \ 925135446Strhodes \ 926135446Strhodes product(bool, ProfilerRecordPC, false, \ 927135446Strhodes "Collects tick for each 16 byte interval of compiled code") \ 928135446Strhodes \ 929135446Strhodes product(bool, ProfileVM, false, \ 930135446Strhodes "Profiles ticks that fall within VM (either in the VM Thread " \ 931135446Strhodes "or VM code called through stubs)") \ 932135446Strhodes \ 933135446Strhodes product(bool, ProfileIntervals, false, \ 934135446Strhodes "Prints profiles for each interval (see ProfileIntervalsTicks)") \ 935135446Strhodes \ 936135446Strhodes notproduct(bool, ProfilerCheckIntervals, false, \ 937135446Strhodes "Collect and print info on spacing of profiler ticks") \ 938135446Strhodes \ 939135446Strhodes develop(bool, PrintJVMWarnings, false, \ 940186462Sdougb "Prints warnings for unimplemented JVM functions") \ 941135446Strhodes \ 942135446Strhodes product(bool, PrintWarnings, true, \ 943234010Sdougb "Prints JVM warnings to output stream") \ 944234010Sdougb \ 945234010Sdougb notproduct(uintx, WarnOnStalledSpinLock, 0, \ 946234010Sdougb "Prints warnings for stalled SpinLocks") \ 947234010Sdougb \ 948224092Sdougb develop(bool, InitializeJavaLangSystem, true, \ 949135446Strhodes "Initialize java.lang.System - turn off for individual " \ 950135446Strhodes "method debugging") \ 951135446Strhodes \ 952170222Sdougb develop(bool, InitializeJavaLangString, true, \ 953170222Sdougb "Initialize java.lang.String - turn off for individual " \ 954135446Strhodes "method debugging") \ 955135446Strhodes \ 956135446Strhodes develop(bool, InitializeJavaLangExceptionsErrors, true, \ 957135446Strhodes "Initialize various error and exception classes - turn off for " \ 958135446Strhodes "individual method debugging") \ 959170222Sdougb \ 960170222Sdougb product(bool, RegisterFinalizersAtInit, true, \ 961135446Strhodes "Register finalizable objects at end of Object.<init> or " \ 962135446Strhodes "after allocation") \ 963135446Strhodes \ 964135446Strhodes develop(bool, RegisterReferences, true, \ 965135446Strhodes "Tells whether the VM should register soft/weak/final/phantom " \ 966135446Strhodes "references") \ 967224092Sdougb \ 968224092Sdougb develop(bool, IgnoreRewrites, false, \ 969224092Sdougb "Supress rewrites of bytecodes in the oopmap generator. " \ 970224092Sdougb "This is unsafe!") \ 971224092Sdougb \ 972224092Sdougb develop(bool, PrintCodeCacheExtension, false, \ 973224092Sdougb "Print extension of code cache") \ 974224092Sdougb \ 975224092Sdougb develop(bool, UsePrivilegedStack, true, \ 976224092Sdougb "Enable the security JVM functions") \ 977224092Sdougb \ 978224092Sdougb develop(bool, IEEEPrecision, true, \ 979224092Sdougb "Enables IEEE precision (for INTEL only)") \ 980224092Sdougb \ 981224092Sdougb develop(bool, ProtectionDomainVerification, true, \ 982224092Sdougb "Verifies protection domain before resolution in system " \ 983224092Sdougb "dictionary") \ 984224092Sdougb \ 985224092Sdougb product(bool, ClassUnloading, true, \ 986224092Sdougb "Do unloading of classes") \ 987224092Sdougb \ 988224092Sdougb diagnostic(bool, LinkWellKnownClasses, false, \ 989224092Sdougb "Resolve a well known class as soon as its name is seen") \ 990224092Sdougb \ 991224092Sdougb develop(bool, DisableStartThread, false, \ 992224092Sdougb "Disable starting of additional Java threads " \ 993224092Sdougb "(for debugging only)") \ 994224092Sdougb \ 995224092Sdougb develop(bool, MemProfiling, false, \ 996224092Sdougb "Write memory usage profiling to log file") \ 997224092Sdougb \ 998224092Sdougb notproduct(bool, PrintSystemDictionaryAtExit, false, \ 999224092Sdougb "Prints the system dictionary at exit") \ 1000224092Sdougb \ 1001224092Sdougb diagnostic(bool, UnsyncloadClass, false, \ 1002224092Sdougb "Unstable: VM calls loadClass unsynchronized. Custom " \ 1003224092Sdougb "class loader must call VM synchronized for findClass " \ 1004224092Sdougb "and defineClass.") \ 1005224092Sdougb \ 1006224092Sdougb product(bool, AlwaysLockClassLoader, false, \ 1007224092Sdougb "Require the VM to acquire the class loader lock before calling " \ 1008224092Sdougb "loadClass() even for class loaders registering " \ 1009254402Serwin "as parallel capable") \ 1010224092Sdougb \ 1011224092Sdougb product(bool, AllowParallelDefineClass, false, \ 1012224092Sdougb "Allow parallel defineClass requests for class loaders " \ 1013224092Sdougb "registering as parallel capable") \ 1014224092Sdougb \ 1015224092Sdougb product(bool, MustCallLoadClassInternal, false, \ 1016224092Sdougb "Call loadClassInternal() rather than loadClass()") \ 1017224092Sdougb \ 1018224092Sdougb product_pd(bool, DontYieldALot, \ 1019224092Sdougb "Throw away obvious excess yield calls (for SOLARIS only)") \ 1020224092Sdougb \ 1021224092Sdougb product_pd(bool, ConvertSleepToYield, \ 1022224092Sdougb "Converts sleep(0) to thread yield " \ 1023224092Sdougb "(may be off for SOLARIS to improve GUI)") \ 1024224092Sdougb \ 1025224092Sdougb product(bool, ConvertYieldToSleep, false, \ 1026224092Sdougb "Converts yield to a sleep of MinSleepInterval to simulate Win32 "\ 1027224092Sdougb "behavior (SOLARIS only)") \ 1028224092Sdougb \ 1029224092Sdougb product(bool, UseBoundThreads, true, \ 1030224092Sdougb "Bind user level threads to kernel threads (for SOLARIS only)") \ 1031224092Sdougb \ 1032224092Sdougb develop(bool, UseDetachedThreads, true, \ 1033224092Sdougb "Use detached threads that are recycled upon termination " \ 1034224092Sdougb "(for SOLARIS only)") \ 1035224092Sdougb \ 1036224092Sdougb product(bool, UseLWPSynchronization, true, \ 1037224092Sdougb "Use LWP-based instead of libthread-based synchronization " \ 1038224092Sdougb "(SPARC only)") \ 1039224092Sdougb \ 1040224092Sdougb product(ccstr, SyncKnobs, NULL, \ 1041224092Sdougb "(Unstable) Various monitor synchronization tunables") \ 1042224092Sdougb \ 1043224092Sdougb product(intx, EmitSync, 0, \ 1044224092Sdougb "(Unsafe,Unstable) " \ 1045224092Sdougb " Controls emission of inline sync fast-path code") \ 1046224092Sdougb \ 1047224092Sdougb product(intx, AlwaysInflate, 0, "(Unstable) Force inflation") \ 1048224092Sdougb \ 1049224092Sdougb product(intx, MonitorBound, 0, "Bound Monitor population") \ 1050224092Sdougb \ 1051224092Sdougb product(bool, MonitorInUseLists, false, "Track Monitors for Deflation") \ 1052224092Sdougb \ 1053224092Sdougb product(intx, Atomics, 0, \ 1054224092Sdougb "(Unsafe,Unstable) Diagnostic - Controls emission of atomics") \ 1055224092Sdougb \ 1056224092Sdougb product(intx, FenceInstruction, 0, \ 1057224092Sdougb "(Unsafe,Unstable) Experimental") \ 1058224092Sdougb \ 1059224092Sdougb product(intx, SyncFlags, 0, "(Unsafe,Unstable) Experimental Sync flags" ) \ 1060224092Sdougb \ 1061224092Sdougb product(intx, SyncVerbose, 0, "(Unstable)" ) \ 1062224092Sdougb \ 1063224092Sdougb product(intx, ClearFPUAtPark, 0, "(Unsafe,Unstable)" ) \ 1064224092Sdougb \ 1065224092Sdougb product(intx, hashCode, 0, \ 1066224092Sdougb "(Unstable) select hashCode generation algorithm" ) \ 1067224092Sdougb \ 1068224092Sdougb product(intx, WorkAroundNPTLTimedWaitHang, 1, \ 1069224092Sdougb "(Unstable, Linux-specific)" \ 1070224092Sdougb " avoid NPTL-FUTEX hang pthread_cond_timedwait" ) \ 1071224092Sdougb \ 1072224092Sdougb product(bool, FilterSpuriousWakeups, true, \ 1073224092Sdougb "Prevent spurious or premature wakeups from object.wait " \ 1074224092Sdougb "(Solaris only)") \ 1075224092Sdougb \ 1076224092Sdougb product(intx, NativeMonitorTimeout, -1, "(Unstable)" ) \ 1077224092Sdougb product(intx, NativeMonitorFlags, 0, "(Unstable)" ) \ 1078224092Sdougb product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" ) \ 1079224092Sdougb \ 1080224092Sdougb develop(bool, UsePthreads, false, \ 1081224092Sdougb "Use pthread-based instead of libthread-based synchronization " \ 1082224092Sdougb "(SPARC only)") \ 1083224092Sdougb \ 1084224092Sdougb product(bool, AdjustConcurrency, false, \ 1085224092Sdougb "call thr_setconcurrency at thread create time to avoid " \ 1086224092Sdougb "LWP starvation on MP systems (For Solaris Only)") \ 1087224092Sdougb \ 1088224092Sdougb develop(bool, UpdateHotSpotCompilerFileOnError, true, \ 1089224092Sdougb "Should the system attempt to update the compiler file when " \ 1090224092Sdougb "an error occurs?") \ 1091254402Serwin \ 1092254402Serwin product(bool, ReduceSignalUsage, false, \ 1093224092Sdougb "Reduce the use of OS signals in Java and/or the VM") \ 1094224092Sdougb \ 1095224092Sdougb notproduct(bool, ValidateMarkSweep, false, \ 1096224092Sdougb "Do extra validation during MarkSweep collection") \ 1097224092Sdougb \ 1098224092Sdougb notproduct(bool, RecordMarkSweepCompaction, false, \ 1099224092Sdougb "Enable GC-to-GC recording and querying of compaction during " \ 1100224092Sdougb "MarkSweep") \ 1101224092Sdougb \ 1102224092Sdougb develop_pd(bool, ShareVtableStubs, \ 1103224092Sdougb "Share vtable stubs (smaller code but worse branch prediction") \ 1104224092Sdougb \ 1105224092Sdougb develop(bool, LoadLineNumberTables, true, \ 1106135446Strhodes "Tells whether the class file parser loads line number tables") \ 1107135446Strhodes \ 1108135446Strhodes develop(bool, LoadLocalVariableTables, true, \ 1109135446Strhodes "Tells whether the class file parser loads local variable tables")\ 1110135446Strhodes \ 1111135446Strhodes develop(bool, LoadLocalVariableTypeTables, true, \ 1112224092Sdougb "Tells whether the class file parser loads local variable type tables")\ 1113224092Sdougb \ 1114224092Sdougb product(bool, AllowUserSignalHandlers, false, \ 1115224092Sdougb "Do not complain if the application installs signal handlers " \ 1116224092Sdougb "(Solaris & Linux only)") \ 1117224092Sdougb \ 1118224092Sdougb product(bool, UseSignalChaining, true, \ 1119135446Strhodes "Use signal-chaining to invoke signal handlers installed " \ 1120224092Sdougb "by the application (Solaris & Linux only)") \ 1121224092Sdougb \ 1122224092Sdougb product(bool, UseAltSigs, false, \ 1123224092Sdougb "Use alternate signals instead of SIGUSR1 & SIGUSR2 for VM " \ 1124224092Sdougb "internal signals (Solaris only)") \ 1125224092Sdougb \ 1126135446Strhodes product(bool, UseSpinning, false, \ 1127135446Strhodes "Use spinning in monitor inflation and before entry") \ 1128135446Strhodes \ 1129135446Strhodes product(bool, PreSpinYield, false, \ 1130135446Strhodes "Yield before inner spinning loop") \ 1131170222Sdougb \ 1132170222Sdougb product(bool, PostSpinYield, true, \ 1133170222Sdougb "Yield after inner spinning loop") \ 1134170222Sdougb \ 1135170222Sdougb product(bool, AllowJNIEnvProxy, false, \ 1136170222Sdougb "Allow JNIEnv proxies for jdbx") \ 1137170222Sdougb \ 1138170222Sdougb product(bool, JNIDetachReleasesMonitors, true, \ 1139170222Sdougb "JNI DetachCurrentThread releases monitors owned by thread") \ 1140170222Sdougb \ 1141170222Sdougb product(bool, RestoreMXCSROnJNICalls, false, \ 1142170222Sdougb "Restore MXCSR when returning from JNI calls") \ 1143170222Sdougb \ 1144170222Sdougb product(bool, CheckJNICalls, false, \ 1145170222Sdougb "Verify all arguments to JNI calls") \ 1146170222Sdougb \ 1147170222Sdougb product(bool, UseFastJNIAccessors, true, \ 1148170222Sdougb "Use optimized versions of Get<Primitive>Field") \ 1149170222Sdougb \ 1150170222Sdougb product(bool, EagerXrunInit, false, \ 1151170222Sdougb "Eagerly initialize -Xrun libraries; allows startup profiling, " \ 1152170222Sdougb " but not all -Xrun libraries may support the state of the VM at this time") \ 1153170222Sdougb \ 1154170222Sdougb product(bool, PreserveAllAnnotations, false, \ 1155170222Sdougb "Preserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations") \ 1156135446Strhodes \ 1157135446Strhodes develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \ 1158135446Strhodes "Number of OutOfMemoryErrors preallocated with backtrace") \ 1159135446Strhodes \ 1160135446Strhodes product(bool, LazyBootClassLoader, true, \ 1161135446Strhodes "Enable/disable lazy opening of boot class path entries") \ 1162135446Strhodes \ 1163135446Strhodes diagnostic(bool, UseIncDec, true, \ 1164135446Strhodes "Use INC, DEC instructions on x86") \ 1165135446Strhodes \ 1166135446Strhodes product(bool, UseNewLongLShift, false, \ 1167135446Strhodes "Use optimized bitwise shift left") \ 1168135446Strhodes \ 1169135446Strhodes product(bool, UseStoreImmI16, true, \ 1170135446Strhodes "Use store immediate 16-bits value instruction on x86") \ 1171135446Strhodes \ 1172135446Strhodes product(bool, UseAddressNop, false, \ 1173135446Strhodes "Use '0F 1F [addr]' NOP instructions on x86 cpus") \ 1174135446Strhodes \ 1175254402Serwin product(bool, UseXmmLoadAndClearUpper, true, \ 1176135446Strhodes "Load low part of XMM register and clear upper part") \ 1177135446Strhodes \ 1178135446Strhodes product(bool, UseXmmRegToRegMoveAll, false, \ 1179135446Strhodes "Copy all XMM register bits when moving value between registers") \ 1180135446Strhodes \ 1181135446Strhodes product(bool, UseXmmI2D, false, \ 1182218384Sdougb "Use SSE2 CVTDQ2PD instruction to convert Integer to Double") \ 1183218384Sdougb \ 1184218384Sdougb product(bool, UseXmmI2F, false, \ 1185218384Sdougb "Use SSE2 CVTDQ2PS instruction to convert Integer to Float") \ 1186218384Sdougb \ 1187218384Sdougb product(bool, UseXMMForArrayCopy, false, \ 1188218384Sdougb "Use SSE2 MOVQ instruction for Arraycopy") \ 1189218384Sdougb \ 1190218384Sdougb product(bool, UseUnalignedLoadStores, false, \ 1191135446Strhodes "Use SSE2 MOVDQU instruction for Arraycopy") \ 1192135446Strhodes \ 1193135446Strhodes product(intx, FieldsAllocationStyle, 1, \ 1194135446Strhodes "0 - type based with oops first, 1 - with oops last, " \ 1195135446Strhodes "2 - oops in super and sub classes are together") \ 1196218384Sdougb \ 1197135446Strhodes product(bool, CompactFields, true, \ 1198135446Strhodes "Allocate nonstatic fields in gaps between previous fields") \ 1199135446Strhodes \ 1200135446Strhodes notproduct(bool, PrintCompactFieldsSavings, false, \ 1201135446Strhodes "Print how many words were saved with CompactFields") \ 1202135446Strhodes \ 1203135446Strhodes product(bool, UseBiasedLocking, true, \ 1204170222Sdougb "Enable biased locking in JVM") \ 1205135446Strhodes \ 1206135446Strhodes product(intx, BiasedLockingStartupDelay, 4000, \ 1207135446Strhodes "Number of milliseconds to wait before enabling biased locking") \ 1208135446Strhodes \ 1209135446Strhodes diagnostic(bool, PrintBiasedLockingStatistics, false, \ 1210135446Strhodes "Print statistics of biased locking in JVM") \ 1211135446Strhodes \ 1212193149Sdougb product(intx, BiasedLockingBulkRebiasThreshold, 20, \ 1213135446Strhodes "Threshold of number of revocations per type to try to " \ 1214135446Strhodes "rebias all objects in the heap of that type") \ 1215135446Strhodes \ 1216193149Sdougb product(intx, BiasedLockingBulkRevokeThreshold, 40, \ 1217193149Sdougb "Threshold of number of revocations per type to permanently " \ 1218193149Sdougb "revoke biases of all objects in the heap of that type") \ 1219193149Sdougb \ 1220193149Sdougb product(intx, BiasedLockingDecayTime, 25000, \ 1221193149Sdougb "Decay time (in milliseconds) to re-enable bulk rebiasing of a " \ 1222193149Sdougb "type after previous bulk rebias") \ 1223193149Sdougb \ 1224135446Strhodes /* tracing */ \ 1225135446Strhodes \ 1226135446Strhodes notproduct(bool, TraceRuntimeCalls, false, \ 1227165071Sdougb "Trace run-time calls") \ 1228165071Sdougb \ 1229153816Sdougb develop(bool, TraceJNICalls, false, \ 1230153816Sdougb "Trace JNI calls") \ 1231135446Strhodes \ 1232135446Strhodes notproduct(bool, TraceJVMCalls, false, \ 1233135446Strhodes "Trace JVM calls") \ 1234135446Strhodes \ 1235135446Strhodes product(ccstr, TraceJVMTI, NULL, \ 1236153816Sdougb "Trace flags for JVMTI functions and events") \ 1237135446Strhodes \ 1238135446Strhodes /* This option can change an EMCP method into an obsolete method. */ \ 1239218384Sdougb /* This can affect tests that except specific methods to be EMCP. */ \ 1240135446Strhodes /* This option should be used with caution. */ \ 1241135446Strhodes product(bool, StressLdcRewrite, false, \ 1242135446Strhodes "Force ldc -> ldc_w rewrite during RedefineClasses") \ 1243186462Sdougb \ 1244153816Sdougb product(intx, TraceRedefineClasses, 0, \ 1245153816Sdougb "Trace level for JVMTI RedefineClasses") \ 1246153816Sdougb \ 1247153816Sdougb develop(bool, StressMethodComparator, false, \ 1248135446Strhodes "run the MethodComparator on all loaded methods") \ 1249204619Sdougb \ 1250204619Sdougb /* change to false by default sometime after Mustang */ \ 1251204619Sdougb product(bool, VerifyMergedCPBytecodes, true, \ 1252193149Sdougb "Verify bytecodes after RedefineClasses constant pool merging") \ 1253135446Strhodes \ 1254193149Sdougb develop(bool, TraceJNIHandleAllocation, false, \ 1255135446Strhodes "Trace allocation/deallocation of JNI handle blocks") \ 1256135446Strhodes \ 1257135446Strhodes develop(bool, TraceThreadEvents, false, \ 1258135446Strhodes "Trace all thread events") \ 1259135446Strhodes \ 1260135446Strhodes develop(bool, TraceBytecodes, false, \ 1261135446Strhodes "Trace bytecode execution") \ 1262135446Strhodes \ 1263135446Strhodes develop(bool, TraceClassInitialization, false, \ 1264135446Strhodes "Trace class initialization") \ 1265135446Strhodes \ 1266135446Strhodes develop(bool, TraceExceptions, false, \ 1267193149Sdougb "Trace exceptions") \ 1268135446Strhodes \ 1269170222Sdougb develop(bool, TraceICs, false, \ 1270170222Sdougb "Trace inline cache changes") \ 1271170222Sdougb \ 1272170222Sdougb notproduct(bool, TraceInvocationCounterOverflow, false, \ 1273135446Strhodes "Trace method invocation counter overflow") \ 1274135446Strhodes \ 1275135446Strhodes develop(bool, TraceInlineCacheClearing, false, \ 1276135446Strhodes "Trace clearing of inline caches in nmethods") \ 1277135446Strhodes \ 1278135446Strhodes develop(bool, TraceDependencies, false, \ 1279153816Sdougb "Trace dependencies") \ 1280153816Sdougb \ 1281135446Strhodes develop(bool, VerifyDependencies, trueInDebug, \ 1282135446Strhodes "Exercise and verify the compilation dependency mechanism") \ 1283135446Strhodes \ 1284135446Strhodes develop(bool, TraceNewOopMapGeneration, false, \ 1285135446Strhodes "Trace OopMapGeneration") \ 1286135446Strhodes \ 1287153816Sdougb develop(bool, TraceNewOopMapGenerationDetailed, false, \ 1288135446Strhodes "Trace OopMapGeneration: print detailed cell states") \ 1289135446Strhodes \ 1290135446Strhodes develop(bool, TimeOopMap, false, \ 1291135446Strhodes "Time calls to GenerateOopMap::compute_map() in sum") \ 1292135446Strhodes \ 1293135446Strhodes develop(bool, TimeOopMap2, false, \ 1294170222Sdougb "Time calls to GenerateOopMap::compute_map() individually") \ 1295135446Strhodes \ 1296135446Strhodes develop(bool, TraceMonitorMismatch, false, \ 1297135446Strhodes "Trace monitor matching failures during OopMapGeneration") \ 1298135446Strhodes \ 1299135446Strhodes develop(bool, TraceOopMapRewrites, false, \ 1300186462Sdougb "Trace rewritting of method oops during oop map generation") \ 1301135446Strhodes \ 1302135446Strhodes develop(bool, TraceSafepoint, false, \ 1303135446Strhodes "Trace safepoint operations") \ 1304135446Strhodes \ 1305135446Strhodes develop(bool, TraceICBuffer, false, \ 1306170222Sdougb "Trace usage of IC buffer") \ 1307135446Strhodes \ 1308135446Strhodes develop(bool, TraceCompiledIC, false, \ 1309135446Strhodes "Trace changes of compiled IC") \ 1310135446Strhodes \ 1311135446Strhodes notproduct(bool, TraceZapDeadLocals, false, \ 1312224092Sdougb "Trace zapping dead locals") \ 1313135446Strhodes \ 1314135446Strhodes develop(bool, TraceStartupTime, false, \ 1315135446Strhodes "Trace setup time") \ 1316135446Strhodes \ 1317135446Strhodes product(ccstr, HPILibPath, NULL, \ 1318135446Strhodes "Specify alternate path to HPI library") \ 1319135446Strhodes \ 1320135446Strhodes develop(bool, TraceProtectionDomainVerification, false, \ 1321135446Strhodes "Trace protection domain verifcation") \ 1322135446Strhodes \ 1323135446Strhodes develop(bool, TraceClearedExceptions, false, \ 1324135446Strhodes "Prints when an exception is forcibly cleared") \ 1325135446Strhodes \ 1326135446Strhodes product(bool, TraceClassResolution, false, \ 1327135446Strhodes "Trace all constant pool resolutions (for debugging)") \ 1328262706Serwin \ 1329135446Strhodes product(bool, TraceBiasedLocking, false, \ 1330224092Sdougb "Trace biased locking in JVM") \ 1331224092Sdougb \ 1332224092Sdougb product(bool, TraceMonitorInflation, false, \ 1333224092Sdougb "Trace monitor inflation in JVM") \ 1334224092Sdougb \ 1335224092Sdougb /* assembler */ \ 1336224092Sdougb product(bool, Use486InstrsOnly, false, \ 1337224092Sdougb "Use 80486 Compliant instruction subset") \ 1338224092Sdougb \ 1339224092Sdougb /* gc */ \ 1340224092Sdougb \ 1341224092Sdougb product(bool, UseSerialGC, false, \ 1342135446Strhodes "Use the serial garbage collector") \ 1343135446Strhodes \ 1344135446Strhodes product(bool, UseG1GC, false, \ 1345135446Strhodes "Use the Garbage-First garbage collector") \ 1346135446Strhodes \ 1347262706Serwin product(bool, UseParallelGC, false, \ 1348135446Strhodes "Use the Parallel Scavenge garbage collector") \ 1349135446Strhodes \ 1350135446Strhodes product(bool, UseParallelOldGC, false, \ 1351135446Strhodes "Use the Parallel Old garbage collector") \ 1352135446Strhodes \ 1353135446Strhodes product(bool, UseParallelOldGCCompacting, true, \ 1354135446Strhodes "In the Parallel Old garbage collector use parallel compaction") \ 1355135446Strhodes \ 1356135446Strhodes product(bool, UseParallelDensePrefixUpdate, true, \ 1357135446Strhodes "In the Parallel Old garbage collector use parallel dense" \ 1358135446Strhodes " prefix update") \ 1359135446Strhodes \ 1360135446Strhodes product(uintx, HeapMaximumCompactionInterval, 20, \ 1361135446Strhodes "How often should we maximally compact the heap (not allowing " \ 1362135446Strhodes "any dead space)") \ 1363135446Strhodes \ 1364135446Strhodes product(uintx, HeapFirstMaximumCompactionCount, 3, \ 1365135446Strhodes "The collection count for the first maximum compaction") \ 1366135446Strhodes \ 1367135446Strhodes product(bool, UseMaximumCompactionOnSystemGC, true, \ 1368135446Strhodes "In the Parallel Old garbage collector maximum compaction for " \ 1369135446Strhodes "a system GC") \ 1370135446Strhodes \ 1371135446Strhodes product(uintx, ParallelOldDeadWoodLimiterMean, 50, \ 1372135446Strhodes "The mean used by the par compact dead wood" \ 1373135446Strhodes "limiter (a number between 0-100).") \ 1374135446Strhodes \ 1375135446Strhodes product(uintx, ParallelOldDeadWoodLimiterStdDev, 80, \ 1376135446Strhodes "The standard deviation used by the par compact dead wood" \ 1377135446Strhodes "limiter (a number between 0-100).") \ 1378170222Sdougb \ 1379135446Strhodes product(bool, UseParallelOldGCDensePrefix, true, \ 1380193149Sdougb "Use a dense prefix with the Parallel Old garbage collector") \ 1381135446Strhodes \ 1382135446Strhodes product(uintx, ParallelGCThreads, 0, \ 1383170222Sdougb "Number of parallel threads parallel gc will use") \ 1384193149Sdougb \ 1385170222Sdougb develop(bool, ParallelOldGCSplitALot, false, \ 1386135446Strhodes "Provoke splitting (copying data from a young gen space to" \ 1387135446Strhodes "multiple destination spaces)") \ 1388135446Strhodes \ 1389135446Strhodes develop(uintx, ParallelOldGCSplitInterval, 3, \ 1390135446Strhodes "How often to provoke splitting a young gen space") \ 1391135446Strhodes \ 1392135446Strhodes develop(bool, TraceRegionTasksQueuing, false, \ 1393135446Strhodes "Trace the queuing of the region tasks") \ 1394135446Strhodes \ 1395135446Strhodes product(uintx, ConcGCThreads, 0, \ 1396135446Strhodes "Number of threads concurrent gc will use") \ 1397135446Strhodes \ 1398135446Strhodes product(uintx, YoungPLABSize, 4096, \ 1399135446Strhodes "Size of young gen promotion labs (in HeapWords)") \ 1400135446Strhodes \ 1401135446Strhodes product(uintx, OldPLABSize, 1024, \ 1402135446Strhodes "Size of old gen promotion labs (in HeapWords)") \ 1403135446Strhodes \ 1404170222Sdougb product(uintx, GCTaskTimeStampEntries, 200, \ 1405135446Strhodes "Number of time stamp entries per gc worker thread") \ 1406170222Sdougb \ 1407193149Sdougb product(bool, AlwaysTenure, false, \ 1408218384Sdougb "Always tenure objects in eden. (ParallelGC only)") \ 1409193149Sdougb \ 1410218384Sdougb product(bool, NeverTenure, false, \ 1411218384Sdougb "Never tenure objects in eden, May tenure on overflow " \ 1412218384Sdougb "(ParallelGC only)") \ 1413218384Sdougb \ 1414218384Sdougb product(bool, ScavengeBeforeFullGC, true, \ 1415218384Sdougb "Scavenge youngest generation before each full GC, " \ 1416218384Sdougb "used with UseParallelGC") \ 1417193149Sdougb \ 1418193149Sdougb develop(bool, ScavengeWithObjectsInToSpace, false, \ 1419193149Sdougb "Allow scavenges to occur when to_space contains objects.") \ 1420193149Sdougb \ 1421135446Strhodes product(bool, UseConcMarkSweepGC, false, \ 1422135446Strhodes "Use Concurrent Mark-Sweep GC in the old generation") \ 1423135446Strhodes \ 1424135446Strhodes product(bool, ExplicitGCInvokesConcurrent, false, \ 1425135446Strhodes "A System.gc() request invokes a concurrent collection;" \ 1426135446Strhodes " (effective only when UseConcMarkSweepGC)") \ 1427135446Strhodes \ 1428170222Sdougb product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false, \ 1429135446Strhodes "A System.gc() request invokes a concurrent collection and " \ 1430135446Strhodes "also unloads classes during such a concurrent gc cycle " \ 1431135446Strhodes "(effective only when UseConcMarkSweepGC)") \ 1432135446Strhodes \ 1433135446Strhodes product(bool, GCLockerInvokesConcurrent, false, \ 1434135446Strhodes "The exit of a JNI CS necessitating a scavenge also" \ 1435135446Strhodes " kicks off a bkgrd concurrent collection") \ 1436135446Strhodes \ 1437135446Strhodes product(uintx, GCLockerEdenExpansionPercent, 5, \ 1438135446Strhodes "How much the GC can expand the eden by while the GC locker " \ 1439135446Strhodes "is active (as a percentage)") \ 1440135446Strhodes \ 1441135446Strhodes develop(bool, UseCMSAdaptiveFreeLists, true, \ 1442135446Strhodes "Use Adaptive Free Lists in the CMS generation") \ 1443135446Strhodes \ 1444135446Strhodes develop(bool, UseAsyncConcMarkSweepGC, true, \ 1445135446Strhodes "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\ 1446135446Strhodes \ 1447135446Strhodes develop(bool, RotateCMSCollectionTypes, false, \ 1448170222Sdougb "Rotate the CMS collections among concurrent and STW") \ 1449135446Strhodes \ 1450135446Strhodes product(bool, UseCMSBestFit, true, \ 1451135446Strhodes "Use CMS best fit allocation strategy") \ 1452135446Strhodes \ 1453135446Strhodes product(bool, UseCMSCollectionPassing, true, \ 1454135446Strhodes "Use passing of collection from background to foreground") \ 1455135446Strhodes \ 1456135446Strhodes product(bool, UseParNewGC, false, \ 1457135446Strhodes "Use parallel threads in the new generation.") \ 1458135446Strhodes \ 1459135446Strhodes product(bool, ParallelGCVerbose, false, \ 1460135446Strhodes "Verbose output for parallel GC.") \ 1461135446Strhodes \ 1462135446Strhodes product(intx, ParallelGCBufferWastePct, 10, \ 1463135446Strhodes "wasted fraction of parallel allocation buffer.") \ 1464135446Strhodes \ 1465135446Strhodes product(bool, ParallelGCRetainPLAB, true, \ 1466135446Strhodes "Retain parallel allocation buffers across scavenges.") \ 1467135446Strhodes \ 1468135446Strhodes product(intx, TargetPLABWastePct, 10, \ 1469170222Sdougb "target wasted space in last buffer as pct of overall allocation")\ 1470135446Strhodes \ 1471135446Strhodes product(uintx, PLABWeight, 75, \ 1472135446Strhodes "Percentage (0-100) used to weight the current sample when" \ 1473135446Strhodes "computing exponentially decaying average for ResizePLAB.") \ 1474135446Strhodes \ 1475135446Strhodes product(bool, ResizePLAB, true, \ 1476135446Strhodes "Dynamically resize (survivor space) promotion labs") \ 1477135446Strhodes \ 1478135446Strhodes product(bool, PrintPLAB, false, \ 1479135446Strhodes "Print (survivor space) promotion labs sizing decisions") \ 1480135446Strhodes \ 1481135446Strhodes product(intx, ParGCArrayScanChunk, 50, \ 1482135446Strhodes "Scan a subset and push remainder, if array is bigger than this") \ 1483135446Strhodes \ 1484135446Strhodes product(bool, ParGCUseLocalOverflow, false, \ 1485135446Strhodes "Instead of a global overflow list, use local overflow stacks") \ 1486254402Serwin \ 1487254402Serwin product(bool, ParGCTrimOverflow, true, \ 1488254402Serwin "Eagerly trim the local overflow lists (when ParGCUseLocalOverflow") \ 1489254402Serwin \ 1490135446Strhodes notproduct(bool, ParGCWorkQueueOverflowALot, false, \ 1491135446Strhodes "Whether we should simulate work queue overflow in ParNew") \ 1492135446Strhodes \ 1493135446Strhodes notproduct(uintx, ParGCWorkQueueOverflowInterval, 1000, \ 1494135446Strhodes "An `interval' counter that determines how frequently " \ 1495135446Strhodes "we simulate overflow; a smaller number increases frequency") \ 1496135446Strhodes \ 1497254402Serwin product(uintx, ParGCDesiredObjsFromOverflowList, 20, \ 1498135446Strhodes "The desired number of objects to claim from the overflow list") \ 1499135446Strhodes \ 1500135446Strhodes product(uintx, CMSParPromoteBlocksToClaim, 16, \ 1501135446Strhodes "Number of blocks to attempt to claim when refilling CMS LAB for "\ 1502135446Strhodes "parallel GC.") \ 1503135446Strhodes \ 1504135446Strhodes product(uintx, OldPLABWeight, 50, \ 1505135446Strhodes "Percentage (0-100) used to weight the current sample when" \ 1506165071Sdougb "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \ 1507165071Sdougb \ 1508165071Sdougb product(bool, ResizeOldPLAB, true, \ 1509165071Sdougb "Dynamically resize (old gen) promotion labs") \ 1510135446Strhodes \ 1511135446Strhodes product(bool, PrintOldPLAB, false, \ 1512170222Sdougb "Print (old gen) promotion labs sizing decisions") \ 1513135446Strhodes \ 1514135446Strhodes product(uintx, CMSOldPLABMin, 16, \ 1515135446Strhodes "Min size of CMS gen promotion lab caches per worker per blksize")\ 1516135446Strhodes \ 1517135446Strhodes product(uintx, CMSOldPLABMax, 1024, \ 1518135446Strhodes "Max size of CMS gen promotion lab caches per worker per blksize")\ 1519135446Strhodes \ 1520135446Strhodes product(uintx, CMSOldPLABNumRefills, 4, \ 1521135446Strhodes "Nominal number of refills of CMS gen promotion lab cache" \ 1522135446Strhodes " per worker per block size") \ 1523135446Strhodes \ 1524135446Strhodes product(bool, CMSOldPLABResizeQuicker, false, \ 1525254402Serwin "Whether to react on-the-fly during a scavenge to a sudden" \ 1526254402Serwin " change in block demand rate") \ 1527254402Serwin \ 1528135446Strhodes product(uintx, CMSOldPLABToleranceFactor, 4, \ 1529135446Strhodes "The tolerance of the phase-change detector for on-the-fly" \ 1530135446Strhodes " PLAB resizing during a scavenge") \ 1531153816Sdougb \ 1532135446Strhodes product(uintx, CMSOldPLABReactivityFactor, 2, \ 1533135446Strhodes "The gain in the feedback loop for on-the-fly PLAB resizing" \ 1534254402Serwin " during a scavenge") \ 1535254402Serwin \ 1536254402Serwin product(uintx, CMSOldPLABReactivityCeiling, 10, \ 1537254402Serwin "The clamping of the gain in the feedback loop for on-the-fly" \ 1538254402Serwin " PLAB resizing during a scavenge") \ 1539254402Serwin \ 1540254402Serwin product(bool, AlwaysPreTouch, false, \ 1541135446Strhodes "It forces all freshly committed pages to be pre-touched.") \ 1542165071Sdougb \ 1543135446Strhodes product_pd(intx, CMSYoungGenPerWorker, \ 1544165071Sdougb "The maximum size of young gen chosen by default per GC worker " \ 1545135446Strhodes "thread available") \ 1546135446Strhodes \ 1547135446Strhodes product(bool, GCOverheadReporting, false, \ 1548135446Strhodes "Enables the GC overhead reporting facility") \ 1549174187Sdougb \ 1550174187Sdougb product(intx, GCOverheadReportingPeriodMS, 100, \ 1551174187Sdougb "Reporting period for conc GC overhead reporting, in ms ") \ 1552174187Sdougb \ 1553174187Sdougb product(bool, CMSIncrementalMode, false, \ 1554174187Sdougb "Whether CMS GC should operate in \"incremental\" mode") \ 1555174187Sdougb \ 1556174187Sdougb product(uintx, CMSIncrementalDutyCycle, 10, \ 1557174187Sdougb "CMS incremental mode duty cycle (a percentage, 0-100). If" \ 1558174187Sdougb "CMSIncrementalPacing is enabled, then this is just the initial" \ 1559135446Strhodes "value") \ 1560135446Strhodes \ 1561153816Sdougb product(bool, CMSIncrementalPacing, true, \ 1562135446Strhodes "Whether the CMS incremental mode duty cycle should be " \ 1563135446Strhodes "automatically adjusted") \ 1564135446Strhodes \ 1565135446Strhodes product(uintx, CMSIncrementalDutyCycleMin, 0, \ 1566135446Strhodes "Lower bound on the duty cycle when CMSIncrementalPacing is " \ 1567135446Strhodes "enabled (a percentage, 0-100)") \ 1568135446Strhodes \ 1569135446Strhodes product(uintx, CMSIncrementalSafetyFactor, 10, \ 1570135446Strhodes "Percentage (0-100) used to add conservatism when computing the " \ 1571135446Strhodes "duty cycle") \ 1572135446Strhodes \ 1573135446Strhodes product(uintx, CMSIncrementalOffset, 0, \ 1574135446Strhodes "Percentage (0-100) by which the CMS incremental mode duty cycle" \ 1575135446Strhodes " is shifted to the right within the period between young GCs") \ 1576135446Strhodes \ 1577135446Strhodes product(uintx, CMSExpAvgFactor, 50, \ 1578135446Strhodes "Percentage (0-100) used to weight the current sample when" \ 1579135446Strhodes "computing exponential averages for CMS statistics.") \ 1580135446Strhodes \ 1581135446Strhodes product(uintx, CMS_FLSWeight, 75, \ 1582135446Strhodes "Percentage (0-100) used to weight the current sample when" \ 1583135446Strhodes "computing exponentially decating averages for CMS FLS statistics.") \ 1584135446Strhodes \ 1585170222Sdougb product(uintx, CMS_FLSPadding, 1, \ 1586135446Strhodes "The multiple of deviation from mean to use for buffering" \ 1587135446Strhodes "against volatility in free list demand.") \ 1588135446Strhodes \ 1589135446Strhodes product(uintx, FLSCoalescePolicy, 2, \ 1590135446Strhodes "CMS: Aggression level for coalescing, increasing from 0 to 4") \ 1591135446Strhodes \ 1592135446Strhodes product(bool, FLSAlwaysCoalesceLarge, false, \ 1593135446Strhodes "CMS: Larger free blocks are always available for coalescing") \ 1594135446Strhodes \ 1595135446Strhodes product(double, FLSLargestBlockCoalesceProximity, 0.99, \ 1596135446Strhodes "CMS: the smaller the percentage the greater the coalition force")\ 1597135446Strhodes \ 1598135446Strhodes product(double, CMSSmallCoalSurplusPercent, 1.05, \ 1599135446Strhodes "CMS: the factor by which to inflate estimated demand of small" \ 1600135446Strhodes " block sizes to prevent coalescing with an adjoining block") \ 1601135446Strhodes \ 1602135446Strhodes product(double, CMSLargeCoalSurplusPercent, 0.95, \ 1603135446Strhodes "CMS: the factor by which to inflate estimated demand of large" \ 1604135446Strhodes " block sizes to prevent coalescing with an adjoining block") \ 1605135446Strhodes \ 1606135446Strhodes product(double, CMSSmallSplitSurplusPercent, 1.10, \ 1607135446Strhodes "CMS: the factor by which to inflate estimated demand of small" \ 1608135446Strhodes " block sizes to prevent splitting to supply demand for smaller" \ 1609135446Strhodes " blocks") \ 1610135446Strhodes \ 1611135446Strhodes product(double, CMSLargeSplitSurplusPercent, 1.00, \ 1612153816Sdougb "CMS: the factor by which to inflate estimated demand of large" \ 1613135446Strhodes " block sizes to prevent splitting to supply demand for smaller" \ 1614135446Strhodes " blocks") \ 1615135446Strhodes \ 1616135446Strhodes product(bool, CMSExtrapolateSweep, false, \ 1617153816Sdougb "CMS: cushion for block demand during sweep") \ 1618135446Strhodes \ 1619135446Strhodes product(uintx, CMS_SweepWeight, 75, \ 1620135446Strhodes "Percentage (0-100) used to weight the current sample when " \ 1621135446Strhodes "computing exponentially decaying average for inter-sweep " \ 1622135446Strhodes "duration") \ 1623135446Strhodes \ 1624135446Strhodes product(uintx, CMS_SweepPadding, 1, \ 1625135446Strhodes "The multiple of deviation from mean to use for buffering " \ 1626135446Strhodes "against volatility in inter-sweep duration.") \ 1627135446Strhodes \ 1628135446Strhodes product(uintx, CMS_SweepTimerThresholdMillis, 10, \ 1629135446Strhodes "Skip block flux-rate sampling for an epoch unless inter-sweep " \ 1630153816Sdougb "duration exceeds this threhold in milliseconds") \ 1631135446Strhodes \ 1632153816Sdougb develop(bool, CMSTraceIncrementalMode, false, \ 1633135446Strhodes "Trace CMS incremental mode") \ 1634135446Strhodes \ 1635135446Strhodes develop(bool, CMSTraceIncrementalPacing, false, \ 1636135446Strhodes "Trace CMS incremental mode pacing computation") \ 1637193149Sdougb \ 1638135446Strhodes develop(bool, CMSTraceThreadState, false, \ 1639135446Strhodes "Trace the CMS thread state (enable the trace_state() method)") \ 1640135446Strhodes \ 1641135446Strhodes product(bool, CMSClassUnloadingEnabled, false, \ 1642135446Strhodes "Whether class unloading enabled when using CMS GC") \ 1643135446Strhodes \ 1644135446Strhodes product(uintx, CMSClassUnloadingMaxInterval, 0, \ 1645135446Strhodes "When CMS class unloading is enabled, the maximum CMS cycle count"\ 1646135446Strhodes " for which classes may not be unloaded") \ 1647153816Sdougb \ 1648135446Strhodes product(bool, CMSCompactWhenClearAllSoftRefs, true, \ 1649135446Strhodes "Compact when asked to collect CMS gen with clear_all_soft_refs") \ 1650153816Sdougb \ 1651135446Strhodes product(bool, UseCMSCompactAtFullCollection, true, \ 1652135446Strhodes "Use mark sweep compact at full collections") \ 1653153816Sdougb \ 1654135446Strhodes product(uintx, CMSFullGCsBeforeCompaction, 0, \ 1655153816Sdougb "Number of CMS full collection done before compaction if > 0") \ 1656135446Strhodes \ 1657153816Sdougb develop(intx, CMSDictionaryChoice, 0, \ 1658135446Strhodes "Use BinaryTreeDictionary as default in the CMS generation") \ 1659135446Strhodes \ 1660135446Strhodes product(uintx, CMSIndexedFreeListReplenish, 4, \ 1661186462Sdougb "Replenish an indexed free list with this number of chunks") \ 1662135446Strhodes \ 1663135446Strhodes product(bool, CMSReplenishIntermediate, true, \ 1664135446Strhodes "Replenish all intermediate free-list caches") \ 1665135446Strhodes \ 1666135446Strhodes product(bool, CMSSplitIndexedFreeListBlocks, true, \ 1667135446Strhodes "When satisfying batched demand, split blocks from the " \ 1668254402Serwin "IndexedFreeList whose size is a multiple of requested size") \ 1669135446Strhodes \ 1670135446Strhodes product(bool, CMSLoopWarn, false, \ 1671135446Strhodes "Warn in case of excessive CMS looping") \ 1672153816Sdougb \ 1673135446Strhodes develop(bool, CMSOverflowEarlyRestoration, false, \ 1674135446Strhodes "Whether preserved marks should be restored early") \ 1675135446Strhodes \ 1676135446Strhodes product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M), \ 1677135446Strhodes "Size of marking stack") \ 1678135446Strhodes \ 1679135446Strhodes product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M), \ 1680254402Serwin "Max size of marking stack") \ 1681135446Strhodes \ 1682135446Strhodes notproduct(bool, CMSMarkStackOverflowALot, false, \ 1683135446Strhodes "Whether we should simulate frequent marking stack / work queue" \ 1684135446Strhodes " overflow") \ 1685135446Strhodes \ 1686135446Strhodes notproduct(uintx, CMSMarkStackOverflowInterval, 1000, \ 1687135446Strhodes "An `interval' counter that determines how frequently" \ 1688135446Strhodes " we simulate overflow; a smaller number increases frequency") \ 1689135446Strhodes \ 1690135446Strhodes product(uintx, CMSMaxAbortablePrecleanLoops, 0, \ 1691135446Strhodes "(Temporary, subject to experimentation)" \ 1692135446Strhodes "Maximum number of abortable preclean iterations, if > 0") \ 1693135446Strhodes \ 1694135446Strhodes product(intx, CMSMaxAbortablePrecleanTime, 5000, \ 1695135446Strhodes "(Temporary, subject to experimentation)" \ 1696135446Strhodes "Maximum time in abortable preclean in ms") \ 1697135446Strhodes \ 1698170222Sdougb product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100, \ 1699135446Strhodes "(Temporary, subject to experimentation)" \ 1700135446Strhodes "Nominal minimum work per abortable preclean iteration") \ 1701135446Strhodes \ 1702135446Strhodes manageable(intx, CMSAbortablePrecleanWaitMillis, 100, \ 1703135446Strhodes "(Temporary, subject to experimentation)" \ 1704135446Strhodes " Time that we sleep between iterations when not given" \ 1705135446Strhodes " enough work per iteration") \ 1706135446Strhodes \ 1707135446Strhodes product(uintx, CMSRescanMultiple, 32, \ 1708135446Strhodes "Size (in cards) of CMS parallel rescan task") \ 1709135446Strhodes \ 1710135446Strhodes product(uintx, CMSConcMarkMultiple, 32, \ 1711135446Strhodes "Size (in cards) of CMS concurrent MT marking task") \ 1712135446Strhodes \ 1713135446Strhodes product(uintx, CMSRevisitStackSize, 1*M, \ 1714135446Strhodes "Size of CMS KlassKlass revisit stack") \ 1715135446Strhodes \ 1716135446Strhodes product(bool, CMSAbortSemantics, false, \ 1717135446Strhodes "Whether abort-on-overflow semantics is implemented") \ 1718135446Strhodes \ 1719170222Sdougb product(bool, CMSParallelRemarkEnabled, true, \ 1720135446Strhodes "Whether parallel remark enabled (only if ParNewGC)") \ 1721135446Strhodes \ 1722135446Strhodes product(bool, CMSParallelSurvivorRemarkEnabled, true, \ 1723135446Strhodes "Whether parallel remark of survivor space" \ 1724135446Strhodes " enabled (effective only if CMSParallelRemarkEnabled)") \ 1725135446Strhodes \ 1726135446Strhodes product(bool, CMSPLABRecordAlways, true, \ 1727135446Strhodes "Whether to always record survivor space PLAB bdries" \ 1728135446Strhodes " (effective only if CMSParallelSurvivorRemarkEnabled)") \ 1729135446Strhodes \ 1730135446Strhodes product(bool, CMSConcurrentMTEnabled, true, \ 1731135446Strhodes "Whether multi-threaded concurrent work enabled (if ParNewGC)") \ 1732135446Strhodes \ 1733135446Strhodes product(bool, CMSPermGenPrecleaningEnabled, true, \ 1734135446Strhodes "Whether concurrent precleaning enabled in perm gen" \ 1735135446Strhodes " (effective only when CMSPrecleaningEnabled is true)") \ 1736234010Sdougb \ 1737234010Sdougb product(bool, CMSPrecleaningEnabled, true, \ 1738234010Sdougb "Whether concurrent precleaning enabled") \ 1739170222Sdougb \ 1740170222Sdougb product(uintx, CMSPrecleanIter, 3, \ 1741135446Strhodes "Maximum number of precleaning iteration passes") \ 1742135446Strhodes \ 1743135446Strhodes product(uintx, CMSPrecleanNumerator, 2, \ 1744135446Strhodes "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \ 1745186462Sdougb " ratio") \ 1746234010Sdougb \ 1747234010Sdougb product(uintx, CMSPrecleanDenominator, 3, \ 1748135446Strhodes "CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" \ 1749135446Strhodes " ratio") \ 1750135446Strhodes \ 1751135446Strhodes product(bool, CMSPrecleanRefLists1, true, \ 1752135446Strhodes "Preclean ref lists during (initial) preclean phase") \ 1753135446Strhodes \ 1754143731Sdougb product(bool, CMSPrecleanRefLists2, false, \ 1755143731Sdougb "Preclean ref lists during abortable preclean phase") \ 1756143731Sdougb \ 1757143731Sdougb product(bool, CMSPrecleanSurvivors1, false, \ 1758143731Sdougb "Preclean survivors during (initial) preclean phase") \ 1759143731Sdougb \ 1760143731Sdougb product(bool, CMSPrecleanSurvivors2, true, \ 1761135446Strhodes "Preclean survivors during abortable preclean phase") \ 1762135446Strhodes \ 1763135446Strhodes product(uintx, CMSPrecleanThreshold, 1000, \ 1764135446Strhodes "Don't re-iterate if #dirty cards less than this") \ 1765135446Strhodes \ 1766135446Strhodes product(bool, CMSCleanOnEnter, true, \ 1767135446Strhodes "Clean-on-enter optimization for reducing number of dirty cards") \ 1768135446Strhodes \ 1769170222Sdougb product(uintx, CMSRemarkVerifyVariant, 1, \ 1770170222Sdougb "Choose variant (1,2) of verification following remark") \ 1771170222Sdougb \ 1772170222Sdougb product(uintx, CMSScheduleRemarkEdenSizeThreshold, 2*M, \ 1773170222Sdougb "If Eden used is below this value, don't try to schedule remark") \ 1774170222Sdougb \ 1775170222Sdougb product(uintx, CMSScheduleRemarkEdenPenetration, 50, \ 1776170222Sdougb "The Eden occupancy % at which to try and schedule remark pause") \ 1777170222Sdougb \ 1778170222Sdougb product(uintx, CMSScheduleRemarkSamplingRatio, 5, \ 1779170222Sdougb "Start sampling Eden top at least before yg occupancy reaches" \ 1780170222Sdougb " 1/<ratio> of the size at which we plan to schedule remark") \ 1781170222Sdougb \ 1782170222Sdougb product(uintx, CMSSamplingGrain, 16*K, \ 1783170222Sdougb "The minimum distance between eden samples for CMS (see above)") \ 1784170222Sdougb \ 1785170222Sdougb product(bool, CMSScavengeBeforeRemark, false, \ 1786170222Sdougb "Attempt scavenge before the CMS remark step") \ 1787170222Sdougb \ 1788170222Sdougb develop(bool, CMSTraceSweeper, false, \ 1789135446Strhodes "Trace some actions of the CMS sweeper") \ 1790135446Strhodes \ 1791135446Strhodes product(uintx, CMSWorkQueueDrainThreshold, 10, \ 1792135446Strhodes "Don't drain below this size per parallel worker/thief") \ 1793135446Strhodes \ 1794135446Strhodes manageable(intx, CMSWaitDuration, 2000, \ 1795135446Strhodes "Time in milliseconds that CMS thread waits for young GC") \ 1796135446Strhodes \ 1797135446Strhodes product(bool, CMSYield, true, \ 1798135446Strhodes "Yield between steps of concurrent mark & sweep") \ 1799135446Strhodes \ 1800135446Strhodes product(uintx, CMSBitMapYieldQuantum, 10*M, \ 1801135446Strhodes "Bitmap operations should process at most this many bits" \ 1802186462Sdougb "between yields") \ 1803186462Sdougb \ 1804135446Strhodes product(bool, CMSDumpAtPromotionFailure, false, \ 1805135446Strhodes "Dump useful information about the state of the CMS old " \ 1806135446Strhodes " generation upon a promotion failure.") \ 1807135446Strhodes \ 1808225361Sdougb product(bool, CMSPrintChunksInDump, false, \ 1809135446Strhodes "In a dump enabled by CMSDumpAtPromotionFailure, include " \ 1810135446Strhodes " more detailed information about the free chunks.") \ 1811135446Strhodes \ 1812135446Strhodes product(bool, CMSPrintObjectsInDump, false, \ 1813135446Strhodes "In a dump enabled by CMSDumpAtPromotionFailure, include " \ 1814135446Strhodes " more detailed information about the allocated objects.") \ 1815135446Strhodes \ 1816135446Strhodes diagnostic(bool, FLSVerifyAllHeapReferences, false, \ 1817135446Strhodes "Verify that all refs across the FLS boundary " \ 1818135446Strhodes " are to valid objects") \ 1819135446Strhodes \ 1820135446Strhodes diagnostic(bool, FLSVerifyLists, false, \ 1821135446Strhodes "Do lots of (expensive) FreeListSpace verification") \ 1822135446Strhodes \ 1823135446Strhodes diagnostic(bool, FLSVerifyIndexTable, false, \ 1824153816Sdougb "Do lots of (expensive) FLS index table verification") \ 1825153816Sdougb \ 1826254897Serwin develop(bool, FLSVerifyDictionary, false, \ 1827170222Sdougb "Do lots of (expensive) FLS dictionary verification") \ 1828170222Sdougb \ 1829135446Strhodes develop(bool, VerifyBlockOffsetArray, false, \ 1830225361Sdougb "Do (expensive!) block offset array verification") \ 1831234010Sdougb \ 1832234010Sdougb product(bool, BlockOffsetArrayUseUnallocatedBlock, false, \ 1833234010Sdougb "Maintain _unallocated_block in BlockOffsetArray" \ 1834234010Sdougb " (currently applicable only to CMS collector)") \ 1835234010Sdougb \ 1836234010Sdougb develop(bool, TraceCMSState, false, \ 1837234010Sdougb "Trace the state of the CMS collection") \ 1838234010Sdougb \ 1839234010Sdougb product(intx, RefDiscoveryPolicy, 0, \ 1840234010Sdougb "Whether reference-based(0) or referent-based(1)") \ 1841135446Strhodes \ 1842135446Strhodes product(bool, ParallelRefProcEnabled, false, \ 1843135446Strhodes "Enable parallel reference processing whenever possible") \ 1844234010Sdougb \ 1845234010Sdougb product(bool, ParallelRefProcBalancingEnabled, true, \ 1846234010Sdougb "Enable balancing of reference processing queues") \ 1847234010Sdougb \ 1848135446Strhodes product(intx, CMSTriggerRatio, 80, \ 1849135446Strhodes "Percentage of MinHeapFreeRatio in CMS generation that is " \ 1850135446Strhodes "allocated before a CMS collection cycle commences") \ 1851135446Strhodes \ 1852135446Strhodes product(intx, CMSTriggerPermRatio, 80, \ 1853135446Strhodes "Percentage of MinHeapFreeRatio in the CMS perm generation that " \ 1854170222Sdougb "is allocated before a CMS collection cycle commences, that " \ 1855170222Sdougb "also collects the perm generation") \ 1856170222Sdougb \ 1857170222Sdougb product(uintx, CMSBootstrapOccupancy, 50, \ 1858170222Sdougb "Percentage CMS generation occupancy at which to " \ 1859170222Sdougb "initiate CMS collection for bootstrapping collection stats") \ 1860225361Sdougb \ 1861170222Sdougb product(intx, CMSInitiatingOccupancyFraction, -1, \ 1862170222Sdougb "Percentage CMS generation occupancy to start a CMS collection " \ 1863170222Sdougb "cycle. A negative value means that CMSTriggerRatio is used") \ 1864225361Sdougb \ 1865225361Sdougb product(uintx, InitiatingHeapOccupancyPercent, 45, \ 1866225361Sdougb "Percentage of the (entire) heap occupancy to start a " \ 1867225361Sdougb "concurrent GC cycle. It us used by GCs that trigger a " \ 1868225361Sdougb "concurrent GC cycle based on the occupancy of the entire heap, " \ 1869170222Sdougb "not just one of the generations (e.g., G1). A value of 0 " \ 1870170222Sdougb "denotes 'do constant GC cycles'.") \ 1871225361Sdougb \ 1872225361Sdougb product(intx, CMSInitiatingPermOccupancyFraction, -1, \ 1873225361Sdougb "Percentage CMS perm generation occupancy to start a " \ 1874225361Sdougb "CMScollection cycle. A negative value means that " \ 1875225361Sdougb "CMSTriggerPermRatio is used") \ 1876170222Sdougb \ 1877170222Sdougb product(bool, UseCMSInitiatingOccupancyOnly, false, \ 1878225361Sdougb "Only use occupancy as a crierion for starting a CMS collection") \ 1879170222Sdougb \ 1880170222Sdougb product(intx, CMSIsTooFullPercentage, 98, \ 1881170222Sdougb "An absolute ceiling above which CMS will always consider the " \ 1882170222Sdougb "perm gen ripe for collection") \ 1883170222Sdougb \ 1884170222Sdougb develop(bool, CMSTestInFreeList, false, \ 1885135446Strhodes "Check if the coalesced range is already in the " \ 1886135446Strhodes "free lists as claimed") \ 1887170222Sdougb \ 1888135446Strhodes notproduct(bool, CMSVerifyReturnedBytes, false, \ 1889135446Strhodes "Check that all the garbage collected was returned to the " \ 1890135446Strhodes "free lists.") \ 1891135446Strhodes \ 1892135446Strhodes notproduct(bool, ScavengeALot, false, \ 1893135446Strhodes "Force scavenge at every Nth exit from the runtime system " \ 1894234010Sdougb "(N=ScavengeALotInterval)") \ 1895135446Strhodes \ 1896170222Sdougb develop(bool, FullGCALot, false, \ 1897262706Serwin "Force full gc at every Nth exit from the runtime system " \ 1898262706Serwin "(N=FullGCALotInterval)") \ 1899262706Serwin \ 1900135446Strhodes notproduct(bool, GCALotAtAllSafepoints, false, \ 1901135446Strhodes "Enforce ScavengeALot/GCALot at all potential safepoints") \ 1902135446Strhodes \ 1903135446Strhodes product(bool, PrintPromotionFailure, false, \ 1904135446Strhodes "Print additional diagnostic information following " \ 1905135446Strhodes " promotion failure") \ 1906135446Strhodes \ 1907135446Strhodes notproduct(bool, PromotionFailureALot, false, \ 1908135446Strhodes "Use promotion failure handling on every youngest generation " \ 1909135446Strhodes "collection") \ 1910135446Strhodes \ 1911135446Strhodes develop(uintx, PromotionFailureALotCount, 1000, \ 1912262706Serwin "Number of promotion failures occurring at ParGCAllocBuffer" \ 1913262706Serwin "refill attempts (ParNew) or promotion attempts " \ 1914262706Serwin "(other young collectors) ") \ 1915262706Serwin \ 1916262706Serwin develop(uintx, PromotionFailureALotInterval, 5, \ 1917262706Serwin "Total collections between promotion failures alot") \ 1918262706Serwin \ 1919262706Serwin experimental(intx, WorkStealingSleepMillis, 1, \ 1920262706Serwin "Sleep time when sleep is used for yields") \ 1921262706Serwin \ 1922262706Serwin experimental(uintx, WorkStealingYieldsBeforeSleep, 1000, \ 1923262706Serwin "Number of yields before a sleep is done during workstealing") \ 1924262706Serwin \ 1925170222Sdougb experimental(uintx, WorkStealingHardSpins, 4096, \ 1926135446Strhodes "Number of iterations in a spin loop between checks on " \ 1927135446Strhodes "time out of hard spin") \ 1928135446Strhodes \ 1929135446Strhodes experimental(uintx, WorkStealingSpinToYieldRatio, 10, \ 1930170222Sdougb "Ratio of hard spins to calls to yield") \ 1931170222Sdougb \ 1932170222Sdougb product(uintx, PreserveMarkStackSize, 1024, \ 1933170222Sdougb "Size for stack used in promotion failure handling") \ 1934170222Sdougb \ 1935170222Sdougb develop(uintx, ObjArrayMarkingStride, 512, \ 1936170222Sdougb "Number of ObjArray elements to push onto the marking stack" \ 1937170222Sdougb "before pushing a continuation entry") \ 1938170222Sdougb \ 1939170222Sdougb product_pd(bool, UseTLAB, "Use thread-local object allocation") \ 1940170222Sdougb \ 1941135446Strhodes product_pd(bool, ResizeTLAB, \ 1942135446Strhodes "Dynamically resize tlab size for threads") \ 1943135446Strhodes \ 1944135446Strhodes product(bool, ZeroTLAB, false, \ 1945170222Sdougb "Zero out the newly created TLAB") \ 1946135446Strhodes \ 1947135446Strhodes product(bool, FastTLABRefill, true, \ 1948135446Strhodes "Use fast TLAB refill code") \ 1949135446Strhodes \ 1950135446Strhodes product(bool, PrintTLAB, false, \ 1951135446Strhodes "Print various TLAB related information") \ 1952135446Strhodes \ 1953135446Strhodes product(bool, TLABStats, true, \ 1954135446Strhodes "Print various TLAB related information") \ 1955135446Strhodes \ 1956135446Strhodes product(bool, PrintRevisitStats, false, \ 1957135446Strhodes "Print revisit (klass and MDO) stack related information") \ 1958135446Strhodes \ 1959135446Strhodes EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \ 1960135446Strhodes "Enable LowMemoryProtection")) \ 1961135446Strhodes \ 1962135446Strhodes product_pd(bool, NeverActAsServerClassMachine, \ 1963135446Strhodes "Never act like a server-class machine") \ 1964135446Strhodes \ 1965135446Strhodes product(bool, AlwaysActAsServerClassMachine, false, \ 1966135446Strhodes "Always act like a server-class machine") \ 1967135446Strhodes \ 1968135446Strhodes product_pd(uint64_t, MaxRAM, \ 1969135446Strhodes "Real memory size (in bytes) used to set maximum heap size") \ 1970135446Strhodes \ 1971135446Strhodes product(uintx, ErgoHeapSizeLimit, 0, \ 1972135446Strhodes "Maximum ergonomically set heap size (in bytes); zero means use " \ 1973135446Strhodes "MaxRAM / MaxRAMFraction") \ 1974135446Strhodes \ 1975135446Strhodes product(uintx, MaxRAMFraction, 4, \ 1976135446Strhodes "Maximum fraction (1/n) of real memory used for maximum heap " \ 1977135446Strhodes "size") \ 1978135446Strhodes \ 1979135446Strhodes product(uintx, DefaultMaxRAMFraction, 4, \ 1980135446Strhodes "Maximum fraction (1/n) of real memory used for maximum heap " \ 1981135446Strhodes "size; deprecated: to be renamed to MaxRAMFraction") \ 1982135446Strhodes \ 1983135446Strhodes product(uintx, MinRAMFraction, 2, \ 1984135446Strhodes "Minimum fraction (1/n) of real memory used for maxmimum heap " \ 1985135446Strhodes "size on systems with small physical memory size") \ 1986135446Strhodes \ 1987135446Strhodes product(uintx, InitialRAMFraction, 64, \ 1988135446Strhodes "Fraction (1/n) of real memory used for initial heap size") \ 1989135446Strhodes \ 1990135446Strhodes product(bool, UseAutoGCSelectPolicy, false, \ 1991135446Strhodes "Use automatic collection selection policy") \ 1992135446Strhodes \ 1993135446Strhodes product(uintx, AutoGCSelectPauseMillis, 5000, \ 1994135446Strhodes "Automatic GC selection pause threshhold in ms") \ 1995135446Strhodes \ 1996135446Strhodes product(bool, UseAdaptiveSizePolicy, true, \ 1997135446Strhodes "Use adaptive generation sizing policies") \ 1998135446Strhodes \ 1999135446Strhodes product(bool, UsePSAdaptiveSurvivorSizePolicy, true, \ 2000135446Strhodes "Use adaptive survivor sizing policies") \ 2001135446Strhodes \ 2002135446Strhodes product(bool, UseAdaptiveGenerationSizePolicyAtMinorCollection, true, \ 2003135446Strhodes "Use adaptive young-old sizing policies at minor collections") \ 2004135446Strhodes \ 2005135446Strhodes product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true, \ 2006135446Strhodes "Use adaptive young-old sizing policies at major collections") \ 2007135446Strhodes \ 2008135446Strhodes product(bool, UseAdaptiveSizePolicyWithSystemGC, false, \ 2009135446Strhodes "Use statistics from System.GC for adaptive size policy") \ 2010135446Strhodes \ 2011170222Sdougb product(bool, UseAdaptiveGCBoundary, false, \ 2012135446Strhodes "Allow young-old boundary to move") \ 2013135446Strhodes \ 2014135446Strhodes develop(bool, TraceAdaptiveGCBoundary, false, \ 2015135446Strhodes "Trace young-old boundary moves") \ 2016135446Strhodes \ 2017135446Strhodes develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1, \ 2018135446Strhodes "Resize the virtual spaces of the young or old generations") \ 2019135446Strhodes \ 2020135446Strhodes product(uintx, AdaptiveSizeThroughPutPolicy, 0, \ 2021135446Strhodes "Policy for changeing generation size for throughput goals") \ 2022135446Strhodes \ 2023135446Strhodes product(uintx, AdaptiveSizePausePolicy, 0, \ 2024135446Strhodes "Policy for changing generation size for pause goals") \ 2025135446Strhodes \ 2026135446Strhodes develop(bool, PSAdjustTenuredGenForMinorPause, false, \ 2027170222Sdougb "Adjust tenured generation to achive a minor pause goal") \ 2028170222Sdougb \ 2029170222Sdougb develop(bool, PSAdjustYoungGenForMajorPause, false, \ 2030170222Sdougb "Adjust young generation to achive a major pause goal") \ 2031135446Strhodes \ 2032170222Sdougb product(uintx, AdaptiveSizePolicyInitializingSteps, 20, \ 2033170222Sdougb "Number of steps where heuristics is used before data is used") \ 2034170222Sdougb \ 2035170222Sdougb develop(uintx, AdaptiveSizePolicyReadyThreshold, 5, \ 2036170222Sdougb "Number of collections before the adaptive sizing is started") \ 2037135446Strhodes \ 2038135446Strhodes product(uintx, AdaptiveSizePolicyOutputInterval, 0, \ 2039135446Strhodes "Collecton interval for printing information; zero => never") \ 2040135446Strhodes \ 2041135446Strhodes product(bool, UseAdaptiveSizePolicyFootprintGoal, true, \ 2042135446Strhodes "Use adaptive minimum footprint as a goal") \ 2043135446Strhodes \ 2044135446Strhodes product(uintx, AdaptiveSizePolicyWeight, 10, \ 2045135446Strhodes "Weight given to exponential resizing, between 0 and 100") \ 2046135446Strhodes \ 2047135446Strhodes product(uintx, AdaptiveTimeWeight, 25, \ 2048135446Strhodes "Weight given to time in adaptive policy, between 0 and 100") \ 2049135446Strhodes \ 2050135446Strhodes product(uintx, PausePadding, 1, \ 2051135446Strhodes "How much buffer to keep for pause time") \ 2052135446Strhodes \ 2053135446Strhodes product(uintx, PromotedPadding, 3, \ 2054135446Strhodes "How much buffer to keep for promotion failure") \ 2055135446Strhodes \ 2056135446Strhodes product(uintx, SurvivorPadding, 3, \ 2057135446Strhodes "How much buffer to keep for survivor overflow") \ 2058135446Strhodes \ 2059135446Strhodes product(uintx, AdaptivePermSizeWeight, 20, \ 2060135446Strhodes "Weight for perm gen exponential resizing, between 0 and 100") \ 2061135446Strhodes \ 2062135446Strhodes product(uintx, PermGenPadding, 3, \ 2063135446Strhodes "How much buffer to keep for perm gen sizing") \ 2064170222Sdougb \ 2065135446Strhodes product(uintx, ThresholdTolerance, 10, \ 2066170222Sdougb "Allowed collection cost difference between generations") \ 2067170222Sdougb \ 2068170222Sdougb product(uintx, AdaptiveSizePolicyCollectionCostMargin, 50, \ 2069170222Sdougb "If collection costs are within margin, reduce both by full " \ 2070170222Sdougb "delta") \ 2071170222Sdougb \ 2072170222Sdougb product(uintx, YoungGenerationSizeIncrement, 20, \ 2073170222Sdougb "Adaptive size percentage change in young generation") \ 2074170222Sdougb \ 2075170222Sdougb product(uintx, YoungGenerationSizeSupplement, 80, \ 2076135446Strhodes "Supplement to YoungedGenerationSizeIncrement used at startup") \ 2077135446Strhodes \ 2078135446Strhodes product(uintx, YoungGenerationSizeSupplementDecay, 8, \ 2079135446Strhodes "Decay factor to YoungedGenerationSizeSupplement") \ 2080135446Strhodes \ 2081135446Strhodes product(uintx, TenuredGenerationSizeIncrement, 20, \ 2082170222Sdougb "Adaptive size percentage change in tenured generation") \ 2083170222Sdougb \ 2084170222Sdougb product(uintx, TenuredGenerationSizeSupplement, 80, \ 2085170222Sdougb "Supplement to TenuredGenerationSizeIncrement used at startup") \ 2086170222Sdougb \ 2087170222Sdougb product(uintx, TenuredGenerationSizeSupplementDecay, 2, \ 2088170222Sdougb "Decay factor to TenuredGenerationSizeIncrement") \ 2089170222Sdougb \ 2090170222Sdougb product(uintx, MaxGCPauseMillis, max_uintx, \ 2091170222Sdougb "Adaptive size policy maximum GC pause time goal in msec, " \ 2092170222Sdougb "or (G1 Only) the max. GC time per MMU time slice") \ 2093170222Sdougb \ 2094170222Sdougb product(uintx, GCPauseIntervalMillis, 0, \ 2095170222Sdougb "Time slice for MMU specification") \ 2096170222Sdougb \ 2097170222Sdougb product(uintx, MaxGCMinorPauseMillis, max_uintx, \ 2098170222Sdougb "Adaptive size policy maximum GC minor pause time goal in msec") \ 2099170222Sdougb \ 2100170222Sdougb product(uintx, GCTimeRatio, 99, \ 2101170222Sdougb "Adaptive size policy application time to GC time ratio") \ 2102170222Sdougb \ 2103153816Sdougb product(uintx, AdaptiveSizeDecrementScaleFactor, 4, \ 2104170222Sdougb "Adaptive size scale down factor for shrinking") \ 2105135446Strhodes \ 2106170222Sdougb product(bool, UseAdaptiveSizeDecayMajorGCCost, true, \ 2107170222Sdougb "Adaptive size decays the major cost for long major intervals") \ 2108170222Sdougb \ 2109170222Sdougb product(uintx, AdaptiveSizeMajorGCDecayTimeScale, 10, \ 2110170222Sdougb "Time scale over which major costs decay") \ 2111170222Sdougb \ 2112170222Sdougb product(uintx, MinSurvivorRatio, 3, \ 2113170222Sdougb "Minimum ratio of young generation/survivor space size") \ 2114174187Sdougb \ 2115170222Sdougb product(uintx, InitialSurvivorRatio, 8, \ 2116170222Sdougb "Initial ratio of eden/survivor space size") \ 2117170222Sdougb \ 2118170222Sdougb product(uintx, BaseFootPrintEstimate, 256*M, \ 2119170222Sdougb "Estimate of footprint other than Java Heap") \ 2120135446Strhodes \ 2121135446Strhodes product(bool, UseGCOverheadLimit, true, \ 2122135446Strhodes "Use policy to limit of proportion of time spent in GC " \ 2123135446Strhodes "before an OutOfMemory error is thrown") \ 2124135446Strhodes \ 2125135446Strhodes product(uintx, GCTimeLimit, 98, \ 2126135446Strhodes "Limit of proportion of time spent in GC before an OutOfMemory" \ 2127135446Strhodes "error is thrown (used with GCHeapFreeLimit)") \ 2128135446Strhodes \ 2129135446Strhodes product(uintx, GCHeapFreeLimit, 2, \ 2130224092Sdougb "Minimum percentage of free space after a full GC before an " \ 2131135446Strhodes "OutOfMemoryError is thrown (used with GCTimeLimit)") \ 2132135446Strhodes \ 2133135446Strhodes develop(uintx, AdaptiveSizePolicyGCTimeLimitThreshold, 5, \ 2134135446Strhodes "Number of consecutive collections before gc time limit fires") \ 2135135446Strhodes \ 2136193149Sdougb product(bool, PrintAdaptiveSizePolicy, false, \ 2137135446Strhodes "Print information about AdaptiveSizePolicy") \ 2138135446Strhodes \ 2139135446Strhodes product(intx, PrefetchCopyIntervalInBytes, -1, \ 2140135446Strhodes "How far ahead to prefetch destination area (<= 0 means off)") \ 2141135446Strhodes \ 2142135446Strhodes product(intx, PrefetchScanIntervalInBytes, -1, \ 2143135446Strhodes "How far ahead to prefetch scan area (<= 0 means off)") \ 2144135446Strhodes \ 2145135446Strhodes product(intx, PrefetchFieldsAhead, -1, \ 2146135446Strhodes "How many fields ahead to prefetch in oop scan (<= 0 means off)") \ 2147224092Sdougb \ 2148135446Strhodes develop(bool, UsePrefetchQueue, true, \ 2149135446Strhodes "Use the prefetch queue during PS promotion") \ 2150135446Strhodes \ 2151135446Strhodes diagnostic(bool, VerifyBeforeExit, trueInDebug, \ 2152135446Strhodes "Verify system before exiting") \ 2153135446Strhodes \ 2154135446Strhodes diagnostic(bool, VerifyBeforeGC, false, \ 2155135446Strhodes "Verify memory system before GC") \ 2156135446Strhodes \ 2157135446Strhodes diagnostic(bool, VerifyAfterGC, false, \ 2158135446Strhodes "Verify memory system after GC") \ 2159170222Sdougb \ 2160170222Sdougb diagnostic(bool, VerifyDuringGC, false, \ 2161170222Sdougb "Verify memory system during GC (between phases)") \ 2162135446Strhodes \ 2163135446Strhodes diagnostic(bool, GCParallelVerificationEnabled, true, \ 2164135446Strhodes "Enable parallel memory system verification") \ 2165135446Strhodes \ 2166170222Sdougb diagnostic(bool, DeferInitialCardMark, false, \ 2167170222Sdougb "When +ReduceInitialCardMarks, explicitly defer any that " \ 2168170222Sdougb "may arise from new_pre_store_barrier") \ 2169170222Sdougb \ 2170170222Sdougb diagnostic(bool, VerifyRememberedSets, false, \ 2171224092Sdougb "Verify GC remembered sets") \ 2172170222Sdougb \ 2173170222Sdougb diagnostic(bool, VerifyObjectStartArray, true, \ 2174135446Strhodes "Verify GC object start array if verify before/after") \ 2175135446Strhodes \ 2176135446Strhodes product(bool, DisableExplicitGC, false, \ 2177135446Strhodes "Tells whether calling System.gc() does a full GC") \ 2178224092Sdougb \ 2179135446Strhodes notproduct(bool, CheckMemoryInitialization, false, \ 2180170222Sdougb "Checks memory initialization") \ 2181135446Strhodes \ 2182135446Strhodes product(bool, CollectGen0First, false, \ 2183135446Strhodes "Collect youngest generation before each full GC") \ 2184135446Strhodes \ 2185135446Strhodes diagnostic(bool, BindCMSThreadToCPU, false, \ 2186135446Strhodes "Bind CMS Thread to CPU if possible") \ 2187135446Strhodes \ 2188135446Strhodes diagnostic(uintx, CPUForCMSThread, 0, \ 2189135446Strhodes "When BindCMSThreadToCPU is true, the CPU to bind CMS thread to") \ 2190135446Strhodes \ 2191135446Strhodes product(bool, BindGCTaskThreadsToCPUs, false, \ 2192135446Strhodes "Bind GCTaskThreads to CPUs if possible") \ 2193135446Strhodes \ 2194135446Strhodes product(bool, UseGCTaskAffinity, false, \ 2195135446Strhodes "Use worker affinity when asking for GCTasks") \ 2196135446Strhodes \ 2197135446Strhodes product(uintx, ProcessDistributionStride, 4, \ 2198135446Strhodes "Stride through processors when distributing processes") \ 2199135446Strhodes \ 2200135446Strhodes product(uintx, CMSCoordinatorYieldSleepCount, 10, \ 2201135446Strhodes "number of times the coordinator GC thread will sleep while " \ 2202135446Strhodes "yielding before giving up and resuming GC") \ 2203135446Strhodes \ 2204135446Strhodes product(uintx, CMSYieldSleepCount, 0, \ 2205135446Strhodes "number of times a GC thread (minus the coordinator) " \ 2206135446Strhodes "will sleep while yielding before giving up and resuming GC") \ 2207135446Strhodes \ 2208135446Strhodes /* gc tracing */ \ 2209135446Strhodes manageable(bool, PrintGC, false, \ 2210135446Strhodes "Print message at garbage collect") \ 2211135446Strhodes \ 2212135446Strhodes manageable(bool, PrintGCDetails, false, \ 2213135446Strhodes "Print more details at garbage collect") \ 2214135446Strhodes \ 2215135446Strhodes manageable(bool, PrintGCDateStamps, false, \ 2216135446Strhodes "Print date stamps at garbage collect") \ 2217135446Strhodes \ 2218135446Strhodes manageable(bool, PrintGCTimeStamps, false, \ 2219135446Strhodes "Print timestamps at garbage collect") \ 2220135446Strhodes \ 2221135446Strhodes product(bool, PrintGCTaskTimeStamps, false, \ 2222135446Strhodes "Print timestamps for individual gc worker thread tasks") \ 2223135446Strhodes \ 2224135446Strhodes develop(intx, ConcGCYieldTimeout, 0, \ 2225135446Strhodes "If non-zero, assert that GC threads yield within this # of ms.") \ 2226135446Strhodes \ 2227135446Strhodes notproduct(bool, TraceMarkSweep, false, \ 2228135446Strhodes "Trace mark sweep") \ 2229135446Strhodes \ 2230135446Strhodes product(bool, PrintReferenceGC, false, \ 2231135446Strhodes "Print times spent handling reference objects during GC " \ 2232135446Strhodes " (enabled only when PrintGCDetails)") \ 2233135446Strhodes \ 2234135446Strhodes develop(bool, TraceReferenceGC, false, \ 2235135446Strhodes "Trace handling of soft/weak/final/phantom references") \ 2236135446Strhodes \ 2237135446Strhodes develop(bool, TraceFinalizerRegistration, false, \ 2238135446Strhodes "Trace registration of final references") \ 2239135446Strhodes \ 2240193149Sdougb notproduct(bool, TraceScavenge, false, \ 2241135446Strhodes "Trace scavenge") \ 2242193149Sdougb \ 2243193149Sdougb product_rw(bool, TraceClassLoading, false, \ 2244193149Sdougb "Trace all classes loaded") \ 2245193149Sdougb \ 2246193149Sdougb product(bool, TraceClassLoadingPreorder, false, \ 2247193149Sdougb "Trace all classes loaded in order referenced (not loaded)") \ 2248135446Strhodes \ 2249135446Strhodes product_rw(bool, TraceClassUnloading, false, \ 2250135446Strhodes "Trace unloading of classes") \ 2251135446Strhodes \ 2252135446Strhodes product_rw(bool, TraceLoaderConstraints, false, \ 2253135446Strhodes "Trace loader constraints") \ 2254135446Strhodes \ 2255135446Strhodes product(bool, TraceGen0Time, false, \ 2256135446Strhodes "Trace accumulated time for Gen 0 collection") \ 2257135446Strhodes \ 2258135446Strhodes product(bool, TraceGen1Time, false, \ 2259135446Strhodes "Trace accumulated time for Gen 1 collection") \ 2260135446Strhodes \ 2261135446Strhodes product(bool, PrintTenuringDistribution, false, \ 2262135446Strhodes "Print tenuring age information") \ 2263135446Strhodes \ 2264135446Strhodes product_rw(bool, PrintHeapAtGC, false, \ 2265135446Strhodes "Print heap layout before and after each GC") \ 2266135446Strhodes \ 2267135446Strhodes product_rw(bool, PrintHeapAtGCExtended, false, \ 2268135446Strhodes "Prints extended information about the layout of the heap " \ 2269135446Strhodes "when -XX:+PrintHeapAtGC is set") \ 2270135446Strhodes \ 2271135446Strhodes product(bool, PrintHeapAtSIGBREAK, true, \ 2272135446Strhodes "Print heap layout in response to SIGBREAK") \ 2273135446Strhodes \ 2274165071Sdougb manageable(bool, PrintClassHistogramBeforeFullGC, false, \ 2275135446Strhodes "Print a class histogram before any major stop-world GC") \ 2276165071Sdougb \ 2277135446Strhodes manageable(bool, PrintClassHistogramAfterFullGC, false, \ 2278170222Sdougb "Print a class histogram after any major stop-world GC") \ 2279135446Strhodes \ 2280170222Sdougb manageable(bool, PrintClassHistogram, false, \ 2281170222Sdougb "Print a histogram of class instances") \ 2282170222Sdougb \ 2283170222Sdougb develop(bool, TraceWorkGang, false, \ 2284193149Sdougb "Trace activities of work gangs") \ 2285135446Strhodes \ 2286135446Strhodes product(bool, TraceParallelOldGCTasks, false, \ 2287135446Strhodes "Trace multithreaded GC activity") \ 2288135446Strhodes \ 2289135446Strhodes develop(bool, TraceBlockOffsetTable, false, \ 2290135446Strhodes "Print BlockOffsetTable maps") \ 2291135446Strhodes \ 2292135446Strhodes develop(bool, TraceCardTableModRefBS, false, \ 2293135446Strhodes "Print CardTableModRefBS maps") \ 2294135446Strhodes \ 2295135446Strhodes develop(bool, TraceGCTaskManager, false, \ 2296135446Strhodes "Trace actions of the GC task manager") \ 2297135446Strhodes \ 2298135446Strhodes develop(bool, TraceGCTaskQueue, false, \ 2299135446Strhodes "Trace actions of the GC task queues") \ 2300135446Strhodes \ 2301135446Strhodes develop(bool, TraceGCTaskThread, false, \ 2302165071Sdougb "Trace actions of the GC task threads") \ 2303135446Strhodes \ 2304135446Strhodes product(bool, PrintParallelOldGCPhaseTimes, false, \ 2305135446Strhodes "Print the time taken by each parallel old gc phase." \ 2306135446Strhodes "PrintGCDetails must also be enabled.") \ 2307135446Strhodes \ 2308135446Strhodes develop(bool, TraceParallelOldGCMarkingPhase, false, \ 2309135446Strhodes "Trace parallel old gc marking phase") \ 2310135446Strhodes \ 2311135446Strhodes develop(bool, TraceParallelOldGCSummaryPhase, false, \ 2312135446Strhodes "Trace parallel old gc summary phase") \ 2313135446Strhodes \ 2314135446Strhodes develop(bool, TraceParallelOldGCCompactionPhase, false, \ 2315135446Strhodes "Trace parallel old gc compaction phase") \ 2316135446Strhodes \ 2317135446Strhodes develop(bool, TraceParallelOldGCDensePrefix, false, \ 2318165071Sdougb "Trace parallel old gc dense prefix computation") \ 2319165071Sdougb \ 2320135446Strhodes develop(bool, IgnoreLibthreadGPFault, false, \ 2321135446Strhodes "Suppress workaround for libthread GP fault") \ 2322135446Strhodes \ 2323135446Strhodes product(bool, PrintJNIGCStalls, false, \ 2324135446Strhodes "Print diagnostic message when GC is stalled" \ 2325135446Strhodes "by JNI critical section") \ 2326135446Strhodes \ 2327135446Strhodes /* JVMTI heap profiling */ \ 2328135446Strhodes \ 2329143731Sdougb diagnostic(bool, TraceJVMTIObjectTagging, false, \ 2330135446Strhodes "Trace JVMTI object tagging calls") \ 2331135446Strhodes \ 2332170222Sdougb diagnostic(bool, VerifyBeforeIteration, false, \ 2333262706Serwin "Verify memory system before JVMTI iteration") \ 2334135446Strhodes \ 2335135446Strhodes /* compiler interface */ \ 2336135446Strhodes \ 2337135446Strhodes develop(bool, CIPrintCompilerName, false, \ 2338135446Strhodes "when CIPrint is active, print the name of the active compiler") \ 2339135446Strhodes \ 2340135446Strhodes develop(bool, CIPrintCompileQueue, false, \ 2341135446Strhodes "display the contents of the compile queue whenever a " \ 2342135446Strhodes "compilation is enqueued") \ 2343135446Strhodes \ 2344165071Sdougb develop(bool, CIPrintRequests, false, \ 2345135446Strhodes "display every request for compilation") \ 2346254402Serwin \ 2347135446Strhodes product(bool, CITime, false, \ 2348135446Strhodes "collect timing information for compilation") \ 2349135446Strhodes \ 2350135446Strhodes develop(bool, CITimeEach, false, \ 2351135446Strhodes "display timing information after each successful compilation") \ 2352170222Sdougb \ 2353135446Strhodes develop(bool, CICountOSR, true, \ 2354135446Strhodes "use a separate counter when assigning ids to osr compilations") \ 2355135446Strhodes \ 2356135446Strhodes develop(bool, CICompileNatives, true, \ 2357135446Strhodes "compile native methods if supported by the compiler") \ 2358170222Sdougb \ 2359135446Strhodes develop_pd(bool, CICompileOSR, \ 2360135446Strhodes "compile on stack replacement methods if supported by the " \ 2361135446Strhodes "compiler") \ 2362135446Strhodes \ 2363135446Strhodes develop(bool, CIPrintMethodCodes, false, \ 2364165071Sdougb "print method bytecodes of the compiled code") \ 2365165071Sdougb \ 2366165071Sdougb develop(bool, CIPrintTypeFlow, false, \ 2367165071Sdougb "print the results of ciTypeFlow analysis") \ 2368165071Sdougb \ 2369135446Strhodes develop(bool, CITraceTypeFlow, false, \ 2370135446Strhodes "detailed per-bytecode tracing of ciTypeFlow analysis") \ 2371135446Strhodes \ 2372135446Strhodes develop(intx, CICloneLoopTestLimit, 100, \ 2373135446Strhodes "size limit for blocks heuristically cloned in ciTypeFlow") \ 2374135446Strhodes \ 2375135446Strhodes /* temp diagnostics */ \ 2376135446Strhodes \ 2377135446Strhodes diagnostic(bool, TraceRedundantCompiles, false, \ 2378135446Strhodes "Have compile broker print when a request already in the queue is"\ 2379165071Sdougb " requested again") \ 2380165071Sdougb \ 2381165071Sdougb diagnostic(bool, InitialCompileFast, false, \ 2382262706Serwin "Initial compile at CompLevel_fast_compile") \ 2383165071Sdougb \ 2384262706Serwin diagnostic(bool, InitialCompileReallyFast, false, \ 2385262706Serwin "Initial compile at CompLevel_really_fast_compile (no profile)") \ 2386165071Sdougb \ 2387165071Sdougb diagnostic(bool, FullProfileOnReInterpret, true, \ 2388165071Sdougb "On re-interpret unc-trap compile next at CompLevel_fast_compile")\ 2389165071Sdougb \ 2390165071Sdougb /* compiler */ \ 2391234010Sdougb \ 2392165071Sdougb product(intx, CICompilerCount, CI_COMPILER_COUNT, \ 2393165071Sdougb "Number of compiler threads to run") \ 2394165071Sdougb \ 2395165071Sdougb product(intx, CompilationPolicyChoice, 0, \ 2396165071Sdougb "which compilation policy (0/1)") \ 2397165071Sdougb \ 2398165071Sdougb develop(bool, UseStackBanging, true, \ 2399165071Sdougb "use stack banging for stack overflow checks (required for " \ 2400165071Sdougb "proper StackOverflow handling; disable only to measure cost " \ 2401165071Sdougb "of stackbanging)") \ 2402165071Sdougb \ 2403135446Strhodes develop(bool, Use24BitFPMode, true, \ 2404135446Strhodes "Set 24-bit FPU mode on a per-compile basis ") \ 2405135446Strhodes \ 2406135446Strhodes develop(bool, Use24BitFP, true, \ 2407170222Sdougb "use FP instructions that produce 24-bit precise results") \ 2408135446Strhodes \ 2409135446Strhodes develop(bool, UseStrictFP, true, \ 2410135446Strhodes "use strict fp if modifier strictfp is set") \ 2411135446Strhodes \ 2412135446Strhodes develop(bool, GenerateSynchronizationCode, true, \ 2413135446Strhodes "generate locking/unlocking code for synchronized methods and " \ 2414135446Strhodes "monitors") \ 2415135446Strhodes \ 2416135446Strhodes develop(bool, GenerateCompilerNullChecks, true, \ 2417135446Strhodes "Generate explicit null checks for loads/stores/calls") \ 2418135446Strhodes \ 2419135446Strhodes develop(bool, GenerateRangeChecks, true, \ 2420135446Strhodes "Generate range checks for array accesses") \ 2421135446Strhodes \ 2422135446Strhodes develop_pd(bool, ImplicitNullChecks, \ 2423135446Strhodes "generate code for implicit null checks") \ 2424135446Strhodes \ 2425135446Strhodes product(bool, PrintSafepointStatistics, false, \ 2426135446Strhodes "print statistics about safepoint synchronization") \ 2427135446Strhodes \ 2428135446Strhodes product(intx, PrintSafepointStatisticsCount, 300, \ 2429135446Strhodes "total number of safepoint statistics collected " \ 2430135446Strhodes "before printing them out") \ 2431135446Strhodes \ 2432135446Strhodes product(intx, PrintSafepointStatisticsTimeout, -1, \ 2433135446Strhodes "print safepoint statistics only when safepoint takes" \ 2434135446Strhodes " more than PrintSafepointSatisticsTimeout in millis") \ 2435135446Strhodes \ 2436135446Strhodes product(bool, TraceSafepointCleanupTime, false, \ 2437135446Strhodes "print the break down of clean up tasks performed during" \ 2438135446Strhodes " safepoint") \ 2439135446Strhodes \ 2440135446Strhodes develop(bool, InlineAccessors, true, \ 2441135446Strhodes "inline accessor methods (get/set)") \ 2442135446Strhodes \ 2443135446Strhodes product(bool, Inline, true, \ 2444135446Strhodes "enable inlining") \ 2445135446Strhodes \ 2446135446Strhodes product(bool, ClipInlining, true, \ 2447135446Strhodes "clip inlining if aggregate method exceeds DesiredMethodLimit") \ 2448135446Strhodes \ 2449135446Strhodes develop(bool, UseCHA, true, \ 2450135446Strhodes "enable CHA") \ 2451153816Sdougb \ 2452135446Strhodes product(bool, UseTypeProfile, true, \ 2453153816Sdougb "Check interpreter profile for historically monomorphic calls") \ 2454135446Strhodes \ 2455135446Strhodes product(intx, TypeProfileMajorReceiverPercent, 90, \ 2456135446Strhodes "% of major receiver type to all profiled receivers") \ 2457135446Strhodes \ 2458135446Strhodes notproduct(bool, TimeCompiler, false, \ 2459135446Strhodes "time the compiler") \ 2460153816Sdougb \ 2461153816Sdougb notproduct(bool, TimeCompiler2, false, \ 2462135446Strhodes "detailed time the compiler (requires +TimeCompiler)") \ 2463135446Strhodes \ 2464186462Sdougb diagnostic(bool, PrintInlining, false, \ 2465135446Strhodes "prints inlining optimizations") \ 2466135446Strhodes \ 2467193149Sdougb diagnostic(bool, PrintIntrinsics, false, \ 2468193149Sdougb "prints attempted and successful inlining of intrinsics") \ 2469193149Sdougb \ 2470254402Serwin product(bool, UseCountLeadingZerosInstruction, false, \ 2471193149Sdougb "Use count leading zeros instruction") \ 2472193149Sdougb \ 2473193149Sdougb product(bool, UsePopCountInstruction, false, \ 2474193149Sdougb "Use population count instruction") \ 2475193149Sdougb \ 2476193149Sdougb diagnostic(ccstrlist, DisableIntrinsic, "", \ 2477193149Sdougb "do not expand intrinsics whose (internal) names appear here") \ 2478193149Sdougb \ 2479218384Sdougb develop(bool, StressReflectiveCode, false, \ 2480218384Sdougb "Use inexact types at allocations, etc., to test reflection") \ 2481218384Sdougb \ 2482218384Sdougb develop(bool, EagerInitialization, false, \ 2483218384Sdougb "Eagerly initialize classes if possible") \ 2484218384Sdougb \ 2485218384Sdougb develop(bool, TraceMethodReplacement, false, \ 2486218384Sdougb "Print when methods are replaced do to recompilation") \ 2487218384Sdougb \ 2488193149Sdougb develop(bool, PrintMethodFlushing, false, \ 2489193149Sdougb "print the nmethods being flushed") \ 2490193149Sdougb \ 2491193149Sdougb notproduct(bool, LogMultipleMutexLocking, false, \ 2492135446Strhodes "log locking and unlocking of mutexes (only if multiple locks " \ 2493135446Strhodes "are held)") \ 2494170222Sdougb \ 2495135446Strhodes develop(bool, UseRelocIndex, false, \ 2496135446Strhodes "use an index to speed random access to relocations") \ 2497135446Strhodes \ 2498135446Strhodes develop(bool, StressCodeBuffers, false, \ 2499135446Strhodes "Exercise code buffer expansion and other rare state changes") \ 2500135446Strhodes \ 2501135446Strhodes diagnostic(bool, DebugNonSafepoints, trueInDebug, \ 2502135446Strhodes "Generate extra debugging info for non-safepoints in nmethods") \ 2503135446Strhodes \ 2504135446Strhodes diagnostic(bool, DebugInlinedCalls, true, \ 2505135446Strhodes "If false, restricts profiled locations to the root method only") \ 2506135446Strhodes \ 2507135446Strhodes product(bool, PrintVMOptions, trueInDebug, \ 2508135446Strhodes "Print flags that appeared on the command line") \ 2509135446Strhodes \ 2510193149Sdougb product(bool, IgnoreUnrecognizedVMOptions, false, \ 2511218384Sdougb "Ignore unrecognized VM options") \ 2512193149Sdougb \ 2513193149Sdougb product(bool, PrintCommandLineFlags, false, \ 2514193149Sdougb "Print flags specified on command line or set by ergonomics") \ 2515193149Sdougb \ 2516193149Sdougb product(bool, PrintFlagsInitial, false, \ 2517193149Sdougb "Print all VM flags before argument processing and exit VM") \ 2518193149Sdougb \ 2519193149Sdougb product(bool, PrintFlagsFinal, false, \ 2520186462Sdougb "Print all VM flags after argument and ergonomic processing") \ 2521135446Strhodes \ 2522135446Strhodes notproduct(bool, PrintFlagsWithComments, false, \ 2523135446Strhodes "Print all VM flags with default values and descriptions and exit")\ 2524135446Strhodes \ 2525135446Strhodes diagnostic(bool, SerializeVMOutput, true, \ 2526135446Strhodes "Use a mutex to serialize output to tty and hotspot.log") \ 2527135446Strhodes \ 2528135446Strhodes diagnostic(bool, DisplayVMOutput, true, \ 2529135446Strhodes "Display all VM output on the tty, independently of LogVMOutput") \ 2530135446Strhodes \ 2531135446Strhodes diagnostic(bool, LogVMOutput, trueInDebug, \ 2532135446Strhodes "Save VM output to hotspot.log, or to LogFile") \ 2533135446Strhodes \ 2534135446Strhodes diagnostic(ccstr, LogFile, NULL, \ 2535135446Strhodes "If LogVMOutput is on, save VM output to this file [hotspot.log]") \ 2536135446Strhodes \ 2537135446Strhodes product(ccstr, ErrorFile, NULL, \ 2538254402Serwin "If an error occurs, save the error data to this file " \ 2539135446Strhodes "[default: ./hs_err_pid%p.log] (%p replaced with pid)") \ 2540262706Serwin \ 2541262706Serwin product(bool, DisplayVMOutputToStderr, false, \ 2542262706Serwin "If DisplayVMOutput is true, display all VM output to stderr") \ 2543262706Serwin \ 2544262706Serwin product(bool, DisplayVMOutputToStdout, false, \ 2545262706Serwin "If DisplayVMOutput is true, display all VM output to stdout") \ 2546262706Serwin \ 2547262706Serwin product(bool, UseHeavyMonitors, false, \ 2548262706Serwin "use heavyweight instead of lightweight Java monitors") \ 2549135446Strhodes \ 2550135446Strhodes notproduct(bool, PrintSymbolTableSizeHistogram, false, \ 2551135446Strhodes "print histogram of the symbol table") \ 2552135446Strhodes \ 2553135446Strhodes notproduct(bool, ExitVMOnVerifyError, false, \ 2554135446Strhodes "standard exit from VM if bytecode verify error " \ 2555135446Strhodes "(only in debug mode)") \ 2556182645Sdougb \ 2557182645Sdougb notproduct(ccstr, AbortVMOnException, NULL, \ 2558135446Strhodes "Call fatal if this exception is thrown. Example: " \ 2559135446Strhodes "java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \ 2560135446Strhodes \ 2561135446Strhodes notproduct(ccstr, AbortVMOnExceptionMessage, NULL, \ 2562135446Strhodes "Call fatal if the exception pointed by AbortVMOnException " \ 2563135446Strhodes "has this message.") \ 2564182645Sdougb \ 2565135446Strhodes develop(bool, DebugVtables, false, \ 2566135446Strhodes "add debugging code to vtable dispatch") \ 2567135446Strhodes \ 2568135446Strhodes develop(bool, PrintVtables, false, \ 2569135446Strhodes "print vtables when printing klass") \ 2570135446Strhodes \ 2571262706Serwin notproduct(bool, PrintVtableStats, false, \ 2572135446Strhodes "print vtables stats at end of run") \ 2573135446Strhodes \ 2574135446Strhodes develop(bool, TraceCreateZombies, false, \ 2575135446Strhodes "trace creation of zombie nmethods") \ 2576135446Strhodes \ 2577135446Strhodes notproduct(bool, IgnoreLockingAssertions, false, \ 2578135446Strhodes "disable locking assertions (for speed)") \ 2579254402Serwin \ 2580254402Serwin notproduct(bool, VerifyLoopOptimizations, false, \ 2581254402Serwin "verify major loop optimizations") \ 2582135446Strhodes \ 2583135446Strhodes product(bool, RangeCheckElimination, true, \ 2584135446Strhodes "Split loop iterations to eliminate range checks") \ 2585135446Strhodes \ 2586135446Strhodes develop_pd(bool, UncommonNullCast, \ 2587262706Serwin "track occurrences of null in casts; adjust compiler tactics") \ 2588262706Serwin \ 2589262706Serwin develop(bool, TypeProfileCasts, true, \ 2590262706Serwin "treat casts like calls for purposes of type profiling") \ 2591262706Serwin \ 2592262706Serwin develop(bool, MonomorphicArrayCheck, true, \ 2593262706Serwin "Uncommon-trap array store checks that require full type check") \ 2594262706Serwin \ 2595262706Serwin diagnostic(bool, ProfileDynamicTypes, true, \ 2596262706Serwin "do extra type profiling and use it more aggressively") \ 2597262706Serwin \ 2598170222Sdougb develop(bool, DelayCompilationDuringStartup, true, \ 2599135446Strhodes "Delay invoking the compiler until main application class is " \ 2600135446Strhodes "loaded") \ 2601135446Strhodes \ 2602135446Strhodes develop(bool, CompileTheWorld, false, \ 2603135446Strhodes "Compile all methods in all classes in bootstrap class path " \ 2604135446Strhodes "(stress test)") \ 2605135446Strhodes \ 2606135446Strhodes develop(bool, CompileTheWorldPreloadClasses, true, \ 2607262706Serwin "Preload all classes used by a class before start loading") \ 2608135446Strhodes \ 2609135446Strhodes notproduct(bool, CompileTheWorldIgnoreInitErrors, false, \ 2610135446Strhodes "Compile all methods although class initializer failed") \ 2611135446Strhodes \ 2612135446Strhodes notproduct(intx, CompileTheWorldSafepointInterval, 100, \ 2613135446Strhodes "Force a safepoint every n compiles so sweeper can keep up") \ 2614153816Sdougb \ 2615135446Strhodes develop(bool, TraceIterativeGVN, false, \ 2616135446Strhodes "Print progress during Iterative Global Value Numbering") \ 2617135446Strhodes \ 2618193149Sdougb develop(bool, FillDelaySlots, true, \ 2619218384Sdougb "Fill delay slots (on SPARC only)") \ 2620193149Sdougb \ 2621193149Sdougb develop(bool, VerifyIterativeGVN, false, \ 2622193149Sdougb "Verify Def-Use modifications during sparse Iterative Global " \ 2623193149Sdougb "Value Numbering") \ 2624135446Strhodes \ 2625135446Strhodes notproduct(bool, TracePhaseCCP, false, \ 2626135446Strhodes "Print progress during Conditional Constant Propagation") \ 2627135446Strhodes \ 2628135446Strhodes develop(bool, TimeLivenessAnalysis, false, \ 2629135446Strhodes "Time computation of bytecode liveness analysis") \ 2630135446Strhodes \ 2631135446Strhodes develop(bool, TraceLivenessGen, false, \ 2632182645Sdougb "Trace the generation of liveness analysis information") \ 2633182645Sdougb \ 2634135446Strhodes notproduct(bool, TraceLivenessQuery, false, \ 2635135446Strhodes "Trace queries of liveness analysis information") \ 2636135446Strhodes \ 2637182645Sdougb notproduct(bool, CollectIndexSetStatistics, false, \ 2638135446Strhodes "Collect information about IndexSets") \ 2639135446Strhodes \ 2640135446Strhodes develop(bool, PrintDominators, false, \ 2641135446Strhodes "Print out dominator trees for GVN") \ 2642135446Strhodes \ 2643135446Strhodes develop(bool, UseLoopSafepoints, true, \ 2644135446Strhodes "Generate Safepoint nodes in every loop") \ 2645135446Strhodes \ 2646153816Sdougb notproduct(bool, TraceCISCSpill, false, \ 2647153816Sdougb "Trace allocators use of cisc spillable instructions") \ 2648153816Sdougb \ 2649135446Strhodes notproduct(bool, TraceSpilling, false, \ 2650135446Strhodes "Trace spilling") \ 2651135446Strhodes \ 2652135446Strhodes product(bool, SplitIfBlocks, true, \ 2653135446Strhodes "Clone compares and control flow through merge points to fold " \ 2654262706Serwin "some branches") \ 2655262706Serwin \ 2656135446Strhodes develop(intx, FastAllocateSizeLimit, 128*K, \ 2657135446Strhodes /* Note: This value is zero mod 1<<13 for a cheap sparc set. */ \ 2658135446Strhodes "Inline allocations larger than this in doublewords must go slow")\ 2659165071Sdougb \ 2660262706Serwin product(bool, AggressiveOpts, false, \ 2661262706Serwin "Enable aggressive optimizations - see arguments.cpp") \ 2662262706Serwin \ 2663262706Serwin product(bool, UseStringCache, false, \ 2664135446Strhodes "Enable String cache capabilities on String.java") \ 2665135446Strhodes \ 2666135446Strhodes /* statistics */ \ 2667135446Strhodes develop(bool, CountCompiledCalls, false, \ 2668170222Sdougb "counts method invocations") \ 2669135446Strhodes \ 2670135446Strhodes notproduct(bool, CountRuntimeCalls, false, \ 2671135446Strhodes "counts VM runtime calls") \ 2672135446Strhodes \ 2673135446Strhodes develop(bool, CountJNICalls, false, \ 2674135446Strhodes "counts jni method invocations") \ 2675153816Sdougb \ 2676254402Serwin notproduct(bool, CountJVMCalls, false, \ 2677135446Strhodes "counts jvm method invocations") \ 2678135446Strhodes \ 2679135446Strhodes notproduct(bool, CountRemovableExceptions, false, \ 2680135446Strhodes "count exceptions that could be replaced by branches due to " \ 2681135446Strhodes "inlining") \ 2682135446Strhodes \ 2683135446Strhodes notproduct(bool, ICMissHistogram, false, \ 2684135446Strhodes "produce histogram of IC misses") \ 2685135446Strhodes \ 2686135446Strhodes notproduct(bool, PrintClassStatistics, false, \ 2687135446Strhodes "prints class statistics at end of run") \ 2688135446Strhodes \ 2689135446Strhodes notproduct(bool, PrintMethodStatistics, false, \ 2690135446Strhodes "prints method statistics at end of run") \ 2691135446Strhodes \ 2692135446Strhodes /* interpreter */ \ 2693135446Strhodes develop(bool, ClearInterpreterLocals, false, \ 2694135446Strhodes "Always clear local variables of interpreter activations upon " \ 2695135446Strhodes "entry") \ 2696193149Sdougb \ 2697204619Sdougb product_pd(bool, RewriteBytecodes, \ 2698204619Sdougb "Allow rewriting of bytecodes (bytecodes are not immutable)") \ 2699204619Sdougb \ 2700254402Serwin product_pd(bool, RewriteFrequentPairs, \ 2701254402Serwin "Rewrite frequently used bytecode pairs into a single bytecode") \ 2702254402Serwin \ 2703193149Sdougb diagnostic(bool, PrintInterpreter, false, \ 2704135446Strhodes "Prints the generated interpreter code") \ 2705135446Strhodes \ 2706135446Strhodes product(bool, UseInterpreter, true, \ 2707135446Strhodes "Use interpreter for non-compiled methods") \ 2708135446Strhodes \ 2709135446Strhodes develop(bool, UseFastSignatureHandlers, true, \ 2710135446Strhodes "Use fast signature handlers for native calls") \ 2711135446Strhodes \ 2712135446Strhodes develop(bool, UseV8InstrsOnly, false, \ 2713135446Strhodes "Use SPARC-V8 Compliant instruction subset") \ 2714135446Strhodes \ 2715135446Strhodes product(bool, UseNiagaraInstrs, false, \ 2716135446Strhodes "Use Niagara-efficient instruction subset") \ 2717153816Sdougb \ 2718135446Strhodes develop(bool, UseCASForSwap, false, \ 2719135446Strhodes "Do not use swap instructions, but only CAS (in a loop) on SPARC")\ 2720135446Strhodes \ 2721135446Strhodes product(bool, UseLoopCounter, true, \ 2722135446Strhodes "Increment invocation counter on backward branch") \ 2723135446Strhodes \ 2724135446Strhodes product(bool, UseFastEmptyMethods, true, \ 2725135446Strhodes "Use fast method entry code for empty methods") \ 2726135446Strhodes \ 2727135446Strhodes product(bool, UseFastAccessorMethods, true, \ 2728135446Strhodes "Use fast method entry code for accessor methods") \ 2729135446Strhodes \ 2730135446Strhodes product_pd(bool, UseOnStackReplacement, \ 2731135446Strhodes "Use on stack replacement, calls runtime if invoc. counter " \ 2732135446Strhodes "overflows in loop") \ 2733170222Sdougb \ 2734135446Strhodes notproduct(bool, TraceOnStackReplacement, false, \ 2735135446Strhodes "Trace on stack replacement") \ 2736135446Strhodes \ 2737135446Strhodes develop(bool, PoisonOSREntry, true, \ 2738135446Strhodes "Detect abnormal calls to OSR code") \ 2739135446Strhodes \ 2740135446Strhodes product_pd(bool, PreferInterpreterNativeStubs, \ 2741135446Strhodes "Use always interpreter stubs for native methods invoked via " \ 2742135446Strhodes "interpreter") \ 2743135446Strhodes \ 2744135446Strhodes develop(bool, CountBytecodes, false, \ 2745135446Strhodes "Count number of bytecodes executed") \ 2746135446Strhodes \ 2747135446Strhodes develop(bool, PrintBytecodeHistogram, false, \ 2748135446Strhodes "Print histogram of the executed bytecodes") \ 2749135446Strhodes \ 2750135446Strhodes develop(bool, PrintBytecodePairHistogram, false, \ 2751135446Strhodes "Print histogram of the executed bytecode pairs") \ 2752135446Strhodes \ 2753135446Strhodes diagnostic(bool, PrintSignatureHandlers, false, \ 2754135446Strhodes "Print code generated for native method signature handlers") \ 2755135446Strhodes \ 2756135446Strhodes develop(bool, VerifyOops, false, \ 2757135446Strhodes "Do plausibility checks for oops") \ 2758135446Strhodes \ 2759135446Strhodes develop(bool, CheckUnhandledOops, false, \ 2760165071Sdougb "Check for unhandled oops in VM code") \ 2761165071Sdougb \ 2762165071Sdougb develop(bool, VerifyJNIFields, trueInDebug, \ 2763165071Sdougb "Verify jfieldIDs for instance fields") \ 2764135446Strhodes \ 2765135446Strhodes notproduct(bool, VerifyJNIEnvThread, false, \ 2766135446Strhodes "Verify JNIEnv.thread == Thread::current() when entering VM " \ 2767135446Strhodes "from JNI") \ 2768135446Strhodes \ 2769135446Strhodes develop(bool, VerifyFPU, false, \ 2770135446Strhodes "Verify FPU state (check for NaN's, etc.)") \ 2771135446Strhodes \ 2772135446Strhodes develop(bool, VerifyThread, false, \ 2773135446Strhodes "Watch the thread register for corruption (SPARC only)") \ 2774135446Strhodes \ 2775135446Strhodes develop(bool, VerifyActivationFrameSize, false, \ 2776135446Strhodes "Verify that activation frame didn't become smaller than its " \ 2777135446Strhodes "minimal size") \ 2778135446Strhodes \ 2779135446Strhodes develop(bool, TraceFrequencyInlining, false, \ 2780135446Strhodes "Trace frequency based inlining") \ 2781135446Strhodes \ 2782135446Strhodes notproduct(bool, TraceTypeProfile, false, \ 2783135446Strhodes "Trace type profile") \ 2784135446Strhodes \ 2785135446Strhodes develop_pd(bool, InlineIntrinsics, \ 2786135446Strhodes "Inline intrinsics that can be statically resolved") \ 2787135446Strhodes \ 2788135446Strhodes product_pd(bool, ProfileInterpreter, \ 2789135446Strhodes "Profile at the bytecode level during interpretation") \ 2790135446Strhodes \ 2791135446Strhodes develop_pd(bool, ProfileTraps, \ 2792135446Strhodes "Profile deoptimization traps at the bytecode level") \ 2793135446Strhodes \ 2794135446Strhodes product(intx, ProfileMaturityPercentage, 20, \ 2795135446Strhodes "number of method invocations/branches (expressed as % of " \ 2796135446Strhodes "CompileThreshold) before using the method's profile") \ 2797135446Strhodes \ 2798135446Strhodes develop(bool, PrintMethodData, false, \ 2799135446Strhodes "Print the results of +ProfileInterpreter at end of run") \ 2800135446Strhodes \ 2801135446Strhodes develop(bool, VerifyDataPointer, trueInDebug, \ 2802135446Strhodes "Verify the method data pointer during interpreter profiling") \ 2803135446Strhodes \ 2804135446Strhodes develop(bool, VerifyCompiledCode, false, \ 2805135446Strhodes "Include miscellaneous runtime verifications in nmethod code; " \ 2806153816Sdougb "default off because it disturbs nmethod size heuristics") \ 2807135446Strhodes \ 2808135446Strhodes notproduct(bool, CrashGCForDumpingJavaThread, false, \ 2809135446Strhodes "Manually make GC thread crash then dump java stack trace; " \ 2810135446Strhodes "Test only") \ 2811135446Strhodes \ 2812135446Strhodes /* compilation */ \ 2813135446Strhodes product(bool, UseCompiler, true, \ 2814135446Strhodes "use compilation") \ 2815135446Strhodes \ 2816135446Strhodes develop(bool, TraceCompilationPolicy, false, \ 2817170222Sdougb "Trace compilation policy") \ 2818135446Strhodes \ 2819135446Strhodes develop(bool, TimeCompilationPolicy, false, \ 2820135446Strhodes "Time the compilation policy") \ 2821135446Strhodes \ 2822135446Strhodes product(bool, UseCounterDecay, true, \ 2823135446Strhodes "adjust recompilation counters") \ 2824135446Strhodes \ 2825262706Serwin develop(intx, CounterHalfLifeTime, 30, \ 2826135446Strhodes "half-life time of invocation counters (in secs)") \ 2827135446Strhodes \ 2828135446Strhodes develop(intx, CounterDecayMinIntervalLength, 500, \ 2829135446Strhodes "Min. ms. between invocation of CounterDecay") \ 2830135446Strhodes \ 2831135446Strhodes product(bool, AlwaysCompileLoopMethods, false, \ 2832135446Strhodes "when using recompilation, never interpret methods " \ 2833135446Strhodes "containing loops") \ 2834135446Strhodes \ 2835135446Strhodes product(bool, DontCompileHugeMethods, true, \ 2836135446Strhodes "don't compile methods > HugeMethodLimit") \ 2837135446Strhodes \ 2838135446Strhodes /* Bytecode escape analysis estimation. */ \ 2839135446Strhodes product(bool, EstimateArgEscape, true, \ 2840135446Strhodes "Analyze bytecodes to estimate escape state of arguments") \ 2841135446Strhodes \ 2842135446Strhodes product(intx, BCEATraceLevel, 0, \ 2843135446Strhodes "How much tracing to do of bytecode escape analysis estimates") \ 2844135446Strhodes \ 2845135446Strhodes product(intx, MaxBCEAEstimateLevel, 5, \ 2846165071Sdougb "Maximum number of nested calls that are analyzed by BC EA.") \ 2847135446Strhodes \ 2848135446Strhodes product(intx, MaxBCEAEstimateSize, 150, \ 2849262706Serwin "Maximum bytecode size of a method to be analyzed by BC EA.") \ 2850262706Serwin \ 2851262706Serwin product(intx, AllocatePrefetchStyle, 1, \ 2852262706Serwin "0 = no prefetch, " \ 2853262706Serwin "1 = prefetch instructions for each allocation, " \ 2854262706Serwin "2 = use TLAB watermark to gate allocation prefetch, " \ 2855262706Serwin "3 = use BIS instruction on Sparc for allocation prefetch") \ 2856262706Serwin \ 2857262706Serwin product(intx, AllocatePrefetchDistance, -1, \ 2858135446Strhodes "Distance to prefetch ahead of allocation pointer") \ 2859135446Strhodes \ 2860135446Strhodes product(intx, AllocatePrefetchLines, 1, \ 2861135446Strhodes "Number of lines to prefetch ahead of allocation pointer") \ 2862135446Strhodes \ 2863135446Strhodes product(intx, AllocatePrefetchStepSize, 16, \ 2864135446Strhodes "Step size in bytes of sequential prefetch instructions") \ 2865135446Strhodes \ 2866135446Strhodes product(intx, AllocatePrefetchInstr, 0, \ 2867135446Strhodes "Prefetch instruction to prefetch ahead of allocation pointer") \ 2868135446Strhodes \ 2869165071Sdougb product(intx, ReadPrefetchInstr, 0, \ 2870135446Strhodes "Prefetch instruction to prefetch ahead") \ 2871135446Strhodes \ 2872135446Strhodes /* deoptimization */ \ 2873135446Strhodes develop(bool, TraceDeoptimization, false, \ 2874135446Strhodes "Trace deoptimization") \ 2875135446Strhodes \ 2876135446Strhodes develop(bool, DebugDeoptimization, false, \ 2877135446Strhodes "Tracing various information while debugging deoptimization") \ 2878135446Strhodes \ 2879135446Strhodes product(intx, SelfDestructTimer, 0, \ 2880135446Strhodes "Will cause VM to terminate after a given time (in minutes) " \ 2881135446Strhodes "(0 means off)") \ 2882135446Strhodes \ 2883170222Sdougb product(intx, MaxJavaStackTraceDepth, 1024, \ 2884135446Strhodes "Max. no. of lines in the stack trace for Java exceptions " \ 2885135446Strhodes "(0 means all)") \ 2886135446Strhodes \ 2887135446Strhodes NOT_EMBEDDED(develop(intx, GuaranteedSafepointInterval, 1000, \ 2888135446Strhodes "Guarantee a safepoint (at least) every so many milliseconds " \ 2889135446Strhodes "(0 means none)")) \ 2890135446Strhodes \ 2891135446Strhodes EMBEDDED_ONLY(product(intx, GuaranteedSafepointInterval, 0, \ 2892135446Strhodes "Guarantee a safepoint (at least) every so many milliseconds " \ 2893135446Strhodes "(0 means none)")) \ 2894135446Strhodes \ 2895135446Strhodes product(intx, SafepointTimeoutDelay, 10000, \ 2896135446Strhodes "Delay in milliseconds for option SafepointTimeout") \ 2897135446Strhodes \ 2898135446Strhodes product(intx, NmethodSweepFraction, 4, \ 2899135446Strhodes "Number of invocations of sweeper to cover all nmethods") \ 2900135446Strhodes \ 2901135446Strhodes product(intx, NmethodSweepCheckInterval, 5, \ 2902135446Strhodes "Compilers wake up every n seconds to possibly sweep nmethods") \ 2903135446Strhodes \ 2904135446Strhodes notproduct(intx, MemProfilingInterval, 500, \ 2905135446Strhodes "Time between each invocation of the MemProfiler") \ 2906135446Strhodes \ 2907135446Strhodes develop(intx, MallocCatchPtr, -1, \ 2908135446Strhodes "Hit breakpoint when mallocing/freeing this pointer") \ 2909135446Strhodes \ 2910135446Strhodes notproduct(intx, AssertRepeat, 1, \ 2911204619Sdougb "number of times to evaluate expression in assert " \ 2912204619Sdougb "(to estimate overhead); only works with -DUSE_REPEATED_ASSERTS") \ 2913204619Sdougb \ 2914204619Sdougb notproduct(ccstrlist, SuppressErrorAt, "", \ 2915135446Strhodes "List of assertions (file:line) to muzzle") \ 2916135446Strhodes \ 2917135446Strhodes notproduct(uintx, HandleAllocationLimit, 1024, \ 2918135446Strhodes "Threshold for HandleMark allocation when +TraceHandleAllocation "\ 2919135446Strhodes "is used") \ 2920135446Strhodes \ 2921135446Strhodes develop(uintx, TotalHandleAllocationLimit, 1024, \ 2922135446Strhodes "Threshold for total handle allocation when " \ 2923135446Strhodes "+TraceHandleAllocation is used") \ 2924135446Strhodes \ 2925135446Strhodes develop(intx, StackPrintLimit, 100, \ 2926135446Strhodes "number of stack frames to print in VM-level stack dump") \ 2927135446Strhodes \ 2928153816Sdougb notproduct(intx, MaxElementPrintSize, 256, \ 2929135446Strhodes "maximum number of elements to print") \ 2930135446Strhodes \ 2931135446Strhodes notproduct(intx, MaxSubklassPrintSize, 4, \ 2932135446Strhodes "maximum number of subklasses to print when printing klass") \ 2933135446Strhodes \ 2934135446Strhodes product(intx, MaxInlineLevel, 9, \ 2935135446Strhodes "maximum number of nested calls that are inlined") \ 2936135446Strhodes \ 2937135446Strhodes product(intx, MaxRecursiveInlineLevel, 1, \ 2938135446Strhodes "maximum number of nested recursive calls that are inlined") \ 2939135446Strhodes \ 2940135446Strhodes product_pd(intx, InlineSmallCode, \ 2941135446Strhodes "Only inline already compiled methods if their code size is " \ 2942135446Strhodes "less than this") \ 2943135446Strhodes \ 2944135446Strhodes product(intx, MaxInlineSize, 35, \ 2945135446Strhodes "maximum bytecode size of a method to be inlined") \ 2946135446Strhodes \ 2947135446Strhodes product_pd(intx, FreqInlineSize, \ 2948135446Strhodes "maximum bytecode size of a frequent method to be inlined") \ 2949135446Strhodes \ 2950135446Strhodes product(intx, MaxTrivialSize, 6, \ 2951135446Strhodes "maximum bytecode size of a trivial method to be inlined") \ 2952254402Serwin \ 2953135446Strhodes product(intx, MinInliningThreshold, 250, \ 2954135446Strhodes "min. invocation count a method needs to have to be inlined") \ 2955135446Strhodes \ 2956135446Strhodes develop(intx, AlignEntryCode, 4, \ 2957262706Serwin "aligns entry code to specified value (in bytes)") \ 2958262706Serwin \ 2959262706Serwin develop(intx, MethodHistogramCutoff, 100, \ 2960262706Serwin "cutoff value for method invoc. histogram (+CountCalls)") \ 2961262706Serwin \ 2962262706Serwin develop(intx, ProfilerNumberOfInterpretedMethods, 25, \ 2963135446Strhodes "# of interpreted methods to show in profile") \ 2964135446Strhodes \ 2965135446Strhodes develop(intx, ProfilerNumberOfCompiledMethods, 25, \ 2966135446Strhodes "# of compiled methods to show in profile") \ 2967135446Strhodes \ 2968170222Sdougb develop(intx, ProfilerNumberOfStubMethods, 25, \ 2969135446Strhodes "# of stub methods to show in profile") \ 2970135446Strhodes \ 2971135446Strhodes develop(intx, ProfilerNumberOfRuntimeStubNodes, 25, \ 2972135446Strhodes "# of runtime stub nodes to show in profile") \ 2973135446Strhodes \ 2974135446Strhodes product(intx, ProfileIntervalsTicks, 100, \ 2975135446Strhodes "# of ticks between printing of interval profile " \ 2976135446Strhodes "(+ProfileIntervals)") \ 2977135446Strhodes \ 2978135446Strhodes notproduct(intx, ScavengeALotInterval, 1, \ 2979135446Strhodes "Interval between which scavenge will occur with +ScavengeALot") \ 2980135446Strhodes \ 2981234010Sdougb notproduct(intx, FullGCALotInterval, 1, \ 2982135446Strhodes "Interval between which full gc will occur with +FullGCALot") \ 2983234010Sdougb \ 2984234010Sdougb notproduct(intx, FullGCALotStart, 0, \ 2985135446Strhodes "For which invocation to start FullGCAlot") \ 2986262706Serwin \ 2987262706Serwin notproduct(intx, FullGCALotDummies, 32*K, \ 2988262706Serwin "Dummy object allocated with +FullGCALot, forcing all objects " \ 2989135446Strhodes "to move") \ 2990135446Strhodes \ 2991135446Strhodes develop(intx, DontYieldALotInterval, 10, \ 2992135446Strhodes "Interval between which yields will be dropped (milliseconds)") \ 2993135446Strhodes \ 2994135446Strhodes develop(intx, MinSleepInterval, 1, \ 2995135446Strhodes "Minimum sleep() interval (milliseconds) when " \ 2996135446Strhodes "ConvertSleepToYield is off (used for SOLARIS)") \ 2997135446Strhodes \ 2998135446Strhodes product(intx, EventLogLength, 2000, \ 2999135446Strhodes "maximum nof events in event log") \ 3000135446Strhodes \ 3001170222Sdougb develop(intx, ProfilerPCTickThreshold, 15, \ 3002135446Strhodes "Number of ticks in a PC buckets to be a hotspot") \ 3003135446Strhodes \ 3004135446Strhodes notproduct(intx, DeoptimizeALotInterval, 5, \ 3005135446Strhodes "Number of exits until DeoptimizeALot kicks in") \ 3006135446Strhodes \ 3007135446Strhodes notproduct(intx, ZombieALotInterval, 5, \ 3008135446Strhodes "Number of exits until ZombieALot kicks in") \ 3009135446Strhodes \ 3010135446Strhodes develop(bool, StressNonEntrant, false, \ 3011135446Strhodes "Mark nmethods non-entrant at registration") \ 3012135446Strhodes \ 3013135446Strhodes diagnostic(intx, MallocVerifyInterval, 0, \ 3014135446Strhodes "if non-zero, verify C heap after every N calls to " \ 3015135446Strhodes "malloc/realloc/free") \ 3016135446Strhodes \ 3017135446Strhodes diagnostic(intx, MallocVerifyStart, 0, \ 3018135446Strhodes "if non-zero, start verifying C heap after Nth call to " \ 3019135446Strhodes "malloc/realloc/free") \ 3020135446Strhodes \ 3021135446Strhodes product(intx, TypeProfileWidth, 2, \ 3022135446Strhodes "number of receiver types to record in call/cast profile") \ 3023135446Strhodes \ 3024135446Strhodes develop(intx, BciProfileWidth, 2, \ 3025135446Strhodes "number of return bci's to record in ret profile") \ 3026135446Strhodes \ 3027135446Strhodes product(intx, PerMethodRecompilationCutoff, 400, \ 3028135446Strhodes "After recompiling N times, stay in the interpreter (-1=>'Inf')") \ 3029153816Sdougb \ 3030135446Strhodes product(intx, PerBytecodeRecompilationCutoff, 200, \ 3031135446Strhodes "Per-BCI limit on repeated recompilation (-1=>'Inf')") \ 3032135446Strhodes \ 3033135446Strhodes product(intx, PerMethodTrapLimit, 100, \ 3034135446Strhodes "Limit on traps (of one kind) in a method (includes inlines)") \ 3035135446Strhodes \ 3036135446Strhodes product(intx, PerBytecodeTrapLimit, 4, \ 3037262706Serwin "Limit on traps (of one kind) at a particular BCI") \ 3038135446Strhodes \ 3039135446Strhodes develop(intx, FreqCountInvocations, 1, \ 3040135446Strhodes "Scaling factor for branch frequencies (deprecated)") \ 3041135446Strhodes \ 3042135446Strhodes develop(intx, InlineFrequencyRatio, 20, \ 3043135446Strhodes "Ratio of call site execution to caller method invocation") \ 3044135446Strhodes \ 3045135446Strhodes develop_pd(intx, InlineFrequencyCount, \ 3046135446Strhodes "Count of call site execution necessary to trigger frequent " \ 3047234010Sdougb "inlining") \ 3048135446Strhodes \ 3049135446Strhodes develop(intx, InlineThrowCount, 50, \ 3050186462Sdougb "Force inlining of interpreted methods that throw this often") \ 3051186462Sdougb \ 3052135446Strhodes develop(intx, InlineThrowMaxSize, 200, \ 3053135446Strhodes "Force inlining of throwing methods smaller than this") \ 3054135446Strhodes \ 3055135446Strhodes product(intx, AliasLevel, 3, \ 3056135446Strhodes "0 for no aliasing, 1 for oop/field/static/array split, " \ 3057234010Sdougb "2 for class split, 3 for unique instances") \ 3058234010Sdougb \ 3059234010Sdougb develop(bool, VerifyAliases, false, \ 3060234010Sdougb "perform extra checks on the results of alias analysis") \ 3061234010Sdougb \ 3062234010Sdougb develop(intx, ProfilerNodeSize, 1024, \ 3063135446Strhodes "Size in K to allocate for the Profile Nodes of each thread") \ 3064234010Sdougb \ 3065135446Strhodes develop(intx, V8AtomicOperationUnderLockSpinCount, 50, \ 3066135446Strhodes "Number of times to spin wait on a v8 atomic operation lock") \ 3067234010Sdougb \ 3068135446Strhodes product(intx, ReadSpinIterations, 100, \ 3069135446Strhodes "Number of read attempts before a yield (spin inner loop)") \ 3070135446Strhodes \ 3071135446Strhodes product_pd(intx, PreInflateSpin, \ 3072135446Strhodes "Number of times to spin wait before inflation") \ 3073135446Strhodes \ 3074135446Strhodes product(intx, PreBlockSpin, 10, \ 3075135446Strhodes "Number of times to spin in an inflated lock before going to " \ 3076135446Strhodes "an OS lock") \ 3077234010Sdougb \ 3078234010Sdougb /* gc parameters */ \ 3079135446Strhodes product(uintx, InitialHeapSize, 0, \ 3080135446Strhodes "Initial heap size (in bytes); zero means OldSize + NewSize") \ 3081135446Strhodes \ 3082135446Strhodes product(uintx, MaxHeapSize, ScaleForWordSize(96*M), \ 3083135446Strhodes "Maximum heap size (in bytes)") \ 3084135446Strhodes \ 3085135446Strhodes product(uintx, OldSize, ScaleForWordSize(4*M), \ 3086135446Strhodes "Initial tenured generation size (in bytes)") \ 3087135446Strhodes \ 3088135446Strhodes product(uintx, NewSize, ScaleForWordSize(1*M), \ 3089135446Strhodes "Initial new generation size (in bytes)") \ 3090135446Strhodes \ 3091135446Strhodes product(uintx, MaxNewSize, max_uintx, \ 3092135446Strhodes "Maximum new generation size (in bytes), max_uintx means set " \ 3093135446Strhodes "ergonomically") \ 3094135446Strhodes \ 3095135446Strhodes product(uintx, PretenureSizeThreshold, 0, \ 3096135446Strhodes "Maximum size in bytes of objects allocated in DefNew " \ 3097135446Strhodes "generation; zero means no maximum") \ 3098234010Sdougb \ 3099135446Strhodes product(uintx, TLABSize, 0, \ 3100135446Strhodes "Starting TLAB size (in bytes); zero means set ergonomically") \ 3101135446Strhodes \ 3102135446Strhodes product(uintx, MinTLABSize, 2*K, \ 3103135446Strhodes "Minimum allowed TLAB size (in bytes)") \ 3104135446Strhodes \ 3105135446Strhodes product(uintx, TLABAllocationWeight, 35, \ 3106135446Strhodes "Allocation averaging weight") \ 3107135446Strhodes \ 3108135446Strhodes product(uintx, TLABWasteTargetPercent, 1, \ 3109135446Strhodes "Percentage of Eden that can be wasted") \ 3110135446Strhodes \ 3111135446Strhodes product(uintx, TLABRefillWasteFraction, 64, \ 3112170222Sdougb "Max TLAB waste at a refill (internal fragmentation)") \ 3113135446Strhodes \ 3114135446Strhodes product(uintx, TLABWasteIncrement, 4, \ 3115135446Strhodes "Increment allowed waste at slow allocation") \ 3116135446Strhodes \ 3117135446Strhodes product(intx, SurvivorRatio, 8, \ 3118135446Strhodes "Ratio of eden/survivor space size") \ 3119135446Strhodes \ 3120135446Strhodes product(intx, NewRatio, 2, \ 3121135446Strhodes "Ratio of new/old generation sizes") \ 3122135446Strhodes \ 3123135446Strhodes product_pd(uintx, NewSizeThreadIncrease, \ 3124135446Strhodes "Additional size added to desired new generation size per " \ 3125135446Strhodes "non-daemon thread (in bytes)") \ 3126135446Strhodes \ 3127135446Strhodes product_pd(uintx, PermSize, \ 3128135446Strhodes "Initial size of permanent generation (in bytes)") \ 3129135446Strhodes \ 3130135446Strhodes product_pd(uintx, MaxPermSize, \ 3131135446Strhodes "Maximum size of permanent generation (in bytes)") \ 3132135446Strhodes \ 3133135446Strhodes product(uintx, MinHeapFreeRatio, 40, \ 3134135446Strhodes "Min percentage of heap free after GC to avoid expansion") \ 3135135446Strhodes \ 3136135446Strhodes product(uintx, MaxHeapFreeRatio, 70, \ 3137135446Strhodes "Max percentage of heap free after GC to avoid shrinking") \ 3138135446Strhodes \ 3139135446Strhodes product(intx, SoftRefLRUPolicyMSPerMB, 1000, \ 3140135446Strhodes "Number of milliseconds per MB of free space in the heap") \ 3141135446Strhodes \ 3142135446Strhodes product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K), \ 3143135446Strhodes "Min change in heap space due to GC (in bytes)") \ 3144135446Strhodes \ 3145135446Strhodes product(uintx, MinPermHeapExpansion, ScaleForWordSize(256*K), \ 3146135446Strhodes "Min expansion of permanent heap (in bytes)") \ 3147135446Strhodes \ 3148135446Strhodes product(uintx, MaxPermHeapExpansion, ScaleForWordSize(4*M), \ 3149135446Strhodes "Max expansion of permanent heap without full GC (in bytes)") \ 3150135446Strhodes \ 3151135446Strhodes product(intx, QueuedAllocationWarningCount, 0, \ 3152135446Strhodes "Number of times an allocation that queues behind a GC " \ 3153135446Strhodes "will retry before printing a warning") \ 3154135446Strhodes \ 3155135446Strhodes diagnostic(uintx, VerifyGCStartAt, 0, \ 3156135446Strhodes "GC invoke count where +VerifyBefore/AfterGC kicks in") \ 3157135446Strhodes \ 3158135446Strhodes diagnostic(intx, VerifyGCLevel, 0, \ 3159165071Sdougb "Generation level at which to start +VerifyBefore/AfterGC") \ 3160165071Sdougb \ 3161165071Sdougb develop(uintx, ExitAfterGCNum, 0, \ 3162165071Sdougb "If non-zero, exit after this GC.") \ 3163135446Strhodes \ 3164135446Strhodes product(intx, MaxTenuringThreshold, 15, \ 3165135446Strhodes "Maximum value for tenuring threshold") \ 3166135446Strhodes \ 3167135446Strhodes product(intx, InitialTenuringThreshold, 7, \ 3168135446Strhodes "Initial value for tenuring threshold") \ 3169135446Strhodes \ 3170135446Strhodes product(intx, TargetSurvivorRatio, 50, \ 3171135446Strhodes "Desired percentage of survivor space used after scavenge") \ 3172135446Strhodes \ 3173135446Strhodes product(uintx, MarkSweepDeadRatio, 5, \ 3174135446Strhodes "Percentage (0-100) of the old gen allowed as dead wood." \ 3175135446Strhodes "Serial mark sweep treats this as both the min and max value." \ 3176135446Strhodes "CMS uses this value only if it falls back to mark sweep." \ 3177135446Strhodes "Par compact uses a variable scale based on the density of the" \ 3178135446Strhodes "generation and treats this as the max value when the heap is" \ 3179135446Strhodes "either completely full or completely empty. Par compact also" \ 3180135446Strhodes "has a smaller default value; see arguments.cpp.") \ 3181135446Strhodes \ 3182135446Strhodes product(uintx, PermMarkSweepDeadRatio, 20, \ 3183135446Strhodes "Percentage (0-100) of the perm gen allowed as dead wood." \ 3184135446Strhodes "See MarkSweepDeadRatio for collector-specific comments.") \ 3185135446Strhodes \ 3186135446Strhodes product(intx, MarkSweepAlwaysCompactCount, 4, \ 3187135446Strhodes "How often should we fully compact the heap (ignoring the dead " \ 3188135446Strhodes "space parameters)") \ 3189135446Strhodes \ 3190135446Strhodes product(intx, PrintCMSStatistics, 0, \ 3191135446Strhodes "Statistics for CMS") \ 3192135446Strhodes \ 3193135446Strhodes product(bool, PrintCMSInitiationStatistics, false, \ 3194135446Strhodes "Statistics for initiating a CMS collection") \ 3195135446Strhodes \ 3196135446Strhodes product(intx, PrintFLSStatistics, 0, \ 3197170222Sdougb "Statistics for CMS' FreeListSpace") \ 3198170222Sdougb \ 3199170222Sdougb product(intx, PrintFLSCensus, 0, \ 3200170222Sdougb "Census for CMS' FreeListSpace") \ 3201170222Sdougb \ 3202135446Strhodes develop(uintx, GCExpandToAllocateDelayMillis, 0, \ 3203135446Strhodes "Delay in ms between expansion and allocation") \ 3204135446Strhodes \ 3205135446Strhodes product(intx, DeferThrSuspendLoopCount, 4000, \ 3206186462Sdougb "(Unstable) Number of times to iterate in safepoint loop " \ 3207135446Strhodes " before blocking VM threads ") \ 3208135446Strhodes \ 3209135446Strhodes product(intx, DeferPollingPageLoopCount, -1, \ 3210135446Strhodes "(Unsafe,Unstable) Number of iterations in safepoint loop " \ 3211135446Strhodes "before changing safepoint polling page to RO ") \ 3212186462Sdougb \ 3213170222Sdougb product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)") \ 3214170222Sdougb \ 3215170222Sdougb product(bool, PSChunkLargeArrays, true, \ 3216135446Strhodes "true: process large arrays in chunks") \ 3217135446Strhodes \ 3218135446Strhodes product(uintx, GCDrainStackTargetSize, 64, \ 3219135446Strhodes "how many entries we'll try to leave on the stack during " \ 3220135446Strhodes "parallel GC") \ 3221135446Strhodes \ 3222135446Strhodes /* stack parameters */ \ 3223135446Strhodes product_pd(intx, StackYellowPages, \ 3224135446Strhodes "Number of yellow zone (recoverable overflows) pages") \ 3225135446Strhodes \ 3226135446Strhodes product_pd(intx, StackRedPages, \ 3227135446Strhodes "Number of red zone (unrecoverable overflows) pages") \ 3228135446Strhodes \ 3229135446Strhodes product_pd(intx, StackShadowPages, \ 3230186462Sdougb "Number of shadow zone (for overflow checking) pages" \ 3231135446Strhodes " this should exceed the depth of the VM and native call stack") \ 3232135446Strhodes \ 3233135446Strhodes product_pd(intx, ThreadStackSize, \ 3234135446Strhodes "Thread Stack Size (in Kbytes)") \ 3235135446Strhodes \ 3236135446Strhodes product_pd(intx, VMThreadStackSize, \ 3237135446Strhodes "Non-Java Thread Stack Size (in Kbytes)") \ 3238135446Strhodes \ 3239135446Strhodes product_pd(intx, CompilerThreadStackSize, \ 3240135446Strhodes "Compiler Thread Stack Size (in Kbytes)") \ 3241135446Strhodes \ 3242135446Strhodes develop_pd(uintx, JVMInvokeMethodSlack, \ 3243135446Strhodes "Stack space (bytes) required for JVM_InvokeMethod to complete") \ 3244135446Strhodes \ 3245135446Strhodes product(uintx, ThreadSafetyMargin, 50*M, \ 3246135446Strhodes "Thread safety margin is used on fixed-stack LinuxThreads (on " \ 3247135446Strhodes "Linux/x86 only) to prevent heap-stack collision. Set to 0 to " \ 3248135446Strhodes "disable this feature") \ 3249135446Strhodes \ 3250135446Strhodes /* code cache parameters */ \ 3251135446Strhodes develop(uintx, CodeCacheSegmentSize, 64, \ 3252135446Strhodes "Code cache segment size (in bytes) - smallest unit of " \ 3253135446Strhodes "allocation") \ 3254135446Strhodes \ 3255135446Strhodes develop_pd(intx, CodeEntryAlignment, \ 3256135446Strhodes "Code entry alignment for generated code (in bytes)") \ 3257135446Strhodes \ 3258135446Strhodes product_pd(intx, OptoLoopAlignment, \ 3259135446Strhodes "Align inner loops to zero relative to this modulus") \ 3260135446Strhodes \ 3261135446Strhodes product_pd(uintx, InitialCodeCacheSize, \ 3262135446Strhodes "Initial code cache size (in bytes)") \ 3263135446Strhodes \ 3264135446Strhodes product_pd(uintx, ReservedCodeCacheSize, \ 3265170222Sdougb "Reserved code cache size (in bytes) - maximum code cache size") \ 3266170222Sdougb \ 3267170222Sdougb product(uintx, CodeCacheMinimumFreeSpace, 500*K, \ 3268193149Sdougb "When less than X space left, we stop compiling.") \ 3269193149Sdougb \ 3270135446Strhodes product_pd(uintx, CodeCacheExpansionSize, \ 3271135446Strhodes "Code cache expansion size (in bytes)") \ 3272135446Strhodes \ 3273135446Strhodes develop_pd(uintx, CodeCacheMinBlockLength, \ 3274135446Strhodes "Minimum number of segments in a code cache block.") \ 3275135446Strhodes \ 3276135446Strhodes notproduct(bool, ExitOnFullCodeCache, false, \ 3277135446Strhodes "Exit the VM if we fill the code cache.") \ 3278135446Strhodes \ 3279135446Strhodes product(bool, UseCodeCacheFlushing, false, \ 3280135446Strhodes "Attempt to clean the code cache before shutting off compiler") \ 3281135446Strhodes \ 3282135446Strhodes product(intx, MinCodeCacheFlushingInterval, 30, \ 3283135446Strhodes "Min number of seconds between code cache cleaning sessions") \ 3284135446Strhodes \ 3285135446Strhodes product(uintx, CodeCacheFlushingMinimumFreeSpace, 1500*K, \ 3286135446Strhodes "When less than X space left, start code cache cleaning") \ 3287135446Strhodes \ 3288135446Strhodes /* interpreter debugging */ \ 3289135446Strhodes develop(intx, BinarySwitchThreshold, 5, \ 3290135446Strhodes "Minimal number of lookupswitch entries for rewriting to binary " \ 3291135446Strhodes "switch") \ 3292135446Strhodes \ 3293135446Strhodes develop(intx, StopInterpreterAt, 0, \ 3294135446Strhodes "Stops interpreter execution at specified bytecode number") \ 3295135446Strhodes \ 3296135446Strhodes develop(intx, TraceBytecodesAt, 0, \ 3297135446Strhodes "Traces bytecodes starting with specified bytecode number") \ 3298135446Strhodes \ 3299135446Strhodes /* compiler interface */ \ 3300135446Strhodes develop(intx, CIStart, 0, \ 3301135446Strhodes "the id of the first compilation to permit") \ 3302135446Strhodes \ 3303135446Strhodes develop(intx, CIStop, -1, \ 3304135446Strhodes "the id of the last compilation to permit") \ 3305135446Strhodes \ 3306135446Strhodes develop(intx, CIStartOSR, 0, \ 3307135446Strhodes "the id of the first osr compilation to permit " \ 3308135446Strhodes "(CICountOSR must be on)") \ 3309135446Strhodes \ 3310135446Strhodes develop(intx, CIStopOSR, -1, \ 3311135446Strhodes "the id of the last osr compilation to permit " \ 3312135446Strhodes "(CICountOSR must be on)") \ 3313135446Strhodes \ 3314135446Strhodes develop(intx, CIBreakAtOSR, -1, \ 3315135446Strhodes "id of osr compilation to break at") \ 3316135446Strhodes \ 3317135446Strhodes develop(intx, CIBreakAt, -1, \ 3318135446Strhodes "id of compilation to break at") \ 3319135446Strhodes \ 3320135446Strhodes product(ccstrlist, CompileOnly, "", \ 3321135446Strhodes "List of methods (pkg/class.name) to restrict compilation to") \ 3322135446Strhodes \ 3323135446Strhodes product(ccstr, CompileCommandFile, NULL, \ 3324193149Sdougb "Read compiler commands from this file [.hotspot_compiler]") \ 3325193149Sdougb \ 3326193149Sdougb product(ccstrlist, CompileCommand, "", \ 3327193149Sdougb "Prepend to .hotspot_compiler; e.g. log,java/lang/String.<init>") \ 3328193149Sdougb \ 3329193149Sdougb product(bool, CICompilerCountPerCPU, false, \ 3330193149Sdougb "1 compiler thread for log(N CPUs)") \ 3331193149Sdougb \ 3332193149Sdougb develop(intx, CIFireOOMAt, -1, \ 3333193149Sdougb "Fire OutOfMemoryErrors throughout CI for testing the compiler " \ 3334193149Sdougb "(non-negative value throws OOM after this many CI accesses " \ 3335193149Sdougb "in each compile)") \ 3336193149Sdougb \ 3337193149Sdougb develop(intx, CIFireOOMAtDelay, -1, \ 3338193149Sdougb "Wait for this many CI accesses to occur in all compiles before " \ 3339193149Sdougb "beginning to throw OutOfMemoryErrors in each compile") \ 3340193149Sdougb \ 3341193149Sdougb notproduct(bool, CIObjectFactoryVerify, false, \ 3342193149Sdougb "enable potentially expensive verification in ciObjectFactory") \ 3343193149Sdougb \ 3344193149Sdougb /* Priorities */ \ 3345193149Sdougb product_pd(bool, UseThreadPriorities, "Use native thread priorities") \ 3346193149Sdougb \ 3347193149Sdougb product(intx, ThreadPriorityPolicy, 0, \ 3348193149Sdougb "0 : Normal. "\ 3349193149Sdougb " VM chooses priorities that are appropriate for normal "\ 3350193149Sdougb " applications. On Solaris NORM_PRIORITY and above are mapped "\ 3351193149Sdougb " to normal native priority. Java priorities below NORM_PRIORITY"\ 3352193149Sdougb " map to lower native priority values. On Windows applications"\ 3353193149Sdougb " are allowed to use higher native priorities. However, with "\ 3354193149Sdougb " ThreadPriorityPolicy=0, VM will not use the highest possible"\ 3355193149Sdougb " native priority, THREAD_PRIORITY_TIME_CRITICAL, as it may "\ 3356193149Sdougb " interfere with system threads. On Linux thread priorities "\ 3357193149Sdougb " are ignored because the OS does not support static priority "\ 3358193149Sdougb " in SCHED_OTHER scheduling class which is the only choice for"\ 3359193149Sdougb " non-root, non-realtime applications. "\ 3360193149Sdougb "1 : Aggressive. "\ 3361193149Sdougb " Java thread priorities map over to the entire range of "\ 3362193149Sdougb " native thread priorities. Higher Java thread priorities map "\ 3363193149Sdougb " to higher native thread priorities. This policy should be "\ 3364193149Sdougb " used with care, as sometimes it can cause performance "\ 3365193149Sdougb " degradation in the application and/or the entire system. On "\ 3366193149Sdougb " Linux this policy requires root privilege.") \ 3367193149Sdougb \ 3368193149Sdougb product(bool, ThreadPriorityVerbose, false, \ 3369193149Sdougb "print priority changes") \ 3370170222Sdougb \ 3371186462Sdougb product(intx, DefaultThreadPriority, -1, \ 3372135446Strhodes "what native priority threads run at if not specified elsewhere (-1 means no change)") \ 3373135446Strhodes \ 3374135446Strhodes product(intx, CompilerThreadPriority, -1, \ 3375135446Strhodes "what priority should compiler threads run at (-1 means no change)") \ 3376135446Strhodes \ 3377135446Strhodes product(intx, VMThreadPriority, -1, \ 3378135446Strhodes "what priority should VM threads run at (-1 means no change)") \ 3379135446Strhodes \ 3380135446Strhodes product(bool, CompilerThreadHintNoPreempt, true, \ 3381135446Strhodes "(Solaris only) Give compiler threads an extra quanta") \ 3382135446Strhodes \ 3383186462Sdougb product(bool, VMThreadHintNoPreempt, false, \ 3384170222Sdougb "(Solaris only) Give VM thread an extra quanta") \ 3385170222Sdougb \ 3386170222Sdougb product(intx, JavaPriority1_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3387135446Strhodes product(intx, JavaPriority2_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3388135446Strhodes product(intx, JavaPriority3_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3389135446Strhodes product(intx, JavaPriority4_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3390135446Strhodes product(intx, JavaPriority5_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3391135446Strhodes product(intx, JavaPriority6_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3392135446Strhodes product(intx, JavaPriority7_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3393135446Strhodes product(intx, JavaPriority8_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3394135446Strhodes product(intx, JavaPriority9_To_OSPriority, -1, "Map Java priorities to OS priorities") \ 3395135446Strhodes product(intx, JavaPriority10_To_OSPriority,-1, "Map Java priorities to OS priorities") \ 3396135446Strhodes \ 3397135446Strhodes /* compiler debugging */ \ 3398135446Strhodes notproduct(intx, CompileTheWorldStartAt, 1, \ 3399135446Strhodes "First class to consider when using +CompileTheWorld") \ 3400135446Strhodes \ 3401135446Strhodes notproduct(intx, CompileTheWorldStopAt, max_jint, \ 3402135446Strhodes "Last class to consider when using +CompileTheWorld") \ 3403135446Strhodes \ 3404170222Sdougb develop(intx, NewCodeParameter, 0, \ 3405170222Sdougb "Testing Only: Create a dedicated integer parameter before " \ 3406170222Sdougb "putback") \ 3407170222Sdougb \ 3408170222Sdougb /* new oopmap storage allocation */ \ 3409170222Sdougb develop(intx, MinOopMapAllocation, 8, \ 3410170222Sdougb "Minimum number of OopMap entries in an OopMapSet") \ 3411135446Strhodes \ 3412135446Strhodes /* Background Compilation */ \ 3413135446Strhodes develop(intx, LongCompileThreshold, 50, \ 3414135446Strhodes "Used with +TraceLongCompiles") \ 3415135446Strhodes \ 3416135446Strhodes product(intx, StarvationMonitorInterval, 200, \ 3417135446Strhodes "Pause between each check in ms") \ 3418135446Strhodes \ 3419135446Strhodes /* recompilation */ \ 3420135446Strhodes product_pd(intx, CompileThreshold, \ 3421135446Strhodes "number of interpreted method invocations before (re-)compiling") \ 3422135446Strhodes \ 3423135446Strhodes product_pd(intx, BackEdgeThreshold, \ 3424135446Strhodes "Interpreter Back edge threshold at which an OSR compilation is invoked")\ 3425135446Strhodes \ 3426135446Strhodes product(intx, Tier0InvokeNotifyFreqLog, 7, \ 3427135446Strhodes "Interpreter (tier 0) invocation notification frequency.") \ 3428135446Strhodes \ 3429135446Strhodes product(intx, Tier2InvokeNotifyFreqLog, 11, \ 3430135446Strhodes "C1 without MDO (tier 2) invocation notification frequency.") \ 3431135446Strhodes \ 3432135446Strhodes product(intx, Tier3InvokeNotifyFreqLog, 10, \ 3433135446Strhodes "C1 with MDO profiling (tier 3) invocation notification " \ 3434135446Strhodes "frequency.") \ 3435135446Strhodes \ 3436135446Strhodes product(intx, Tier0BackedgeNotifyFreqLog, 10, \ 3437170222Sdougb "Interpreter (tier 0) invocation notification frequency.") \ 3438170222Sdougb \ 3439135446Strhodes product(intx, Tier2BackedgeNotifyFreqLog, 14, \ 3440135446Strhodes "C1 without MDO (tier 2) invocation notification frequency.") \ 3441135446Strhodes \ 3442135446Strhodes product(intx, Tier3BackedgeNotifyFreqLog, 13, \ 3443135446Strhodes "C1 with MDO profiling (tier 3) invocation notification " \ 3444135446Strhodes "frequency.") \ 3445135446Strhodes \ 3446135446Strhodes product(intx, Tier2CompileThreshold, 0, \ 3447135446Strhodes "threshold at which tier 2 compilation is invoked") \ 3448135446Strhodes \ 3449135446Strhodes product(intx, Tier2BackEdgeThreshold, 0, \ 3450135446Strhodes "Back edge threshold at which tier 2 compilation is invoked") \ 3451135446Strhodes \ 3452135446Strhodes product(intx, Tier3InvocationThreshold, 200, \ 3453135446Strhodes "Compile if number of method invocations crosses this " \ 3454135446Strhodes "threshold") \ 3455135446Strhodes \ 3456135446Strhodes product(intx, Tier3MinInvocationThreshold, 100, \ 3457135446Strhodes "Minimum invocation to compile at tier 3") \ 3458135446Strhodes \ 3459135446Strhodes product(intx, Tier3CompileThreshold, 2000, \ 3460135446Strhodes "Threshold at which tier 3 compilation is invoked (invocation " \ 3461135446Strhodes "minimum must be satisfied.") \ 3462135446Strhodes \ 3463135446Strhodes product(intx, Tier3BackEdgeThreshold, 7000, \ 3464135446Strhodes "Back edge threshold at which tier 3 OSR compilation is invoked") \ 3465135446Strhodes \ 3466135446Strhodes product(intx, Tier4InvocationThreshold, 5000, \ 3467135446Strhodes "Compile if number of method invocations crosses this " \ 3468135446Strhodes "threshold") \ 3469135446Strhodes \ 3470135446Strhodes product(intx, Tier4MinInvocationThreshold, 600, \ 3471135446Strhodes "Minimum invocation to compile at tier 4") \ 3472135446Strhodes \ 3473262706Serwin product(intx, Tier4CompileThreshold, 15000, \ 3474170222Sdougb "Threshold at which tier 4 compilation is invoked (invocation " \ 3475234010Sdougb "minimum must be satisfied.") \ 3476135446Strhodes \ 3477135446Strhodes product(intx, Tier4BackEdgeThreshold, 40000, \ 3478135446Strhodes "Back edge threshold at which tier 4 OSR compilation is invoked") \ 3479135446Strhodes \ 3480135446Strhodes product(intx, Tier3DelayOn, 5, \ 3481135446Strhodes "If C2 queue size grows over this amount per compiler thread " \ 3482135446Strhodes "stop compiling at tier 3 and start compiling at tier 2") \ 3483135446Strhodes \ 3484135446Strhodes product(intx, Tier3DelayOff, 2, \ 3485135446Strhodes "If C2 queue size is less than this amount per compiler thread " \ 3486135446Strhodes "allow methods compiled at tier 2 transition to tier 3") \ 3487135446Strhodes \ 3488135446Strhodes product(intx, Tier3LoadFeedback, 5, \ 3489135446Strhodes "Tier 3 thresholds will increase twofold when C1 queue size " \ 3490135446Strhodes "reaches this amount per compiler thread") \ 3491135446Strhodes \ 3492135446Strhodes product(intx, Tier4LoadFeedback, 3, \ 3493135446Strhodes "Tier 4 thresholds will increase twofold when C2 queue size " \ 3494135446Strhodes "reaches this amount per compiler thread") \ 3495135446Strhodes \ 3496135446Strhodes product(intx, TieredCompileTaskTimeout, 50, \ 3497135446Strhodes "Kill compile task if method was not used within " \ 3498135446Strhodes "given timeout in milliseconds") \ 3499135446Strhodes \ 3500135446Strhodes product(intx, TieredStopAtLevel, 4, \ 3501135446Strhodes "Stop at given compilation level") \ 3502135446Strhodes \ 3503135446Strhodes product(intx, Tier0ProfilingStartPercentage, 200, \ 3504135446Strhodes "Start profiling in interpreter if the counters exceed tier 3" \ 3505135446Strhodes "thresholds by the specified percentage") \ 3506135446Strhodes \ 3507135446Strhodes product(intx, TieredRateUpdateMinTime, 1, \ 3508135446Strhodes "Minimum rate sampling interval (in milliseconds)") \ 3509186462Sdougb \ 3510135446Strhodes product(intx, TieredRateUpdateMaxTime, 25, \ 3511135446Strhodes "Maximum rate sampling interval (in milliseconds)") \ 3512135446Strhodes \ 3513135446Strhodes product_pd(bool, TieredCompilation, \ 3514135446Strhodes "Enable tiered compilation") \ 3515135446Strhodes \ 3516135446Strhodes product(bool, PrintTieredEvents, false, \ 3517135446Strhodes "Print tiered events notifications") \ 3518135446Strhodes \ 3519254402Serwin product(bool, StressTieredRuntime, false, \ 3520135446Strhodes "Alternate client and server compiler on compile requests") \ 3521135446Strhodes \ 3522135446Strhodes product_pd(intx, OnStackReplacePercentage, \ 3523135446Strhodes "NON_TIERED number of method invocations/branches (expressed as %"\ 3524135446Strhodes "of CompileThreshold) before (re-)compiling OSR code") \ 3525186462Sdougb \ 3526135446Strhodes product(intx, InterpreterProfilePercentage, 33, \ 3527153816Sdougb "NON_TIERED number of method invocations/branches (expressed as %"\ 3528135446Strhodes "of CompileThreshold) before profiling in the interpreter") \ 3529135446Strhodes \ 3530135446Strhodes develop(intx, MaxRecompilationSearchLength, 10, \ 3531135446Strhodes "max. # frames to inspect searching for recompilee") \ 3532135446Strhodes \ 3533135446Strhodes develop(intx, MaxInterpretedSearchLength, 3, \ 3534135446Strhodes "max. # interp. frames to skip when searching for recompilee") \ 3535135446Strhodes \ 3536135446Strhodes develop(intx, DesiredMethodLimit, 8000, \ 3537135446Strhodes "desired max. method size (in bytecodes) after inlining") \ 3538135446Strhodes \ 3539135446Strhodes develop(intx, HugeMethodLimit, 8000, \ 3540135446Strhodes "don't compile methods larger than this if " \ 3541153816Sdougb "+DontCompileHugeMethods") \ 3542135446Strhodes \ 3543135446Strhodes /* New JDK 1.4 reflection implementation */ \ 3544186462Sdougb \ 3545135446Strhodes develop(bool, UseNewReflection, true, \ 3546135446Strhodes "Temporary flag for transition to reflection based on dynamic " \ 3547135446Strhodes "bytecode generation in 1.4; can no longer be turned off in 1.4 " \ 3548186462Sdougb "JDK, and is unneeded in 1.3 JDK, but marks most places VM " \ 3549135446Strhodes "changes were needed") \ 3550186462Sdougb \ 3551135446Strhodes develop(bool, VerifyReflectionBytecodes, false, \ 3552135446Strhodes "Force verification of 1.4 reflection bytecodes. Does not work " \ 3553135446Strhodes "in situations like that described in 4486457 or for " \ 3554135446Strhodes "constructors generated for serialization, so can not be enabled "\ 3555135446Strhodes "in product.") \ 3556135446Strhodes \ 3557135446Strhodes product(bool, ReflectionWrapResolutionErrors, true, \ 3558135446Strhodes "Temporary flag for transition to AbstractMethodError wrapped " \ 3559135446Strhodes "in InvocationTargetException. See 6531596") \ 3560135446Strhodes \ 3561135446Strhodes \ 3562135446Strhodes develop(intx, FastSuperclassLimit, 8, \ 3563135446Strhodes "Depth of hardwired instanceof accelerator array") \ 3564135446Strhodes \ 3565135446Strhodes /* Properties for Java libraries */ \ 3566186462Sdougb \ 3567135446Strhodes product(intx, MaxDirectMemorySize, -1, \ 3568186462Sdougb "Maximum total size of NIO direct-buffer allocations") \ 3569135446Strhodes \ 3570135446Strhodes /* temporary developer defined flags */ \ 3571135446Strhodes \ 3572135446Strhodes diagnostic(bool, UseNewCode, false, \ 3573135446Strhodes "Testing Only: Use the new version while testing") \ 3574135446Strhodes \ 3575135446Strhodes diagnostic(bool, UseNewCode2, false, \ 3576135446Strhodes "Testing Only: Use the new version while testing") \ 3577135446Strhodes \ 3578135446Strhodes diagnostic(bool, UseNewCode3, false, \ 3579135446Strhodes "Testing Only: Use the new version while testing") \ 3580135446Strhodes \ 3581135446Strhodes /* flags for performance data collection */ \ 3582135446Strhodes \ 3583135446Strhodes NOT_EMBEDDED(product(bool, UsePerfData, true, \ 3584135446Strhodes "Flag to disable jvmstat instrumentation for performance testing" \ 3585135446Strhodes "and problem isolation purposes.")) \ 3586135446Strhodes \ 3587135446Strhodes EMBEDDED_ONLY(product(bool, UsePerfData, false, \ 3588135446Strhodes "Flag to disable jvmstat instrumentation for performance testing" \ 3589135446Strhodes "and problem isolation purposes.")) \ 3590135446Strhodes \ 3591135446Strhodes product(bool, PerfDataSaveToFile, false, \ 3592135446Strhodes "Save PerfData memory to hsperfdata_<pid> file on exit") \ 3593135446Strhodes \ 3594135446Strhodes product(ccstr, PerfDataSaveFile, NULL, \ 3595135446Strhodes "Save PerfData memory to the specified absolute pathname," \ 3596135446Strhodes "%p in the file name if present will be replaced by pid") \ 3597135446Strhodes \ 3598135446Strhodes product(intx, PerfDataSamplingInterval, 50 /*ms*/, \ 3599135446Strhodes "Data sampling interval in milliseconds") \ 3600135446Strhodes \ 3601135446Strhodes develop(bool, PerfTraceDataCreation, false, \ 3602135446Strhodes "Trace creation of Performance Data Entries") \ 3603135446Strhodes \ 3604135446Strhodes develop(bool, PerfTraceMemOps, false, \ 3605135446Strhodes "Trace PerfMemory create/attach/detach calls") \ 3606135446Strhodes \ 3607135446Strhodes product(bool, PerfDisableSharedMem, false, \ 3608135446Strhodes "Store performance data in standard memory") \ 3609135446Strhodes \ 3610135446Strhodes product(intx, PerfDataMemorySize, 32*K, \ 3611135446Strhodes "Size of performance data memory region. Will be rounded " \ 3612135446Strhodes "up to a multiple of the native os page size.") \ 3613135446Strhodes \ 3614135446Strhodes product(intx, PerfMaxStringConstLength, 1024, \ 3615135446Strhodes "Maximum PerfStringConstant string length before truncation") \ 3616135446Strhodes \ 3617135446Strhodes product(bool, PerfAllowAtExitRegistration, false, \ 3618135446Strhodes "Allow registration of atexit() methods") \ 3619135446Strhodes \ 3620135446Strhodes product(bool, PerfBypassFileSystemCheck, false, \ 3621135446Strhodes "Bypass Win32 file system criteria checks (Windows Only)") \ 3622135446Strhodes \ 3623135446Strhodes product(intx, UnguardOnExecutionViolation, 0, \ 3624135446Strhodes "Unguard page and retry on no-execute fault (Win32 only)" \ 3625193149Sdougb "0=off, 1=conservative, 2=aggressive") \ 3626193149Sdougb \ 3627193149Sdougb /* Serviceability Support */ \ 3628193149Sdougb \ 3629193149Sdougb product(bool, ManagementServer, false, \ 3630193149Sdougb "Create JMX Management Server") \ 3631193149Sdougb \ 3632193149Sdougb product(bool, DisableAttachMechanism, false, \ 3633193149Sdougb "Disable mechanism that allows tools to attach to this VM") \ 3634193149Sdougb \ 3635193149Sdougb product(bool, StartAttachListener, false, \ 3636193149Sdougb "Always start Attach Listener at VM startup") \ 3637193149Sdougb \ 3638135446Strhodes manageable(bool, PrintConcurrentLocks, false, \ 3639135446Strhodes "Print java.util.concurrent locks in thread dump") \ 3640170222Sdougb \ 3641135446Strhodes product(bool, TransmitErrorReport, false, \ 3642135446Strhodes "Enable error report transmission on erroneous termination") \ 3643135446Strhodes \ 3644135446Strhodes product(ccstr, ErrorReportServer, NULL, \ 3645193149Sdougb "Override built-in error report server address") \ 3646135446Strhodes \ 3647135446Strhodes /* Shared spaces */ \ 3648135446Strhodes \ 3649135446Strhodes product(bool, UseSharedSpaces, true, \ 3650135446Strhodes "Use shared spaces in the permanent generation") \ 3651135446Strhodes \ 3652135446Strhodes product(bool, RequireSharedSpaces, false, \ 3653135446Strhodes "Require shared spaces in the permanent generation") \ 3654193149Sdougb \ 3655193149Sdougb product(bool, DumpSharedSpaces, false, \ 3656135446Strhodes "Special mode: JVM reads a class list, loads classes, builds " \ 3657193149Sdougb "shared spaces, and dumps the shared spaces to a file to be " \ 3658193149Sdougb "used in future JVM runs.") \ 3659135446Strhodes \ 3660135446Strhodes product(bool, PrintSharedSpaces, false, \ 3661225361Sdougb "Print usage of shared spaces") \ 3662234010Sdougb \ 3663225361Sdougb product(uintx, SharedDummyBlockSize, 512*M, \ 3664225361Sdougb "Size of dummy block used to shift heap addresses (in bytes)") \ 3665225361Sdougb \ 3666225361Sdougb product(uintx, SharedReadWriteSize, NOT_LP64(12*M) LP64_ONLY(13*M), \ 3667225361Sdougb "Size of read-write space in permanent generation (in bytes)") \ 3668225361Sdougb \ 3669225361Sdougb product(uintx, SharedReadOnlySize, 10*M, \ 3670225361Sdougb "Size of read-only space in permanent generation (in bytes)") \ 3671225361Sdougb \ 3672234010Sdougb product(uintx, SharedMiscDataSize, NOT_LP64(4*M) LP64_ONLY(5*M), \ 3673234010Sdougb "Size of the shared data area adjacent to the heap (in bytes)") \ 3674234010Sdougb \ 3675234010Sdougb product(uintx, SharedMiscCodeSize, 4*M, \ 3676234010Sdougb "Size of the shared code area adjacent to the heap (in bytes)") \ 3677234010Sdougb \ 3678234010Sdougb diagnostic(bool, SharedOptimizeColdStart, true, \ 3679234010Sdougb "At dump time, order shared objects to achieve better " \ 3680225361Sdougb "cold startup time.") \ 3681225361Sdougb \ 3682225361Sdougb develop(intx, SharedOptimizeColdStartPolicy, 2, \ 3683225361Sdougb "Reordering policy for SharedOptimizeColdStart " \ 3684225361Sdougb "0=favor classload-time locality, 1=balanced, " \ 3685225361Sdougb "2=favor runtime locality") \ 3686225361Sdougb \ 3687225361Sdougb diagnostic(bool, SharedSkipVerify, false, \ 3688225361Sdougb "Skip assert() and verify() which page-in unwanted shared " \ 3689225361Sdougb "objects. ") \ 3690225361Sdougb \ 3691170222Sdougb product(bool, AnonymousClasses, false, \ 3692135446Strhodes "support sun.misc.Unsafe.defineAnonymousClass") \ 3693135446Strhodes \ 3694135446Strhodes experimental(bool, EnableMethodHandles, false, \ 3695135446Strhodes "support method handles (true by default under JSR 292)") \ 3696254402Serwin \ 3697135446Strhodes diagnostic(intx, MethodHandlePushLimit, 3, \ 3698135446Strhodes "number of additional stack slots a method handle may push") \ 3699135446Strhodes \ 3700135446Strhodes develop(bool, TraceMethodHandles, false, \ 3701135446Strhodes "trace internal method handle operations") \ 3702254402Serwin \ 3703254402Serwin diagnostic(bool, VerifyMethodHandles, trueInDebug, \ 3704254402Serwin "perform extra checks when constructing method handles") \ 3705254402Serwin \ 3706254402Serwin diagnostic(bool, OptimizeMethodHandles, true, \ 3707254402Serwin "when constructing method handles, try to improve them") \ 3708254402Serwin \ 3709135446Strhodes experimental(bool, TrustFinalNonStaticFields, false, \ 3710135446Strhodes "trust final non-static declarations for constant folding") \ 3711170222Sdougb \ 3712135446Strhodes experimental(bool, EnableInvokeDynamic, false, \ 3713135446Strhodes "recognize the invokedynamic instruction") \ 3714135446Strhodes \ 3715135446Strhodes experimental(bool, AllowTransitionalJSR292, true, \ 3716135446Strhodes "recognize pre-PFD formats of invokedynamic") \ 3717135446Strhodes \ 3718135446Strhodes develop(bool, TraceInvokeDynamic, false, \ 3719135446Strhodes "trace internal invoke dynamic operations") \ 3720135446Strhodes \ 3721135446Strhodes diagnostic(bool, PauseAtStartup, false, \ 3722135446Strhodes "Causes the VM to pause at startup time and wait for the pause " \ 3723135446Strhodes "file to be removed (default: ./vm.paused.<pid>)") \ 3724170222Sdougb \ 3725135446Strhodes diagnostic(ccstr, PauseAtStartupFile, NULL, \ 3726135446Strhodes "The file to create and for whose removal to await when pausing " \ 3727135446Strhodes "at startup. (default: ./vm.paused.<pid>)") \ 3728135446Strhodes \ 3729135446Strhodes diagnostic(bool, PauseAtExit, false, \ 3730135446Strhodes "Pause and wait for keypress on exit if a debugger is attached") \ 3731135446Strhodes \ 3732135446Strhodes product(bool, ExtendedDTraceProbes, false, \ 3733135446Strhodes "Enable performance-impacting dtrace probes") \ 3734135446Strhodes \ 3735135446Strhodes product(bool, DTraceMethodProbes, false, \ 3736135446Strhodes "Enable dtrace probes for method-entry and method-exit") \ 3737135446Strhodes \ 3738135446Strhodes product(bool, DTraceAllocProbes, false, \ 3739135446Strhodes "Enable dtrace probes for object allocation") \ 3740135446Strhodes \ 3741135446Strhodes product(bool, DTraceMonitorProbes, false, \ 3742135446Strhodes "Enable dtrace probes for monitor events") \ 3743135446Strhodes \ 3744262706Serwin product(bool, RelaxAccessControlCheck, false, \ 3745262706Serwin "Relax the access control checks in the verifier") \ 3746262706Serwin \ 3747262706Serwin diagnostic(bool, PrintDTraceDOF, false, \ 3748262706Serwin "Print the DTrace DOF passed to the system for JSDT probes") \ 3749262706Serwin \ 3750135446Strhodes product(bool, UseVMInterruptibleIO, false, \ 3751262706Serwin "(Unstable, Solaris-specific) Thread interrupt before or with " \ 3752135446Strhodes "EINTR for I/O operations results in OS_INTRPT. The default value"\ 3753135446Strhodes " of this flag is true for JDK 6 and earliers") 3754262706Serwin 3755135446Strhodes/* 3756135446Strhodes * Macros for factoring of globals 3757262706Serwin */ 3758262706Serwin 3759262706Serwin// Interface macros 3760262706Serwin#define DECLARE_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; 3761262706Serwin#define DECLARE_PD_PRODUCT_FLAG(type, name, doc) extern "C" type name; 3762262706Serwin#define DECLARE_DIAGNOSTIC_FLAG(type, name, value, doc) extern "C" type name; 3763262706Serwin#define DECLARE_EXPERIMENTAL_FLAG(type, name, value, doc) extern "C" type name; 3764262706Serwin#define DECLARE_MANAGEABLE_FLAG(type, name, value, doc) extern "C" type name; 3765262706Serwin#define DECLARE_PRODUCT_RW_FLAG(type, name, value, doc) extern "C" type name; 3766262706Serwin#ifdef PRODUCT 3767262706Serwin#define DECLARE_DEVELOPER_FLAG(type, name, value, doc) const type name = value; 3768262706Serwin#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) const type name = pd_##name; 3769262706Serwin#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) 3770135446Strhodes#else 3771135446Strhodes#define DECLARE_DEVELOPER_FLAG(type, name, value, doc) extern "C" type name; 3772135446Strhodes#define DECLARE_PD_DEVELOPER_FLAG(type, name, doc) extern "C" type name; 3773135446Strhodes#define DECLARE_NOTPRODUCT_FLAG(type, name, value, doc) extern "C" type name; 3774135446Strhodes#endif 3775135446Strhodes// Special LP64 flags, product only needed for now. 3776135446Strhodes#ifdef _LP64 3777135446Strhodes#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) extern "C" type name; 3778135446Strhodes#else 3779135446Strhodes#define DECLARE_LP64_PRODUCT_FLAG(type, name, value, doc) const type name = value; 3780135446Strhodes#endif // _LP64 3781170222Sdougb 3782135446Strhodes// Implementation macros 3783135446Strhodes#define MATERIALIZE_PRODUCT_FLAG(type, name, value, doc) type name = value; 3784135446Strhodes#define MATERIALIZE_PD_PRODUCT_FLAG(type, name, doc) type name = pd_##name; 3785135446Strhodes#define MATERIALIZE_DIAGNOSTIC_FLAG(type, name, value, doc) type name = value; 3786135446Strhodes#define MATERIALIZE_EXPERIMENTAL_FLAG(type, name, value, doc) type name = value; 3787186462Sdougb#define MATERIALIZE_MANAGEABLE_FLAG(type, name, value, doc) type name = value; 3788135446Strhodes#define MATERIALIZE_PRODUCT_RW_FLAG(type, name, value, doc) type name = value; 3789135446Strhodes#ifdef PRODUCT 3790135446Strhodes#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) /* flag name is constant */ 3791170222Sdougb#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) /* flag name is constant */ 3792170222Sdougb#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) 3793170222Sdougb#else 3794135446Strhodes#define MATERIALIZE_DEVELOPER_FLAG(type, name, value, doc) type name = value; 3795262706Serwin#define MATERIALIZE_PD_DEVELOPER_FLAG(type, name, doc) type name = pd_##name; 3796262706Serwin#define MATERIALIZE_NOTPRODUCT_FLAG(type, name, value, doc) type name = value; 3797135446Strhodes#endif 3798135446Strhodes#ifdef _LP64 3799135446Strhodes#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) type name = value; 3800135446Strhodes#else 3801135446Strhodes#define MATERIALIZE_LP64_PRODUCT_FLAG(type, name, value, doc) /* flag is constant */ 3802135446Strhodes#endif // _LP64 3803135446Strhodes 3804135446StrhodesRUNTIME_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) 3805135446Strhodes 3806135446StrhodesRUNTIME_OS_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_DIAGNOSTIC_FLAG, DECLARE_NOTPRODUCT_FLAG) 3807135446Strhodes 3808135446Strhodes#endif // SHARE_VM_RUNTIME_GLOBALS_HPP 3809135446Strhodes