annotate src/share/vm/runtime/arguments.cpp @ 13280:fbcdae53b17e

force TypeProfileLevel to 0 in GRAAL until HotSpotMethodData is updated to be aware of the new profiling tags
author Doug Simon <doug.simon@oracle.com>
date Tue, 10 Dec 2013 22:09:27 +0100
parents 096c224171c4
children 02f27ecb4f3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
7623
203f64878aab 7102489: RFE: cleanup jlong typedef on __APPLE__and _LLP64 systems.
hseigel
parents: 7461
diff changeset
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1506
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1506
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1506
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
25 #include "precompiled.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
26 #include "classfile/javaAssertions.hpp"
6982
e4f764ddb06a 7122219: Passed StringTableSize value not verified
hseigel
parents: 6928
diff changeset
27 #include "classfile/symbolTable.hpp"
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
28 #include "compiler/compilerOracle.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
29 #include "memory/allocation.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
30 #include "memory/cardTableRS.hpp"
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
31 #include "memory/genCollectedHeap.hpp"
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
32 #include "memory/referenceProcessor.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
33 #include "memory/universe.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
34 #include "oops/oop.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
35 #include "prims/jvmtiExport.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
36 #include "runtime/arguments.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
37 #include "runtime/globals_extension.hpp"
12490
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
38 #include "runtime/gpu.hpp"
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
39 #include "runtime/java.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
40 #include "services/management.hpp"
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
41 #include "services/memTracker.hpp"
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
42 #include "utilities/defaultStream.hpp"
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
43 #include "utilities/macros.hpp"
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
44 #include "utilities/taskqueue.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
45 #ifdef TARGET_OS_FAMILY_linux
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
46 # include "os_linux.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
47 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
48 #ifdef TARGET_OS_FAMILY_solaris
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
49 # include "os_solaris.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
50 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
51 #ifdef TARGET_OS_FAMILY_windows
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
52 # include "os_windows.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
53 #endif
3960
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3935
diff changeset
54 #ifdef TARGET_OS_FAMILY_bsd
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3935
diff changeset
55 # include "os_bsd.inline.hpp"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3935
diff changeset
56 #endif
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
57 #if INCLUDE_ALL_GCS
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1966
diff changeset
58 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
59 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
60 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
61 #endif // INCLUDE_ALL_GCS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
62
2474
1dac0f3af89f 7019210: Fix misc references to /bugreport websites
ohair
parents: 2378
diff changeset
63 // Note: This is a special bug reporting site for the JVM
1dac0f3af89f 7019210: Fix misc references to /bugreport websites
ohair
parents: 2378
diff changeset
64 #define DEFAULT_VENDOR_URL_BUG "http://bugreport.sun.com/bugreport/crash.jsp"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
65 #define DEFAULT_JAVA_LAUNCHER "generic"
a61af66fc99e Initial load
duke
parents:
diff changeset
66
11999
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
67 // Disable options not supported in this release, with a warning if they
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
68 // were explicitly requested on the command-line
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
69 #define UNSUPPORTED_OPTION(opt, description) \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
70 do { \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
71 if (opt) { \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
72 if (FLAG_IS_CMDLINE(opt)) { \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
73 warning(description " is disabled in this release."); \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
74 } \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
75 FLAG_SET_DEFAULT(opt, false); \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
76 } \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
77 } while(0)
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
78
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
79 #define UNSUPPORTED_GC_OPTION(gc) \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
80 do { \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
81 if (gc) { \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
82 if (FLAG_IS_CMDLINE(gc)) { \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
83 warning(#gc " is not supported in this VM. Using Serial GC."); \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
84 } \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
85 FLAG_SET_DEFAULT(gc, false); \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
86 } \
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
87 } while(0)
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
88
0
a61af66fc99e Initial load
duke
parents:
diff changeset
89 char** Arguments::_jvm_flags_array = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
90 int Arguments::_num_jvm_flags = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
91 char** Arguments::_jvm_args_array = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
92 int Arguments::_num_jvm_args = 0;
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
93 #ifdef GRAAL
2891
75a99b4f1c98 Rebranded C++ part from C1X to Graal.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents: 2873
diff changeset
94 char** Arguments::_graal_args_array = NULL;
75a99b4f1c98 Rebranded C++ part from C1X to Graal.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents: 2873
diff changeset
95 int Arguments::_num_graal_args = 0;
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
96 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
97 char* Arguments::_java_command = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
98 SystemProperty* Arguments::_system_properties = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
99 const char* Arguments::_gc_log_filename = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
100 bool Arguments::_has_profile = false;
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
101 size_t Arguments::_conservative_max_heap_alignment = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
102 uintx Arguments::_min_heap_size = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
103 Arguments::Mode Arguments::_mode = _mixed;
a61af66fc99e Initial load
duke
parents:
diff changeset
104 bool Arguments::_java_compiler = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
105 bool Arguments::_xdebug_mode = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
106 const char* Arguments::_java_vendor_url_bug = DEFAULT_VENDOR_URL_BUG;
a61af66fc99e Initial load
duke
parents:
diff changeset
107 const char* Arguments::_sun_java_launcher = DEFAULT_JAVA_LAUNCHER;
a61af66fc99e Initial load
duke
parents:
diff changeset
108 int Arguments::_sun_java_launcher_pid = -1;
2302
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
109 bool Arguments::_created_by_gamma_launcher = false;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
110
a61af66fc99e Initial load
duke
parents:
diff changeset
111 // These parameters are reset in method parse_vm_init_args(JavaVMInitArgs*)
a61af66fc99e Initial load
duke
parents:
diff changeset
112 bool Arguments::_AlwaysCompileLoopMethods = AlwaysCompileLoopMethods;
a61af66fc99e Initial load
duke
parents:
diff changeset
113 bool Arguments::_UseOnStackReplacement = UseOnStackReplacement;
a61af66fc99e Initial load
duke
parents:
diff changeset
114 bool Arguments::_BackgroundCompilation = BackgroundCompilation;
a61af66fc99e Initial load
duke
parents:
diff changeset
115 bool Arguments::_ClipInlining = ClipInlining;
a61af66fc99e Initial load
duke
parents:
diff changeset
116
a61af66fc99e Initial load
duke
parents:
diff changeset
117 char* Arguments::SharedArchivePath = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
118
a61af66fc99e Initial load
duke
parents:
diff changeset
119 AgentLibraryList Arguments::_libraryList;
a61af66fc99e Initial load
duke
parents:
diff changeset
120 AgentLibraryList Arguments::_agentList;
a61af66fc99e Initial load
duke
parents:
diff changeset
121
a61af66fc99e Initial load
duke
parents:
diff changeset
122 abort_hook_t Arguments::_abort_hook = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
123 exit_hook_t Arguments::_exit_hook = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
124 vfprintf_hook_t Arguments::_vfprintf_hook = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
125
a61af66fc99e Initial load
duke
parents:
diff changeset
126
a61af66fc99e Initial load
duke
parents:
diff changeset
127 SystemProperty *Arguments::_java_ext_dirs = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
128 SystemProperty *Arguments::_java_endorsed_dirs = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
129 SystemProperty *Arguments::_sun_boot_library_path = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
130 SystemProperty *Arguments::_java_library_path = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
131 SystemProperty *Arguments::_java_home = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
132 SystemProperty *Arguments::_java_class_path = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
133 SystemProperty *Arguments::_sun_boot_class_path = NULL;
12490
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
134 #ifdef GRAAL
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
135 SystemProperty *Arguments::_graal_gpu_isalist = NULL;
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
136 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
137
a61af66fc99e Initial load
duke
parents:
diff changeset
138 char* Arguments::_meta_index_path = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
139 char* Arguments::_meta_index_dir = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
140
a61af66fc99e Initial load
duke
parents:
diff changeset
141 // Check if head of 'option' matches 'name', and sets 'tail' remaining part of option string
a61af66fc99e Initial load
duke
parents:
diff changeset
142
a61af66fc99e Initial load
duke
parents:
diff changeset
143 static bool match_option(const JavaVMOption *option, const char* name,
a61af66fc99e Initial load
duke
parents:
diff changeset
144 const char** tail) {
a61af66fc99e Initial load
duke
parents:
diff changeset
145 int len = (int)strlen(name);
a61af66fc99e Initial load
duke
parents:
diff changeset
146 if (strncmp(option->optionString, name, len) == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
147 *tail = option->optionString + len;
a61af66fc99e Initial load
duke
parents:
diff changeset
148 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
149 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
150 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
151 }
a61af66fc99e Initial load
duke
parents:
diff changeset
152 }
a61af66fc99e Initial load
duke
parents:
diff changeset
153
a61af66fc99e Initial load
duke
parents:
diff changeset
154 static void logOption(const char* opt) {
a61af66fc99e Initial load
duke
parents:
diff changeset
155 if (PrintVMOptions) {
a61af66fc99e Initial load
duke
parents:
diff changeset
156 jio_fprintf(defaultStream::output_stream(), "VM option '%s'\n", opt);
a61af66fc99e Initial load
duke
parents:
diff changeset
157 }
a61af66fc99e Initial load
duke
parents:
diff changeset
158 }
a61af66fc99e Initial load
duke
parents:
diff changeset
159
a61af66fc99e Initial load
duke
parents:
diff changeset
160 // Process java launcher properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
161 void Arguments::process_sun_java_launcher_properties(JavaVMInitArgs* args) {
a61af66fc99e Initial load
duke
parents:
diff changeset
162 // See if sun.java.launcher or sun.java.launcher.pid is defined.
a61af66fc99e Initial load
duke
parents:
diff changeset
163 // Must do this before setting up other system properties,
a61af66fc99e Initial load
duke
parents:
diff changeset
164 // as some of them may depend on launcher type.
a61af66fc99e Initial load
duke
parents:
diff changeset
165 for (int index = 0; index < args->nOptions; index++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
166 const JavaVMOption* option = args->options + index;
a61af66fc99e Initial load
duke
parents:
diff changeset
167 const char* tail;
a61af66fc99e Initial load
duke
parents:
diff changeset
168
a61af66fc99e Initial load
duke
parents:
diff changeset
169 if (match_option(option, "-Dsun.java.launcher=", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
170 process_java_launcher_argument(tail, option->extraInfo);
a61af66fc99e Initial load
duke
parents:
diff changeset
171 continue;
a61af66fc99e Initial load
duke
parents:
diff changeset
172 }
a61af66fc99e Initial load
duke
parents:
diff changeset
173 if (match_option(option, "-Dsun.java.launcher.pid=", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
174 _sun_java_launcher_pid = atoi(tail);
a61af66fc99e Initial load
duke
parents:
diff changeset
175 continue;
a61af66fc99e Initial load
duke
parents:
diff changeset
176 }
a61af66fc99e Initial load
duke
parents:
diff changeset
177 }
a61af66fc99e Initial load
duke
parents:
diff changeset
178 }
a61af66fc99e Initial load
duke
parents:
diff changeset
179
a61af66fc99e Initial load
duke
parents:
diff changeset
180 // Initialize system properties key and value.
a61af66fc99e Initial load
duke
parents:
diff changeset
181 void Arguments::init_system_properties() {
a61af66fc99e Initial load
duke
parents:
diff changeset
182
a61af66fc99e Initial load
duke
parents:
diff changeset
183 PropertyList_add(&_system_properties, new SystemProperty("java.vm.specification.name",
a61af66fc99e Initial load
duke
parents:
diff changeset
184 "Java Virtual Machine Specification", false));
a61af66fc99e Initial load
duke
parents:
diff changeset
185 PropertyList_add(&_system_properties, new SystemProperty("java.vm.version", VM_Version::vm_release(), false));
a61af66fc99e Initial load
duke
parents:
diff changeset
186 PropertyList_add(&_system_properties, new SystemProperty("java.vm.name", VM_Version::vm_name(), false));
a61af66fc99e Initial load
duke
parents:
diff changeset
187 PropertyList_add(&_system_properties, new SystemProperty("java.vm.info", VM_Version::vm_info_string(), true));
a61af66fc99e Initial load
duke
parents:
diff changeset
188
a61af66fc99e Initial load
duke
parents:
diff changeset
189 // following are JVMTI agent writeable properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
190 // Properties values are set to NULL and they are
a61af66fc99e Initial load
duke
parents:
diff changeset
191 // os specific they are initialized in os::init_system_properties_values().
a61af66fc99e Initial load
duke
parents:
diff changeset
192 _java_ext_dirs = new SystemProperty("java.ext.dirs", NULL, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
193 _java_endorsed_dirs = new SystemProperty("java.endorsed.dirs", NULL, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
194 _sun_boot_library_path = new SystemProperty("sun.boot.library.path", NULL, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
195 _java_library_path = new SystemProperty("java.library.path", NULL, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
196 _java_home = new SystemProperty("java.home", NULL, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
197 _sun_boot_class_path = new SystemProperty("sun.boot.class.path", NULL, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
198
a61af66fc99e Initial load
duke
parents:
diff changeset
199 _java_class_path = new SystemProperty("java.class.path", "", true);
12490
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
200 #ifdef GRAAL
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
201 _graal_gpu_isalist = new SystemProperty("graal.gpu.isalist", NULL, true);
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
202 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
203
a61af66fc99e Initial load
duke
parents:
diff changeset
204 // Add to System Property list.
a61af66fc99e Initial load
duke
parents:
diff changeset
205 PropertyList_add(&_system_properties, _java_ext_dirs);
a61af66fc99e Initial load
duke
parents:
diff changeset
206 PropertyList_add(&_system_properties, _java_endorsed_dirs);
a61af66fc99e Initial load
duke
parents:
diff changeset
207 PropertyList_add(&_system_properties, _sun_boot_library_path);
a61af66fc99e Initial load
duke
parents:
diff changeset
208 PropertyList_add(&_system_properties, _java_library_path);
a61af66fc99e Initial load
duke
parents:
diff changeset
209 PropertyList_add(&_system_properties, _java_home);
a61af66fc99e Initial load
duke
parents:
diff changeset
210 PropertyList_add(&_system_properties, _java_class_path);
a61af66fc99e Initial load
duke
parents:
diff changeset
211 PropertyList_add(&_system_properties, _sun_boot_class_path);
12490
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
212 #ifdef GRAAL
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
213 PropertyList_add(&_system_properties, _graal_gpu_isalist);
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
214 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
215
a61af66fc99e Initial load
duke
parents:
diff changeset
216 // Set OS specific system properties values
a61af66fc99e Initial load
duke
parents:
diff changeset
217 os::init_system_properties_values();
a61af66fc99e Initial load
duke
parents:
diff changeset
218 }
a61af66fc99e Initial load
duke
parents:
diff changeset
219
1864
dfb38ea7da17 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 1805
diff changeset
220
dfb38ea7da17 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 1805
diff changeset
221 // Update/Initialize System properties after JDK version number is known
dfb38ea7da17 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 1805
diff changeset
222 void Arguments::init_version_specific_system_properties() {
1956
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
223 enum { bufsz = 16 };
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
224 char buffer[bufsz];
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
225 const char* spec_vendor = "Sun Microsystems Inc.";
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
226 uint32_t spec_version = 0;
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
227
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
228 if (JDK_Version::is_gte_jdk17x_version()) {
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
229 spec_vendor = "Oracle Corporation";
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
230 spec_version = JDK_Version::current().major_version();
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
231 }
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
232 jio_snprintf(buffer, bufsz, "1." UINT32_FORMAT, spec_version);
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
233
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
234 PropertyList_add(&_system_properties,
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
235 new SystemProperty("java.vm.specification.vendor", spec_vendor, false));
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
236 PropertyList_add(&_system_properties,
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
237 new SystemProperty("java.vm.specification.version", buffer, false));
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
238 PropertyList_add(&_system_properties,
35f885165c69 6981737: The java.vm.specification.version property is 1.0, seems like it should be 2.0
kamg
parents: 1875
diff changeset
239 new SystemProperty("java.vm.vendor", VM_Version::vm_vendor(), false));
1864
dfb38ea7da17 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 1805
diff changeset
240 }
dfb38ea7da17 6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents: 1805
diff changeset
241
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
242 /**
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
243 * Provide a slightly more user-friendly way of eliminating -XX flags.
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
244 * When a flag is eliminated, it can be added to this list in order to
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
245 * continue accepting this flag on the command-line, while issuing a warning
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
246 * and ignoring the value. Once the JDK version reaches the 'accept_until'
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
247 * limit, we flatly refuse to admit the existence of the flag. This allows
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
248 * a flag to die correctly over JDK releases using HSX.
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
249 */
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
250 typedef struct {
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
251 const char* name;
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
252 JDK_Version obsoleted_in; // when the flag went away
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
253 JDK_Version accept_until; // which version to start denying the existence
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
254 } ObsoleteFlag;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
255
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
256 static ObsoleteFlag obsolete_jvm_flags[] = {
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
257 { "UseTrainGC", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
258 { "UseSpecialLargeObjectHandling", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
259 { "UseOversizedCarHandling", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
260 { "TraceCarAllocation", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
261 { "PrintTrainGCProcessingStats", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
262 { "LogOfCarSpaceSize", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
263 { "OversizedCarThreshold", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
264 { "MinTickInterval", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
265 { "DefaultTickInterval", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
266 { "MaxTickInterval", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
267 { "DelayTickAdjustment", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
268 { "ProcessingToTenuringRatio", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
269 { "MinTrainLength", JDK_Version::jdk(5), JDK_Version::jdk(7) },
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
270 { "AppendRatio", JDK_Version::jdk_update(6,10), JDK_Version::jdk(7) },
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
271 { "DefaultMaxRAM", JDK_Version::jdk_update(6,18), JDK_Version::jdk(7) },
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
272 { "DefaultInitialRAMFraction",
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
273 JDK_Version::jdk_update(6,18), JDK_Version::jdk(7) },
1706
9d7a8ab3736b 6962589: remove breadth first scanning code from parallel gc
tonyp
parents: 1628
diff changeset
274 { "UseDepthFirstScavengeOrder",
9d7a8ab3736b 6962589: remove breadth first scanning code from parallel gc
tonyp
parents: 1628
diff changeset
275 JDK_Version::jdk_update(6,22), JDK_Version::jdk(7) },
1888
a7214d79fcf1 6896603: CMS/GCH: collection_attempt_is_safe() ergo should use more recent data
ysr
parents: 1832
diff changeset
276 { "HandlePromotionFailure",
a7214d79fcf1 6896603: CMS/GCH: collection_attempt_is_safe() ergo should use more recent data
ysr
parents: 1832
diff changeset
277 JDK_Version::jdk_update(6,24), JDK_Version::jdk(8) },
a7214d79fcf1 6896603: CMS/GCH: collection_attempt_is_safe() ergo should use more recent data
ysr
parents: 1832
diff changeset
278 { "MaxLiveObjectEvacuationRatio",
a7214d79fcf1 6896603: CMS/GCH: collection_attempt_is_safe() ergo should use more recent data
ysr
parents: 1832
diff changeset
279 JDK_Version::jdk_update(6,24), JDK_Version::jdk(8) },
2362
a2c2eac1ca62 7018056: large pages not always enabled by default
jcoomes
parents: 2302
diff changeset
280 { "ForceSharedSpaces", JDK_Version::jdk_update(6,25), JDK_Version::jdk(8) },
3251
eda9eb483d29 6841742: par compact - remove unused/unsupported options
jcoomes
parents: 3250
diff changeset
281 { "UseParallelOldGCCompacting",
eda9eb483d29 6841742: par compact - remove unused/unsupported options
jcoomes
parents: 3250
diff changeset
282 JDK_Version::jdk_update(6,27), JDK_Version::jdk(8) },
eda9eb483d29 6841742: par compact - remove unused/unsupported options
jcoomes
parents: 3250
diff changeset
283 { "UseParallelDensePrefixUpdate",
eda9eb483d29 6841742: par compact - remove unused/unsupported options
jcoomes
parents: 3250
diff changeset
284 JDK_Version::jdk_update(6,27), JDK_Version::jdk(8) },
eda9eb483d29 6841742: par compact - remove unused/unsupported options
jcoomes
parents: 3250
diff changeset
285 { "UseParallelOldGCDensePrefix",
eda9eb483d29 6841742: par compact - remove unused/unsupported options
jcoomes
parents: 3250
diff changeset
286 JDK_Version::jdk_update(6,27), JDK_Version::jdk(8) },
2460
ed69575596ac 6981791: remove experimental code for JSR 292
jrose
parents: 2458
diff changeset
287 { "AllowTransitionalJSR292", JDK_Version::jdk(7), JDK_Version::jdk(8) },
3797
eb94b7226b7a 7061192: option handling adjustments for oracle and embedded builds
jcoomes
parents: 3769
diff changeset
288 { "UseCompressedStrings", JDK_Version::jdk(7), JDK_Version::jdk(8) },
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
289 { "CMSPermGenPrecleaningEnabled", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
290 { "CMSTriggerPermRatio", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
291 { "CMSInitiatingPermOccupancyFraction", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
292 { "AdaptivePermSizeWeight", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
293 { "PermGenPadding", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
294 { "PermMarkSweepDeadRatio", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
295 { "PermSize", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
296 { "MaxPermSize", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
297 { "MinPermHeapExpansion", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
298 { "MaxPermHeapExpansion", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
299 { "CMSRevisitStackSize", JDK_Version::jdk(8), JDK_Version::jdk(9) },
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
300 { "PrintRevisitStats", JDK_Version::jdk(8), JDK_Version::jdk(9) },
6916
5ec0c42da025 7188234: Deprecate VM command line options
coleenp
parents: 6879
diff changeset
301 { "UseVectoredExceptions", JDK_Version::jdk(8), JDK_Version::jdk(9) },
8819
36376b540a98 8009595: The UseSplitVerifier option needs to be deprecated.
hseigel
parents: 8746
diff changeset
302 { "UseSplitVerifier", JDK_Version::jdk(8), JDK_Version::jdk(9) },
11111
dec841e0c9aa 8016749: -XX:+UseISM fails an assert(obj->is_oop()) when running SPECjbb2005
anoll
parents: 11109
diff changeset
303 { "UseISM", JDK_Version::jdk(8), JDK_Version::jdk(9) },
dec841e0c9aa 8016749: -XX:+UseISM fails an assert(obj->is_oop()) when running SPECjbb2005
anoll
parents: 11109
diff changeset
304 { "UsePermISM", JDK_Version::jdk(8), JDK_Version::jdk(9) },
dec841e0c9aa 8016749: -XX:+UseISM fails an assert(obj->is_oop()) when running SPECjbb2005
anoll
parents: 11109
diff changeset
305 { "UseMPSS", JDK_Version::jdk(8), JDK_Version::jdk(9) },
11154
02d7aa1456c9 8004872: Early loading of HashMap and StringValue under -XX:+AggressiveOpts can be removed
ccheung
parents: 11112
diff changeset
306 { "UseStringCache", JDK_Version::jdk(8), JDK_Version::jdk(9) },
3797
eb94b7226b7a 7061192: option handling adjustments for oracle and embedded builds
jcoomes
parents: 3769
diff changeset
307 #ifdef PRODUCT
eb94b7226b7a 7061192: option handling adjustments for oracle and embedded builds
jcoomes
parents: 3769
diff changeset
308 { "DesiredMethodLimit",
eb94b7226b7a 7061192: option handling adjustments for oracle and embedded builds
jcoomes
parents: 3769
diff changeset
309 JDK_Version::jdk_update(7, 2), JDK_Version::jdk(8) },
eb94b7226b7a 7061192: option handling adjustments for oracle and embedded builds
jcoomes
parents: 3769
diff changeset
310 #endif // PRODUCT
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
311 { NULL, JDK_Version(0), JDK_Version(0) }
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
312 };
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
313
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
314 // Returns true if the flag is obsolete and fits into the range specified
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
315 // for being ignored. In the case that the flag is ignored, the 'version'
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
316 // value is filled in with the version number when the flag became
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
317 // obsolete so that that value can be displayed to the user.
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
318 bool Arguments::is_newly_obsolete(const char *s, JDK_Version* version) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
319 int i = 0;
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
320 assert(version != NULL, "Must provide a version buffer");
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
321 while (obsolete_jvm_flags[i].name != NULL) {
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
322 const ObsoleteFlag& flag_status = obsolete_jvm_flags[i];
0
a61af66fc99e Initial load
duke
parents:
diff changeset
323 // <flag>=xxx form
a61af66fc99e Initial load
duke
parents:
diff changeset
324 // [-|+]<flag> form
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
325 if ((strncmp(flag_status.name, s, strlen(flag_status.name)) == 0) ||
0
a61af66fc99e Initial load
duke
parents:
diff changeset
326 ((s[0] == '+' || s[0] == '-') &&
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
327 (strncmp(flag_status.name, &s[1], strlen(flag_status.name)) == 0))) {
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
328 if (JDK_Version::current().compare(flag_status.accept_until) == -1) {
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
329 *version = flag_status.obsoleted_in;
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
330 return true;
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
331 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
332 }
a61af66fc99e Initial load
duke
parents:
diff changeset
333 i++;
a61af66fc99e Initial load
duke
parents:
diff changeset
334 }
a61af66fc99e Initial load
duke
parents:
diff changeset
335 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
336 }
a61af66fc99e Initial load
duke
parents:
diff changeset
337
a61af66fc99e Initial load
duke
parents:
diff changeset
338 // Constructs the system class path (aka boot class path) from the following
a61af66fc99e Initial load
duke
parents:
diff changeset
339 // components, in order:
a61af66fc99e Initial load
duke
parents:
diff changeset
340 //
a61af66fc99e Initial load
duke
parents:
diff changeset
341 // prefix // from -Xbootclasspath/p:...
a61af66fc99e Initial load
duke
parents:
diff changeset
342 // endorsed // the expansion of -Djava.endorsed.dirs=...
a61af66fc99e Initial load
duke
parents:
diff changeset
343 // base // from os::get_system_properties() or -Xbootclasspath=
a61af66fc99e Initial load
duke
parents:
diff changeset
344 // suffix // from -Xbootclasspath/a:...
a61af66fc99e Initial load
duke
parents:
diff changeset
345 //
a61af66fc99e Initial load
duke
parents:
diff changeset
346 // java.endorsed.dirs is a list of directories; any jar or zip files in the
a61af66fc99e Initial load
duke
parents:
diff changeset
347 // directories are added to the sysclasspath just before the base.
a61af66fc99e Initial load
duke
parents:
diff changeset
348 //
a61af66fc99e Initial load
duke
parents:
diff changeset
349 // This could be AllStatic, but it isn't needed after argument processing is
a61af66fc99e Initial load
duke
parents:
diff changeset
350 // complete.
a61af66fc99e Initial load
duke
parents:
diff changeset
351 class SysClassPath: public StackObj {
a61af66fc99e Initial load
duke
parents:
diff changeset
352 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
353 SysClassPath(const char* base);
a61af66fc99e Initial load
duke
parents:
diff changeset
354 ~SysClassPath();
a61af66fc99e Initial load
duke
parents:
diff changeset
355
a61af66fc99e Initial load
duke
parents:
diff changeset
356 inline void set_base(const char* base);
a61af66fc99e Initial load
duke
parents:
diff changeset
357 inline void add_prefix(const char* prefix);
531
40ee984935b9 6792705: Add JAR file to bootclasspath when using AggressiveOpts
phh
parents: 513
diff changeset
358 inline void add_suffix_to_prefix(const char* suffix);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
359 inline void add_suffix(const char* suffix);
a61af66fc99e Initial load
duke
parents:
diff changeset
360 inline void reset_path(const char* base);
a61af66fc99e Initial load
duke
parents:
diff changeset
361
a61af66fc99e Initial load
duke
parents:
diff changeset
362 // Expand the jar/zip files in each directory listed by the java.endorsed.dirs
a61af66fc99e Initial load
duke
parents:
diff changeset
363 // property. Must be called after all command-line arguments have been
a61af66fc99e Initial load
duke
parents:
diff changeset
364 // processed (in particular, -Djava.endorsed.dirs=...) and before calling
a61af66fc99e Initial load
duke
parents:
diff changeset
365 // combined_path().
a61af66fc99e Initial load
duke
parents:
diff changeset
366 void expand_endorsed();
a61af66fc99e Initial load
duke
parents:
diff changeset
367
a61af66fc99e Initial load
duke
parents:
diff changeset
368 inline const char* get_base() const { return _items[_scp_base]; }
a61af66fc99e Initial load
duke
parents:
diff changeset
369 inline const char* get_prefix() const { return _items[_scp_prefix]; }
a61af66fc99e Initial load
duke
parents:
diff changeset
370 inline const char* get_suffix() const { return _items[_scp_suffix]; }
a61af66fc99e Initial load
duke
parents:
diff changeset
371 inline const char* get_endorsed() const { return _items[_scp_endorsed]; }
a61af66fc99e Initial load
duke
parents:
diff changeset
372
a61af66fc99e Initial load
duke
parents:
diff changeset
373 // Combine all the components into a single c-heap-allocated string; caller
a61af66fc99e Initial load
duke
parents:
diff changeset
374 // must free the string if/when no longer needed.
a61af66fc99e Initial load
duke
parents:
diff changeset
375 char* combined_path();
a61af66fc99e Initial load
duke
parents:
diff changeset
376
a61af66fc99e Initial load
duke
parents:
diff changeset
377 private:
a61af66fc99e Initial load
duke
parents:
diff changeset
378 // Utility routines.
a61af66fc99e Initial load
duke
parents:
diff changeset
379 static char* add_to_path(const char* path, const char* str, bool prepend);
a61af66fc99e Initial load
duke
parents:
diff changeset
380 static char* add_jars_to_path(char* path, const char* directory);
a61af66fc99e Initial load
duke
parents:
diff changeset
381
a61af66fc99e Initial load
duke
parents:
diff changeset
382 inline void reset_item_at(int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
383
a61af66fc99e Initial load
duke
parents:
diff changeset
384 // Array indices for the items that make up the sysclasspath. All except the
a61af66fc99e Initial load
duke
parents:
diff changeset
385 // base are allocated in the C heap and freed by this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
386 enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
387 _scp_prefix, // from -Xbootclasspath/p:...
a61af66fc99e Initial load
duke
parents:
diff changeset
388 _scp_endorsed, // the expansion of -Djava.endorsed.dirs=...
a61af66fc99e Initial load
duke
parents:
diff changeset
389 _scp_base, // the default sysclasspath
a61af66fc99e Initial load
duke
parents:
diff changeset
390 _scp_suffix, // from -Xbootclasspath/a:...
a61af66fc99e Initial load
duke
parents:
diff changeset
391 _scp_nitems // the number of items, must be last.
a61af66fc99e Initial load
duke
parents:
diff changeset
392 };
a61af66fc99e Initial load
duke
parents:
diff changeset
393
a61af66fc99e Initial load
duke
parents:
diff changeset
394 const char* _items[_scp_nitems];
a61af66fc99e Initial load
duke
parents:
diff changeset
395 DEBUG_ONLY(bool _expansion_done;)
a61af66fc99e Initial load
duke
parents:
diff changeset
396 };
a61af66fc99e Initial load
duke
parents:
diff changeset
397
a61af66fc99e Initial load
duke
parents:
diff changeset
398 SysClassPath::SysClassPath(const char* base) {
a61af66fc99e Initial load
duke
parents:
diff changeset
399 memset(_items, 0, sizeof(_items));
a61af66fc99e Initial load
duke
parents:
diff changeset
400 _items[_scp_base] = base;
a61af66fc99e Initial load
duke
parents:
diff changeset
401 DEBUG_ONLY(_expansion_done = false;)
a61af66fc99e Initial load
duke
parents:
diff changeset
402 }
a61af66fc99e Initial load
duke
parents:
diff changeset
403
a61af66fc99e Initial load
duke
parents:
diff changeset
404 SysClassPath::~SysClassPath() {
a61af66fc99e Initial load
duke
parents:
diff changeset
405 // Free everything except the base.
a61af66fc99e Initial load
duke
parents:
diff changeset
406 for (int i = 0; i < _scp_nitems; ++i) {
a61af66fc99e Initial load
duke
parents:
diff changeset
407 if (i != _scp_base) reset_item_at(i);
a61af66fc99e Initial load
duke
parents:
diff changeset
408 }
a61af66fc99e Initial load
duke
parents:
diff changeset
409 DEBUG_ONLY(_expansion_done = false;)
a61af66fc99e Initial load
duke
parents:
diff changeset
410 }
a61af66fc99e Initial load
duke
parents:
diff changeset
411
a61af66fc99e Initial load
duke
parents:
diff changeset
412 inline void SysClassPath::set_base(const char* base) {
a61af66fc99e Initial load
duke
parents:
diff changeset
413 _items[_scp_base] = base;
a61af66fc99e Initial load
duke
parents:
diff changeset
414 }
a61af66fc99e Initial load
duke
parents:
diff changeset
415
a61af66fc99e Initial load
duke
parents:
diff changeset
416 inline void SysClassPath::add_prefix(const char* prefix) {
a61af66fc99e Initial load
duke
parents:
diff changeset
417 _items[_scp_prefix] = add_to_path(_items[_scp_prefix], prefix, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
418 }
a61af66fc99e Initial load
duke
parents:
diff changeset
419
531
40ee984935b9 6792705: Add JAR file to bootclasspath when using AggressiveOpts
phh
parents: 513
diff changeset
420 inline void SysClassPath::add_suffix_to_prefix(const char* suffix) {
40ee984935b9 6792705: Add JAR file to bootclasspath when using AggressiveOpts
phh
parents: 513
diff changeset
421 _items[_scp_prefix] = add_to_path(_items[_scp_prefix], suffix, false);
40ee984935b9 6792705: Add JAR file to bootclasspath when using AggressiveOpts
phh
parents: 513
diff changeset
422 }
40ee984935b9 6792705: Add JAR file to bootclasspath when using AggressiveOpts
phh
parents: 513
diff changeset
423
0
a61af66fc99e Initial load
duke
parents:
diff changeset
424 inline void SysClassPath::add_suffix(const char* suffix) {
a61af66fc99e Initial load
duke
parents:
diff changeset
425 _items[_scp_suffix] = add_to_path(_items[_scp_suffix], suffix, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
426 }
a61af66fc99e Initial load
duke
parents:
diff changeset
427
a61af66fc99e Initial load
duke
parents:
diff changeset
428 inline void SysClassPath::reset_item_at(int index) {
a61af66fc99e Initial load
duke
parents:
diff changeset
429 assert(index < _scp_nitems && index != _scp_base, "just checking");
a61af66fc99e Initial load
duke
parents:
diff changeset
430 if (_items[index] != NULL) {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
431 FREE_C_HEAP_ARRAY(char, _items[index], mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
432 _items[index] = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
433 }
a61af66fc99e Initial load
duke
parents:
diff changeset
434 }
a61af66fc99e Initial load
duke
parents:
diff changeset
435
a61af66fc99e Initial load
duke
parents:
diff changeset
436 inline void SysClassPath::reset_path(const char* base) {
a61af66fc99e Initial load
duke
parents:
diff changeset
437 // Clear the prefix and suffix.
a61af66fc99e Initial load
duke
parents:
diff changeset
438 reset_item_at(_scp_prefix);
a61af66fc99e Initial load
duke
parents:
diff changeset
439 reset_item_at(_scp_suffix);
a61af66fc99e Initial load
duke
parents:
diff changeset
440 set_base(base);
a61af66fc99e Initial load
duke
parents:
diff changeset
441 }
a61af66fc99e Initial load
duke
parents:
diff changeset
442
a61af66fc99e Initial load
duke
parents:
diff changeset
443 //------------------------------------------------------------------------------
a61af66fc99e Initial load
duke
parents:
diff changeset
444
a61af66fc99e Initial load
duke
parents:
diff changeset
445 void SysClassPath::expand_endorsed() {
a61af66fc99e Initial load
duke
parents:
diff changeset
446 assert(_items[_scp_endorsed] == NULL, "can only be called once.");
a61af66fc99e Initial load
duke
parents:
diff changeset
447
a61af66fc99e Initial load
duke
parents:
diff changeset
448 const char* path = Arguments::get_property("java.endorsed.dirs");
a61af66fc99e Initial load
duke
parents:
diff changeset
449 if (path == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
450 path = Arguments::get_endorsed_dir();
a61af66fc99e Initial load
duke
parents:
diff changeset
451 assert(path != NULL, "no default for java.endorsed.dirs");
a61af66fc99e Initial load
duke
parents:
diff changeset
452 }
a61af66fc99e Initial load
duke
parents:
diff changeset
453
a61af66fc99e Initial load
duke
parents:
diff changeset
454 char* expanded_path = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
455 const char separator = *os::path_separator();
a61af66fc99e Initial load
duke
parents:
diff changeset
456 const char* const end = path + strlen(path);
a61af66fc99e Initial load
duke
parents:
diff changeset
457 while (path < end) {
a61af66fc99e Initial load
duke
parents:
diff changeset
458 const char* tmp_end = strchr(path, separator);
a61af66fc99e Initial load
duke
parents:
diff changeset
459 if (tmp_end == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
460 expanded_path = add_jars_to_path(expanded_path, path);
a61af66fc99e Initial load
duke
parents:
diff changeset
461 path = end;
a61af66fc99e Initial load
duke
parents:
diff changeset
462 } else {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
463 char* dirpath = NEW_C_HEAP_ARRAY(char, tmp_end - path + 1, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
464 memcpy(dirpath, path, tmp_end - path);
a61af66fc99e Initial load
duke
parents:
diff changeset
465 dirpath[tmp_end - path] = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
466 expanded_path = add_jars_to_path(expanded_path, dirpath);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
467 FREE_C_HEAP_ARRAY(char, dirpath, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
468 path = tmp_end + 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
469 }
a61af66fc99e Initial load
duke
parents:
diff changeset
470 }
a61af66fc99e Initial load
duke
parents:
diff changeset
471 _items[_scp_endorsed] = expanded_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
472 DEBUG_ONLY(_expansion_done = true;)
a61af66fc99e Initial load
duke
parents:
diff changeset
473 }
a61af66fc99e Initial load
duke
parents:
diff changeset
474
a61af66fc99e Initial load
duke
parents:
diff changeset
475 // Combine the bootclasspath elements, some of which may be null, into a single
a61af66fc99e Initial load
duke
parents:
diff changeset
476 // c-heap-allocated string.
a61af66fc99e Initial load
duke
parents:
diff changeset
477 char* SysClassPath::combined_path() {
a61af66fc99e Initial load
duke
parents:
diff changeset
478 assert(_items[_scp_base] != NULL, "empty default sysclasspath");
a61af66fc99e Initial load
duke
parents:
diff changeset
479 assert(_expansion_done, "must call expand_endorsed() first.");
a61af66fc99e Initial load
duke
parents:
diff changeset
480
a61af66fc99e Initial load
duke
parents:
diff changeset
481 size_t lengths[_scp_nitems];
a61af66fc99e Initial load
duke
parents:
diff changeset
482 size_t total_len = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
483
a61af66fc99e Initial load
duke
parents:
diff changeset
484 const char separator = *os::path_separator();
a61af66fc99e Initial load
duke
parents:
diff changeset
485
a61af66fc99e Initial load
duke
parents:
diff changeset
486 // Get the lengths.
a61af66fc99e Initial load
duke
parents:
diff changeset
487 int i;
a61af66fc99e Initial load
duke
parents:
diff changeset
488 for (i = 0; i < _scp_nitems; ++i) {
a61af66fc99e Initial load
duke
parents:
diff changeset
489 if (_items[i] != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
490 lengths[i] = strlen(_items[i]);
a61af66fc99e Initial load
duke
parents:
diff changeset
491 // Include space for the separator char (or a NULL for the last item).
a61af66fc99e Initial load
duke
parents:
diff changeset
492 total_len += lengths[i] + 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
493 }
a61af66fc99e Initial load
duke
parents:
diff changeset
494 }
a61af66fc99e Initial load
duke
parents:
diff changeset
495 assert(total_len > 0, "empty sysclasspath not allowed");
a61af66fc99e Initial load
duke
parents:
diff changeset
496
a61af66fc99e Initial load
duke
parents:
diff changeset
497 // Copy the _items to a single string.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
498 char* cp = NEW_C_HEAP_ARRAY(char, total_len, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
499 char* cp_tmp = cp;
a61af66fc99e Initial load
duke
parents:
diff changeset
500 for (i = 0; i < _scp_nitems; ++i) {
a61af66fc99e Initial load
duke
parents:
diff changeset
501 if (_items[i] != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
502 memcpy(cp_tmp, _items[i], lengths[i]);
a61af66fc99e Initial load
duke
parents:
diff changeset
503 cp_tmp += lengths[i];
a61af66fc99e Initial load
duke
parents:
diff changeset
504 *cp_tmp++ = separator;
a61af66fc99e Initial load
duke
parents:
diff changeset
505 }
a61af66fc99e Initial load
duke
parents:
diff changeset
506 }
a61af66fc99e Initial load
duke
parents:
diff changeset
507 *--cp_tmp = '\0'; // Replace the extra separator.
a61af66fc99e Initial load
duke
parents:
diff changeset
508 return cp;
a61af66fc99e Initial load
duke
parents:
diff changeset
509 }
a61af66fc99e Initial load
duke
parents:
diff changeset
510
a61af66fc99e Initial load
duke
parents:
diff changeset
511 // Note: path must be c-heap-allocated (or NULL); it is freed if non-null.
a61af66fc99e Initial load
duke
parents:
diff changeset
512 char*
a61af66fc99e Initial load
duke
parents:
diff changeset
513 SysClassPath::add_to_path(const char* path, const char* str, bool prepend) {
a61af66fc99e Initial load
duke
parents:
diff changeset
514 char *cp;
a61af66fc99e Initial load
duke
parents:
diff changeset
515
a61af66fc99e Initial load
duke
parents:
diff changeset
516 assert(str != NULL, "just checking");
a61af66fc99e Initial load
duke
parents:
diff changeset
517 if (path == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
518 size_t len = strlen(str) + 1;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
519 cp = NEW_C_HEAP_ARRAY(char, len, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
520 memcpy(cp, str, len); // copy the trailing null
a61af66fc99e Initial load
duke
parents:
diff changeset
521 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
522 const char separator = *os::path_separator();
a61af66fc99e Initial load
duke
parents:
diff changeset
523 size_t old_len = strlen(path);
a61af66fc99e Initial load
duke
parents:
diff changeset
524 size_t str_len = strlen(str);
a61af66fc99e Initial load
duke
parents:
diff changeset
525 size_t len = old_len + str_len + 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
526
a61af66fc99e Initial load
duke
parents:
diff changeset
527 if (prepend) {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
528 cp = NEW_C_HEAP_ARRAY(char, len, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
529 char* cp_tmp = cp;
a61af66fc99e Initial load
duke
parents:
diff changeset
530 memcpy(cp_tmp, str, str_len);
a61af66fc99e Initial load
duke
parents:
diff changeset
531 cp_tmp += str_len;
a61af66fc99e Initial load
duke
parents:
diff changeset
532 *cp_tmp = separator;
a61af66fc99e Initial load
duke
parents:
diff changeset
533 memcpy(++cp_tmp, path, old_len + 1); // copy the trailing null
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
534 FREE_C_HEAP_ARRAY(char, path, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
535 } else {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
536 cp = REALLOC_C_HEAP_ARRAY(char, path, len, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
537 char* cp_tmp = cp + old_len;
a61af66fc99e Initial load
duke
parents:
diff changeset
538 *cp_tmp = separator;
a61af66fc99e Initial load
duke
parents:
diff changeset
539 memcpy(++cp_tmp, str, str_len + 1); // copy the trailing null
a61af66fc99e Initial load
duke
parents:
diff changeset
540 }
a61af66fc99e Initial load
duke
parents:
diff changeset
541 }
a61af66fc99e Initial load
duke
parents:
diff changeset
542 return cp;
a61af66fc99e Initial load
duke
parents:
diff changeset
543 }
a61af66fc99e Initial load
duke
parents:
diff changeset
544
a61af66fc99e Initial load
duke
parents:
diff changeset
545 // Scan the directory and append any jar or zip files found to path.
a61af66fc99e Initial load
duke
parents:
diff changeset
546 // Note: path must be c-heap-allocated (or NULL); it is freed if non-null.
a61af66fc99e Initial load
duke
parents:
diff changeset
547 char* SysClassPath::add_jars_to_path(char* path, const char* directory) {
a61af66fc99e Initial load
duke
parents:
diff changeset
548 DIR* dir = os::opendir(directory);
a61af66fc99e Initial load
duke
parents:
diff changeset
549 if (dir == NULL) return path;
a61af66fc99e Initial load
duke
parents:
diff changeset
550
a61af66fc99e Initial load
duke
parents:
diff changeset
551 char dir_sep[2] = { '\0', '\0' };
a61af66fc99e Initial load
duke
parents:
diff changeset
552 size_t directory_len = strlen(directory);
a61af66fc99e Initial load
duke
parents:
diff changeset
553 const char fileSep = *os::file_separator();
a61af66fc99e Initial load
duke
parents:
diff changeset
554 if (directory[directory_len - 1] != fileSep) dir_sep[0] = fileSep;
a61af66fc99e Initial load
duke
parents:
diff changeset
555
a61af66fc99e Initial load
duke
parents:
diff changeset
556 /* Scan the directory for jars/zips, appending them to path. */
a61af66fc99e Initial load
duke
parents:
diff changeset
557 struct dirent *entry;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
558 char *dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(directory), mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
559 while ((entry = os::readdir(dir, (dirent *) dbuf)) != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
560 const char* name = entry->d_name;
a61af66fc99e Initial load
duke
parents:
diff changeset
561 const char* ext = name + strlen(name) - 4;
a61af66fc99e Initial load
duke
parents:
diff changeset
562 bool isJarOrZip = ext > name &&
a61af66fc99e Initial load
duke
parents:
diff changeset
563 (os::file_name_strcmp(ext, ".jar") == 0 ||
a61af66fc99e Initial load
duke
parents:
diff changeset
564 os::file_name_strcmp(ext, ".zip") == 0);
a61af66fc99e Initial load
duke
parents:
diff changeset
565 if (isJarOrZip) {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
566 char* jarpath = NEW_C_HEAP_ARRAY(char, directory_len + 2 + strlen(name), mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
567 sprintf(jarpath, "%s%s%s", directory, dir_sep, name);
a61af66fc99e Initial load
duke
parents:
diff changeset
568 path = add_to_path(path, jarpath, false);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
569 FREE_C_HEAP_ARRAY(char, jarpath, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
570 }
a61af66fc99e Initial load
duke
parents:
diff changeset
571 }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
572 FREE_C_HEAP_ARRAY(char, dbuf, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
573 os::closedir(dir);
a61af66fc99e Initial load
duke
parents:
diff changeset
574 return path;
a61af66fc99e Initial load
duke
parents:
diff changeset
575 }
a61af66fc99e Initial load
duke
parents:
diff changeset
576
a61af66fc99e Initial load
duke
parents:
diff changeset
577 // Parses a memory size specification string.
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
578 static bool atomull(const char *s, julong* result) {
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
579 julong n = 0;
7623
203f64878aab 7102489: RFE: cleanup jlong typedef on __APPLE__and _LLP64 systems.
hseigel
parents: 7461
diff changeset
580 int args_read = sscanf(s, JULONG_FORMAT, &n);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
581 if (args_read != 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
582 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
583 }
a61af66fc99e Initial load
duke
parents:
diff changeset
584 while (*s != '\0' && isdigit(*s)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
585 s++;
a61af66fc99e Initial load
duke
parents:
diff changeset
586 }
a61af66fc99e Initial load
duke
parents:
diff changeset
587 // 4705540: illegal if more characters are found after the first non-digit
a61af66fc99e Initial load
duke
parents:
diff changeset
588 if (strlen(s) > 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
589 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
590 }
a61af66fc99e Initial load
duke
parents:
diff changeset
591 switch (*s) {
a61af66fc99e Initial load
duke
parents:
diff changeset
592 case 'T': case 't':
a61af66fc99e Initial load
duke
parents:
diff changeset
593 *result = n * G * K;
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
594 // Check for overflow.
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
595 if (*result/((julong)G * K) != n) return false;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
596 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
597 case 'G': case 'g':
a61af66fc99e Initial load
duke
parents:
diff changeset
598 *result = n * G;
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
599 if (*result/G != n) return false;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
600 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
601 case 'M': case 'm':
a61af66fc99e Initial load
duke
parents:
diff changeset
602 *result = n * M;
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
603 if (*result/M != n) return false;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
604 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
605 case 'K': case 'k':
a61af66fc99e Initial load
duke
parents:
diff changeset
606 *result = n * K;
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
607 if (*result/K != n) return false;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
608 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
609 case '\0':
a61af66fc99e Initial load
duke
parents:
diff changeset
610 *result = n;
a61af66fc99e Initial load
duke
parents:
diff changeset
611 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
612 default:
a61af66fc99e Initial load
duke
parents:
diff changeset
613 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
614 }
a61af66fc99e Initial load
duke
parents:
diff changeset
615 }
a61af66fc99e Initial load
duke
parents:
diff changeset
616
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
617 Arguments::ArgsRange Arguments::check_memory_size(julong size, julong min_size) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
618 if (size < min_size) return arg_too_small;
a61af66fc99e Initial load
duke
parents:
diff changeset
619 // Check that size will fit in a size_t (only relevant on 32-bit)
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
620 if (size > max_uintx) return arg_too_big;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
621 return arg_in_range;
a61af66fc99e Initial load
duke
parents:
diff changeset
622 }
a61af66fc99e Initial load
duke
parents:
diff changeset
623
a61af66fc99e Initial load
duke
parents:
diff changeset
624 // Describe an argument out of range error
a61af66fc99e Initial load
duke
parents:
diff changeset
625 void Arguments::describe_range_error(ArgsRange errcode) {
a61af66fc99e Initial load
duke
parents:
diff changeset
626 switch(errcode) {
a61af66fc99e Initial load
duke
parents:
diff changeset
627 case arg_too_big:
a61af66fc99e Initial load
duke
parents:
diff changeset
628 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
629 "The specified size exceeds the maximum "
a61af66fc99e Initial load
duke
parents:
diff changeset
630 "representable size.\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
631 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
632 case arg_too_small:
a61af66fc99e Initial load
duke
parents:
diff changeset
633 case arg_unreadable:
a61af66fc99e Initial load
duke
parents:
diff changeset
634 case arg_in_range:
a61af66fc99e Initial load
duke
parents:
diff changeset
635 // do nothing for now
a61af66fc99e Initial load
duke
parents:
diff changeset
636 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
637 default:
a61af66fc99e Initial load
duke
parents:
diff changeset
638 ShouldNotReachHere();
a61af66fc99e Initial load
duke
parents:
diff changeset
639 }
a61af66fc99e Initial load
duke
parents:
diff changeset
640 }
a61af66fc99e Initial load
duke
parents:
diff changeset
641
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
642 static bool set_bool_flag(char* name, bool value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
643 return CommandLineFlags::boolAtPut(name, &value, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
644 }
a61af66fc99e Initial load
duke
parents:
diff changeset
645
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
646 static bool set_fp_numeric_flag(char* name, char* value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
647 double v;
a61af66fc99e Initial load
duke
parents:
diff changeset
648 if (sscanf(value, "%lf", &v) != 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
649 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
650 }
a61af66fc99e Initial load
duke
parents:
diff changeset
651
a61af66fc99e Initial load
duke
parents:
diff changeset
652 if (CommandLineFlags::doubleAtPut(name, &v, origin)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
653 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
654 }
a61af66fc99e Initial load
duke
parents:
diff changeset
655 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
656 }
a61af66fc99e Initial load
duke
parents:
diff changeset
657
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
658 static bool set_numeric_flag(char* name, char* value, Flag::Flags origin) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
659 julong v;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
660 intx intx_v;
a61af66fc99e Initial load
duke
parents:
diff changeset
661 bool is_neg = false;
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
662 // Check the sign first since atomull() parses only unsigned values.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
663 if (*value == '-') {
a61af66fc99e Initial load
duke
parents:
diff changeset
664 if (!CommandLineFlags::intxAt(name, &intx_v)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
665 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
666 }
a61af66fc99e Initial load
duke
parents:
diff changeset
667 value++;
a61af66fc99e Initial load
duke
parents:
diff changeset
668 is_neg = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
669 }
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
670 if (!atomull(value, &v)) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
671 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
672 }
a61af66fc99e Initial load
duke
parents:
diff changeset
673 intx_v = (intx) v;
a61af66fc99e Initial load
duke
parents:
diff changeset
674 if (is_neg) {
a61af66fc99e Initial load
duke
parents:
diff changeset
675 intx_v = -intx_v;
a61af66fc99e Initial load
duke
parents:
diff changeset
676 }
a61af66fc99e Initial load
duke
parents:
diff changeset
677 if (CommandLineFlags::intxAtPut(name, &intx_v, origin)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
678 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
679 }
a61af66fc99e Initial load
duke
parents:
diff changeset
680 uintx uintx_v = (uintx) v;
a61af66fc99e Initial load
duke
parents:
diff changeset
681 if (!is_neg && CommandLineFlags::uintxAtPut(name, &uintx_v, origin)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
682 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
683 }
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
684 uint64_t uint64_t_v = (uint64_t) v;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
685 if (!is_neg && CommandLineFlags::uint64_tAtPut(name, &uint64_t_v, origin)) {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
686 return true;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
687 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
688 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
689 }
a61af66fc99e Initial load
duke
parents:
diff changeset
690
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
691 static bool set_string_flag(char* name, const char* value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
692 if (!CommandLineFlags::ccstrAtPut(name, &value, origin)) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
693 // Contract: CommandLineFlags always returns a pointer that needs freeing.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
694 FREE_C_HEAP_ARRAY(char, value, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
695 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
696 }
a61af66fc99e Initial load
duke
parents:
diff changeset
697
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
698 static bool append_to_string_flag(char* name, const char* new_value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
699 const char* old_value = "";
a61af66fc99e Initial load
duke
parents:
diff changeset
700 if (!CommandLineFlags::ccstrAt(name, &old_value)) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
701 size_t old_len = old_value != NULL ? strlen(old_value) : 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
702 size_t new_len = strlen(new_value);
a61af66fc99e Initial load
duke
parents:
diff changeset
703 const char* value;
a61af66fc99e Initial load
duke
parents:
diff changeset
704 char* free_this_too = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
705 if (old_len == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
706 value = new_value;
a61af66fc99e Initial load
duke
parents:
diff changeset
707 } else if (new_len == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
708 value = old_value;
a61af66fc99e Initial load
duke
parents:
diff changeset
709 } else {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
710 char* buf = NEW_C_HEAP_ARRAY(char, old_len + 1 + new_len + 1, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
711 // each new setting adds another LINE to the switch:
a61af66fc99e Initial load
duke
parents:
diff changeset
712 sprintf(buf, "%s\n%s", old_value, new_value);
a61af66fc99e Initial load
duke
parents:
diff changeset
713 value = buf;
a61af66fc99e Initial load
duke
parents:
diff changeset
714 free_this_too = buf;
a61af66fc99e Initial load
duke
parents:
diff changeset
715 }
a61af66fc99e Initial load
duke
parents:
diff changeset
716 (void) CommandLineFlags::ccstrAtPut(name, &value, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
717 // CommandLineFlags always returns a pointer that needs freeing.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
718 FREE_C_HEAP_ARRAY(char, value, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
719 if (free_this_too != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
720 // CommandLineFlags made its own copy, so I must delete my own temp. buffer.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
721 FREE_C_HEAP_ARRAY(char, free_this_too, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
722 }
a61af66fc99e Initial load
duke
parents:
diff changeset
723 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
724 }
a61af66fc99e Initial load
duke
parents:
diff changeset
725
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
726 bool Arguments::parse_argument(const char* arg, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
727
a61af66fc99e Initial load
duke
parents:
diff changeset
728 // range of acceptable characters spelled out for portability reasons
a61af66fc99e Initial load
duke
parents:
diff changeset
729 #define NAME_RANGE "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]"
a61af66fc99e Initial load
duke
parents:
diff changeset
730 #define BUFLEN 255
a61af66fc99e Initial load
duke
parents:
diff changeset
731 char name[BUFLEN+1];
a61af66fc99e Initial load
duke
parents:
diff changeset
732 char dummy;
a61af66fc99e Initial load
duke
parents:
diff changeset
733
a61af66fc99e Initial load
duke
parents:
diff changeset
734 if (sscanf(arg, "-%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
735 return set_bool_flag(name, false, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
736 }
a61af66fc99e Initial load
duke
parents:
diff changeset
737 if (sscanf(arg, "+%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
738 return set_bool_flag(name, true, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
739 }
a61af66fc99e Initial load
duke
parents:
diff changeset
740
a61af66fc99e Initial load
duke
parents:
diff changeset
741 char punct;
a61af66fc99e Initial load
duke
parents:
diff changeset
742 if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "%c", name, &punct) == 2 && punct == '=') {
a61af66fc99e Initial load
duke
parents:
diff changeset
743 const char* value = strchr(arg, '=') + 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
744 Flag* flag = Flag::find_flag(name, strlen(name));
a61af66fc99e Initial load
duke
parents:
diff changeset
745 if (flag != NULL && flag->is_ccstr()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
746 if (flag->ccstr_accumulates()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
747 return append_to_string_flag(name, value, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
748 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
749 if (value[0] == '\0') {
a61af66fc99e Initial load
duke
parents:
diff changeset
750 value = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
751 }
a61af66fc99e Initial load
duke
parents:
diff changeset
752 return set_string_flag(name, value, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
753 }
a61af66fc99e Initial load
duke
parents:
diff changeset
754 }
a61af66fc99e Initial load
duke
parents:
diff changeset
755 }
a61af66fc99e Initial load
duke
parents:
diff changeset
756
a61af66fc99e Initial load
duke
parents:
diff changeset
757 if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE ":%c", name, &punct) == 2 && punct == '=') {
a61af66fc99e Initial load
duke
parents:
diff changeset
758 const char* value = strchr(arg, '=') + 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
759 // -XX:Foo:=xxx will reset the string flag to the given value.
a61af66fc99e Initial load
duke
parents:
diff changeset
760 if (value[0] == '\0') {
a61af66fc99e Initial load
duke
parents:
diff changeset
761 value = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
762 }
a61af66fc99e Initial load
duke
parents:
diff changeset
763 return set_string_flag(name, value, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
764 }
a61af66fc99e Initial load
duke
parents:
diff changeset
765
a61af66fc99e Initial load
duke
parents:
diff changeset
766 #define SIGNED_FP_NUMBER_RANGE "[-0123456789.]"
a61af66fc99e Initial load
duke
parents:
diff changeset
767 #define SIGNED_NUMBER_RANGE "[-0123456789]"
a61af66fc99e Initial load
duke
parents:
diff changeset
768 #define NUMBER_RANGE "[0123456789]"
a61af66fc99e Initial load
duke
parents:
diff changeset
769 char value[BUFLEN + 1];
a61af66fc99e Initial load
duke
parents:
diff changeset
770 char value2[BUFLEN + 1];
a61af66fc99e Initial load
duke
parents:
diff changeset
771 if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_NUMBER_RANGE "." "%" XSTR(BUFLEN) NUMBER_RANGE "%c", name, value, value2, &dummy) == 3) {
a61af66fc99e Initial load
duke
parents:
diff changeset
772 // Looks like a floating-point number -- try again with more lenient format string
a61af66fc99e Initial load
duke
parents:
diff changeset
773 if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_FP_NUMBER_RANGE "%c", name, value, &dummy) == 2) {
a61af66fc99e Initial load
duke
parents:
diff changeset
774 return set_fp_numeric_flag(name, value, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
775 }
a61af66fc99e Initial load
duke
parents:
diff changeset
776 }
a61af66fc99e Initial load
duke
parents:
diff changeset
777
a61af66fc99e Initial load
duke
parents:
diff changeset
778 #define VALUE_RANGE "[-kmgtKMGT0123456789]"
a61af66fc99e Initial load
duke
parents:
diff changeset
779 if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) VALUE_RANGE "%c", name, value, &dummy) == 2) {
a61af66fc99e Initial load
duke
parents:
diff changeset
780 return set_numeric_flag(name, value, origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
781 }
a61af66fc99e Initial load
duke
parents:
diff changeset
782
a61af66fc99e Initial load
duke
parents:
diff changeset
783 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
784 }
a61af66fc99e Initial load
duke
parents:
diff changeset
785
a61af66fc99e Initial load
duke
parents:
diff changeset
786 void Arguments::add_string(char*** bldarray, int* count, const char* arg) {
a61af66fc99e Initial load
duke
parents:
diff changeset
787 assert(bldarray != NULL, "illegal argument");
a61af66fc99e Initial load
duke
parents:
diff changeset
788
a61af66fc99e Initial load
duke
parents:
diff changeset
789 if (arg == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
790 return;
a61af66fc99e Initial load
duke
parents:
diff changeset
791 }
a61af66fc99e Initial load
duke
parents:
diff changeset
792
10238
1d0fba8a2a6d 8013574: PrintMalloc conflicts with the command line parsing
brutisso
parents: 10126
diff changeset
793 int new_count = *count + 1;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
794
a61af66fc99e Initial load
duke
parents:
diff changeset
795 // expand the array and add arg to the last element
a61af66fc99e Initial load
duke
parents:
diff changeset
796 if (*bldarray == NULL) {
10238
1d0fba8a2a6d 8013574: PrintMalloc conflicts with the command line parsing
brutisso
parents: 10126
diff changeset
797 *bldarray = NEW_C_HEAP_ARRAY(char*, new_count, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
798 } else {
10238
1d0fba8a2a6d 8013574: PrintMalloc conflicts with the command line parsing
brutisso
parents: 10126
diff changeset
799 *bldarray = REALLOC_C_HEAP_ARRAY(char*, *bldarray, new_count, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
800 }
10238
1d0fba8a2a6d 8013574: PrintMalloc conflicts with the command line parsing
brutisso
parents: 10126
diff changeset
801 (*bldarray)[*count] = strdup(arg);
1d0fba8a2a6d 8013574: PrintMalloc conflicts with the command line parsing
brutisso
parents: 10126
diff changeset
802 *count = new_count;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
803 }
a61af66fc99e Initial load
duke
parents:
diff changeset
804
a61af66fc99e Initial load
duke
parents:
diff changeset
805 void Arguments::build_jvm_args(const char* arg) {
a61af66fc99e Initial load
duke
parents:
diff changeset
806 add_string(&_jvm_args_array, &_num_jvm_args, arg);
a61af66fc99e Initial load
duke
parents:
diff changeset
807 }
a61af66fc99e Initial load
duke
parents:
diff changeset
808
a61af66fc99e Initial load
duke
parents:
diff changeset
809 void Arguments::build_jvm_flags(const char* arg) {
a61af66fc99e Initial load
duke
parents:
diff changeset
810 add_string(&_jvm_flags_array, &_num_jvm_flags, arg);
a61af66fc99e Initial load
duke
parents:
diff changeset
811 }
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
812 #ifdef GRAAL
2891
75a99b4f1c98 Rebranded C++ part from C1X to Graal.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents: 2873
diff changeset
813 void Arguments::add_graal_arg(const char* arg) {
75a99b4f1c98 Rebranded C++ part from C1X to Graal.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents: 2873
diff changeset
814 add_string(&_graal_args_array, &_num_graal_args, arg);
1437
9e5e83ca2259 Enabled -C1X:OPTIONS when running HotSpot/C1X. Enabled checkstyle for the HotSpotVM Java project.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents: 1356
diff changeset
815 }
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
816 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
817
a61af66fc99e Initial load
duke
parents:
diff changeset
818 // utility function to return a string that concatenates all
a61af66fc99e Initial load
duke
parents:
diff changeset
819 // strings in a given char** array
a61af66fc99e Initial load
duke
parents:
diff changeset
820 const char* Arguments::build_resource_string(char** args, int count) {
a61af66fc99e Initial load
duke
parents:
diff changeset
821 if (args == NULL || count == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
822 return NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
823 }
a61af66fc99e Initial load
duke
parents:
diff changeset
824 size_t length = strlen(args[0]) + 1; // add 1 for the null terminator
a61af66fc99e Initial load
duke
parents:
diff changeset
825 for (int i = 1; i < count; i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
826 length += strlen(args[i]) + 1; // add 1 for a space
a61af66fc99e Initial load
duke
parents:
diff changeset
827 }
a61af66fc99e Initial load
duke
parents:
diff changeset
828 char* s = NEW_RESOURCE_ARRAY(char, length);
a61af66fc99e Initial load
duke
parents:
diff changeset
829 strcpy(s, args[0]);
a61af66fc99e Initial load
duke
parents:
diff changeset
830 for (int j = 1; j < count; j++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
831 strcat(s, " ");
a61af66fc99e Initial load
duke
parents:
diff changeset
832 strcat(s, args[j]);
a61af66fc99e Initial load
duke
parents:
diff changeset
833 }
a61af66fc99e Initial load
duke
parents:
diff changeset
834 return (const char*) s;
a61af66fc99e Initial load
duke
parents:
diff changeset
835 }
a61af66fc99e Initial load
duke
parents:
diff changeset
836
a61af66fc99e Initial load
duke
parents:
diff changeset
837 void Arguments::print_on(outputStream* st) {
a61af66fc99e Initial load
duke
parents:
diff changeset
838 st->print_cr("VM Arguments:");
a61af66fc99e Initial load
duke
parents:
diff changeset
839 if (num_jvm_flags() > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
840 st->print("jvm_flags: "); print_jvm_flags_on(st);
a61af66fc99e Initial load
duke
parents:
diff changeset
841 }
a61af66fc99e Initial load
duke
parents:
diff changeset
842 if (num_jvm_args() > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
843 st->print("jvm_args: "); print_jvm_args_on(st);
a61af66fc99e Initial load
duke
parents:
diff changeset
844 }
a61af66fc99e Initial load
duke
parents:
diff changeset
845 st->print_cr("java_command: %s", java_command() ? java_command() : "<unknown>");
6879
8ebcedb7604d 7053130: hs_err file does not record specified CLASSPATH
coleenp
parents: 6878
diff changeset
846 if (_java_class_path != NULL) {
8ebcedb7604d 7053130: hs_err file does not record specified CLASSPATH
coleenp
parents: 6878
diff changeset
847 char* path = _java_class_path->value();
8ebcedb7604d 7053130: hs_err file does not record specified CLASSPATH
coleenp
parents: 6878
diff changeset
848 st->print_cr("java_class_path (initial): %s", strlen(path) == 0 ? "<not set>" : path );
8ebcedb7604d 7053130: hs_err file does not record specified CLASSPATH
coleenp
parents: 6878
diff changeset
849 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
850 st->print_cr("Launcher Type: %s", _sun_java_launcher);
a61af66fc99e Initial load
duke
parents:
diff changeset
851 }
a61af66fc99e Initial load
duke
parents:
diff changeset
852
a61af66fc99e Initial load
duke
parents:
diff changeset
853 void Arguments::print_jvm_flags_on(outputStream* st) {
a61af66fc99e Initial load
duke
parents:
diff changeset
854 if (_num_jvm_flags > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
855 for (int i=0; i < _num_jvm_flags; i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
856 st->print("%s ", _jvm_flags_array[i]);
a61af66fc99e Initial load
duke
parents:
diff changeset
857 }
a61af66fc99e Initial load
duke
parents:
diff changeset
858 st->print_cr("");
a61af66fc99e Initial load
duke
parents:
diff changeset
859 }
a61af66fc99e Initial load
duke
parents:
diff changeset
860 }
a61af66fc99e Initial load
duke
parents:
diff changeset
861
a61af66fc99e Initial load
duke
parents:
diff changeset
862 void Arguments::print_jvm_args_on(outputStream* st) {
a61af66fc99e Initial load
duke
parents:
diff changeset
863 if (_num_jvm_args > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
864 for (int i=0; i < _num_jvm_args; i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
865 st->print("%s ", _jvm_args_array[i]);
a61af66fc99e Initial load
duke
parents:
diff changeset
866 }
a61af66fc99e Initial load
duke
parents:
diff changeset
867 st->print_cr("");
a61af66fc99e Initial load
duke
parents:
diff changeset
868 }
a61af66fc99e Initial load
duke
parents:
diff changeset
869 }
a61af66fc99e Initial load
duke
parents:
diff changeset
870
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
871 bool Arguments::process_argument(const char* arg,
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
872 jboolean ignore_unrecognized, Flag::Flags origin) {
242
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
873
d95b224e9f17 6721093: -XX:AppendRatio=N not supported
kamg
parents: 237
diff changeset
874 JDK_Version since = JDK_Version();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
875
3250
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
876 if (parse_argument(arg, origin) || ignore_unrecognized) {
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
877 return true;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
878 }
3250
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
879
7961
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
880 bool has_plus_minus = (*arg == '+' || *arg == '-');
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
881 const char* const argname = has_plus_minus ? arg + 1 : arg;
3250
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
882 if (is_newly_obsolete(arg, &since)) {
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
883 char version[256];
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
884 since.to_string(version, sizeof(version));
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
885 warning("ignoring option %s; support was removed in %s", argname, version);
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
886 return true;
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
887 }
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
888
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
889 // For locked flags, report a custom error message if available.
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
890 // Otherwise, report the standard unrecognized VM option.
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
891
7961
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
892 size_t arg_len;
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
893 const char* equal_sign = strchr(argname, '=');
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
894 if (equal_sign == NULL) {
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
895 arg_len = strlen(argname);
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
896 } else {
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
897 arg_len = equal_sign - argname;
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
898 }
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
899
11070
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
900 Flag* found_flag = Flag::find_flag((const char*)argname, arg_len, true);
7961
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
901 if (found_flag != NULL) {
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
902 char locked_message_buf[BUFLEN];
7961
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
903 found_flag->get_locked_message(locked_message_buf, BUFLEN);
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
904 if (strlen(locked_message_buf) == 0) {
7961
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
905 if (found_flag->is_bool() && !has_plus_minus) {
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
906 jio_fprintf(defaultStream::error_stream(),
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
907 "Missing +/- setting for VM option '%s'\n", argname);
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
908 } else if (!found_flag->is_bool() && has_plus_minus) {
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
909 jio_fprintf(defaultStream::error_stream(),
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
910 "Unexpected +/- setting in VM option '%s'\n", argname);
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
911 } else {
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
912 jio_fprintf(defaultStream::error_stream(),
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
913 "Improperly specified VM option '%s'\n", argname);
baf7fac3167e 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
hseigel
parents: 7951
diff changeset
914 }
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
915 } else {
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
916 jio_fprintf(defaultStream::error_stream(), "%s", locked_message_buf);
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
917 }
6017
f3a4ee95783b 7162488: VM not printing unknown -XX options
kevinw
parents: 5955
diff changeset
918 } else {
f3a4ee95783b 7162488: VM not printing unknown -XX options
kevinw
parents: 5955
diff changeset
919 jio_fprintf(defaultStream::error_stream(),
f3a4ee95783b 7162488: VM not printing unknown -XX options
kevinw
parents: 5955
diff changeset
920 "Unrecognized VM option '%s'\n", argname);
11070
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
921 Flag* fuzzy_matched = Flag::fuzzy_match((const char*)argname, arg_len, true);
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
922 if (fuzzy_matched != NULL) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
923 jio_fprintf(defaultStream::error_stream(),
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
924 "Did you mean '%s%s%s'?\n",
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
925 (fuzzy_matched->is_bool()) ? "(+/-)" : "",
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
926 fuzzy_matched->_name,
11070
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
927 (fuzzy_matched->is_bool()) ? "" : "=<value>");
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11066
diff changeset
928 }
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
929 }
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 5915
diff changeset
930
3250
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
931 // allow for commandline "commenting out" options like -XX:#+Verbose
9c4f56ff88e9 7034133: cleanup obsolete option handling
jcoomes
parents: 2378
diff changeset
932 return arg[0] == '#';
0
a61af66fc99e Initial load
duke
parents:
diff changeset
933 }
a61af66fc99e Initial load
duke
parents:
diff changeset
934
a61af66fc99e Initial load
duke
parents:
diff changeset
935 bool Arguments::process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized) {
a61af66fc99e Initial load
duke
parents:
diff changeset
936 FILE* stream = fopen(file_name, "rb");
a61af66fc99e Initial load
duke
parents:
diff changeset
937 if (stream == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
938 if (should_exist) {
a61af66fc99e Initial load
duke
parents:
diff changeset
939 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
940 "Could not open settings file %s\n", file_name);
a61af66fc99e Initial load
duke
parents:
diff changeset
941 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
942 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
943 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
944 }
a61af66fc99e Initial load
duke
parents:
diff changeset
945 }
a61af66fc99e Initial load
duke
parents:
diff changeset
946
a61af66fc99e Initial load
duke
parents:
diff changeset
947 char token[1024];
a61af66fc99e Initial load
duke
parents:
diff changeset
948 int pos = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
949
a61af66fc99e Initial load
duke
parents:
diff changeset
950 bool in_white_space = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
951 bool in_comment = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
952 bool in_quote = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
953 char quote_c = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
954 bool result = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
955
a61af66fc99e Initial load
duke
parents:
diff changeset
956 int c = getc(stream);
6901
fe4a4ea5bed9 7158804: Improve config file parsing
kamg
parents: 6157
diff changeset
957 while(c != EOF && pos < (int)(sizeof(token)-1)) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
958 if (in_white_space) {
a61af66fc99e Initial load
duke
parents:
diff changeset
959 if (in_comment) {
a61af66fc99e Initial load
duke
parents:
diff changeset
960 if (c == '\n') in_comment = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
961 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
962 if (c == '#') in_comment = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
963 else if (!isspace(c)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
964 in_white_space = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
965 token[pos++] = c;
a61af66fc99e Initial load
duke
parents:
diff changeset
966 }
a61af66fc99e Initial load
duke
parents:
diff changeset
967 }
a61af66fc99e Initial load
duke
parents:
diff changeset
968 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
969 if (c == '\n' || (!in_quote && isspace(c))) {
a61af66fc99e Initial load
duke
parents:
diff changeset
970 // token ends at newline, or at unquoted whitespace
a61af66fc99e Initial load
duke
parents:
diff changeset
971 // this allows a way to include spaces in string-valued options
a61af66fc99e Initial load
duke
parents:
diff changeset
972 token[pos] = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
973 logOption(token);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
974 result &= process_argument(token, ignore_unrecognized, Flag::CONFIG_FILE);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
975 build_jvm_flags(token);
a61af66fc99e Initial load
duke
parents:
diff changeset
976 pos = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
977 in_white_space = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
978 in_quote = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
979 } else if (!in_quote && (c == '\'' || c == '"')) {
a61af66fc99e Initial load
duke
parents:
diff changeset
980 in_quote = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
981 quote_c = c;
a61af66fc99e Initial load
duke
parents:
diff changeset
982 } else if (in_quote && (c == quote_c)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
983 in_quote = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
984 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
985 token[pos++] = c;
a61af66fc99e Initial load
duke
parents:
diff changeset
986 }
a61af66fc99e Initial load
duke
parents:
diff changeset
987 }
a61af66fc99e Initial load
duke
parents:
diff changeset
988 c = getc(stream);
a61af66fc99e Initial load
duke
parents:
diff changeset
989 }
a61af66fc99e Initial load
duke
parents:
diff changeset
990 if (pos > 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
991 token[pos] = '\0';
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
992 result &= process_argument(token, ignore_unrecognized, Flag::CONFIG_FILE);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
993 build_jvm_flags(token);
a61af66fc99e Initial load
duke
parents:
diff changeset
994 }
a61af66fc99e Initial load
duke
parents:
diff changeset
995 fclose(stream);
a61af66fc99e Initial load
duke
parents:
diff changeset
996 return result;
a61af66fc99e Initial load
duke
parents:
diff changeset
997 }
a61af66fc99e Initial load
duke
parents:
diff changeset
998
a61af66fc99e Initial load
duke
parents:
diff changeset
999 //=============================================================================================================
a61af66fc99e Initial load
duke
parents:
diff changeset
1000 // Parsing of properties (-D)
a61af66fc99e Initial load
duke
parents:
diff changeset
1001
a61af66fc99e Initial load
duke
parents:
diff changeset
1002 const char* Arguments::get_property(const char* key) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1003 return PropertyList_get_value(system_properties(), key);
a61af66fc99e Initial load
duke
parents:
diff changeset
1004 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1005
a61af66fc99e Initial load
duke
parents:
diff changeset
1006 bool Arguments::add_property(const char* prop) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1007 const char* eq = strchr(prop, '=');
a61af66fc99e Initial load
duke
parents:
diff changeset
1008 char* key;
a61af66fc99e Initial load
duke
parents:
diff changeset
1009 // ns must be static--its address may be stored in a SystemProperty object.
a61af66fc99e Initial load
duke
parents:
diff changeset
1010 const static char ns[1] = {0};
a61af66fc99e Initial load
duke
parents:
diff changeset
1011 char* value = (char *)ns;
a61af66fc99e Initial load
duke
parents:
diff changeset
1012
a61af66fc99e Initial load
duke
parents:
diff changeset
1013 size_t key_len = (eq == NULL) ? strlen(prop) : (eq - prop);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
1014 key = AllocateHeap(key_len + 1, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1015 strncpy(key, prop, key_len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1016 key[key_len] = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
1017
a61af66fc99e Initial load
duke
parents:
diff changeset
1018 if (eq != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1019 size_t value_len = strlen(prop) - key_len - 1;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
1020 value = AllocateHeap(value_len + 1, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1021 strncpy(value, &prop[key_len + 1], value_len + 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
1022 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1023
a61af66fc99e Initial load
duke
parents:
diff changeset
1024 if (strcmp(key, "java.compiler") == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1025 process_java_compiler_argument(value);
a61af66fc99e Initial load
duke
parents:
diff changeset
1026 FreeHeap(key);
a61af66fc99e Initial load
duke
parents:
diff changeset
1027 if (eq != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1028 FreeHeap(value);
a61af66fc99e Initial load
duke
parents:
diff changeset
1029 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1030 return true;
691
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
1031 } else if (strcmp(key, "sun.java.command") == 0) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1032 _java_command = value;
a61af66fc99e Initial load
duke
parents:
diff changeset
1033
2129
8f8dfba37802 6994753: Implement optional hook to a Java method at VM startup.
kevinw
parents: 2095
diff changeset
1034 // Record value in Arguments, but let it get passed to Java.
691
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
1035 } else if (strcmp(key, "sun.java.launcher.pid") == 0) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1036 // launcher.pid property is private and is processed
a61af66fc99e Initial load
duke
parents:
diff changeset
1037 // in process_sun_java_launcher_properties();
a61af66fc99e Initial load
duke
parents:
diff changeset
1038 // the sun.java.launcher property is passed on to the java application
a61af66fc99e Initial load
duke
parents:
diff changeset
1039 FreeHeap(key);
a61af66fc99e Initial load
duke
parents:
diff changeset
1040 if (eq != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1041 FreeHeap(value);
a61af66fc99e Initial load
duke
parents:
diff changeset
1042 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1043 return true;
691
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
1044 } else if (strcmp(key, "java.vendor.url.bug") == 0) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1045 // save it in _java_vendor_url_bug, so JVM fatal error handler can access
a61af66fc99e Initial load
duke
parents:
diff changeset
1046 // its value without going through the property list or making a Java call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1047 _java_vendor_url_bug = value;
691
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
1048 } else if (strcmp(key, "sun.boot.library.path") == 0) {
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
1049 PropertyList_unique_add(&_system_properties, key, value, true);
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
1050 return true;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1051 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1052 // Create new property and add at the end of the list
a61af66fc99e Initial load
duke
parents:
diff changeset
1053 PropertyList_unique_add(&_system_properties, key, value);
a61af66fc99e Initial load
duke
parents:
diff changeset
1054 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
1055 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1056
a61af66fc99e Initial load
duke
parents:
diff changeset
1057 //===========================================================================================================
a61af66fc99e Initial load
duke
parents:
diff changeset
1058 // Setting int/mixed/comp mode flags
a61af66fc99e Initial load
duke
parents:
diff changeset
1059
a61af66fc99e Initial load
duke
parents:
diff changeset
1060 void Arguments::set_mode_flags(Mode mode) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1061 // Set up default values for all flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
1062 // If you add a flag to any of the branches below,
a61af66fc99e Initial load
duke
parents:
diff changeset
1063 // add a default value for it here.
a61af66fc99e Initial load
duke
parents:
diff changeset
1064 set_java_compiler(false);
a61af66fc99e Initial load
duke
parents:
diff changeset
1065 _mode = mode;
a61af66fc99e Initial load
duke
parents:
diff changeset
1066
a61af66fc99e Initial load
duke
parents:
diff changeset
1067 // Ensure Agent_OnLoad has the correct initial values.
a61af66fc99e Initial load
duke
parents:
diff changeset
1068 // This may not be the final mode; mode may change later in onload phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
1069 PropertyList_unique_add(&_system_properties, "java.vm.info",
3326
6c978a541c03 7036267: c2/arm: mark version number as experimental and disable on unsupported platforms
dholmes
parents: 3261
diff changeset
1070 (char*)VM_Version::vm_info_string(), false);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1071
a61af66fc99e Initial load
duke
parents:
diff changeset
1072 UseInterpreter = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
1073 UseCompiler = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
1074 UseLoopCounter = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
1075
2458
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1076 #ifndef ZERO
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1077 // Turn these off for mixed and comp. Leave them on for Zero.
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1078 if (FLAG_IS_DEFAULT(UseFastAccessorMethods)) {
3341
e9b8ef09622a 7041582: set_mode_flags isn't called without -Xmixed specified
never
parents: 3261
diff changeset
1079 UseFastAccessorMethods = (mode == _int);
2458
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1080 }
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1081 if (FLAG_IS_DEFAULT(UseFastEmptyMethods)) {
3341
e9b8ef09622a 7041582: set_mode_flags isn't called without -Xmixed specified
never
parents: 3261
diff changeset
1082 UseFastEmptyMethods = (mode == _int);
2458
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1083 }
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1084 #endif
98c560260039 7034513: enable fast accessors and empty methods for ZERO and -Xint
never
parents: 2416
diff changeset
1085
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1086 // Default values may be platform/compiler dependent -
a61af66fc99e Initial load
duke
parents:
diff changeset
1087 // use the saved values
a61af66fc99e Initial load
duke
parents:
diff changeset
1088 ClipInlining = Arguments::_ClipInlining;
a61af66fc99e Initial load
duke
parents:
diff changeset
1089 AlwaysCompileLoopMethods = Arguments::_AlwaysCompileLoopMethods;
a61af66fc99e Initial load
duke
parents:
diff changeset
1090 UseOnStackReplacement = Arguments::_UseOnStackReplacement;
a61af66fc99e Initial load
duke
parents:
diff changeset
1091 BackgroundCompilation = Arguments::_BackgroundCompilation;
a61af66fc99e Initial load
duke
parents:
diff changeset
1092
a61af66fc99e Initial load
duke
parents:
diff changeset
1093 // Change from defaults based on mode
a61af66fc99e Initial load
duke
parents:
diff changeset
1094 switch (mode) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1095 default:
a61af66fc99e Initial load
duke
parents:
diff changeset
1096 ShouldNotReachHere();
a61af66fc99e Initial load
duke
parents:
diff changeset
1097 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
1098 case _int:
a61af66fc99e Initial load
duke
parents:
diff changeset
1099 UseCompiler = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1100 UseLoopCounter = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1101 AlwaysCompileLoopMethods = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1102 UseOnStackReplacement = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1103 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
1104 case _mixed:
a61af66fc99e Initial load
duke
parents:
diff changeset
1105 // same as default
a61af66fc99e Initial load
duke
parents:
diff changeset
1106 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
1107 case _comp:
a61af66fc99e Initial load
duke
parents:
diff changeset
1108 UseInterpreter = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1109 BackgroundCompilation = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1110 ClipInlining = false;
4758
d725f0affb1a 7121111: -server -Xcomp -XX:+TieredCompilation does not invoke C2 compiler
iveresov
parents: 4111
diff changeset
1111 // Be much more aggressive in tiered mode with -Xcomp and exercise C2 more.
d725f0affb1a 7121111: -server -Xcomp -XX:+TieredCompilation does not invoke C2 compiler
iveresov
parents: 4111
diff changeset
1112 // We will first compile a level 3 version (C1 with full profiling), then do one invocation of it and
d725f0affb1a 7121111: -server -Xcomp -XX:+TieredCompilation does not invoke C2 compiler
iveresov
parents: 4111
diff changeset
1113 // compile a level 4 (C2) and then continue executing it.
d725f0affb1a 7121111: -server -Xcomp -XX:+TieredCompilation does not invoke C2 compiler
iveresov
parents: 4111
diff changeset
1114 if (TieredCompilation) {
d725f0affb1a 7121111: -server -Xcomp -XX:+TieredCompilation does not invoke C2 compiler
iveresov
parents: 4111
diff changeset
1115 Tier3InvokeNotifyFreqLog = 0;
d725f0affb1a 7121111: -server -Xcomp -XX:+TieredCompilation does not invoke C2 compiler
iveresov
parents: 4111
diff changeset
1116 Tier4InvocationThreshold = 0;
d725f0affb1a 7121111: -server -Xcomp -XX:+TieredCompilation does not invoke C2 compiler
iveresov
parents: 4111
diff changeset
1117 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1118 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
1119 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1120 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1121
12355
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 12057 12326
diff changeset
1122 #if defined(COMPILER2) || defined(GRAAL) || defined(_LP64) || !INCLUDE_CDS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1123 // Conflict: required to use shared spaces (-Xshare:on), but
a61af66fc99e Initial load
duke
parents:
diff changeset
1124 // incompatible command line options were chosen.
a61af66fc99e Initial load
duke
parents:
diff changeset
1125
a61af66fc99e Initial load
duke
parents:
diff changeset
1126 static void no_shared_spaces() {
a61af66fc99e Initial load
duke
parents:
diff changeset
1127 if (RequireSharedSpaces) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1128 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
1129 "Class data sharing is inconsistent with other specified options.\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1130 vm_exit_during_initialization("Unable to use shared archive.", NULL);
a61af66fc99e Initial load
duke
parents:
diff changeset
1131 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
1132 FLAG_SET_DEFAULT(UseSharedSpaces, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
1133 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1134 }
12280
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1135 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1136
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1137 void Arguments::set_tiered_flags() {
2348
5d8f5a6dced7 7020403: Add AdvancedCompilationPolicy for tiered
iveresov
parents: 2325
diff changeset
1138 // With tiered, set default policy to AdvancedThresholdPolicy, which is 3.
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1139 if (FLAG_IS_DEFAULT(CompilationPolicyChoice)) {
2348
5d8f5a6dced7 7020403: Add AdvancedCompilationPolicy for tiered
iveresov
parents: 2325
diff changeset
1140 FLAG_SET_DEFAULT(CompilationPolicyChoice, 3);
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1141 }
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1142 if (CompilationPolicyChoice < 2) {
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1143 vm_exit_during_initialization(
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1144 "Incompatible compilation policy selected", NULL);
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1145 }
1891
9de67bf4244d 6996136: VM crash in src/share/vm/runtime/virtualspace.cpp:424
iveresov
parents: 1890
diff changeset
1146 // Increase the code cache size - tiered compiles a lot more.
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1147 if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) {
8043
309460dcedf7 8006851: When TieredCompilation is set, max code cache should be bumped to 256mb
morris
parents: 8003
diff changeset
1148 FLAG_SET_DEFAULT(ReservedCodeCacheSize, ReservedCodeCacheSize * 5);
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1149 }
10278
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1150 if (!UseInterpreter) { // -Xcomp
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1151 Tier3InvokeNotifyFreqLog = 0;
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1152 Tier4InvocationThreshold = 0;
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1153 }
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1154 }
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
1155
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
1156 #if INCLUDE_ALL_GCS
4838
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1157 static void disable_adaptive_size_policy(const char* collector_name) {
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1158 if (UseAdaptiveSizePolicy) {
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1159 if (FLAG_IS_CMDLINE(UseAdaptiveSizePolicy)) {
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1160 warning("disabling UseAdaptiveSizePolicy; it is incompatible with %s.",
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1161 collector_name);
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1162 }
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1163 FLAG_SET_DEFAULT(UseAdaptiveSizePolicy, false);
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1164 }
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1165 }
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1166
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1167 void Arguments::set_parnew_gc_flags() {
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1168 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC && !UseG1GC,
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1169 "control point invariant");
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1170 assert(UseParNewGC, "Error");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1171
4838
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1172 // Turn off AdaptiveSizePolicy for parnew until it is complete.
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1173 disable_adaptive_size_policy("UseParNewGC");
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1174
7451
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1175 if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1176 FLAG_SET_DEFAULT(ParallelGCThreads, Abstract_VM_Version::parallel_worker_threads());
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1177 assert(ParallelGCThreads > 0, "We should always have at least one thread by default");
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1178 } else if (ParallelGCThreads == 0) {
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1179 jio_fprintf(defaultStream::error_stream(),
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1180 "The ParNew GC can not be combined with -XX:ParallelGCThreads=0\n");
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1181 vm_exit(1);
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1182 }
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1183
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1184 // By default YoungPLABSize and OldPLABSize are set to 4096 and 1024 respectively,
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1185 // these settings are default for Parallel Scavenger. For ParNew+Tenured configuration
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1186 // we set them to 1024 and 1024.
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1187 // See CR 6362902.
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1188 if (FLAG_IS_DEFAULT(YoungPLABSize)) {
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1189 FLAG_SET_DEFAULT(YoungPLABSize, (intx)1024);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1190 }
7451
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1191 if (FLAG_IS_DEFAULT(OldPLABSize)) {
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1192 FLAG_SET_DEFAULT(OldPLABSize, (intx)1024);
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1193 }
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1194
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1195 // AlwaysTenure flag should make ParNew promote all at first collection.
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1196 // See CR 6362902.
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1197 if (AlwaysTenure) {
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1198 FLAG_SET_CMDLINE(uintx, MaxTenuringThreshold, 0);
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1199 }
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1200 // When using compressed oops, we use local overflow stacks,
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1201 // rather than using a global overflow list chained through
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1202 // the klass word of the object's pre-image.
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1203 if (UseCompressedOops && !ParGCUseLocalOverflow) {
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1204 if (!FLAG_IS_DEFAULT(ParGCUseLocalOverflow)) {
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1205 warning("Forcing +ParGCUseLocalOverflow: needed if using compressed references");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1206 }
7451
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1207 FLAG_SET_DEFAULT(ParGCUseLocalOverflow, true);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1208 }
7451
ca0a78017dc7 8005396: Use ParNew with only one thread instead of DefNew as default for CMS on single CPU machines
brutisso
parents: 7397
diff changeset
1209 assert(ParGCUseLocalOverflow || !UseCompressedOops, "Error");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1210 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1211
a61af66fc99e Initial load
duke
parents:
diff changeset
1212 // Adjust some sizes to suit CMS and/or ParNew needs; these work well on
a61af66fc99e Initial load
duke
parents:
diff changeset
1213 // sparc/solaris for certain applications, but would gain from
a61af66fc99e Initial load
duke
parents:
diff changeset
1214 // further optimization and tuning efforts, and would almost
a61af66fc99e Initial load
duke
parents:
diff changeset
1215 // certainly gain from analysis of platform and environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
1216 void Arguments::set_cms_and_parnew_gc_flags() {
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1217 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC, "Error");
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1218 assert(UseConcMarkSweepGC, "CMS is expected to be on here");
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1219
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1220 // If we are using CMS, we prefer to UseParNewGC,
a61af66fc99e Initial load
duke
parents:
diff changeset
1221 // unless explicitly forbidden.
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1222 if (FLAG_IS_DEFAULT(UseParNewGC)) {
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1223 FLAG_SET_ERGO(bool, UseParNewGC, true);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1224 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1225
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
1226 // Turn off AdaptiveSizePolicy by default for cms until it is complete.
4838
a5244e07b761 7112413: JVM Crash, possibly GC-related
jcoomes
parents: 4774
diff changeset
1227 disable_adaptive_size_policy("UseConcMarkSweepGC");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1228
a61af66fc99e Initial load
duke
parents:
diff changeset
1229 // In either case, adjust ParallelGCThreads and/or UseParNewGC
a61af66fc99e Initial load
duke
parents:
diff changeset
1230 // as needed.
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1231 if (UseParNewGC) {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1232 set_parnew_gc_flags();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1233 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1234
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1235 size_t max_heap = align_size_down(MaxHeapSize,
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1236 CardTableRS::ct_max_alignment_constraint());
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1237
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1238 // Now make adjustments for CMS
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1239 intx tenuring_default = (intx)6;
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1240 size_t young_gen_per_worker = CMSYoungGenPerWorker;
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1241
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1242 // Preferred young gen size for "short" pauses:
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1243 // upper bound depends on # of threads and NewRatio.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1244 const uintx parallel_gc_threads =
a61af66fc99e Initial load
duke
parents:
diff changeset
1245 (ParallelGCThreads == 0 ? 1 : ParallelGCThreads);
a61af66fc99e Initial load
duke
parents:
diff changeset
1246 const size_t preferred_max_new_size_unaligned =
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1247 MIN2(max_heap/(NewRatio+1), ScaleForWordSize(young_gen_per_worker * parallel_gc_threads));
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1248 size_t preferred_max_new_size =
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1249 align_size_up(preferred_max_new_size_unaligned, os::vm_page_size());
a61af66fc99e Initial load
duke
parents:
diff changeset
1250
a61af66fc99e Initial load
duke
parents:
diff changeset
1251 // Unless explicitly requested otherwise, size young gen
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1252 // for "short" pauses ~ CMSYoungGenPerWorker*ParallelGCThreads
886
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1253
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1254 // If either MaxNewSize or NewRatio is set on the command line,
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1255 // assume the user is trying to set the size of the young gen.
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1256 if (FLAG_IS_DEFAULT(MaxNewSize) && FLAG_IS_DEFAULT(NewRatio)) {
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1257
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1258 // Set MaxNewSize to our calculated preferred_max_new_size unless
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1259 // NewSize was set on the command line and it is larger than
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1260 // preferred_max_new_size.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1261 if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1262 FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1263 } else {
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1264 FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1265 }
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1266 if (PrintGCDetails && Verbose) {
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1267 // Too early to use gclog_or_tty
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1268 tty->print_cr("CMS ergo set MaxNewSize: " SIZE_FORMAT, MaxNewSize);
886
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1269 }
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1270
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1271 // Code along this path potentially sets NewSize and OldSize
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1272 if (PrintGCDetails && Verbose) {
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1273 // Too early to use gclog_or_tty
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1274 tty->print_cr("CMS set min_heap_size: " SIZE_FORMAT
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1275 " initial_heap_size: " SIZE_FORMAT
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1276 " max_heap: " SIZE_FORMAT,
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1277 min_heap_size(), InitialHeapSize, max_heap);
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1278 }
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1279 size_t min_new = preferred_max_new_size;
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1280 if (FLAG_IS_CMDLINE(NewSize)) {
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1281 min_new = NewSize;
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1282 }
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1283 if (max_heap > min_new && min_heap_size() > min_new) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1284 // Unless explicitly requested otherwise, make young gen
a61af66fc99e Initial load
duke
parents:
diff changeset
1285 // at least min_new, and at most preferred_max_new_size.
a61af66fc99e Initial load
duke
parents:
diff changeset
1286 if (FLAG_IS_DEFAULT(NewSize)) {
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1287 FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1288 FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1289 if (PrintGCDetails && Verbose) {
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1290 // Too early to use gclog_or_tty
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1291 tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1292 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1293 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1294 // Unless explicitly requested otherwise, size old gen
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1295 // so it's NewRatio x of NewSize.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1296 if (FLAG_IS_DEFAULT(OldSize)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1297 if (max_heap > NewSize) {
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1298 FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, max_heap - NewSize));
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1299 if (PrintGCDetails && Verbose) {
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1300 // Too early to use gclog_or_tty
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
1301 tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1302 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1303 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1304 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1305 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1306 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1307 // Unless explicitly requested otherwise, definitely
a61af66fc99e Initial load
duke
parents:
diff changeset
1308 // promote all objects surviving "tenuring_default" scavenges.
a61af66fc99e Initial load
duke
parents:
diff changeset
1309 if (FLAG_IS_DEFAULT(MaxTenuringThreshold) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
1310 FLAG_IS_DEFAULT(SurvivorRatio)) {
6818
22b8d3d181d9 8000351: Tenuring threshold should be unsigned
jwilhelm
parents: 6785
diff changeset
1311 FLAG_SET_ERGO(uintx, MaxTenuringThreshold, tenuring_default);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1312 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1313 // If we decided above (or user explicitly requested)
a61af66fc99e Initial load
duke
parents:
diff changeset
1314 // `promote all' (via MaxTenuringThreshold := 0),
a61af66fc99e Initial load
duke
parents:
diff changeset
1315 // prefer minuscule survivor spaces so as not to waste
a61af66fc99e Initial load
duke
parents:
diff changeset
1316 // space for (non-existent) survivors
a61af66fc99e Initial load
duke
parents:
diff changeset
1317 if (FLAG_IS_DEFAULT(SurvivorRatio) && MaxTenuringThreshold == 0) {
8035
f64ffbf81af5 8006432: Ratio flags should be unsigned
jwilhelm
parents: 7627
diff changeset
1318 FLAG_SET_ERGO(uintx, SurvivorRatio, MAX2((uintx)1024, SurvivorRatio));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1319 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1320 // If OldPLABSize is set and CMSParPromoteBlocksToClaim is not,
a61af66fc99e Initial load
duke
parents:
diff changeset
1321 // set CMSParPromoteBlocksToClaim equal to OldPLABSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
1322 // This is done in order to make ParNew+CMS configuration to work
a61af66fc99e Initial load
duke
parents:
diff changeset
1323 // with YoungPLABSize and OldPLABSize options.
a61af66fc99e Initial load
duke
parents:
diff changeset
1324 // See CR 6362902.
a61af66fc99e Initial load
duke
parents:
diff changeset
1325 if (!FLAG_IS_DEFAULT(OldPLABSize)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1326 if (FLAG_IS_DEFAULT(CMSParPromoteBlocksToClaim)) {
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1327 // OldPLABSize is not the default value but CMSParPromoteBlocksToClaim
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1328 // is. In this situtation let CMSParPromoteBlocksToClaim follow
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1329 // the value (either from the command line or ergonomics) of
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1330 // OldPLABSize. Following OldPLABSize is an ergonomics decision.
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 10
diff changeset
1331 FLAG_SET_ERGO(uintx, CMSParPromoteBlocksToClaim, OldPLABSize);
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1332 } else {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1333 // OldPLABSize and CMSParPromoteBlocksToClaim are both set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1334 // CMSParPromoteBlocksToClaim is a collector-specific flag, so
a61af66fc99e Initial load
duke
parents:
diff changeset
1335 // we'll let it to take precedence.
a61af66fc99e Initial load
duke
parents:
diff changeset
1336 jio_fprintf(defaultStream::error_stream(),
886
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1337 "Both OldPLABSize and CMSParPromoteBlocksToClaim"
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1338 " options are specified for the CMS collector."
061cd4d965fc 6862534: -XX:NewRatio completely ignored when combined with -XX:+UseConcMarkSweepG
jmasa
parents: 845
diff changeset
1339 " CMSParPromoteBlocksToClaim will take precedence.\n");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1340 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1341 }
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1342 if (!FLAG_IS_DEFAULT(ResizeOldPLAB) && !ResizeOldPLAB) {
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1343 // OldPLAB sizing manually turned off: Use a larger default setting,
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1344 // unless it was manually specified. This is because a too-low value
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1345 // will slow down scavenges.
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1346 if (FLAG_IS_DEFAULT(CMSParPromoteBlocksToClaim)) {
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1347 FLAG_SET_ERGO(uintx, CMSParPromoteBlocksToClaim, 50); // default value before 6631166
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1348 }
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1349 }
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1350 // Overwrite OldPLABSize which is the variable we will internally use everywhere.
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1351 FLAG_SET_ERGO(uintx, OldPLABSize, CMSParPromoteBlocksToClaim);
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1352 // If either of the static initialization defaults have changed, note this
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1353 // modification.
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1354 if (!FLAG_IS_DEFAULT(CMSParPromoteBlocksToClaim) || !FLAG_IS_DEFAULT(OldPLABWeight)) {
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1355 CFLS_LAB::modify_initialization(OldPLABSize, OldPLABWeight);
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
1356 }
1284
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
1357 if (PrintGCDetails && Verbose) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
1358 tty->print_cr("MarkStackSize: %uk MarkStackSizeMax: %uk",
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
1359 MarkStackSize / K, MarkStackSizeMax / K);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
1360 tty->print_cr("ConcGCThreads: %u", ConcGCThreads);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
1361 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1362 }
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
1363 #endif // INCLUDE_ALL_GCS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1364
1571
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1365 void set_object_alignment() {
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1366 // Object alignment.
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1367 assert(is_power_of_2(ObjectAlignmentInBytes), "ObjectAlignmentInBytes must be power of 2");
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1368 MinObjAlignmentInBytes = ObjectAlignmentInBytes;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1369 assert(MinObjAlignmentInBytes >= HeapWordsPerLong * HeapWordSize, "ObjectAlignmentInBytes value is too small");
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1370 MinObjAlignment = MinObjAlignmentInBytes / HeapWordSize;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1371 assert(MinObjAlignmentInBytes == MinObjAlignment * HeapWordSize, "ObjectAlignmentInBytes value is incorrect");
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1372 MinObjAlignmentInBytesMask = MinObjAlignmentInBytes - 1;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1373
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1374 LogMinObjAlignmentInBytes = exact_log2(ObjectAlignmentInBytes);
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1375 LogMinObjAlignment = LogMinObjAlignmentInBytes - LogHeapWordSize;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1376
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1377 // Oop encoding heap max
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1378 OopEncodingHeapMax = (uint64_t(max_juint) + 1) << LogMinObjAlignmentInBytes;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1379
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
1380 #if INCLUDE_ALL_GCS
1571
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1381 // Set CMS global values
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1382 CompactibleFreeListSpace::set_cms_values();
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
1383 #endif // INCLUDE_ALL_GCS
1571
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1384 }
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1385
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1386 bool verify_object_alignment() {
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1387 // Object alignment.
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1388 if (!is_power_of_2(ObjectAlignmentInBytes)) {
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1389 jio_fprintf(defaultStream::error_stream(),
1829
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1390 "error: ObjectAlignmentInBytes=%d must be power of 2\n",
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1391 (int)ObjectAlignmentInBytes);
1571
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1392 return false;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1393 }
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1394 if ((int)ObjectAlignmentInBytes < BytesPerLong) {
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1395 jio_fprintf(defaultStream::error_stream(),
1829
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1396 "error: ObjectAlignmentInBytes=%d must be greater or equal %d\n",
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1397 (int)ObjectAlignmentInBytes, BytesPerLong);
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1398 return false;
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1399 }
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1400 // It does not make sense to have big object alignment
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1401 // since a space lost due to alignment will be greater
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1402 // then a saved space from compressed oops.
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1403 if ((int)ObjectAlignmentInBytes > 256) {
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1404 jio_fprintf(defaultStream::error_stream(),
7461
561148896559 8005076: Creating a CDS archive with one alignment and running another causes a crash.
hseigel
parents: 7458
diff changeset
1405 "error: ObjectAlignmentInBytes=%d must not be greater than 256\n",
1829
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1406 (int)ObjectAlignmentInBytes);
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1407 return false;
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1408 }
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1409 // In case page size is very small.
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1410 if ((int)ObjectAlignmentInBytes >= os::vm_page_size()) {
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1411 jio_fprintf(defaultStream::error_stream(),
7461
561148896559 8005076: Creating a CDS archive with one alignment and running another causes a crash.
hseigel
parents: 7458
diff changeset
1412 "error: ObjectAlignmentInBytes=%d must be less than page size %d\n",
1829
fe08403130db 6979458: VM crashes when -XX:ObjectAlignmentInBytes is too big
kvn
parents: 1796
diff changeset
1413 (int)ObjectAlignmentInBytes, os::vm_page_size());
1571
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1414 return false;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1415 }
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1416 return true;
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1417 }
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
1418
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1419 uintx Arguments::max_heap_for_compressed_oops() {
1963
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1420 // Avoid sign flip.
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1421 assert(OopEncodingHeapMax > (uint64_t)os::vm_page_size(), "Unusual page size");
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1422 // We need to fit both the NULL page and the heap into the memory budget, while
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1423 // keeping alignment constraints of the heap. To guarantee the latter, as the
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1424 // NULL page is located before the heap, we pad the NULL page to the conservative
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1425 // maximum alignment that the GC may ever impose upon the heap.
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1426 size_t displacement_due_to_null_page = align_size_up_(os::vm_page_size(),
13059
46d7652b223c 8026853: Prepare GC code for collector policy regression fix
jwilhelm
parents: 13008
diff changeset
1427 _conservative_max_heap_alignment);
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1428
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1429 LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page);
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1430 NOT_LP64(ShouldNotReachHere(); return 0);
135
b7268662a986 6689523: max heap calculation for compressed oops is off by MaxPermSize
coleenp
parents: 113
diff changeset
1431 }
b7268662a986 6689523: max heap calculation for compressed oops is off by MaxPermSize
coleenp
parents: 113
diff changeset
1432
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1433 bool Arguments::should_auto_select_low_pause_collector() {
a61af66fc99e Initial load
duke
parents:
diff changeset
1434 if (UseAutoGCSelectPolicy &&
a61af66fc99e Initial load
duke
parents:
diff changeset
1435 !FLAG_IS_DEFAULT(MaxGCPauseMillis) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
1436 (MaxGCPauseMillis <= AutoGCSelectPauseMillis)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1437 if (PrintGCDetails) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1438 // Cannot use gclog_or_tty yet.
a61af66fc99e Initial load
duke
parents:
diff changeset
1439 tty->print_cr("Automatic selection of the low pause collector"
a61af66fc99e Initial load
duke
parents:
diff changeset
1440 " based on pause goal of %d (ms)", MaxGCPauseMillis);
a61af66fc99e Initial load
duke
parents:
diff changeset
1441 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1442 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
1443 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1444 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1445 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1446
8741
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1447 void Arguments::set_use_compressed_oops() {
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1448 #ifndef ZERO
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1449 #ifdef _LP64
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1450 // MaxHeapSize is not set up properly at this point, but
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1451 // the only value that can override MaxHeapSize if we are
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1452 // to use UseCompressedOops is InitialHeapSize.
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1453 size_t max_heap_size = MAX2(MaxHeapSize, InitialHeapSize);
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1454
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1455 if (max_heap_size <= max_heap_for_compressed_oops()) {
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1456 #if !defined(COMPILER1) || defined(TIERED)
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1457 if (FLAG_IS_DEFAULT(UseCompressedOops)) {
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1458 FLAG_SET_ERGO(bool, UseCompressedOops, true);
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1459 }
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1460 #endif
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1461 #ifdef _WIN64
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1462 if (UseLargePages && UseCompressedOops) {
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1463 // Cannot allocate guard pages for implicit checks in indexed addressing
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1464 // mode, when large pages are specified on windows.
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1465 // This flag could be switched ON if narrow oop base address is set to 0,
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1466 // see code in Universe::initialize_heap().
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1467 Universe::set_narrow_oop_use_implicit_null_checks(false);
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1468 }
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1469 #endif // _WIN64
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1470 } else {
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1471 if (UseCompressedOops && !FLAG_IS_DEFAULT(UseCompressedOops)) {
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1472 warning("Max heap size too large for Compressed Oops");
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1473 FLAG_SET_DEFAULT(UseCompressedOops, false);
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1474 FLAG_SET_DEFAULT(UseCompressedClassPointers, false);
8741
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1475 }
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1476 }
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1477 #endif // _LP64
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1478 #endif // ZERO
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1479 }
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1480
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1481
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1482 // NOTE: set_use_compressed_klass_ptrs() must be called after calling
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1483 // set_use_compressed_oops().
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1484 void Arguments::set_use_compressed_klass_ptrs() {
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1485 #ifndef ZERO
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1486 #ifdef _LP64
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1487 // UseCompressedOops must be on for UseCompressedClassPointers to be on.
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1488 if (!UseCompressedOops) {
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1489 if (UseCompressedClassPointers) {
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1490 warning("UseCompressedClassPointers requires UseCompressedOops");
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1491 }
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1492 FLAG_SET_DEFAULT(UseCompressedClassPointers, false);
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1493 } else {
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1494 // Turn on UseCompressedClassPointers too
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1495 if (FLAG_IS_DEFAULT(UseCompressedClassPointers)) {
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1496 FLAG_SET_ERGO(bool, UseCompressedClassPointers, true);
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1497 }
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1498 // Check the CompressedClassSpaceSize to make sure we use compressed klass ptrs.
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1499 if (UseCompressedClassPointers) {
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1500 if (CompressedClassSpaceSize > KlassEncodingMetaspaceMax) {
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1501 warning("CompressedClassSpaceSize is too large for UseCompressedClassPointers");
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
1502 FLAG_SET_DEFAULT(UseCompressedClassPointers, false);
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1503 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1504 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1505 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1506 #endif // _LP64
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1507 #endif // !ZERO
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1508 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1509
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1510 void Arguments::set_conservative_max_heap_alignment() {
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1511 // The conservative maximum required alignment for the heap is the maximum of
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1512 // the alignments imposed by several sources: any requirements from the heap
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1513 // itself, the collector policy and the maximum page size we may run the VM
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1514 // with.
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1515 size_t heap_alignment = GenCollectedHeap::conservative_max_heap_alignment();
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1516 #if INCLUDE_ALL_GCS
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1517 if (UseParallelGC) {
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1518 heap_alignment = ParallelScavengeHeap::conservative_max_heap_alignment();
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1519 } else if (UseG1GC) {
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1520 heap_alignment = G1CollectedHeap::conservative_max_heap_alignment();
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1521 }
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1522 #endif // INCLUDE_ALL_GCS
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1523 _conservative_max_heap_alignment = MAX3(heap_alignment, os::max_page_size(),
13060
8f07aa079343 8016309: assert(eden_size > 0 && survivor_size > 0) failed: just checking
jwilhelm
parents: 13059
diff changeset
1524 CollectorPolicy::compute_heap_alignment());
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1525 }
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1526
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1527 void Arguments::set_ergonomics_flags() {
a61af66fc99e Initial load
duke
parents:
diff changeset
1528
4946
69333a2fbae2 7142680: default GC affected by jvm path
iveresov
parents: 4879
diff changeset
1529 if (os::is_server_class_machine()) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1530 // If no other collector is requested explicitly,
a61af66fc99e Initial load
duke
parents:
diff changeset
1531 // let the VM select the collector based on
a61af66fc99e Initial load
duke
parents:
diff changeset
1532 // machine class and automatic selection policy.
a61af66fc99e Initial load
duke
parents:
diff changeset
1533 if (!UseSerialGC &&
a61af66fc99e Initial load
duke
parents:
diff changeset
1534 !UseConcMarkSweepGC &&
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1535 !UseG1GC &&
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1536 !UseParNewGC &&
a61af66fc99e Initial load
duke
parents:
diff changeset
1537 FLAG_IS_DEFAULT(UseParallelGC)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1538 if (should_auto_select_low_pause_collector()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1539 FLAG_SET_ERGO(bool, UseConcMarkSweepGC, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
1540 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
1541 FLAG_SET_ERGO(bool, UseParallelGC, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
1542 }
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
1543 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1544 }
12355
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 12057 12326
diff changeset
1545 #if defined(COMPILER2) || defined(GRAAL)
12280
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1546 // Shared spaces work fine with other GCs but causes bytecode rewriting
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1547 // to be disabled, which hurts interpreter performance and decreases
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1548 // server performance. When -server is specified, keep the default off
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1549 // unless it is asked for. Future work: either add bytecode rewriting
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1550 // at link time, or rewrite bytecodes in non-shared methods.
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1551 if (!DumpSharedSpaces && !RequireSharedSpaces &&
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1552 (FLAG_IS_DEFAULT(UseSharedSpaces) || !UseSharedSpaces)) {
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1553 no_shared_spaces();
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1554 }
9ed97b511b26 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
hseigel
parents: 12276
diff changeset
1555 #endif
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 76
diff changeset
1556
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1557 set_conservative_max_heap_alignment();
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
1558
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 993
diff changeset
1559 #ifndef ZERO
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 76
diff changeset
1560 #ifdef _LP64
8741
eac371996b44 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents: 8734
diff changeset
1561 set_use_compressed_oops();
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1562
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1563 // set_use_compressed_klass_ptrs() must be called after calling
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1564 // set_use_compressed_oops().
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1565 set_use_compressed_klass_ptrs();
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
1566
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 76
diff changeset
1567 // Also checks that certain machines are slower with compressed oops
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 76
diff changeset
1568 // in vm_version initialization code.
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 76
diff changeset
1569 #endif // _LP64
1010
354d3184f6b2 6890308: integrate zero assembler hotspot changes
never
parents: 993
diff changeset
1570 #endif // !ZERO
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1571 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1572
a61af66fc99e Initial load
duke
parents:
diff changeset
1573 void Arguments::set_parallel_gc_flags() {
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1574 assert(UseParallelGC || UseParallelOldGC, "Error");
4879
24cae3e4cbaa 6679764: enable parallel compaction by default
jcoomes
parents: 4840
diff changeset
1575 // Enable ParallelOld unless it was explicitly disabled (cmd line or rc file).
24cae3e4cbaa 6679764: enable parallel compaction by default
jcoomes
parents: 4840
diff changeset
1576 if (FLAG_IS_DEFAULT(UseParallelOldGC)) {
24cae3e4cbaa 6679764: enable parallel compaction by default
jcoomes
parents: 4840
diff changeset
1577 FLAG_SET_DEFAULT(UseParallelOldGC, true);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1578 }
4879
24cae3e4cbaa 6679764: enable parallel compaction by default
jcoomes
parents: 4840
diff changeset
1579 FLAG_SET_DEFAULT(UseParallelGC, true);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1580
a61af66fc99e Initial load
duke
parents:
diff changeset
1581 // If no heap maximum was requested explicitly, use some reasonable fraction
a61af66fc99e Initial load
duke
parents:
diff changeset
1582 // of the physical memory, up to a maximum of 1GB.
7471
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1583 FLAG_SET_DEFAULT(ParallelGCThreads,
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1584 Abstract_VM_Version::parallel_worker_threads());
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1585 if (ParallelGCThreads == 0) {
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1586 jio_fprintf(defaultStream::error_stream(),
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1587 "The Parallel GC can not be combined with -XX:ParallelGCThreads=0\n");
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1588 vm_exit(1);
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1589 }
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1590
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1591
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1592 // If InitialSurvivorRatio or MinSurvivorRatio were not specified, but the
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1593 // SurvivorRatio has been set, reset their default values to SurvivorRatio +
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1594 // 2. By doing this we make SurvivorRatio also work for Parallel Scavenger.
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1595 // See CR 6362902 for details.
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1596 if (!FLAG_IS_DEFAULT(SurvivorRatio)) {
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1597 if (FLAG_IS_DEFAULT(InitialSurvivorRatio)) {
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1598 FLAG_SET_DEFAULT(InitialSurvivorRatio, SurvivorRatio + 2);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1599 }
7471
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1600 if (FLAG_IS_DEFAULT(MinSurvivorRatio)) {
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1601 FLAG_SET_DEFAULT(MinSurvivorRatio, SurvivorRatio + 2);
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1602 }
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1603 }
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1604
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1605 if (UseParallelOldGC) {
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1606 // Par compact uses lower default values since they are treated as
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1607 // minimums. These are different defaults because of the different
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1608 // interpretation and are not ergonomically set.
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1609 if (FLAG_IS_DEFAULT(MarkSweepDeadRatio)) {
4c8bf5e55392 8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0
brutisso
parents: 7453
diff changeset
1610 FLAG_SET_DEFAULT(MarkSweepDeadRatio, 1);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1611 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1612 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1613 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1614
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1615 void Arguments::set_g1_gc_flags() {
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1616 assert(UseG1GC, "Error");
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 7066
diff changeset
1617 #if defined(COMPILER1) || defined(GRAAL)
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1618 FastTLABRefill = false;
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1619 #endif
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1620 FLAG_SET_DEFAULT(ParallelGCThreads,
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1621 Abstract_VM_Version::parallel_worker_threads());
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1622 if (ParallelGCThreads == 0) {
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1623 FLAG_SET_DEFAULT(ParallelGCThreads,
751
20c6f43950b5 6490395: G1: Tidy up command line flags.
johnc
parents: 726
diff changeset
1624 Abstract_VM_Version::parallel_worker_threads());
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1625 }
751
20c6f43950b5 6490395: G1: Tidy up command line flags.
johnc
parents: 726
diff changeset
1626
7397
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1627 // MarkStackSize will be set (if it hasn't been set by the user)
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1628 // when concurrent marking is initialized.
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1629 // Its value will be based upon the number of parallel marking threads.
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1630 // But we do set the maximum mark stack size here.
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1631 if (FLAG_IS_DEFAULT(MarkStackSizeMax)) {
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1632 FLAG_SET_DEFAULT(MarkStackSizeMax, 128 * TASKQUEUE_SIZE);
1284
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
1633 }
1356
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1634
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1635 if (FLAG_IS_DEFAULT(GCTimeRatio) || GCTimeRatio == 0) {
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1636 // In G1, we want the default GC overhead goal to be higher than
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1637 // say in PS. So we set it here to 10%. Otherwise the heap might
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1638 // be expanded more aggressively than we would like it to. In
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1639 // fact, even 10% seems to not be high enough in some cases
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1640 // (especially small GC stress tests that the main thing they do
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1641 // is allocation). We might consider increase it further.
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1642 FLAG_SET_DEFAULT(GCTimeRatio, 9);
56507bcd639e 6937160: G1: should observe GCTimeRatio
tonyp
parents: 1316
diff changeset
1643 }
7397
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1644
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1645 if (PrintGCDetails && Verbose) {
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1646 tty->print_cr("MarkStackSize: %uk MarkStackSizeMax: %uk",
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1647 MarkStackSize / K, MarkStackSizeMax / K);
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1648 tty->print_cr("ConcGCThreads: %u", ConcGCThreads);
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
1649 }
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1650 }
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1651
8854
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1652 julong Arguments::limit_by_allocatable_memory(julong limit) {
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1653 julong max_allocatable;
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1654 julong result = limit;
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1655 if (os::has_allocatable_memory_limit(&max_allocatable)) {
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1656 result = MIN2(result, max_allocatable / MaxVirtMemFraction);
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1657 }
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1658 return result;
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1659 }
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1660
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1661 void Arguments::set_heap_size() {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1662 if (!FLAG_IS_DEFAULT(DefaultMaxRAMFraction)) {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1663 // Deprecated flag
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1664 FLAG_SET_CMDLINE(uintx, MaxRAMFraction, DefaultMaxRAMFraction);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1665 }
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1666
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1667 const julong phys_mem =
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1668 FLAG_IS_DEFAULT(MaxRAM) ? MIN2(os::physical_memory(), (julong)MaxRAM)
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1669 : (julong)MaxRAM;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1670
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1671 // If the maximum heap size has not been set with -Xmx,
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1672 // then set it as fraction of the size of physical memory,
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1673 // respecting the maximum and minimum sizes of the heap.
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1674 if (FLAG_IS_DEFAULT(MaxHeapSize)) {
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1675 julong reasonable_max = phys_mem / MaxRAMFraction;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1676
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1677 if (phys_mem <= MaxHeapSize * MinRAMFraction) {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1678 // Small physical memory, so use a minimum fraction of it for the heap
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1679 reasonable_max = phys_mem / MinRAMFraction;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1680 } else {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1681 // Not-small physical memory, so require a heap at least
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1682 // as large as MaxHeapSize
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1683 reasonable_max = MAX2(reasonable_max, (julong)MaxHeapSize);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1684 }
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1685 if (!FLAG_IS_DEFAULT(ErgoHeapSizeLimit) && ErgoHeapSizeLimit != 0) {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1686 // Limit the heap size to ErgoHeapSizeLimit
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1687 reasonable_max = MIN2(reasonable_max, (julong)ErgoHeapSizeLimit);
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1688 }
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1689 if (UseCompressedOops) {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1690 // Limit the heap size to the maximum possible when using compressed oops
1963
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1691 julong max_coop_heap = (julong)max_heap_for_compressed_oops();
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1692 if (HeapBaseMinAddress + MaxHeapSize < max_coop_heap) {
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1693 // Heap should be above HeapBaseMinAddress to get zero based compressed oops
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1694 // but it should be not less than default MaxHeapSize.
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1695 max_coop_heap -= HeapBaseMinAddress;
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1696 }
0ac62b4d6507 6999491: non-zero COOPs are used when they should not
kvn
parents: 1923
diff changeset
1697 reasonable_max = MIN2(reasonable_max, max_coop_heap);
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1698 }
8854
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1699 reasonable_max = limit_by_allocatable_memory(reasonable_max);
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1700
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1701 if (!FLAG_IS_DEFAULT(InitialHeapSize)) {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1702 // An initial heap size was specified on the command line,
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1703 // so be sure that the maximum size is consistent. Done
8854
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1704 // after call to limit_by_allocatable_memory because that
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1705 // method might reduce the allocation size.
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1706 reasonable_max = MAX2(reasonable_max, (julong)InitialHeapSize);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1707 }
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1708
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1709 if (PrintGCDetails && Verbose) {
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1710 // Cannot use gclog_or_tty yet.
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1711 tty->print_cr(" Maximum heap size " SIZE_FORMAT, reasonable_max);
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1712 }
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1713 FLAG_SET_ERGO(uintx, MaxHeapSize, (uintx)reasonable_max);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1714 }
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
1715
10241
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1716 // If the minimum or initial heap_size have not been set or requested to be set
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1717 // ergonomically, set them accordingly.
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1718 if (InitialHeapSize == 0 || min_heap_size() == 0) {
1074
84cb6f20afb3 6900899: vm fails to start when -Xmx value is less than OldSize + NewSize
phh
parents: 1069
diff changeset
1719 julong reasonable_minimum = (julong)(OldSize + NewSize);
84cb6f20afb3 6900899: vm fails to start when -Xmx value is less than OldSize + NewSize
phh
parents: 1069
diff changeset
1720
84cb6f20afb3 6900899: vm fails to start when -Xmx value is less than OldSize + NewSize
phh
parents: 1069
diff changeset
1721 reasonable_minimum = MIN2(reasonable_minimum, (julong)MaxHeapSize);
84cb6f20afb3 6900899: vm fails to start when -Xmx value is less than OldSize + NewSize
phh
parents: 1069
diff changeset
1722
8854
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
1723 reasonable_minimum = limit_by_allocatable_memory(reasonable_minimum);
1074
84cb6f20afb3 6900899: vm fails to start when -Xmx value is less than OldSize + NewSize
phh
parents: 1069
diff changeset
1724
10241
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1725 if (InitialHeapSize == 0) {
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1726 julong reasonable_initial = phys_mem / InitialRAMFraction;
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1727
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1728 reasonable_initial = MAX3(reasonable_initial, reasonable_minimum, (julong)min_heap_size());
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1729 reasonable_initial = MIN2(reasonable_initial, (julong)MaxHeapSize);
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1730
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1731 reasonable_initial = limit_by_allocatable_memory(reasonable_initial);
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1732
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1733 if (PrintGCDetails && Verbose) {
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1734 // Cannot use gclog_or_tty yet.
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1735 tty->print_cr(" Initial heap size " SIZE_FORMAT, (uintx)reasonable_initial);
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1736 }
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1737 FLAG_SET_ERGO(uintx, InitialHeapSize, (uintx)reasonable_initial);
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1738 }
10241
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1739 // If the minimum heap size has not been set (via -Xms),
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1740 // synchronize with InitialHeapSize to avoid errors with the default value.
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1741 if (min_heap_size() == 0) {
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1742 set_min_heap_size(MIN2((uintx)reasonable_minimum, InitialHeapSize));
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1743 if (PrintGCDetails && Verbose) {
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1744 // Cannot use gclog_or_tty yet.
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1745 tty->print_cr(" Minimum heap size " SIZE_FORMAT, min_heap_size());
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1746 }
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
1747 }
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1748 }
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1749 }
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1750
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1751 // This must be called after ergonomics because we want bytecode rewriting
a61af66fc99e Initial load
duke
parents:
diff changeset
1752 // if the server compiler is used, or if UseSharedSpaces is disabled.
a61af66fc99e Initial load
duke
parents:
diff changeset
1753 void Arguments::set_bytecode_flags() {
a61af66fc99e Initial load
duke
parents:
diff changeset
1754 // Better not attempt to store into a read-only space.
a61af66fc99e Initial load
duke
parents:
diff changeset
1755 if (UseSharedSpaces) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1756 FLAG_SET_DEFAULT(RewriteBytecodes, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
1757 FLAG_SET_DEFAULT(RewriteFrequentPairs, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
1758 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1759
a61af66fc99e Initial load
duke
parents:
diff changeset
1760 if (!RewriteBytecodes) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1761 FLAG_SET_DEFAULT(RewriteFrequentPairs, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
1762 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1763 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1764
a61af66fc99e Initial load
duke
parents:
diff changeset
1765 // Aggressive optimization flags -XX:+AggressiveOpts
a61af66fc99e Initial load
duke
parents:
diff changeset
1766 void Arguments::set_aggressive_opts_flags() {
17
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1767 #ifdef COMPILER2
10278
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1768 if (AggressiveUnboxing) {
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1769 if (FLAG_IS_DEFAULT(EliminateAutoBox)) {
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1770 FLAG_SET_DEFAULT(EliminateAutoBox, true);
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1771 } else if (!EliminateAutoBox) {
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1772 // warning("AggressiveUnboxing is disabled because EliminateAutoBox is disabled");
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1773 AggressiveUnboxing = false;
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1774 }
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1775 if (FLAG_IS_DEFAULT(DoEscapeAnalysis)) {
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1776 FLAG_SET_DEFAULT(DoEscapeAnalysis, true);
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1777 } else if (!DoEscapeAnalysis) {
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1778 // warning("AggressiveUnboxing is disabled because DoEscapeAnalysis is disabled");
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1779 AggressiveUnboxing = false;
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1780 }
6f3fd5150b67 6934604: enable parts of EliminateAutoBox by default
kvn
parents: 10172
diff changeset
1781 }
17
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1782 if (AggressiveOpts || !FLAG_IS_DEFAULT(AutoBoxCacheMax)) {
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1783 if (FLAG_IS_DEFAULT(EliminateAutoBox)) {
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1784 FLAG_SET_DEFAULT(EliminateAutoBox, true);
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1785 }
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1786 if (FLAG_IS_DEFAULT(AutoBoxCacheMax)) {
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1787 FLAG_SET_DEFAULT(AutoBoxCacheMax, 20000);
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1788 }
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1789
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1790 // Feed the cache size setting into the JDK
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1791 char buffer[1024];
513
2328d1d3f8cf 6781583: Hotspot build fails on linux 64 bit platform with gcc 4.3.2
xlu
parents: 489
diff changeset
1792 sprintf(buffer, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax);
17
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1793 add_property(buffer);
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1794 }
416
b6cfd754403d 6649622: HotSpot Biased locking needs tuning on latest CPUs
never
parents: 363
diff changeset
1795 if (AggressiveOpts && FLAG_IS_DEFAULT(BiasedLockingStartupDelay)) {
b6cfd754403d 6649622: HotSpot Biased locking needs tuning on latest CPUs
never
parents: 363
diff changeset
1796 FLAG_SET_DEFAULT(BiasedLockingStartupDelay, 500);
b6cfd754403d 6649622: HotSpot Biased locking needs tuning on latest CPUs
never
parents: 363
diff changeset
1797 }
17
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1798 #endif
ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents: 0
diff changeset
1799
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1800 if (AggressiveOpts) {
61
5a76ab815e34 6667833: Remove CacheTimeMillis
sbohne
parents: 0
diff changeset
1801 // Sample flag setting code
5a76ab815e34 6667833: Remove CacheTimeMillis
sbohne
parents: 0
diff changeset
1802 // if (FLAG_IS_DEFAULT(EliminateZeroing)) {
5a76ab815e34 6667833: Remove CacheTimeMillis
sbohne
parents: 0
diff changeset
1803 // FLAG_SET_DEFAULT(EliminateZeroing, true);
5a76ab815e34 6667833: Remove CacheTimeMillis
sbohne
parents: 0
diff changeset
1804 // }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1805 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1806 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1807
a61af66fc99e Initial load
duke
parents:
diff changeset
1808 //===========================================================================================================
a61af66fc99e Initial load
duke
parents:
diff changeset
1809 // Parsing of java.compiler property
a61af66fc99e Initial load
duke
parents:
diff changeset
1810
a61af66fc99e Initial load
duke
parents:
diff changeset
1811 void Arguments::process_java_compiler_argument(char* arg) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1812 // For backwards compatibility, Djava.compiler=NONE or ""
a61af66fc99e Initial load
duke
parents:
diff changeset
1813 // causes us to switch to -Xint mode UNLESS -Xdebug
a61af66fc99e Initial load
duke
parents:
diff changeset
1814 // is also specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
1815 if (strlen(arg) == 0 || strcasecmp(arg, "NONE") == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1816 set_java_compiler(true); // "-Djava.compiler[=...]" most recently seen.
a61af66fc99e Initial load
duke
parents:
diff changeset
1817 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1818 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1819
a61af66fc99e Initial load
duke
parents:
diff changeset
1820 void Arguments::process_java_launcher_argument(const char* launcher, void* extra_info) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1821 _sun_java_launcher = strdup(launcher);
2302
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
1822 if (strcmp("gamma", _sun_java_launcher) == 0) {
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
1823 _created_by_gamma_launcher = true;
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
1824 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1825 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1826
a61af66fc99e Initial load
duke
parents:
diff changeset
1827 bool Arguments::created_by_java_launcher() {
a61af66fc99e Initial load
duke
parents:
diff changeset
1828 assert(_sun_java_launcher != NULL, "property must have value");
a61af66fc99e Initial load
duke
parents:
diff changeset
1829 return strcmp(DEFAULT_JAVA_LAUNCHER, _sun_java_launcher) != 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
1830 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1831
2302
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
1832 bool Arguments::created_by_gamma_launcher() {
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
1833 return _created_by_gamma_launcher;
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
1834 }
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
1835
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1836 //===========================================================================================================
a61af66fc99e Initial load
duke
parents:
diff changeset
1837 // Parsing of main arguments
a61af66fc99e Initial load
duke
parents:
diff changeset
1838
1244
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1839 bool Arguments::verify_interval(uintx val, uintx min,
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1840 uintx max, const char* name) {
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1841 // Returns true iff value is in the inclusive interval [min..max]
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1842 // false, otherwise.
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1843 if (val >= min && val <= max) {
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1844 return true;
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1845 }
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1846 jio_fprintf(defaultStream::error_stream(),
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1847 "%s of " UINTX_FORMAT " is invalid; must be between " UINTX_FORMAT
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1848 " and " UINTX_FORMAT "\n",
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1849 name, val, min, max);
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1850 return false;
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1851 }
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
1852
1744
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1853 bool Arguments::verify_min_value(intx val, intx min, const char* name) {
2366
1fb790245268 6820066: Check that -XX:ParGCArrayScanChunk has a value larger than zero.
jwilhelm
parents: 2362
diff changeset
1854 // Returns true if given value is at least specified min threshold
1744
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1855 // false, otherwise.
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1856 if (val >= min ) {
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1857 return true;
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1858 }
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1859 jio_fprintf(defaultStream::error_stream(),
2366
1fb790245268 6820066: Check that -XX:ParGCArrayScanChunk has a value larger than zero.
jwilhelm
parents: 2362
diff changeset
1860 "%s of " INTX_FORMAT " is invalid; must be at least " INTX_FORMAT "\n",
1744
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1861 name, val, min);
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1862 return false;
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1863 }
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
1864
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1865 bool Arguments::verify_percentage(uintx value, const char* name) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1866 if (value <= 100) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1867 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
1868 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1869 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
1870 "%s of " UINTX_FORMAT " is invalid; must be between 0 and 100\n",
a61af66fc99e Initial load
duke
parents:
diff changeset
1871 name, value);
a61af66fc99e Initial load
duke
parents:
diff changeset
1872 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
1873 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1874
9060
cc32ccaaf47f 8003310: Enable -Wunused-function when compiling with gcc
mikael
parents: 8847
diff changeset
1875 #if !INCLUDE_ALL_GCS
cc32ccaaf47f 8003310: Enable -Wunused-function when compiling with gcc
mikael
parents: 8847
diff changeset
1876 #ifdef ASSERT
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1877 static bool verify_serial_gc_flags() {
a61af66fc99e Initial load
duke
parents:
diff changeset
1878 return (UseSerialGC &&
945
68ef3fdcdb76 6872136: CMS: confusing message may be printed when a collector is switched off implicitly
ysr
parents: 932
diff changeset
1879 !(UseParNewGC || (UseConcMarkSweepGC || CMSIncrementalMode) || UseG1GC ||
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
1880 UseParallelGC || UseParallelOldGC));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1881 }
9060
cc32ccaaf47f 8003310: Enable -Wunused-function when compiling with gcc
mikael
parents: 8847
diff changeset
1882 #endif // ASSERT
cc32ccaaf47f 8003310: Enable -Wunused-function when compiling with gcc
mikael
parents: 8847
diff changeset
1883 #endif // INCLUDE_ALL_GCS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1884
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1885 // check if do gclog rotation
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1886 // +UseGCLogFileRotation is a must,
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1887 // no gc log rotation when log file not supplied or
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1888 // NumberOfGCLogFiles is 0, or GCLogFileSize is 0
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1889 void check_gclog_consistency() {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1890 if (UseGCLogFileRotation) {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1891 if ((Arguments::gc_log_filename() == NULL) ||
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1892 (NumberOfGCLogFiles == 0) ||
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1893 (GCLogFileSize == 0)) {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1894 jio_fprintf(defaultStream::output_stream(),
12215
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1895 "To enable GC log rotation, use -Xloggc:<filename> -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=<num_of_files> -XX:GCLogFileSize=<num_of_size>[k|K|m|M|g|G]\n"
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1896 "where num_of_file > 0 and num_of_size > 0\n"
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1897 "GC log rotation is turned off\n");
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1898 UseGCLogFileRotation = false;
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1899 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1900 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1901
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1902 if (UseGCLogFileRotation && GCLogFileSize < 8*K) {
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1903 FLAG_SET_CMDLINE(uintx, GCLogFileSize, 8*K);
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1904 jio_fprintf(defaultStream::output_stream(),
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1905 "GCLogFileSize changed to minimum 8K\n");
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1906 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1907 }
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1908
12215
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1909 // This function is called for -Xloggc:<filename>, it can be used
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1910 // to check if a given file name(or string) conforms to the following
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1911 // specification:
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1912 // A valid string only contains "[A-Z][a-z][0-9].-_%[p|t]"
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1913 // %p and %t only allowed once. We only limit usage of filename not path
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1914 bool is_filename_valid(const char *file_name) {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1915 const char* p = file_name;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1916 char file_sep = os::file_separator()[0];
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1917 const char* cp;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1918 // skip prefix path
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1919 for (cp = file_name; *cp != '\0'; cp++) {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1920 if (*cp == '/' || *cp == file_sep) {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1921 p = cp + 1;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1922 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1923 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1924
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1925 int count_p = 0;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1926 int count_t = 0;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1927 while (*p != '\0') {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1928 if ((*p >= '0' && *p <= '9') ||
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1929 (*p >= 'A' && *p <= 'Z') ||
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1930 (*p >= 'a' && *p <= 'z') ||
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1931 *p == '-' ||
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1932 *p == '_' ||
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1933 *p == '.') {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1934 p++;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1935 continue;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1936 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1937 if (*p == '%') {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1938 if(*(p + 1) == 'p') {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1939 p += 2;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1940 count_p ++;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1941 continue;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1942 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1943 if (*(p + 1) == 't') {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1944 p += 2;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1945 count_t ++;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1946 continue;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1947 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1948 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1949 return false;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1950 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1951 return count_p < 2 && count_t < 2;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1952 }
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
1953
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1954 // Check consistency of GC selection
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1955 bool Arguments::check_gc_consistency() {
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
1956 check_gclog_consistency();
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1957 bool status = true;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1958 // Ensure that the user has not selected conflicting sets
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1959 // of collectors. [Note: this check is merely a user convenience;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1960 // collectors over-ride each other so that only a non-conflicting
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1961 // set is selected; however what the user gets is not what they
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1962 // may have expected from the combination they asked for. It's
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1963 // better to reduce user confusion by not allowing them to
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1964 // select conflicting combinations.
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1965 uint i = 0;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1966 if (UseSerialGC) i++;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1967 if (UseConcMarkSweepGC || UseParNewGC) i++;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1968 if (UseParallelGC || UseParallelOldGC) i++;
845
df6caf649ff7 6700789: G1: Enable use of compressed oops with G1 heaps
ysr
parents: 751
diff changeset
1969 if (UseG1GC) i++;
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1970 if (i > 1) {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1971 jio_fprintf(defaultStream::error_stream(),
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1972 "Conflicting collector combinations in option list; "
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1973 "please refer to the release notes for the combinations "
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1974 "allowed\n");
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1975 status = false;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1976 }
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1977 return status;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1978 }
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
1979
7452
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1980 void Arguments::check_deprecated_gcs() {
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1981 if (UseConcMarkSweepGC && !UseParNewGC) {
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1982 warning("Using the DefNew young collector with the CMS collector is deprecated "
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1983 "and will likely be removed in a future release");
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1984 }
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1985
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1986 if (UseParNewGC && !UseConcMarkSweepGC) {
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1987 // !UseConcMarkSweepGC means that we are using serial old gc. Unfortunately we don't
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1988 // set up UseSerialGC properly, so that can't be used in the check here.
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1989 warning("Using the ParNew young collector with the Serial old collector is deprecated "
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1990 "and will likely be removed in a future release");
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1991 }
7453
c98b676a98b4 8003822: Deprecate the incremental mode of CMS
brutisso
parents: 7452
diff changeset
1992
c98b676a98b4 8003822: Deprecate the incremental mode of CMS
brutisso
parents: 7452
diff changeset
1993 if (CMSIncrementalMode) {
c98b676a98b4 8003822: Deprecate the incremental mode of CMS
brutisso
parents: 7452
diff changeset
1994 warning("Using incremental CMS is deprecated and will likely be removed in a future release");
c98b676a98b4 8003822: Deprecate the incremental mode of CMS
brutisso
parents: 7452
diff changeset
1995 }
7452
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1996 }
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
1997
8734
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
1998 void Arguments::check_deprecated_gc_flags() {
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
1999 if (FLAG_IS_CMDLINE(MaxGCMinorPauseMillis)) {
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
2000 warning("Using MaxGCMinorPauseMillis as minor pause goal is deprecated"
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
2001 "and will likely be removed in future release");
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
2002 }
11977
313227279a05 8021967: Deprecate -XX:DefaultMaxRAMFraction
brutisso
parents: 11154
diff changeset
2003 if (FLAG_IS_CMDLINE(DefaultMaxRAMFraction)) {
313227279a05 8021967: Deprecate -XX:DefaultMaxRAMFraction
brutisso
parents: 11154
diff changeset
2004 warning("DefaultMaxRAMFraction is deprecated and will likely be removed in a future release. "
313227279a05 8021967: Deprecate -XX:DefaultMaxRAMFraction
brutisso
parents: 11154
diff changeset
2005 "Use MaxRAMFraction instead.");
313227279a05 8021967: Deprecate -XX:DefaultMaxRAMFraction
brutisso
parents: 11154
diff changeset
2006 }
13008
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2007 if (FLAG_IS_CMDLINE(UseCMSCompactAtFullCollection)) {
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2008 warning("UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.");
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2009 }
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2010 if (FLAG_IS_CMDLINE(CMSFullGCsBeforeCompaction)) {
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2011 warning("CMSFullGCsBeforeCompaction is deprecated and will likely be removed in a future release.");
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2012 }
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2013 if (FLAG_IS_CMDLINE(UseCMSCollectionPassing)) {
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2014 warning("UseCMSCollectionPassing is deprecated and will likely be removed in a future release.");
3b3133d93fb6 8027132: Print deprecation warning message for the flags controlling the CMS foreground collector
brutisso
parents: 12976
diff changeset
2015 }
8734
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
2016 }
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
2017
1744
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2018 // Check stack pages settings
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2019 bool Arguments::check_stack_pages()
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2020 {
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2021 bool status = true;
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2022 status = status && verify_min_value(StackYellowPages, 1, "StackYellowPages");
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2023 status = status && verify_min_value(StackRedPages, 1, "StackRedPages");
1867
b6aedd1acdc0 6983240: guarantee((Solaris::min_stack_allowed >= (StackYellowPages+StackRedPages...) wrong
coleenp
parents: 1864
diff changeset
2024 // greater stack shadow pages can't generate instruction to bang stack
b6aedd1acdc0 6983240: guarantee((Solaris::min_stack_allowed >= (StackYellowPages+StackRedPages...) wrong
coleenp
parents: 1864
diff changeset
2025 status = status && verify_interval(StackShadowPages, 1, 50, "StackShadowPages");
1744
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2026 return status;
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2027 }
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2028
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2029 // Check the consistency of vm_init_args
a61af66fc99e Initial load
duke
parents:
diff changeset
2030 bool Arguments::check_vm_args_consistency() {
a61af66fc99e Initial load
duke
parents:
diff changeset
2031 // Method for adding checks for flag consistency.
a61af66fc99e Initial load
duke
parents:
diff changeset
2032 // The intent is to warn the user of all possible conflicts,
a61af66fc99e Initial load
duke
parents:
diff changeset
2033 // before returning an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
2034 // Note: Needs platform-dependent factoring.
a61af66fc99e Initial load
duke
parents:
diff changeset
2035 bool status = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
2036
a61af66fc99e Initial load
duke
parents:
diff changeset
2037 // Allow both -XX:-UseStackBanging and -XX:-UseBoundThreads in non-product
a61af66fc99e Initial load
duke
parents:
diff changeset
2038 // builds so the cost of stack banging can be measured.
a61af66fc99e Initial load
duke
parents:
diff changeset
2039 #if (defined(PRODUCT) && defined(SOLARIS))
a61af66fc99e Initial load
duke
parents:
diff changeset
2040 if (!UseBoundThreads && !UseStackBanging) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2041 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2042 "-UseStackBanging conflicts with -UseBoundThreads\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
2043
a61af66fc99e Initial load
duke
parents:
diff changeset
2044 status = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2045 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2046 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
2047
a61af66fc99e Initial load
duke
parents:
diff changeset
2048 if (TLABRefillWasteFraction == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2049 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2050 "TLABRefillWasteFraction should be a denominator, "
a61af66fc99e Initial load
duke
parents:
diff changeset
2051 "not " SIZE_FORMAT "\n",
a61af66fc99e Initial load
duke
parents:
diff changeset
2052 TLABRefillWasteFraction);
a61af66fc99e Initial load
duke
parents:
diff changeset
2053 status = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2054 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2055
10287
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2056 status = status && verify_interval(AdaptiveSizePolicyWeight, 0, 100,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2057 "AdaptiveSizePolicyWeight");
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2058 status = status && verify_percentage(ThresholdTolerance, "ThresholdTolerance");
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2059 status = status && verify_percentage(MinHeapFreeRatio, "MinHeapFreeRatio");
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2060 status = status && verify_percentage(MaxHeapFreeRatio, "MaxHeapFreeRatio");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2061
6982
e4f764ddb06a 7122219: Passed StringTableSize value not verified
hseigel
parents: 6928
diff changeset
2062 // Divide by bucket size to prevent a large size from causing rollover when
e4f764ddb06a 7122219: Passed StringTableSize value not verified
hseigel
parents: 6928
diff changeset
2063 // calculating amount of memory needed to be allocated for the String table.
10126
63e31ce40bdb 8009928: PSR:PERF Increase default string table size
hseigel
parents: 9077
diff changeset
2064 status = status && verify_interval(StringTableSize, minimumStringTableSize,
6982
e4f764ddb06a 7122219: Passed StringTableSize value not verified
hseigel
parents: 6928
diff changeset
2065 (max_uintx / StringTable::bucket_size()), "StringTable size");
e4f764ddb06a 7122219: Passed StringTableSize value not verified
hseigel
parents: 6928
diff changeset
2066
12825
c90e76575b03 8019375: Internal symbol table size should be tunable.
kevinw
parents: 12326
diff changeset
2067 status = status && verify_interval(SymbolTableSize, minimumSymbolTableSize,
c90e76575b03 8019375: Internal symbol table size should be tunable.
kevinw
parents: 12326
diff changeset
2068 (max_uintx / SymbolTable::bucket_size()), "SymbolTable size");
c90e76575b03 8019375: Internal symbol table size should be tunable.
kevinw
parents: 12326
diff changeset
2069
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2070 if (MinHeapFreeRatio > MaxHeapFreeRatio) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2071 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2072 "MinHeapFreeRatio (" UINTX_FORMAT ") must be less than or "
a61af66fc99e Initial load
duke
parents:
diff changeset
2073 "equal to MaxHeapFreeRatio (" UINTX_FORMAT ")\n",
a61af66fc99e Initial load
duke
parents:
diff changeset
2074 MinHeapFreeRatio, MaxHeapFreeRatio);
a61af66fc99e Initial load
duke
parents:
diff changeset
2075 status = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2076 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2077 // Keeping the heap 100% free is hard ;-) so limit it to 99%.
a61af66fc99e Initial load
duke
parents:
diff changeset
2078 MinHeapFreeRatio = MIN2(MinHeapFreeRatio, (uintx) 99);
a61af66fc99e Initial load
duke
parents:
diff changeset
2079
8040
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2080 // Min/MaxMetaspaceFreeRatio
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2081 status = status && verify_percentage(MinMetaspaceFreeRatio, "MinMetaspaceFreeRatio");
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2082 status = status && verify_percentage(MaxMetaspaceFreeRatio, "MaxMetaspaceFreeRatio");
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2083
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2084 if (MinMetaspaceFreeRatio > MaxMetaspaceFreeRatio) {
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2085 jio_fprintf(defaultStream::error_stream(),
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2086 "MinMetaspaceFreeRatio (%s" UINTX_FORMAT ") must be less than or "
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2087 "equal to MaxMetaspaceFreeRatio (%s" UINTX_FORMAT ")\n",
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2088 FLAG_IS_DEFAULT(MinMetaspaceFreeRatio) ? "Default: " : "",
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2089 MinMetaspaceFreeRatio,
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2090 FLAG_IS_DEFAULT(MaxMetaspaceFreeRatio) ? "Default: " : "",
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2091 MaxMetaspaceFreeRatio);
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2092 status = false;
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2093 }
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2094
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2095 // Trying to keep 100% free is not practical
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2096 MinMetaspaceFreeRatio = MIN2(MinMetaspaceFreeRatio, (uintx) 99);
a83cd101fd62 8005452: NPG: Create new flags for Metaspace resizing policy
jmasa
parents: 8037
diff changeset
2097
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2098 if (FullGCALot && FLAG_IS_DEFAULT(MarkSweepAlwaysCompactCount)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2099 MarkSweepAlwaysCompactCount = 1; // Move objects every gc.
a61af66fc99e Initial load
duke
parents:
diff changeset
2100 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2101
483
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2102 if (UseParallelOldGC && ParallelOldGCSplitALot) {
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2103 // Settings to encourage splitting.
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2104 if (!FLAG_IS_CMDLINE(NewRatio)) {
8035
f64ffbf81af5 8006432: Ratio flags should be unsigned
jwilhelm
parents: 7627
diff changeset
2105 FLAG_SET_CMDLINE(uintx, NewRatio, 2);
483
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2106 }
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2107 if (!FLAG_IS_CMDLINE(ScavengeBeforeFullGC)) {
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2108 FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2109 }
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2110 }
0f773163217d 6765954: par compact - stress mode for splitting young gen spaces
jcoomes
parents: 449
diff changeset
2111
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2112 status = status && verify_percentage(GCHeapFreeLimit, "GCHeapFreeLimit");
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2113 status = status && verify_percentage(GCTimeLimit, "GCTimeLimit");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2114 if (GCTimeLimit == 100) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2115 // Turn off gc-overhead-limit-exceeded checks
a61af66fc99e Initial load
duke
parents:
diff changeset
2116 FLAG_SET_DEFAULT(UseGCOverheadLimit, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2117 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2118
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2119 status = status && check_gc_consistency();
1744
f8c5d1bdaad4 6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents: 1681
diff changeset
2120 status = status && check_stack_pages();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2121
a61af66fc99e Initial load
duke
parents:
diff changeset
2122 if (CMSIncrementalMode) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2123 if (!UseConcMarkSweepGC) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2124 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2125 "error: invalid argument combination.\n"
a61af66fc99e Initial load
duke
parents:
diff changeset
2126 "The CMS collector (-XX:+UseConcMarkSweepGC) must be "
a61af66fc99e Initial load
duke
parents:
diff changeset
2127 "selected in order\nto use CMSIncrementalMode.\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
2128 status = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2129 } else {
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2130 status = status && verify_percentage(CMSIncrementalDutyCycle,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2131 "CMSIncrementalDutyCycle");
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2132 status = status && verify_percentage(CMSIncrementalDutyCycleMin,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2133 "CMSIncrementalDutyCycleMin");
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2134 status = status && verify_percentage(CMSIncrementalSafetyFactor,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2135 "CMSIncrementalSafetyFactor");
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2136 status = status && verify_percentage(CMSIncrementalOffset,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2137 "CMSIncrementalOffset");
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
2138 status = status && verify_percentage(CMSExpAvgFactor,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2139 "CMSExpAvgFactor");
a61af66fc99e Initial load
duke
parents:
diff changeset
2140 // If it was not set on the command line, set
a61af66fc99e Initial load
duke
parents:
diff changeset
2141 // CMSInitiatingOccupancyFraction to 1 so icms can initiate cycles early.
a61af66fc99e Initial load
duke
parents:
diff changeset
2142 if (CMSInitiatingOccupancyFraction < 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2143 FLAG_SET_DEFAULT(CMSInitiatingOccupancyFraction, 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
2144 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2145 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2146 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2147
a61af66fc99e Initial load
duke
parents:
diff changeset
2148 // CMS space iteration, which FLSVerifyAllHeapreferences entails,
a61af66fc99e Initial load
duke
parents:
diff changeset
2149 // insists that we hold the requisite locks so that the iteration is
a61af66fc99e Initial load
duke
parents:
diff changeset
2150 // MT-safe. For the verification at start-up and shut-down, we don't
a61af66fc99e Initial load
duke
parents:
diff changeset
2151 // yet have a good way of acquiring and releasing these locks,
a61af66fc99e Initial load
duke
parents:
diff changeset
2152 // which are not visible at the CollectedHeap level. We want to
a61af66fc99e Initial load
duke
parents:
diff changeset
2153 // be able to acquire these locks and then do the iteration rather
a61af66fc99e Initial load
duke
parents:
diff changeset
2154 // than just disable the lock verification. This will be fixed under
a61af66fc99e Initial load
duke
parents:
diff changeset
2155 // bug 4788986.
a61af66fc99e Initial load
duke
parents:
diff changeset
2156 if (UseConcMarkSweepGC && FLSVerifyAllHeapReferences) {
9071
68fe50d4f1d5 8011343: Add new flag for verifying the heap during startup
johnc
parents: 8859
diff changeset
2157 if (VerifyDuringStartup) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2158 warning("Heap verification at start-up disabled "
a61af66fc99e Initial load
duke
parents:
diff changeset
2159 "(due to current incompatibility with FLSVerifyAllHeapReferences)");
9071
68fe50d4f1d5 8011343: Add new flag for verifying the heap during startup
johnc
parents: 8859
diff changeset
2160 VerifyDuringStartup = false; // Disable verification at start-up
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2161 }
9071
68fe50d4f1d5 8011343: Add new flag for verifying the heap during startup
johnc
parents: 8859
diff changeset
2162
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2163 if (VerifyBeforeExit) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2164 warning("Heap verification at shutdown disabled "
a61af66fc99e Initial load
duke
parents:
diff changeset
2165 "(due to current incompatibility with FLSVerifyAllHeapReferences)");
a61af66fc99e Initial load
duke
parents:
diff changeset
2166 VerifyBeforeExit = false; // Disable verification at shutdown
a61af66fc99e Initial load
duke
parents:
diff changeset
2167 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2168 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2169
a61af66fc99e Initial load
duke
parents:
diff changeset
2170 // Note: only executed in non-PRODUCT mode
a61af66fc99e Initial load
duke
parents:
diff changeset
2171 if (!UseAsyncConcMarkSweepGC &&
a61af66fc99e Initial load
duke
parents:
diff changeset
2172 (ExplicitGCInvokesConcurrent ||
a61af66fc99e Initial load
duke
parents:
diff changeset
2173 ExplicitGCInvokesConcurrentAndUnloadsClasses)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2174 jio_fprintf(defaultStream::error_stream(),
6628
bb3f6194fedb 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 6266
diff changeset
2175 "error: +ExplicitGCInvokesConcurrent[AndUnloadsClasses] conflicts"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2176 " with -UseAsyncConcMarkSweepGC");
a61af66fc99e Initial load
duke
parents:
diff changeset
2177 status = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2178 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2179
2366
1fb790245268 6820066: Check that -XX:ParGCArrayScanChunk has a value larger than zero.
jwilhelm
parents: 2362
diff changeset
2180 status = status && verify_min_value(ParGCArrayScanChunk, 1, "ParGCArrayScanChunk");
1fb790245268 6820066: Check that -XX:ParGCArrayScanChunk has a value larger than zero.
jwilhelm
parents: 2362
diff changeset
2181
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
2182 #if INCLUDE_ALL_GCS
1283
1c72304f1885 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 1257
diff changeset
2183 if (UseG1GC) {
13060
8f07aa079343 8016309: assert(eden_size > 0 && survivor_size > 0) failed: just checking
jwilhelm
parents: 13059
diff changeset
2184 status = status && verify_percentage(G1NewSizePercent, "G1NewSizePercent");
8f07aa079343 8016309: assert(eden_size > 0 && survivor_size > 0) failed: just checking
jwilhelm
parents: 13059
diff changeset
2185 status = status && verify_percentage(G1MaxNewSizePercent, "G1MaxNewSizePercent");
8f07aa079343 8016309: assert(eden_size > 0 && survivor_size > 0) failed: just checking
jwilhelm
parents: 13059
diff changeset
2186 status = status && verify_interval(G1NewSizePercent, 0, G1MaxNewSizePercent, "G1NewSizePercent");
8f07aa079343 8016309: assert(eden_size > 0 && survivor_size > 0) failed: just checking
jwilhelm
parents: 13059
diff changeset
2187
1283
1c72304f1885 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 1257
diff changeset
2188 status = status && verify_percentage(InitiatingHeapOccupancyPercent,
1c72304f1885 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 1257
diff changeset
2189 "InitiatingHeapOccupancyPercent");
2174
234761c55641 6608385: G1: need to support parallel reference processing
johnc
parents: 2129
diff changeset
2190 status = status && verify_min_value(G1RefProcDrainInterval, 1,
234761c55641 6608385: G1: need to support parallel reference processing
johnc
parents: 2129
diff changeset
2191 "G1RefProcDrainInterval");
234761c55641 6608385: G1: need to support parallel reference processing
johnc
parents: 2129
diff changeset
2192 status = status && verify_min_value((intx)G1ConcMarkStepDurationMillis, 1,
234761c55641 6608385: G1: need to support parallel reference processing
johnc
parents: 2129
diff changeset
2193 "G1ConcMarkStepDurationMillis");
10246
194f52aa2f23 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 10241
diff changeset
2194 status = status && verify_interval(G1ConcRSHotCardLimit, 0, max_jubyte,
194f52aa2f23 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 10241
diff changeset
2195 "G1ConcRSHotCardLimit");
194f52aa2f23 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 10241
diff changeset
2196 status = status && verify_interval(G1ConcRSLogCacheSize, 0, 31,
194f52aa2f23 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 10241
diff changeset
2197 "G1ConcRSLogCacheSize");
1283
1c72304f1885 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 1257
diff changeset
2198 }
10287
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2199 if (UseConcMarkSweepGC) {
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2200 status = status && verify_min_value(CMSOldPLABNumRefills, 1, "CMSOldPLABNumRefills");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2201 status = status && verify_min_value(CMSOldPLABToleranceFactor, 1, "CMSOldPLABToleranceFactor");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2202 status = status && verify_min_value(CMSOldPLABMax, 1, "CMSOldPLABMax");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2203 status = status && verify_interval(CMSOldPLABMin, 1, CMSOldPLABMax, "CMSOldPLABMin");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2204
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2205 status = status && verify_min_value(CMSYoungGenPerWorker, 1, "CMSYoungGenPerWorker");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2206
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2207 status = status && verify_min_value(CMSSamplingGrain, 1, "CMSSamplingGrain");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2208 status = status && verify_interval(CMS_SweepWeight, 0, 100, "CMS_SweepWeight");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2209 status = status && verify_interval(CMS_FLSWeight, 0, 100, "CMS_FLSWeight");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2210
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2211 status = status && verify_interval(FLSCoalescePolicy, 0, 4, "FLSCoalescePolicy");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2212
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2213 status = status && verify_min_value(CMSRescanMultiple, 1, "CMSRescanMultiple");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2214 status = status && verify_min_value(CMSConcMarkMultiple, 1, "CMSConcMarkMultiple");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2215
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2216 status = status && verify_interval(CMSPrecleanIter, 0, 9, "CMSPrecleanIter");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2217 status = status && verify_min_value(CMSPrecleanDenominator, 1, "CMSPrecleanDenominator");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2218 status = status && verify_interval(CMSPrecleanNumerator, 0, CMSPrecleanDenominator - 1, "CMSPrecleanNumerator");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2219
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2220 status = status && verify_percentage(CMSBootstrapOccupancy, "CMSBootstrapOccupancy");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2221
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2222 status = status && verify_min_value(CMSPrecleanThreshold, 100, "CMSPrecleanThreshold");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2223
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2224 status = status && verify_percentage(CMSScheduleRemarkEdenPenetration, "CMSScheduleRemarkEdenPenetration");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2225 status = status && verify_min_value(CMSScheduleRemarkSamplingRatio, 1, "CMSScheduleRemarkSamplingRatio");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2226 status = status && verify_min_value(CMSBitMapYieldQuantum, 1, "CMSBitMapYieldQuantum");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2227 status = status && verify_percentage(CMSTriggerRatio, "CMSTriggerRatio");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2228 status = status && verify_percentage(CMSIsTooFullPercentage, "CMSIsTooFullPercentage");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2229 }
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2230
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2231 if (UseParallelGC || UseParallelOldGC) {
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2232 status = status && verify_interval(ParallelOldDeadWoodLimiterMean, 0, 100, "ParallelOldDeadWoodLimiterMean");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2233 status = status && verify_interval(ParallelOldDeadWoodLimiterStdDev, 0, 100, "ParallelOldDeadWoodLimiterStdDev");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2234
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2235 status = status && verify_percentage(YoungGenerationSizeIncrement, "YoungGenerationSizeIncrement");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2236 status = status && verify_percentage(TenuredGenerationSizeIncrement, "TenuredGenerationSizeIncrement");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2237
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2238 status = status && verify_min_value(YoungGenerationSizeSupplementDecay, 1, "YoungGenerationSizeSupplementDecay");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2239 status = status && verify_min_value(TenuredGenerationSizeSupplementDecay, 1, "TenuredGenerationSizeSupplementDecay");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2240
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2241 status = status && verify_min_value(ParGCCardsPerStrideChunk, 1, "ParGCCardsPerStrideChunk");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2242
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2243 status = status && verify_min_value(ParallelOldGCSplitInterval, 0, "ParallelOldGCSplitInterval");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2244 }
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
2245 #endif // INCLUDE_ALL_GCS
1283
1c72304f1885 6928073: G1: use existing command line parameters for marking cycle initiation
tonyp
parents: 1257
diff changeset
2246
1244
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2247 status = status && verify_interval(RefDiscoveryPolicy,
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2248 ReferenceProcessor::DiscoveryPolicyMin,
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2249 ReferenceProcessor::DiscoveryPolicyMax,
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2250 "RefDiscoveryPolicy");
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2251
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2252 // Limit the lower bound of this flag to 1 as it is used in a division
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2253 // expression.
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2254 status = status && verify_interval(TLABWasteTargetPercent,
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2255 1, 100, "TLABWasteTargetPercent");
745c853ee57f 6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents: 1188
diff changeset
2256
1571
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
2257 status = status && verify_object_alignment();
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
2258
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
2259 status = status && verify_interval(CompressedClassSpaceSize, 1*M, 3*G,
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
2260 "CompressedClassSpaceSize");
6736
11fb740ce98f 7196103: NPG: Unable to allocate bit map for parallel garbage collection for the requested heap size
coleenp
parents: 6725
diff changeset
2261
7397
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
2262 status = status && verify_interval(MarkStackSizeMax,
442f942757c0 8000244: G1: Ergonomically set MarkStackSize and use virtual space for global marking stack
johnc
parents: 7177
diff changeset
2263 1, (max_jint - 1), "MarkStackSizeMax");
10287
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2264 status = status && verify_interval(NUMAChunkResizeWeight, 0, 100, "NUMAChunkResizeWeight");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2265
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2266 status = status && verify_min_value(LogEventsBufferEntries, 1, "LogEventsBufferEntries");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2267
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2268 status = status && verify_min_value(HeapSizePerGCThread, (uintx) os::vm_page_size(), "HeapSizePerGCThread");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2269
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2270 status = status && verify_min_value(GCTaskTimeStampEntries, 1, "GCTaskTimeStampEntries");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2271
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2272 status = status && verify_percentage(ParallelGCBufferWastePct, "ParallelGCBufferWastePct");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2273 status = status && verify_interval(TargetPLABWastePct, 1, 100, "TargetPLABWastePct");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2274
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2275 status = status && verify_min_value(ParGCStridesPerThread, 1, "ParGCStridesPerThread");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2276
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2277 status = status && verify_min_value(MinRAMFraction, 1, "MinRAMFraction");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2278 status = status && verify_min_value(InitialRAMFraction, 1, "InitialRAMFraction");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2279 status = status && verify_min_value(MaxRAMFraction, 1, "MaxRAMFraction");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2280 status = status && verify_min_value(DefaultMaxRAMFraction, 1, "DefaultMaxRAMFraction");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2281
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2282 status = status && verify_interval(AdaptiveTimeWeight, 0, 100, "AdaptiveTimeWeight");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2283 status = status && verify_min_value(AdaptiveSizeDecrementScaleFactor, 1, "AdaptiveSizeDecrementScaleFactor");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2284
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2285 status = status && verify_interval(TLABAllocationWeight, 0, 100, "TLABAllocationWeight");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2286 status = status && verify_min_value(MinTLABSize, 1, "MinTLABSize");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2287 status = status && verify_min_value(TLABRefillWasteFraction, 1, "TLABRefillWasteFraction");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2288
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2289 status = status && verify_percentage(YoungGenerationSizeSupplement, "YoungGenerationSizeSupplement");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2290 status = status && verify_percentage(TenuredGenerationSizeSupplement, "TenuredGenerationSizeSupplement");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2291
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2292 // the "age" field in the oop header is 4 bits; do not want to pull in markOop.hpp
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2293 // just for that, so hardcode here.
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2294 status = status && verify_interval(MaxTenuringThreshold, 0, 15, "MaxTenuringThreshold");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2295 status = status && verify_interval(InitialTenuringThreshold, 0, MaxTenuringThreshold, "MaxTenuringThreshold");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2296 status = status && verify_percentage(TargetSurvivorRatio, "TargetSurvivorRatio");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2297 status = status && verify_percentage(MarkSweepDeadRatio, "MarkSweepDeadRatio");
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2298
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 10246
diff changeset
2299 status = status && verify_min_value(MarkSweepAlwaysCompactCount, 1, "MarkSweepAlwaysCompactCount");
6755
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2300 #ifdef SPARC
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2301 if (UseConcMarkSweepGC || UseG1GC) {
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2302 // Issue a stern warning if the user has explicitly set
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2303 // UseMemSetInBOT (it is known to cause issues), but allow
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2304 // use for experimentation and debugging.
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2305 if (VM_Version::is_sun4v() && UseMemSetInBOT) {
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2306 assert(!FLAG_IS_DEFAULT(UseMemSetInBOT), "Error");
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2307 warning("Experimental flag -XX:+UseMemSetInBOT is known to cause instability"
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2308 " on sun4v; please understand that you are using at your own risk!");
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2309 }
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2310 }
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2311 #endif // SPARC
bc675e55b48c 7193946: Move warnings associated with UseMemSetInBOT flag
johnc
parents: 6736
diff changeset
2312
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2313 if (PrintNMTStatistics) {
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2314 #if INCLUDE_NMT
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2315 if (MemTracker::tracking_level() == MemTracker::NMT_off) {
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2316 #endif // INCLUDE_NMT
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2317 warning("PrintNMTStatistics is disabled, because native memory tracking is not enabled");
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2318 PrintNMTStatistics = false;
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2319 #if INCLUDE_NMT
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2320 }
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2321 #endif
6770
9a86ddfc6c8f 7188594: Print statistic collected by NMT with VM flag
zgu
parents: 6736
diff changeset
2322 }
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
2323 #ifdef GRAAL
10409
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2324 if (UseG1GC) {
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2325 if (IgnoreUnrecognizedVMOptions) {
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2326 FLAG_SET_CMDLINE(bool, UseG1GC, true);
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2327 } else {
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2328 status = true;
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2329 }
10864
6457dc4227e3 Add compressed klass pointers in gate
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10739
diff changeset
2330 } else {
10409
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2331 // This prevents the flag being set to true by set_ergonomics_flags()
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2332 FLAG_SET_CMDLINE(bool, UseG1GC, false);
10864
6457dc4227e3 Add compressed klass pointers in gate
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10739
diff changeset
2333 }
10409
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2334
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2335 if (!ScavengeRootsInCode) {
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2336 warning("forcing ScavengeRootsInCode non-zero because Graal is enabled");
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2337 ScavengeRootsInCode = 1;
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2338 }
13280
fbcdae53b17e force TypeProfileLevel to 0 in GRAAL until HotSpotMethodData is updated to be aware of the new profiling tags
Doug Simon <doug.simon@oracle.com>
parents: 13086
diff changeset
2339 if (TypeProfileLevel != 0) {
fbcdae53b17e force TypeProfileLevel to 0 in GRAAL until HotSpotMethodData is updated to be aware of the new profiling tags
Doug Simon <doug.simon@oracle.com>
parents: 13086
diff changeset
2340 warning("forcing TypeProfileLevel to 0 as HotSpotMethodData can not yet handle the new type profile info");
fbcdae53b17e force TypeProfileLevel to 0 in GRAAL until HotSpotMethodData is updated to be aware of the new profiling tags
Doug Simon <doug.simon@oracle.com>
parents: 13086
diff changeset
2341 TypeProfileLevel = 0;
fbcdae53b17e force TypeProfileLevel to 0 in GRAAL until HotSpotMethodData is updated to be aware of the new profiling tags
Doug Simon <doug.simon@oracle.com>
parents: 13086
diff changeset
2342 }
10409
36bcc10e01c0 merge fixes
Doug Simon <doug.simon@oracle.com>
parents: 10408
diff changeset
2343 #endif
6770
9a86ddfc6c8f 7188594: Print statistic collected by NMT with VM flag
zgu
parents: 6736
diff changeset
2344
10260
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2345 // Need to limit the extent of the padding to reasonable size.
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2346 // 8K is well beyond the reasonable HW cache line size, even with the
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2347 // aggressive prefetching, while still leaving the room for segregating
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2348 // among the distinct pages.
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2349 if (ContendedPaddingWidth < 0 || ContendedPaddingWidth > 8192) {
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2350 jio_fprintf(defaultStream::error_stream(),
12129
4a1efab850f4 8023638: Add the regression test for 8006997
shade
parents: 12056
diff changeset
2351 "ContendedPaddingWidth=" INTX_FORMAT " must be in between %d and %d\n",
10260
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2352 ContendedPaddingWidth, 0, 8192);
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2353 status = false;
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2354 }
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2355
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2356 // Need to enforce the padding not to break the existing field alignments.
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2357 // It is sufficient to check against the largest type size.
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2358 if ((ContendedPaddingWidth % BytesPerLong) != 0) {
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2359 jio_fprintf(defaultStream::error_stream(),
12129
4a1efab850f4 8023638: Add the regression test for 8006997
shade
parents: 12056
diff changeset
2360 "ContendedPaddingWidth=" INTX_FORMAT " must be a multiple of %d\n",
10260
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2361 ContendedPaddingWidth, BytesPerLong);
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2362 status = false;
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2363 }
711016f146fd 8006997: ContendedPaddingWidth should be range-checked
dholmes
parents: 10172
diff changeset
2364
11079
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2365 // Check lower bounds of the code cache
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2366 // Template Interpreter code is approximately 3X larger in debug builds.
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2367 uint min_code_cache_size = (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3)) + CodeCacheMinimumFreeSpace;
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2368 if (InitialCodeCacheSize < (uintx)os::vm_page_size()) {
10392
c07dd9be16e8 8013496: Code cache management command line options work only in special order. Another order of arguments does not deliver the second parameter to the jvm.
anoll
parents: 10319
diff changeset
2369 jio_fprintf(defaultStream::error_stream(),
11079
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2370 "Invalid InitialCodeCacheSize=%dK. Must be at least %dK.\n", InitialCodeCacheSize/K,
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2371 os::vm_page_size()/K);
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2372 status = false;
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2373 } else if (ReservedCodeCacheSize < InitialCodeCacheSize) {
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2374 jio_fprintf(defaultStream::error_stream(),
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2375 "Invalid ReservedCodeCacheSize: %dK. Must be at least InitialCodeCacheSize=%dK.\n",
10392
c07dd9be16e8 8013496: Code cache management command line options work only in special order. Another order of arguments does not deliver the second parameter to the jvm.
anoll
parents: 10319
diff changeset
2376 ReservedCodeCacheSize/K, InitialCodeCacheSize/K);
c07dd9be16e8 8013496: Code cache management command line options work only in special order. Another order of arguments does not deliver the second parameter to the jvm.
anoll
parents: 10319
diff changeset
2377 status = false;
11079
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2378 } else if (ReservedCodeCacheSize < min_code_cache_size) {
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2379 jio_fprintf(defaultStream::error_stream(),
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2380 "Invalid ReservedCodeCacheSize=%dK. Must be at least %uK.\n", ReservedCodeCacheSize/K,
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2381 min_code_cache_size/K);
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2382 status = false;
11109
7ac80525ece9 8015635: Crash when specifying very large code cache size
anoll
parents: 11083
diff changeset
2383 } else if (ReservedCodeCacheSize > 2*G) {
7ac80525ece9 8015635: Crash when specifying very large code cache size
anoll
parents: 11083
diff changeset
2384 // Code cache size larger than MAXINT is not supported.
7ac80525ece9 8015635: Crash when specifying very large code cache size
anoll
parents: 11083
diff changeset
2385 jio_fprintf(defaultStream::error_stream(),
7ac80525ece9 8015635: Crash when specifying very large code cache size
anoll
parents: 11083
diff changeset
2386 "Invalid ReservedCodeCacheSize=%dM. Must be at most %uM.\n", ReservedCodeCacheSize/M,
7ac80525ece9 8015635: Crash when specifying very large code cache size
anoll
parents: 11083
diff changeset
2387 (2*G)/M);
7ac80525ece9 8015635: Crash when specifying very large code cache size
anoll
parents: 11083
diff changeset
2388 status = false;
10392
c07dd9be16e8 8013496: Code cache management command line options work only in special order. Another order of arguments does not deliver the second parameter to the jvm.
anoll
parents: 10319
diff changeset
2389 }
12324
510fbd28919c 8020151: PSR:PERF Large performance regressions when code cache is filled
anoll
parents: 12322
diff changeset
2390
510fbd28919c 8020151: PSR:PERF Large performance regressions when code cache is filled
anoll
parents: 12322
diff changeset
2391 status &= verify_interval(NmethodSweepFraction, 1, ReservedCodeCacheSize/K, "NmethodSweepFraction");
510fbd28919c 8020151: PSR:PERF Large performance regressions when code cache is filled
anoll
parents: 12322
diff changeset
2392 status &= verify_interval(NmethodSweepActivity, 0, 2000, "NmethodSweepActivity");
510fbd28919c 8020151: PSR:PERF Large performance regressions when code cache is filled
anoll
parents: 12322
diff changeset
2393
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2394 return status;
a61af66fc99e Initial load
duke
parents:
diff changeset
2395 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2396
a61af66fc99e Initial load
duke
parents:
diff changeset
2397 bool Arguments::is_bad_option(const JavaVMOption* option, jboolean ignore,
a61af66fc99e Initial load
duke
parents:
diff changeset
2398 const char* option_type) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2399 if (ignore) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2400
a61af66fc99e Initial load
duke
parents:
diff changeset
2401 const char* spacer = " ";
a61af66fc99e Initial load
duke
parents:
diff changeset
2402 if (option_type == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2403 option_type = ++spacer; // Set both to the empty string.
a61af66fc99e Initial load
duke
parents:
diff changeset
2404 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2405
a61af66fc99e Initial load
duke
parents:
diff changeset
2406 if (os::obsolete_option(option)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2407 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2408 "Obsolete %s%soption: %s\n", option_type, spacer,
a61af66fc99e Initial load
duke
parents:
diff changeset
2409 option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2410 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2411 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
2412 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2413 "Unrecognized %s%soption: %s\n", option_type, spacer,
a61af66fc99e Initial load
duke
parents:
diff changeset
2414 option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2415 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
2416 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2417 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2418
a61af66fc99e Initial load
duke
parents:
diff changeset
2419 static const char* user_assertion_options[] = {
a61af66fc99e Initial load
duke
parents:
diff changeset
2420 "-da", "-ea", "-disableassertions", "-enableassertions", 0
a61af66fc99e Initial load
duke
parents:
diff changeset
2421 };
a61af66fc99e Initial load
duke
parents:
diff changeset
2422
a61af66fc99e Initial load
duke
parents:
diff changeset
2423 static const char* system_assertion_options[] = {
a61af66fc99e Initial load
duke
parents:
diff changeset
2424 "-dsa", "-esa", "-disablesystemassertions", "-enablesystemassertions", 0
a61af66fc99e Initial load
duke
parents:
diff changeset
2425 };
a61af66fc99e Initial load
duke
parents:
diff changeset
2426
a61af66fc99e Initial load
duke
parents:
diff changeset
2427 // Return true if any of the strings in null-terminated array 'names' matches.
a61af66fc99e Initial load
duke
parents:
diff changeset
2428 // If tail_allowed is true, then the tail must begin with a colon; otherwise,
a61af66fc99e Initial load
duke
parents:
diff changeset
2429 // the option must match exactly.
a61af66fc99e Initial load
duke
parents:
diff changeset
2430 static bool match_option(const JavaVMOption* option, const char** names, const char** tail,
a61af66fc99e Initial load
duke
parents:
diff changeset
2431 bool tail_allowed) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2432 for (/* empty */; *names != NULL; ++names) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2433 if (match_option(option, *names, tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2434 if (**tail == '\0' || tail_allowed && **tail == ':') {
a61af66fc99e Initial load
duke
parents:
diff changeset
2435 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
2436 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2437 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2438 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2439 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2440 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2441
1284
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2442 bool Arguments::parse_uintx(const char* value,
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2443 uintx* uintx_arg,
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2444 uintx min_size) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2445
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2446 // Check the sign first since atomull() parses only unsigned values.
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2447 bool value_is_positive = !(*value == '-');
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2448
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2449 if (value_is_positive) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2450 julong n;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2451 bool good_return = atomull(value, &n);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2452 if (good_return) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2453 bool above_minimum = n >= min_size;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2454 bool value_is_too_large = n > max_uintx;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2455
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2456 if (above_minimum && !value_is_too_large) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2457 *uintx_arg = n;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2458 return true;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2459 }
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2460 }
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2461 }
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2462 return false;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2463 }
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
2464
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2465 Arguments::ArgsRange Arguments::parse_memory_size(const char* s,
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
2466 julong* long_arg,
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
2467 julong min_size) {
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
2468 if (!atomull(s, long_arg)) return arg_unreadable;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2469 return check_memory_size(*long_arg, min_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
2470 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2471
a61af66fc99e Initial load
duke
parents:
diff changeset
2472 // Parse JavaVMInitArgs structure
a61af66fc99e Initial load
duke
parents:
diff changeset
2473
a61af66fc99e Initial load
duke
parents:
diff changeset
2474 jint Arguments::parse_vm_init_args(const JavaVMInitArgs* args) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2475 // For components of the system classpath.
a61af66fc99e Initial load
duke
parents:
diff changeset
2476 SysClassPath scp(Arguments::get_sysclasspath());
a61af66fc99e Initial load
duke
parents:
diff changeset
2477 bool scp_assembly_required = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
2478
a61af66fc99e Initial load
duke
parents:
diff changeset
2479 // Save default settings for some mode flags
a61af66fc99e Initial load
duke
parents:
diff changeset
2480 Arguments::_AlwaysCompileLoopMethods = AlwaysCompileLoopMethods;
a61af66fc99e Initial load
duke
parents:
diff changeset
2481 Arguments::_UseOnStackReplacement = UseOnStackReplacement;
a61af66fc99e Initial load
duke
parents:
diff changeset
2482 Arguments::_ClipInlining = ClipInlining;
a61af66fc99e Initial load
duke
parents:
diff changeset
2483 Arguments::_BackgroundCompilation = BackgroundCompilation;
a61af66fc99e Initial load
duke
parents:
diff changeset
2484
3341
e9b8ef09622a 7041582: set_mode_flags isn't called without -Xmixed specified
never
parents: 3261
diff changeset
2485 // Setup flags for mixed which is the default
e9b8ef09622a 7041582: set_mode_flags isn't called without -Xmixed specified
never
parents: 3261
diff changeset
2486 set_mode_flags(_mixed);
e9b8ef09622a 7041582: set_mode_flags isn't called without -Xmixed specified
never
parents: 3261
diff changeset
2487
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2488 // Parse JAVA_TOOL_OPTIONS environment variable (if present)
a61af66fc99e Initial load
duke
parents:
diff changeset
2489 jint result = parse_java_tool_options_environment_variable(&scp, &scp_assembly_required);
a61af66fc99e Initial load
duke
parents:
diff changeset
2490 if (result != JNI_OK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2491 return result;
a61af66fc99e Initial load
duke
parents:
diff changeset
2492 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2493
a61af66fc99e Initial load
duke
parents:
diff changeset
2494 // Parse JavaVMInitArgs structure passed in
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
2495 result = parse_each_vm_init_arg(args, &scp, &scp_assembly_required, Flag::COMMAND_LINE);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2496 if (result != JNI_OK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2497 return result;
a61af66fc99e Initial load
duke
parents:
diff changeset
2498 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2499
a61af66fc99e Initial load
duke
parents:
diff changeset
2500 // Parse _JAVA_OPTIONS environment variable (if present) (mimics classic VM)
a61af66fc99e Initial load
duke
parents:
diff changeset
2501 result = parse_java_options_environment_variable(&scp, &scp_assembly_required);
a61af66fc99e Initial load
duke
parents:
diff changeset
2502 if (result != JNI_OK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2503 return result;
a61af66fc99e Initial load
duke
parents:
diff changeset
2504 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2505
a61af66fc99e Initial load
duke
parents:
diff changeset
2506 // Do final processing now that all arguments have been parsed
a61af66fc99e Initial load
duke
parents:
diff changeset
2507 result = finalize_vm_init_args(&scp, scp_assembly_required);
a61af66fc99e Initial load
duke
parents:
diff changeset
2508 if (result != JNI_OK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2509 return result;
a61af66fc99e Initial load
duke
parents:
diff changeset
2510 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2511
a61af66fc99e Initial load
duke
parents:
diff changeset
2512 return JNI_OK;
a61af66fc99e Initial load
duke
parents:
diff changeset
2513 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2514
10170
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2515 // Checks if name in command-line argument -agent{lib,path}:name[=options]
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2516 // represents a valid HPROF of JDWP agent. is_path==true denotes that we
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2517 // are dealing with -agentpath (case where name is a path), otherwise with
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2518 // -agentlib
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2519 bool valid_hprof_or_jdwp_agent(char *name, bool is_path) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2520 char *_name;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2521 const char *_hprof = "hprof", *_jdwp = "jdwp";
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2522 size_t _len_hprof, _len_jdwp, _len_prefix;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2523
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2524 if (is_path) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2525 if ((_name = strrchr(name, (int) *os::file_separator())) == NULL) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2526 return false;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2527 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2528
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2529 _name++; // skip past last path separator
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2530 _len_prefix = strlen(JNI_LIB_PREFIX);
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2531
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2532 if (strncmp(_name, JNI_LIB_PREFIX, _len_prefix) != 0) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2533 return false;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2534 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2535
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2536 _name += _len_prefix;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2537 _len_hprof = strlen(_hprof);
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2538 _len_jdwp = strlen(_jdwp);
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2539
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2540 if (strncmp(_name, _hprof, _len_hprof) == 0) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2541 _name += _len_hprof;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2542 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2543 else if (strncmp(_name, _jdwp, _len_jdwp) == 0) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2544 _name += _len_jdwp;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2545 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2546 else {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2547 return false;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2548 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2549
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2550 if (strcmp(_name, JNI_LIB_SUFFIX) != 0) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2551 return false;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2552 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2553
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2554 return true;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2555 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2556
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2557 if (strcmp(name, _hprof) == 0 || strcmp(name, _jdwp) == 0) {
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2558 return true;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2559 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2560
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2561 return false;
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2562 }
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2563
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2564 jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args,
a61af66fc99e Initial load
duke
parents:
diff changeset
2565 SysClassPath* scp_p,
a61af66fc99e Initial load
duke
parents:
diff changeset
2566 bool* scp_assembly_required_p,
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
2567 Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2568 // Remaining part of option string
a61af66fc99e Initial load
duke
parents:
diff changeset
2569 const char* tail;
a61af66fc99e Initial load
duke
parents:
diff changeset
2570
a61af66fc99e Initial load
duke
parents:
diff changeset
2571 // iterate over arguments
a61af66fc99e Initial load
duke
parents:
diff changeset
2572 for (int index = 0; index < args->nOptions; index++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2573 bool is_absolute_path = false; // for -agentpath vs -agentlib
a61af66fc99e Initial load
duke
parents:
diff changeset
2574
a61af66fc99e Initial load
duke
parents:
diff changeset
2575 const JavaVMOption* option = args->options + index;
a61af66fc99e Initial load
duke
parents:
diff changeset
2576
a61af66fc99e Initial load
duke
parents:
diff changeset
2577 if (!match_option(option, "-Djava.class.path", &tail) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
2578 !match_option(option, "-Dsun.java.command", &tail) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
2579 !match_option(option, "-Dsun.java.launcher", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2580
a61af66fc99e Initial load
duke
parents:
diff changeset
2581 // add all jvm options to the jvm_args string. This string
a61af66fc99e Initial load
duke
parents:
diff changeset
2582 // is used later to set the java.vm.args PerfData string constant.
a61af66fc99e Initial load
duke
parents:
diff changeset
2583 // the -Djava.class.path and the -Dsun.java.command options are
a61af66fc99e Initial load
duke
parents:
diff changeset
2584 // omitted from jvm_args string as each have their own PerfData
a61af66fc99e Initial load
duke
parents:
diff changeset
2585 // string constant object.
a61af66fc99e Initial load
duke
parents:
diff changeset
2586 build_jvm_args(option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2587 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2588
a61af66fc99e Initial load
duke
parents:
diff changeset
2589 // -verbose:[class/gc/jni]
a61af66fc99e Initial load
duke
parents:
diff changeset
2590 if (match_option(option, "-verbose", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2591 if (!strcmp(tail, ":class") || !strcmp(tail, "")) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2592 FLAG_SET_CMDLINE(bool, TraceClassLoading, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2593 FLAG_SET_CMDLINE(bool, TraceClassUnloading, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2594 } else if (!strcmp(tail, ":gc")) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2595 FLAG_SET_CMDLINE(bool, PrintGC, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2596 } else if (!strcmp(tail, ":jni")) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2597 FLAG_SET_CMDLINE(bool, PrintJNIResolving, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2598 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2599 // -da / -ea / -disableassertions / -enableassertions
a61af66fc99e Initial load
duke
parents:
diff changeset
2600 // These accept an optional class/package name separated by a colon, e.g.,
a61af66fc99e Initial load
duke
parents:
diff changeset
2601 // -da:java.lang.Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2602 } else if (match_option(option, user_assertion_options, &tail, true)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2603 bool enable = option->optionString[1] == 'e'; // char after '-' is 'e'
a61af66fc99e Initial load
duke
parents:
diff changeset
2604 if (*tail == '\0') {
a61af66fc99e Initial load
duke
parents:
diff changeset
2605 JavaAssertions::setUserClassDefault(enable);
a61af66fc99e Initial load
duke
parents:
diff changeset
2606 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
2607 assert(*tail == ':', "bogus match by match_option()");
a61af66fc99e Initial load
duke
parents:
diff changeset
2608 JavaAssertions::addOption(tail + 1, enable);
a61af66fc99e Initial load
duke
parents:
diff changeset
2609 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2610 // -dsa / -esa / -disablesystemassertions / -enablesystemassertions
a61af66fc99e Initial load
duke
parents:
diff changeset
2611 } else if (match_option(option, system_assertion_options, &tail, false)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2612 bool enable = option->optionString[1] == 'e'; // char after '-' is 'e'
a61af66fc99e Initial load
duke
parents:
diff changeset
2613 JavaAssertions::setSystemClassDefault(enable);
a61af66fc99e Initial load
duke
parents:
diff changeset
2614 // -bootclasspath:
a61af66fc99e Initial load
duke
parents:
diff changeset
2615 } else if (match_option(option, "-Xbootclasspath:", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2616 scp_p->reset_path(tail);
a61af66fc99e Initial load
duke
parents:
diff changeset
2617 *scp_assembly_required_p = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
2618 // -bootclasspath/a:
a61af66fc99e Initial load
duke
parents:
diff changeset
2619 } else if (match_option(option, "-Xbootclasspath/a:", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2620 scp_p->add_suffix(tail);
a61af66fc99e Initial load
duke
parents:
diff changeset
2621 *scp_assembly_required_p = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
2622 // -bootclasspath/p:
a61af66fc99e Initial load
duke
parents:
diff changeset
2623 } else if (match_option(option, "-Xbootclasspath/p:", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2624 scp_p->add_prefix(tail);
a61af66fc99e Initial load
duke
parents:
diff changeset
2625 *scp_assembly_required_p = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
2626 // -Xrun
a61af66fc99e Initial load
duke
parents:
diff changeset
2627 } else if (match_option(option, "-Xrun", &tail)) {
531
40ee984935b9 6792705: Add JAR file to bootclasspath when using AggressiveOpts
phh
parents: 513
diff changeset
2628 if (tail != NULL) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2629 const char* pos = strchr(tail, ':');
a61af66fc99e Initial load
duke
parents:
diff changeset
2630 size_t len = (pos == NULL) ? strlen(tail) : pos - tail;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
2631 char* name = (char*)memcpy(NEW_C_HEAP_ARRAY(char, len + 1, mtInternal), tail, len);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2632 name[len] = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
2633
a61af66fc99e Initial load
duke
parents:
diff changeset
2634 char *options = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2635 if(pos != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2636 size_t len2 = strlen(pos+1) + 1; // options start after ':'. Final zero must be copied.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
2637 options = (char*)memcpy(NEW_C_HEAP_ARRAY(char, len2, mtInternal), pos+1, len2);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2638 }
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2639 #if !INCLUDE_JVMTI
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2640 if ((strcmp(name, "hprof") == 0) || (strcmp(name, "jdwp") == 0)) {
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2641 jio_fprintf(defaultStream::error_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2642 "Profiling and debugging agents are not supported in this VM\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2643 return JNI_ERR;
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2644 }
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2645 #endif // !INCLUDE_JVMTI
12739
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2646 #if defined(GRAAL)
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2647 if (strcmp(name, "hprof") == 0) {
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2648 FLAG_SET_CMDLINE(bool, GraalHProfEnabled, true);
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2649 }
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2650 #endif
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2651 add_init_library(name, options);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2652 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2653 // -agentlib and -agentpath
a61af66fc99e Initial load
duke
parents:
diff changeset
2654 } else if (match_option(option, "-agentlib:", &tail) ||
a61af66fc99e Initial load
duke
parents:
diff changeset
2655 (is_absolute_path = match_option(option, "-agentpath:", &tail))) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2656 if(tail != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2657 const char* pos = strchr(tail, '=');
a61af66fc99e Initial load
duke
parents:
diff changeset
2658 size_t len = (pos == NULL) ? strlen(tail) : pos - tail;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
2659 char* name = strncpy(NEW_C_HEAP_ARRAY(char, len + 1, mtInternal), tail, len);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2660 name[len] = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
2661
a61af66fc99e Initial load
duke
parents:
diff changeset
2662 char *options = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2663 if(pos != NULL) {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
2664 options = strcpy(NEW_C_HEAP_ARRAY(char, strlen(pos + 1) + 1, mtInternal), pos + 1);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2665 }
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2666 #if !INCLUDE_JVMTI
10170
3c0584fec1e6 8010428: Special -agentpath checks needed with minimal VM to produce proper error message
dholmes
parents: 9077
diff changeset
2667 if (valid_hprof_or_jdwp_agent(name, is_absolute_path)) {
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2668 jio_fprintf(defaultStream::error_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2669 "Profiling and debugging agents are not supported in this VM\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2670 return JNI_ERR;
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2671 }
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2672 #endif // !INCLUDE_JVMTI
12739
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2673 #if defined(GRAAL)
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2674 if (valid_hprof_or_jdwp_agent(name, is_absolute_path)) {
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2675 FLAG_SET_CMDLINE(bool, GraalHProfEnabled, true);
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2676 }
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2677 #endif
b699233403ad Delegate hprof enabled information from hotspot to graal
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 12490
diff changeset
2678
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2679 add_init_agent(name, options, is_absolute_path);
a61af66fc99e Initial load
duke
parents:
diff changeset
2680 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2681 // -javaagent
a61af66fc99e Initial load
duke
parents:
diff changeset
2682 } else if (match_option(option, "-javaagent:", &tail)) {
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2683 #if !INCLUDE_JVMTI
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2684 jio_fprintf(defaultStream::error_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2685 "Instrumentation agents are not supported in this VM\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2686 return JNI_ERR;
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2687 #else
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2688 if(tail != NULL) {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
2689 char *options = strcpy(NEW_C_HEAP_ARRAY(char, strlen(tail) + 1, mtInternal), tail);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2690 add_init_agent("instrument", options, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2691 }
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2692 #endif // !INCLUDE_JVMTI
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2693 // -Xnoclassgc
a61af66fc99e Initial load
duke
parents:
diff changeset
2694 } else if (match_option(option, "-Xnoclassgc", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2695 FLAG_SET_CMDLINE(bool, ClassUnloading, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2696 // -Xincgc: i-CMS
a61af66fc99e Initial load
duke
parents:
diff changeset
2697 } else if (match_option(option, "-Xincgc", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2698 FLAG_SET_CMDLINE(bool, UseConcMarkSweepGC, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2699 FLAG_SET_CMDLINE(bool, CMSIncrementalMode, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2700 // -Xnoincgc: no i-CMS
a61af66fc99e Initial load
duke
parents:
diff changeset
2701 } else if (match_option(option, "-Xnoincgc", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2702 FLAG_SET_CMDLINE(bool, UseConcMarkSweepGC, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2703 FLAG_SET_CMDLINE(bool, CMSIncrementalMode, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2704 // -Xconcgc
a61af66fc99e Initial load
duke
parents:
diff changeset
2705 } else if (match_option(option, "-Xconcgc", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2706 FLAG_SET_CMDLINE(bool, UseConcMarkSweepGC, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2707 // -Xnoconcgc
a61af66fc99e Initial load
duke
parents:
diff changeset
2708 } else if (match_option(option, "-Xnoconcgc", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2709 FLAG_SET_CMDLINE(bool, UseConcMarkSweepGC, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2710 // -Xbatch
a61af66fc99e Initial load
duke
parents:
diff changeset
2711 } else if (match_option(option, "-Xbatch", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2712 FLAG_SET_CMDLINE(bool, BackgroundCompilation, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2713 // -Xmn for compatibility with other JVM vendors
a61af66fc99e Initial load
duke
parents:
diff changeset
2714 } else if (match_option(option, "-Xmn", &tail)) {
12831
087f02e22fc2 8025854: Use "young gen" instead of "eden"
jwilhelm
parents: 12287
diff changeset
2715 julong long_initial_young_size = 0;
087f02e22fc2 8025854: Use "young gen" instead of "eden"
jwilhelm
parents: 12287
diff changeset
2716 ArgsRange errcode = parse_memory_size(tail, &long_initial_young_size, 1);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2717 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2718 jio_fprintf(defaultStream::error_stream(),
12831
087f02e22fc2 8025854: Use "young gen" instead of "eden"
jwilhelm
parents: 12287
diff changeset
2719 "Invalid initial young generation size: %s\n", option->optionString);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2720 describe_range_error(errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
2721 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2722 }
12831
087f02e22fc2 8025854: Use "young gen" instead of "eden"
jwilhelm
parents: 12287
diff changeset
2723 FLAG_SET_CMDLINE(uintx, MaxNewSize, (uintx)long_initial_young_size);
087f02e22fc2 8025854: Use "young gen" instead of "eden"
jwilhelm
parents: 12287
diff changeset
2724 FLAG_SET_CMDLINE(uintx, NewSize, (uintx)long_initial_young_size);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2725 // -Xms
a61af66fc99e Initial load
duke
parents:
diff changeset
2726 } else if (match_option(option, "-Xms", &tail)) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
2727 julong long_initial_heap_size = 0;
10241
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
2728 // an initial heap size of 0 means automatically determine
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
2729 ArgsRange errcode = parse_memory_size(tail, &long_initial_heap_size, 0);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2730 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2731 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2732 "Invalid initial heap size: %s\n", option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2733 describe_range_error(errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
2734 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2735 }
13059
46d7652b223c 8026853: Prepare GC code for collector policy regression fix
jwilhelm
parents: 13008
diff changeset
2736 set_min_heap_size((uintx)long_initial_heap_size);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2737 // Currently the minimum size and the initial heap sizes are the same.
13059
46d7652b223c 8026853: Prepare GC code for collector policy regression fix
jwilhelm
parents: 13008
diff changeset
2738 // Can be overridden with -XX:InitialHeapSize.
46d7652b223c 8026853: Prepare GC code for collector policy regression fix
jwilhelm
parents: 13008
diff changeset
2739 FLAG_SET_CMDLINE(uintx, InitialHeapSize, (uintx)long_initial_heap_size);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2740 // -Xmx
10241
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10240
diff changeset
2741 } else if (match_option(option, "-Xmx", &tail) || match_option(option, "-XX:MaxHeapSize=", &tail)) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
2742 julong long_max_heap_size = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2743 ArgsRange errcode = parse_memory_size(tail, &long_max_heap_size, 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
2744 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2745 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2746 "Invalid maximum heap size: %s\n", option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2747 describe_range_error(errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
2748 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2749 }
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
2750 FLAG_SET_CMDLINE(uintx, MaxHeapSize, (uintx)long_max_heap_size);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2751 // Xmaxf
a61af66fc99e Initial load
duke
parents:
diff changeset
2752 } else if (match_option(option, "-Xmaxf", &tail)) {
12896
027006a47a6d 8025661: Ill-formed -Xminf and -Xmaxf options values interpreted as 0
sjohanss
parents: 12840
diff changeset
2753 char* err;
027006a47a6d 8025661: Ill-formed -Xminf and -Xmaxf options values interpreted as 0
sjohanss
parents: 12840
diff changeset
2754 int maxf = (int)(strtod(tail, &err) * 100);
027006a47a6d 8025661: Ill-formed -Xminf and -Xmaxf options values interpreted as 0
sjohanss
parents: 12840
diff changeset
2755 if (*err != '\0' || maxf < 0 || maxf > 100) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2756 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2757 "Bad max heap free percentage size: %s\n",
a61af66fc99e Initial load
duke
parents:
diff changeset
2758 option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2759 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2760 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
2761 FLAG_SET_CMDLINE(uintx, MaxHeapFreeRatio, maxf);
a61af66fc99e Initial load
duke
parents:
diff changeset
2762 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2763 // Xminf
a61af66fc99e Initial load
duke
parents:
diff changeset
2764 } else if (match_option(option, "-Xminf", &tail)) {
12896
027006a47a6d 8025661: Ill-formed -Xminf and -Xmaxf options values interpreted as 0
sjohanss
parents: 12840
diff changeset
2765 char* err;
027006a47a6d 8025661: Ill-formed -Xminf and -Xmaxf options values interpreted as 0
sjohanss
parents: 12840
diff changeset
2766 int minf = (int)(strtod(tail, &err) * 100);
027006a47a6d 8025661: Ill-formed -Xminf and -Xmaxf options values interpreted as 0
sjohanss
parents: 12840
diff changeset
2767 if (*err != '\0' || minf < 0 || minf > 100) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2768 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2769 "Bad min heap free percentage size: %s\n",
a61af66fc99e Initial load
duke
parents:
diff changeset
2770 option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2771 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2772 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
2773 FLAG_SET_CMDLINE(uintx, MinHeapFreeRatio, minf);
a61af66fc99e Initial load
duke
parents:
diff changeset
2774 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2775 // -Xss
a61af66fc99e Initial load
duke
parents:
diff changeset
2776 } else if (match_option(option, "-Xss", &tail)) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
2777 julong long_ThreadStackSize = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2778 ArgsRange errcode = parse_memory_size(tail, &long_ThreadStackSize, 1000);
a61af66fc99e Initial load
duke
parents:
diff changeset
2779 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2780 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2781 "Invalid thread stack size: %s\n", option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
2782 describe_range_error(errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
2783 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2784 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2785 // Internally track ThreadStackSize in units of 1024 bytes.
a61af66fc99e Initial load
duke
parents:
diff changeset
2786 FLAG_SET_CMDLINE(intx, ThreadStackSize,
a61af66fc99e Initial load
duke
parents:
diff changeset
2787 round_to((int)long_ThreadStackSize, K) / K);
a61af66fc99e Initial load
duke
parents:
diff changeset
2788 // -Xoss
a61af66fc99e Initial load
duke
parents:
diff changeset
2789 } else if (match_option(option, "-Xoss", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2790 // HotSpot does not have separate native and Java stacks, ignore silently for compatibility
11079
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2791 } else if (match_option(option, "-XX:CodeCacheExpansionSize=", &tail)) {
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2792 julong long_CodeCacheExpansionSize = 0;
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2793 ArgsRange errcode = parse_memory_size(tail, &long_CodeCacheExpansionSize, os::vm_page_size());
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2794 if (errcode != arg_in_range) {
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2795 jio_fprintf(defaultStream::error_stream(),
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2796 "Invalid argument: %s. Must be at least %luK.\n", option->optionString,
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2797 os::vm_page_size()/K);
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2798 return JNI_EINVAL;
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2799 }
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2800 FLAG_SET_CMDLINE(uintx, CodeCacheExpansionSize, (uintx)long_CodeCacheExpansionSize);
2095
36c186bcc085 6302804: Hotspot VM dies ungraceful death when C heap is exhausted in various places.
coleenp
parents: 2002
diff changeset
2801 } else if (match_option(option, "-Xmaxjitcodesize", &tail) ||
36c186bcc085 6302804: Hotspot VM dies ungraceful death when C heap is exhausted in various places.
coleenp
parents: 2002
diff changeset
2802 match_option(option, "-XX:ReservedCodeCacheSize=", &tail)) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
2803 julong long_ReservedCodeCacheSize = 0;
11079
738e04fb1232 8014972: Crash with specific values for -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=500k
anoll
parents: 11006
diff changeset
2804
10392
c07dd9be16e8 8013496: Code cache management command line options work only in special order. Another order of arguments does not deliver the second parameter to the jvm.
anoll
parents: 10319
diff changeset
2805 ArgsRange errcode = parse_memory_size(tail, &long_ReservedCodeCacheSize, 1);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2806 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2807 jio_fprintf(defaultStream::error_stream(),
10392
c07dd9be16e8 8013496: Code cache management command line options work only in special order. Another order of arguments does not deliver the second parameter to the jvm.
anoll
parents: 10319
diff changeset
2808 "Invalid maximum code cache size: %s.\n", option->optionString);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2809 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2810 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2811 FLAG_SET_CMDLINE(uintx, ReservedCodeCacheSize, (uintx)long_ReservedCodeCacheSize);
10319
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2812 //-XX:IncreaseFirstTierCompileThresholdAt=
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2813 } else if (match_option(option, "-XX:IncreaseFirstTierCompileThresholdAt=", &tail)) {
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2814 uintx uint_IncreaseFirstTierCompileThresholdAt = 0;
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2815 if (!parse_uintx(tail, &uint_IncreaseFirstTierCompileThresholdAt, 0) || uint_IncreaseFirstTierCompileThresholdAt > 99) {
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2816 jio_fprintf(defaultStream::error_stream(),
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2817 "Invalid value for IncreaseFirstTierCompileThresholdAt: %s. Should be between 0 and 99.\n",
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2818 option->optionString);
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2819 return JNI_EINVAL;
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2820 }
91eba9f82325 8012371: Adjust Tiered compile threshold according to available space in code cache
anoll
parents: 10294
diff changeset
2821 FLAG_SET_CMDLINE(uintx, IncreaseFirstTierCompileThresholdAt, (uintx)uint_IncreaseFirstTierCompileThresholdAt);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2822 // -green
a61af66fc99e Initial load
duke
parents:
diff changeset
2823 } else if (match_option(option, "-green", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2824 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2825 "Green threads support not available\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
2826 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2827 // -native
a61af66fc99e Initial load
duke
parents:
diff changeset
2828 } else if (match_option(option, "-native", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2829 // HotSpot always uses native threads, ignore silently for compatibility
a61af66fc99e Initial load
duke
parents:
diff changeset
2830 // -Xsqnopause
a61af66fc99e Initial load
duke
parents:
diff changeset
2831 } else if (match_option(option, "-Xsqnopause", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2832 // EVM option, ignore silently for compatibility
a61af66fc99e Initial load
duke
parents:
diff changeset
2833 // -Xrs
a61af66fc99e Initial load
duke
parents:
diff changeset
2834 } else if (match_option(option, "-Xrs", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2835 // Classic/EVM option, new functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
2836 FLAG_SET_CMDLINE(bool, ReduceSignalUsage, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2837 } else if (match_option(option, "-Xusealtsigs", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2838 // change default internal VM signals used - lower case for back compat
a61af66fc99e Initial load
duke
parents:
diff changeset
2839 FLAG_SET_CMDLINE(bool, UseAltSigs, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2840 // -Xoptimize
a61af66fc99e Initial load
duke
parents:
diff changeset
2841 } else if (match_option(option, "-Xoptimize", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2842 // EVM option, ignore silently for compatibility
a61af66fc99e Initial load
duke
parents:
diff changeset
2843 // -Xprof
a61af66fc99e Initial load
duke
parents:
diff changeset
2844 } else if (match_option(option, "-Xprof", &tail)) {
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2845 #if INCLUDE_FPROF
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2846 _has_profile = true;
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2847 #else // INCLUDE_FPROF
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2848 jio_fprintf(defaultStream::error_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2849 "Flat profiling is not supported in this VM.\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2850 return JNI_ERR;
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2851 #endif // INCLUDE_FPROF
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2852 // -Xconcurrentio
a61af66fc99e Initial load
duke
parents:
diff changeset
2853 } else if (match_option(option, "-Xconcurrentio", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2854 FLAG_SET_CMDLINE(bool, UseLWPSynchronization, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2855 FLAG_SET_CMDLINE(bool, BackgroundCompilation, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2856 FLAG_SET_CMDLINE(intx, DeferThrSuspendLoopCount, 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
2857 FLAG_SET_CMDLINE(bool, UseTLAB, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2858 FLAG_SET_CMDLINE(uintx, NewSizeThreadIncrease, 16 * K); // 20Kb per thread added to new generation
a61af66fc99e Initial load
duke
parents:
diff changeset
2859
a61af66fc99e Initial load
duke
parents:
diff changeset
2860 // -Xinternalversion
a61af66fc99e Initial load
duke
parents:
diff changeset
2861 } else if (match_option(option, "-Xinternalversion", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2862 jio_fprintf(defaultStream::output_stream(), "%s\n",
a61af66fc99e Initial load
duke
parents:
diff changeset
2863 VM_Version::internal_vm_info_string());
a61af66fc99e Initial load
duke
parents:
diff changeset
2864 vm_exit(0);
a61af66fc99e Initial load
duke
parents:
diff changeset
2865 #ifndef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
2866 // -Xprintflags
a61af66fc99e Initial load
duke
parents:
diff changeset
2867 } else if (match_option(option, "-Xprintflags", &tail)) {
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4111
diff changeset
2868 CommandLineFlags::printFlags(tty, false);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2869 vm_exit(0);
a61af66fc99e Initial load
duke
parents:
diff changeset
2870 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
2871 // -D
a61af66fc99e Initial load
duke
parents:
diff changeset
2872 } else if (match_option(option, "-D", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2873 if (!add_property(tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2874 return JNI_ENOMEM;
a61af66fc99e Initial load
duke
parents:
diff changeset
2875 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2876 // Out of the box management support
a61af66fc99e Initial load
duke
parents:
diff changeset
2877 if (match_option(option, "-Dcom.sun.management", &tail)) {
8081
579f6adb7f51 8003539: Minimal VM don't react to -Dcom.sun.management and -XX:+ManagementServer
jprovino
parents: 8002
diff changeset
2878 #if INCLUDE_MANAGEMENT
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2879 FLAG_SET_CMDLINE(bool, ManagementServer, true);
8081
579f6adb7f51 8003539: Minimal VM don't react to -Dcom.sun.management and -XX:+ManagementServer
jprovino
parents: 8002
diff changeset
2880 #else
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2881 jio_fprintf(defaultStream::output_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2882 "-Dcom.sun.management is not supported in this VM.\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
2883 return JNI_ERR;
8081
579f6adb7f51 8003539: Minimal VM don't react to -Dcom.sun.management and -XX:+ManagementServer
jprovino
parents: 8002
diff changeset
2884 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2885 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2886 // -Xint
a61af66fc99e Initial load
duke
parents:
diff changeset
2887 } else if (match_option(option, "-Xint", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2888 set_mode_flags(_int);
a61af66fc99e Initial load
duke
parents:
diff changeset
2889 // -Xmixed
a61af66fc99e Initial load
duke
parents:
diff changeset
2890 } else if (match_option(option, "-Xmixed", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2891 set_mode_flags(_mixed);
a61af66fc99e Initial load
duke
parents:
diff changeset
2892 // -Xcomp
a61af66fc99e Initial load
duke
parents:
diff changeset
2893 } else if (match_option(option, "-Xcomp", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2894 // for testing the compiler; turn off all flags that inhibit compilation
a61af66fc99e Initial load
duke
parents:
diff changeset
2895 set_mode_flags(_comp);
a61af66fc99e Initial load
duke
parents:
diff changeset
2896 // -Xshare:dump
a61af66fc99e Initial load
duke
parents:
diff changeset
2897 } else if (match_option(option, "-Xshare:dump", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2898 FLAG_SET_CMDLINE(bool, DumpSharedSpaces, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2899 set_mode_flags(_int); // Prevent compilation, which creates objects
a61af66fc99e Initial load
duke
parents:
diff changeset
2900 // -Xshare:on
a61af66fc99e Initial load
duke
parents:
diff changeset
2901 } else if (match_option(option, "-Xshare:on", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2902 FLAG_SET_CMDLINE(bool, UseSharedSpaces, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2903 FLAG_SET_CMDLINE(bool, RequireSharedSpaces, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2904 // -Xshare:auto
a61af66fc99e Initial load
duke
parents:
diff changeset
2905 } else if (match_option(option, "-Xshare:auto", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2906 FLAG_SET_CMDLINE(bool, UseSharedSpaces, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2907 FLAG_SET_CMDLINE(bool, RequireSharedSpaces, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2908 // -Xshare:off
a61af66fc99e Initial load
duke
parents:
diff changeset
2909 } else if (match_option(option, "-Xshare:off", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2910 FLAG_SET_CMDLINE(bool, UseSharedSpaces, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2911 FLAG_SET_CMDLINE(bool, RequireSharedSpaces, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2912 // -Xverify
a61af66fc99e Initial load
duke
parents:
diff changeset
2913 } else if (match_option(option, "-Xverify", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2914 if (strcmp(tail, ":all") == 0 || strcmp(tail, "") == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2915 FLAG_SET_CMDLINE(bool, BytecodeVerificationLocal, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2916 FLAG_SET_CMDLINE(bool, BytecodeVerificationRemote, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2917 } else if (strcmp(tail, ":remote") == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2918 FLAG_SET_CMDLINE(bool, BytecodeVerificationLocal, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2919 FLAG_SET_CMDLINE(bool, BytecodeVerificationRemote, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2920 } else if (strcmp(tail, ":none") == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2921 FLAG_SET_CMDLINE(bool, BytecodeVerificationLocal, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2922 FLAG_SET_CMDLINE(bool, BytecodeVerificationRemote, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
2923 } else if (is_bad_option(option, args->ignoreUnrecognized, "verification")) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2924 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2925 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2926 // -Xdebug
a61af66fc99e Initial load
duke
parents:
diff changeset
2927 } else if (match_option(option, "-Xdebug", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2928 // note this flag has been used, then ignore
a61af66fc99e Initial load
duke
parents:
diff changeset
2929 set_xdebug_mode(true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2930 // -Xnoagent
a61af66fc99e Initial load
duke
parents:
diff changeset
2931 } else if (match_option(option, "-Xnoagent", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2932 // For compatibility with classic. HotSpot refuses to load the old style agent.dll.
a61af66fc99e Initial load
duke
parents:
diff changeset
2933 } else if (match_option(option, "-Xboundthreads", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2934 // Bind user level threads to kernel threads (Solaris only)
a61af66fc99e Initial load
duke
parents:
diff changeset
2935 FLAG_SET_CMDLINE(bool, UseBoundThreads, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2936 } else if (match_option(option, "-Xloggc:", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2937 // Redirect GC output to the file. -Xloggc:<filename>
a61af66fc99e Initial load
duke
parents:
diff changeset
2938 // ostream_init_log(), when called will use this filename
a61af66fc99e Initial load
duke
parents:
diff changeset
2939 // to initialize a fileStream.
a61af66fc99e Initial load
duke
parents:
diff changeset
2940 _gc_log_filename = strdup(tail);
12215
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
2941 if (!is_filename_valid(_gc_log_filename)) {
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
2942 jio_fprintf(defaultStream::output_stream(),
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
2943 "Invalid file name for use with -Xloggc: Filename can only contain the "
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
2944 "characters [A-Z][a-z][0-9]-_.%%[p|t] but it has been %s\n"
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
2945 "Note %%p or %%t can only be used once\n", _gc_log_filename);
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
2946 return JNI_EINVAL;
621eda7235d2 7164841: Improvements to the GC log file rotation
minqi
parents: 12182
diff changeset
2947 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2948 FLAG_SET_CMDLINE(bool, PrintGC, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2949 FLAG_SET_CMDLINE(bool, PrintGCTimeStamps, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
2950
a61af66fc99e Initial load
duke
parents:
diff changeset
2951 // JNI hooks
a61af66fc99e Initial load
duke
parents:
diff changeset
2952 } else if (match_option(option, "-Xcheck", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2953 if (!strcmp(tail, ":jni")) {
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2954 #if !INCLUDE_JNI_CHECK
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2955 warning("JNI CHECKING is not supported in this VM");
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2956 #else
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2957 CheckJNICalls = true;
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
2958 #endif // INCLUDE_JNI_CHECK
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2959 } else if (is_bad_option(option, args->ignoreUnrecognized,
a61af66fc99e Initial load
duke
parents:
diff changeset
2960 "check")) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2961 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
2962 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2963 } else if (match_option(option, "vfprintf", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2964 _vfprintf_hook = CAST_TO_FN_PTR(vfprintf_hook_t, option->extraInfo);
a61af66fc99e Initial load
duke
parents:
diff changeset
2965 } else if (match_option(option, "exit", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2966 _exit_hook = CAST_TO_FN_PTR(exit_hook_t, option->extraInfo);
a61af66fc99e Initial load
duke
parents:
diff changeset
2967 } else if (match_option(option, "abort", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2968 _abort_hook = CAST_TO_FN_PTR(abort_hook_t, option->extraInfo);
a61af66fc99e Initial load
duke
parents:
diff changeset
2969 // -XX:+AggressiveHeap
a61af66fc99e Initial load
duke
parents:
diff changeset
2970 } else if (match_option(option, "-XX:+AggressiveHeap", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2971
a61af66fc99e Initial load
duke
parents:
diff changeset
2972 // This option inspects the machine and attempts to set various
a61af66fc99e Initial load
duke
parents:
diff changeset
2973 // parameters to be optimal for long-running, memory allocation
a61af66fc99e Initial load
duke
parents:
diff changeset
2974 // intensive jobs. It is intended for machines with large
a61af66fc99e Initial load
duke
parents:
diff changeset
2975 // amounts of cpu and memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
2976
a61af66fc99e Initial load
duke
parents:
diff changeset
2977 // initHeapSize is needed since _initial_heap_size is 4 bytes on a 32 bit
a61af66fc99e Initial load
duke
parents:
diff changeset
2978 // VM, but we may not be able to represent the total physical memory
a61af66fc99e Initial load
duke
parents:
diff changeset
2979 // available (like having 8gb of memory on a box but using a 32bit VM).
a61af66fc99e Initial load
duke
parents:
diff changeset
2980 // Thus, we need to make sure we're using a julong for intermediate
a61af66fc99e Initial load
duke
parents:
diff changeset
2981 // calculations.
a61af66fc99e Initial load
duke
parents:
diff changeset
2982 julong initHeapSize;
a61af66fc99e Initial load
duke
parents:
diff changeset
2983 julong total_memory = os::physical_memory();
a61af66fc99e Initial load
duke
parents:
diff changeset
2984
a61af66fc99e Initial load
duke
parents:
diff changeset
2985 if (total_memory < (julong)256*M) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2986 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
2987 "You need at least 256mb of memory to use -XX:+AggressiveHeap\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
2988 vm_exit(1);
a61af66fc99e Initial load
duke
parents:
diff changeset
2989 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2990
a61af66fc99e Initial load
duke
parents:
diff changeset
2991 // The heap size is half of available memory, or (at most)
a61af66fc99e Initial load
duke
parents:
diff changeset
2992 // all of possible memory less 160mb (leaving room for the OS
a61af66fc99e Initial load
duke
parents:
diff changeset
2993 // when using ISM). This is the maximum; because adaptive sizing
a61af66fc99e Initial load
duke
parents:
diff changeset
2994 // is turned on below, the actual space used may be smaller.
a61af66fc99e Initial load
duke
parents:
diff changeset
2995
a61af66fc99e Initial load
duke
parents:
diff changeset
2996 initHeapSize = MIN2(total_memory / (julong)2,
a61af66fc99e Initial load
duke
parents:
diff changeset
2997 total_memory - (julong)160*M);
a61af66fc99e Initial load
duke
parents:
diff changeset
2998
8854
754c24457b20 7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents: 8824
diff changeset
2999 initHeapSize = limit_by_allocatable_memory(initHeapSize);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3000
a61af66fc99e Initial load
duke
parents:
diff changeset
3001 if (FLAG_IS_DEFAULT(MaxHeapSize)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3002 FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
3003 FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3004 // Currently the minimum size and the initial heap sizes are the same.
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
3005 set_min_heap_size(initHeapSize);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3006 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3007 if (FLAG_IS_DEFAULT(NewSize)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3008 // Make the young generation 3/8ths of the total heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
3009 FLAG_SET_CMDLINE(uintx, NewSize,
a61af66fc99e Initial load
duke
parents:
diff changeset
3010 ((julong)MaxHeapSize / (julong)8) * (julong)3);
a61af66fc99e Initial load
duke
parents:
diff changeset
3011 FLAG_SET_CMDLINE(uintx, MaxNewSize, NewSize);
a61af66fc99e Initial load
duke
parents:
diff changeset
3012 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3013
6917
e81fbc04a942 7191817: -XX:+UseSerialGC -XX:+UseLargePages crashes with SIGFPE on MacOS X
coleenp
parents: 6916
diff changeset
3014 #ifndef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3015 FLAG_SET_DEFAULT(UseLargePages, true);
6917
e81fbc04a942 7191817: -XX:+UseSerialGC -XX:+UseLargePages crashes with SIGFPE on MacOS X
coleenp
parents: 6916
diff changeset
3016 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3017
a61af66fc99e Initial load
duke
parents:
diff changeset
3018 // Increase some data structure sizes for efficiency
a61af66fc99e Initial load
duke
parents:
diff changeset
3019 FLAG_SET_CMDLINE(uintx, BaseFootPrintEstimate, MaxHeapSize);
a61af66fc99e Initial load
duke
parents:
diff changeset
3020 FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3021 FLAG_SET_CMDLINE(uintx, TLABSize, 256*K);
a61af66fc99e Initial load
duke
parents:
diff changeset
3022
a61af66fc99e Initial load
duke
parents:
diff changeset
3023 // See the OldPLABSize comment below, but replace 'after promotion'
a61af66fc99e Initial load
duke
parents:
diff changeset
3024 // with 'after copying'. YoungPLABSize is the size of the survivor
a61af66fc99e Initial load
duke
parents:
diff changeset
3025 // space per-gc-thread buffers. The default is 4kw.
a61af66fc99e Initial load
duke
parents:
diff changeset
3026 FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256*K); // Note: this is in words
a61af66fc99e Initial load
duke
parents:
diff changeset
3027
a61af66fc99e Initial load
duke
parents:
diff changeset
3028 // OldPLABSize is the size of the buffers in the old gen that
a61af66fc99e Initial load
duke
parents:
diff changeset
3029 // UseParallelGC uses to promote live data that doesn't fit in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3030 // survivor spaces. At any given time, there's one for each gc thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
3031 // The default size is 1kw. These buffers are rarely used, since the
a61af66fc99e Initial load
duke
parents:
diff changeset
3032 // survivor spaces are usually big enough. For specjbb, however, there
a61af66fc99e Initial load
duke
parents:
diff changeset
3033 // are occasions when there's lots of live data in the young gen
a61af66fc99e Initial load
duke
parents:
diff changeset
3034 // and we end up promoting some of it. We don't have a definite
a61af66fc99e Initial load
duke
parents:
diff changeset
3035 // explanation for why bumping OldPLABSize helps, but the theory
a61af66fc99e Initial load
duke
parents:
diff changeset
3036 // is that a bigger PLAB results in retaining something like the
a61af66fc99e Initial load
duke
parents:
diff changeset
3037 // original allocation order after promotion, which improves mutator
a61af66fc99e Initial load
duke
parents:
diff changeset
3038 // locality. A minor effect may be that larger PLABs reduce the
a61af66fc99e Initial load
duke
parents:
diff changeset
3039 // number of PLAB allocation events during gc. The value of 8kw
a61af66fc99e Initial load
duke
parents:
diff changeset
3040 // was arrived at by experimenting with specjbb.
a61af66fc99e Initial load
duke
parents:
diff changeset
3041 FLAG_SET_CMDLINE(uintx, OldPLABSize, 8*K); // Note: this is in words
a61af66fc99e Initial load
duke
parents:
diff changeset
3042
a61af66fc99e Initial load
duke
parents:
diff changeset
3043 // Enable parallel GC and adaptive generation sizing
a61af66fc99e Initial load
duke
parents:
diff changeset
3044 FLAG_SET_CMDLINE(bool, UseParallelGC, true);
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3045 FLAG_SET_DEFAULT(ParallelGCThreads,
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3046 Abstract_VM_Version::parallel_worker_threads());
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3047
a61af66fc99e Initial load
duke
parents:
diff changeset
3048 // Encourage steady state memory management
a61af66fc99e Initial load
duke
parents:
diff changeset
3049 FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100);
a61af66fc99e Initial load
duke
parents:
diff changeset
3050
a61af66fc99e Initial load
duke
parents:
diff changeset
3051 // This appears to improve mutator locality
a61af66fc99e Initial load
duke
parents:
diff changeset
3052 FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3053
a61af66fc99e Initial load
duke
parents:
diff changeset
3054 // Get around early Solaris scheduling bug
a61af66fc99e Initial load
duke
parents:
diff changeset
3055 // (affinity vs other jobs on system)
a61af66fc99e Initial load
duke
parents:
diff changeset
3056 // but disallow DR and offlining (5008695).
a61af66fc99e Initial load
duke
parents:
diff changeset
3057 FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3058
a61af66fc99e Initial load
duke
parents:
diff changeset
3059 } else if (match_option(option, "-XX:+NeverTenure", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3060 // The last option must always win.
a61af66fc99e Initial load
duke
parents:
diff changeset
3061 FLAG_SET_CMDLINE(bool, AlwaysTenure, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3062 FLAG_SET_CMDLINE(bool, NeverTenure, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3063 } else if (match_option(option, "-XX:+AlwaysTenure", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3064 // The last option must always win.
a61af66fc99e Initial load
duke
parents:
diff changeset
3065 FLAG_SET_CMDLINE(bool, NeverTenure, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3066 FLAG_SET_CMDLINE(bool, AlwaysTenure, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3067 } else if (match_option(option, "-XX:+CMSPermGenSweepingEnabled", &tail) ||
a61af66fc99e Initial load
duke
parents:
diff changeset
3068 match_option(option, "-XX:-CMSPermGenSweepingEnabled", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3069 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3070 "Please use CMSClassUnloadingEnabled in place of "
a61af66fc99e Initial load
duke
parents:
diff changeset
3071 "CMSPermGenSweepingEnabled in the future\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
3072 } else if (match_option(option, "-XX:+UseGCTimeLimit", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3073 FLAG_SET_CMDLINE(bool, UseGCOverheadLimit, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3074 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3075 "Please use -XX:+UseGCOverheadLimit in place of "
a61af66fc99e Initial load
duke
parents:
diff changeset
3076 "-XX:+UseGCTimeLimit in the future\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
3077 } else if (match_option(option, "-XX:-UseGCTimeLimit", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3078 FLAG_SET_CMDLINE(bool, UseGCOverheadLimit, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3079 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3080 "Please use -XX:-UseGCOverheadLimit in place of "
a61af66fc99e Initial load
duke
parents:
diff changeset
3081 "-XX:-UseGCTimeLimit in the future\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
3082 // The TLE options are for compatibility with 1.3 and will be
a61af66fc99e Initial load
duke
parents:
diff changeset
3083 // removed without notice in a future release. These options
a61af66fc99e Initial load
duke
parents:
diff changeset
3084 // are not to be documented.
a61af66fc99e Initial load
duke
parents:
diff changeset
3085 } else if (match_option(option, "-XX:MaxTLERatio=", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3086 // No longer used.
a61af66fc99e Initial load
duke
parents:
diff changeset
3087 } else if (match_option(option, "-XX:+ResizeTLE", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3088 FLAG_SET_CMDLINE(bool, ResizeTLAB, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3089 } else if (match_option(option, "-XX:-ResizeTLE", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3090 FLAG_SET_CMDLINE(bool, ResizeTLAB, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3091 } else if (match_option(option, "-XX:+PrintTLE", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3092 FLAG_SET_CMDLINE(bool, PrintTLAB, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3093 } else if (match_option(option, "-XX:-PrintTLE", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3094 FLAG_SET_CMDLINE(bool, PrintTLAB, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3095 } else if (match_option(option, "-XX:TLEFragmentationRatio=", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3096 // No longer used.
a61af66fc99e Initial load
duke
parents:
diff changeset
3097 } else if (match_option(option, "-XX:TLESize=", &tail)) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
3098 julong long_tlab_size = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3099 ArgsRange errcode = parse_memory_size(tail, &long_tlab_size, 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
3100 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3101 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3102 "Invalid TLAB size: %s\n", option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
3103 describe_range_error(errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
3104 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3105 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3106 FLAG_SET_CMDLINE(uintx, TLABSize, long_tlab_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
3107 } else if (match_option(option, "-XX:TLEThreadRatio=", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3108 // No longer used.
a61af66fc99e Initial load
duke
parents:
diff changeset
3109 } else if (match_option(option, "-XX:+UseTLE", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3110 FLAG_SET_CMDLINE(bool, UseTLAB, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3111 } else if (match_option(option, "-XX:-UseTLE", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3112 FLAG_SET_CMDLINE(bool, UseTLAB, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3113 } else if (match_option(option, "-XX:+DisplayVMOutputToStderr", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3114 FLAG_SET_CMDLINE(bool, DisplayVMOutputToStdout, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3115 FLAG_SET_CMDLINE(bool, DisplayVMOutputToStderr, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3116 } else if (match_option(option, "-XX:+DisplayVMOutputToStdout", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3117 FLAG_SET_CMDLINE(bool, DisplayVMOutputToStderr, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3118 FLAG_SET_CMDLINE(bool, DisplayVMOutputToStdout, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3119 } else if (match_option(option, "-XX:+ExtendedDTraceProbes", &tail)) {
4006
436b4a3231bf 7098194: integrate macosx-port changes
dcubed
parents: 3960
diff changeset
3120 #if defined(DTRACE_ENABLED)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3121 FLAG_SET_CMDLINE(bool, ExtendedDTraceProbes, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3122 FLAG_SET_CMDLINE(bool, DTraceMethodProbes, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3123 FLAG_SET_CMDLINE(bool, DTraceAllocProbes, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3124 FLAG_SET_CMDLINE(bool, DTraceMonitorProbes, true);
4006
436b4a3231bf 7098194: integrate macosx-port changes
dcubed
parents: 3960
diff changeset
3125 #else // defined(DTRACE_ENABLED)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3126 jio_fprintf(defaultStream::error_stream(),
4006
436b4a3231bf 7098194: integrate macosx-port changes
dcubed
parents: 3960
diff changeset
3127 "ExtendedDTraceProbes flag is not applicable for this configuration\n");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3128 return JNI_EINVAL;
4006
436b4a3231bf 7098194: integrate macosx-port changes
dcubed
parents: 3960
diff changeset
3129 #endif // defined(DTRACE_ENABLED)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3130 #ifdef ASSERT
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3131 } else if (match_option(option, "-XX:+FullGCALot", &tail)) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3132 FLAG_SET_CMDLINE(bool, FullGCALot, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3133 // disable scavenge before parallel mark-compact
a61af66fc99e Initial load
duke
parents:
diff changeset
3134 FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3135 #endif
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3136 } else if (match_option(option, "-XX:CMSParPromoteBlocksToClaim=", &tail)) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3137 julong cms_blocks_to_claim = (julong)atol(tail);
a61af66fc99e Initial load
duke
parents:
diff changeset
3138 FLAG_SET_CMDLINE(uintx, CMSParPromoteBlocksToClaim, cms_blocks_to_claim);
a61af66fc99e Initial load
duke
parents:
diff changeset
3139 jio_fprintf(defaultStream::error_stream(),
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3140 "Please use -XX:OldPLABSize in place of "
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3141 "-XX:CMSParPromoteBlocksToClaim in the future\n");
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3142 } else if (match_option(option, "-XX:ParCMSPromoteBlocksToClaim=", &tail)) {
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3143 julong cms_blocks_to_claim = (julong)atol(tail);
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3144 FLAG_SET_CMDLINE(uintx, CMSParPromoteBlocksToClaim, cms_blocks_to_claim);
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3145 jio_fprintf(defaultStream::error_stream(),
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3146 "Please use -XX:OldPLABSize in place of "
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3147 "-XX:ParCMSPromoteBlocksToClaim in the future\n");
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3148 } else if (match_option(option, "-XX:ParallelGCOldGenAllocBufferSize=", &tail)) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
3149 julong old_plab_size = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3150 ArgsRange errcode = parse_memory_size(tail, &old_plab_size, 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
3151 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3152 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3153 "Invalid old PLAB size: %s\n", option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
3154 describe_range_error(errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
3155 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3156 }
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
3157 FLAG_SET_CMDLINE(uintx, OldPLABSize, old_plab_size);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3158 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3159 "Please use -XX:OldPLABSize in place of "
a61af66fc99e Initial load
duke
parents:
diff changeset
3160 "-XX:ParallelGCOldGenAllocBufferSize in the future\n");
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3161 } else if (match_option(option, "-XX:ParallelGCToSpaceAllocBufferSize=", &tail)) {
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
3162 julong young_plab_size = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3163 ArgsRange errcode = parse_memory_size(tail, &young_plab_size, 1);
a61af66fc99e Initial load
duke
parents:
diff changeset
3164 if (errcode != arg_in_range) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3165 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3166 "Invalid young PLAB size: %s\n", option->optionString);
a61af66fc99e Initial load
duke
parents:
diff changeset
3167 describe_range_error(errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
3168 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3169 }
489
2494ab195856 6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents: 483
diff changeset
3170 FLAG_SET_CMDLINE(uintx, YoungPLABSize, young_plab_size);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3171 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3172 "Please use -XX:YoungPLABSize in place of "
a61af66fc99e Initial load
duke
parents:
diff changeset
3173 "-XX:ParallelGCToSpaceAllocBufferSize in the future\n");
1284
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3174 } else if (match_option(option, "-XX:CMSMarkStackSize=", &tail) ||
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3175 match_option(option, "-XX:G1MarkStackSize=", &tail)) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3176 julong stack_size = 0;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3177 ArgsRange errcode = parse_memory_size(tail, &stack_size, 1);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3178 if (errcode != arg_in_range) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3179 jio_fprintf(defaultStream::error_stream(),
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3180 "Invalid mark stack size: %s\n", option->optionString);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3181 describe_range_error(errcode);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3182 return JNI_EINVAL;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3183 }
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3184 FLAG_SET_CMDLINE(uintx, MarkStackSize, stack_size);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3185 } else if (match_option(option, "-XX:CMSMarkStackSizeMax=", &tail)) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3186 julong max_stack_size = 0;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3187 ArgsRange errcode = parse_memory_size(tail, &max_stack_size, 1);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3188 if (errcode != arg_in_range) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3189 jio_fprintf(defaultStream::error_stream(),
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3190 "Invalid maximum mark stack size: %s\n",
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3191 option->optionString);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3192 describe_range_error(errcode);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3193 return JNI_EINVAL;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3194 }
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3195 FLAG_SET_CMDLINE(uintx, MarkStackSizeMax, max_stack_size);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3196 } else if (match_option(option, "-XX:ParallelMarkingThreads=", &tail) ||
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3197 match_option(option, "-XX:ParallelCMSThreads=", &tail)) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3198 uintx conc_threads = 0;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3199 if (!parse_uintx(tail, &conc_threads, 1)) {
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3200 jio_fprintf(defaultStream::error_stream(),
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3201 "Invalid concurrent threads: %s\n", option->optionString);
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3202 return JNI_EINVAL;
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3203 }
5f1f51edaff6 6928081: G1: rename parameters common with CMS
jmasa
parents: 1283
diff changeset
3204 FLAG_SET_CMDLINE(uintx, ConcGCThreads, conc_threads);
6199
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3205 } else if (match_option(option, "-XX:MaxDirectMemorySize=", &tail)) {
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3206 julong max_direct_memory_size = 0;
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3207 ArgsRange errcode = parse_memory_size(tail, &max_direct_memory_size, 0);
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3208 if (errcode != arg_in_range) {
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3209 jio_fprintf(defaultStream::error_stream(),
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3210 "Invalid maximum direct memory size: %s\n",
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3211 option->optionString);
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3212 describe_range_error(errcode);
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3213 return JNI_EINVAL;
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3214 }
3f1ab0c19c30 7179383: MaxDirectMemorySize argument parsing is broken for values >2G
dholmes
parents: 6198
diff changeset
3215 FLAG_SET_CMDLINE(uintx, MaxDirectMemorySize, max_direct_memory_size);
6878
85916677fc22 7188233: UseVMInterruptibleIO flag deprecate for JDK8
coleenp
parents: 6857
diff changeset
3216 } else if (match_option(option, "-XX:+UseVMInterruptibleIO", &tail)) {
85916677fc22 7188233: UseVMInterruptibleIO flag deprecate for JDK8
coleenp
parents: 6857
diff changeset
3217 // NOTE! In JDK 9, the UseVMInterruptibleIO flag will completely go
85916677fc22 7188233: UseVMInterruptibleIO flag deprecate for JDK8
coleenp
parents: 6857
diff changeset
3218 // away and will cause VM initialization failures!
85916677fc22 7188233: UseVMInterruptibleIO flag deprecate for JDK8
coleenp
parents: 6857
diff changeset
3219 warning("-XX:+UseVMInterruptibleIO is obsolete and will be removed in a future release.");
85916677fc22 7188233: UseVMInterruptibleIO flag deprecate for JDK8
coleenp
parents: 6857
diff changeset
3220 FLAG_SET_CMDLINE(bool, UseVMInterruptibleIO, true);
8081
579f6adb7f51 8003539: Minimal VM don't react to -Dcom.sun.management and -XX:+ManagementServer
jprovino
parents: 8002
diff changeset
3221 #if !INCLUDE_MANAGEMENT
579f6adb7f51 8003539: Minimal VM don't react to -Dcom.sun.management and -XX:+ManagementServer
jprovino
parents: 8002
diff changeset
3222 } else if (match_option(option, "-XX:+ManagementServer", &tail)) {
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3223 jio_fprintf(defaultStream::error_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3224 "ManagementServer is not supported in this VM.\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3225 return JNI_ERR;
8081
579f6adb7f51 8003539: Minimal VM don't react to -Dcom.sun.management and -XX:+ManagementServer
jprovino
parents: 8002
diff changeset
3226 #endif // INCLUDE_MANAGEMENT
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 1074
diff changeset
3227 } else if (match_option(option, "-XX:", &tail)) { // -XX:xxxx
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3228 // Skip -XX:Flags= since that case has already been handled
a61af66fc99e Initial load
duke
parents:
diff changeset
3229 if (strncmp(tail, "Flags=", strlen("Flags=")) != 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3230 if (!process_argument(tail, args->ignoreUnrecognized, origin)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3231 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3232 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3233 }
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
3234 }
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
3235 #ifdef GRAAL
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
3236 else if (match_option(option, "-G:", &tail)) { // -G:XXX
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 7066
diff changeset
3237 // Option for the Graal compiler.
1437
9e5e83ca2259 Enabled -C1X:OPTIONS when running HotSpot/C1X. Enabled checkstyle for the HotSpotVM Java project.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents: 1356
diff changeset
3238 if (PrintVMOptions) {
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 7066
diff changeset
3239 tty->print_cr("Graal option %s", tail);
1437
9e5e83ca2259 Enabled -C1X:OPTIONS when running HotSpot/C1X. Enabled checkstyle for the HotSpotVM Java project.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents: 1356
diff changeset
3240 }
2891
75a99b4f1c98 Rebranded C++ part from C1X to Graal.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents: 2873
diff changeset
3241 Arguments::add_graal_arg(tail);
1437
9e5e83ca2259 Enabled -C1X:OPTIONS when running HotSpot/C1X. Enabled checkstyle for the HotSpotVM Java project.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents: 1356
diff changeset
3242
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3243 // Unknown option
4559
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
3244 }
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
3245 #endif
723df37192d6 Make it possible again to build a real client libjvm, drop the UseGraal flag.
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 4350
diff changeset
3246 else if (is_bad_option(option, args->ignoreUnrecognized)) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3247 return JNI_ERR;
a61af66fc99e Initial load
duke
parents:
diff changeset
3248 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3249 }
3767
2a241e764894 6941923: RFE: Handling large log files produced by long running Java Applications
minqi
parents: 3349
diff changeset
3250
449
171e581e8161 6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents: 420
diff changeset
3251 // Change the default value for flags which have different default values
171e581e8161 6554406: Change switch UseVMInterruptibleIO default to false (sol)
xlu
parents: 420
diff changeset
3252 // when working with older JDKs.
1679
3d90023429ec 6888526: Linux getCurrentThreadCpuTime is drastically slower than Windows
aph
parents: 1628
diff changeset
3253 #ifdef LINUX
3d90023429ec 6888526: Linux getCurrentThreadCpuTime is drastically slower than Windows
aph
parents: 1628
diff changeset
3254 if (JDK_Version::current().compare_major(6) <= 0 &&
3d90023429ec 6888526: Linux getCurrentThreadCpuTime is drastically slower than Windows
aph
parents: 1628
diff changeset
3255 FLAG_IS_DEFAULT(UseLinuxPosixThreadCPUClocks)) {
3d90023429ec 6888526: Linux getCurrentThreadCpuTime is drastically slower than Windows
aph
parents: 1628
diff changeset
3256 FLAG_SET_DEFAULT(UseLinuxPosixThreadCPUClocks, false);
3d90023429ec 6888526: Linux getCurrentThreadCpuTime is drastically slower than Windows
aph
parents: 1628
diff changeset
3257 }
3d90023429ec 6888526: Linux getCurrentThreadCpuTime is drastically slower than Windows
aph
parents: 1628
diff changeset
3258 #endif // LINUX
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3259 return JNI_OK;
a61af66fc99e Initial load
duke
parents:
diff changeset
3260 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3261
a61af66fc99e Initial load
duke
parents:
diff changeset
3262 jint Arguments::finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_required) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3263 // This must be done after all -D arguments have been processed.
a61af66fc99e Initial load
duke
parents:
diff changeset
3264 scp_p->expand_endorsed();
a61af66fc99e Initial load
duke
parents:
diff changeset
3265
a61af66fc99e Initial load
duke
parents:
diff changeset
3266 if (scp_assembly_required || scp_p->get_endorsed() != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3267 // Assemble the bootclasspath elements into the final path.
a61af66fc99e Initial load
duke
parents:
diff changeset
3268 Arguments::set_sysclasspath(scp_p->combined_path());
a61af66fc99e Initial load
duke
parents:
diff changeset
3269 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3270
a61af66fc99e Initial load
duke
parents:
diff changeset
3271 // This must be done after all arguments have been processed.
a61af66fc99e Initial load
duke
parents:
diff changeset
3272 // java_compiler() true means set to "NONE" or empty.
a61af66fc99e Initial load
duke
parents:
diff changeset
3273 if (java_compiler() && !xdebug_mode()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3274 // For backwards compatibility, we switch to interpreted mode if
a61af66fc99e Initial load
duke
parents:
diff changeset
3275 // -Djava.compiler="NONE" or "" is specified AND "-Xdebug" was
a61af66fc99e Initial load
duke
parents:
diff changeset
3276 // not specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
3277 set_mode_flags(_int);
a61af66fc99e Initial load
duke
parents:
diff changeset
3278 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3279 if (CompileThreshold == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3280 set_mode_flags(_int);
a61af66fc99e Initial load
duke
parents:
diff changeset
3281 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3282
10292
acac2b03a07f 8014765: VM exits if MaxTenuringThreshold is set below the default InitialTenuringThreshold, and InitialTenuringThreshold is not set
tschatzl
parents: 10287
diff changeset
3283 // eventually fix up InitialTenuringThreshold if only MaxTenuringThreshold is set
acac2b03a07f 8014765: VM exits if MaxTenuringThreshold is set below the default InitialTenuringThreshold, and InitialTenuringThreshold is not set
tschatzl
parents: 10287
diff changeset
3284 if (FLAG_IS_DEFAULT(InitialTenuringThreshold) && (InitialTenuringThreshold > MaxTenuringThreshold)) {
acac2b03a07f 8014765: VM exits if MaxTenuringThreshold is set below the default InitialTenuringThreshold, and InitialTenuringThreshold is not set
tschatzl
parents: 10287
diff changeset
3285 FLAG_SET_ERGO(uintx, InitialTenuringThreshold, MaxTenuringThreshold);
acac2b03a07f 8014765: VM exits if MaxTenuringThreshold is set below the default InitialTenuringThreshold, and InitialTenuringThreshold is not set
tschatzl
parents: 10287
diff changeset
3286 }
acac2b03a07f 8014765: VM exits if MaxTenuringThreshold is set below the default InitialTenuringThreshold, and InitialTenuringThreshold is not set
tschatzl
parents: 10287
diff changeset
3287
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3288 #ifndef COMPILER2
a61af66fc99e Initial load
duke
parents:
diff changeset
3289 // Don't degrade server performance for footprint
a61af66fc99e Initial load
duke
parents:
diff changeset
3290 if (FLAG_IS_DEFAULT(UseLargePages) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
3291 MaxHeapSize < LargePageHeapSizeThreshold) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3292 // No need for large granularity pages w/small heaps.
a61af66fc99e Initial load
duke
parents:
diff changeset
3293 // Note that large pages are enabled/disabled for both the
a61af66fc99e Initial load
duke
parents:
diff changeset
3294 // Java heap and the code cache.
a61af66fc99e Initial load
duke
parents:
diff changeset
3295 FLAG_SET_DEFAULT(UseLargePages, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
3296 }
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
3297
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3298 #else
a61af66fc99e Initial load
duke
parents:
diff changeset
3299 if (!FLAG_IS_DEFAULT(OptoLoopAlignment) && FLAG_IS_DEFAULT(MaxLoopPad)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3300 FLAG_SET_DEFAULT(MaxLoopPad, OptoLoopAlignment-1);
a61af66fc99e Initial load
duke
parents:
diff changeset
3301 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3302 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
3303
11999
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
3304 #ifndef TIERED
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
3305 // Tiered compilation is undefined.
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
3306 UNSUPPORTED_OPTION(TieredCompilation, "TieredCompilation");
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
3307 #endif
79a5283f4595 8021120: TieredCompilation can be enabled even if TIERED is undefined
iignatyev
parents: 11154
diff changeset
3308
1681
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3309 // If we are running in a headless jre, force java.awt.headless property
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3310 // to be true unless the property has already been set.
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3311 // Also allow the OS environment variable JAVA_AWT_HEADLESS to set headless state.
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3312 if (os::is_headless_jre()) {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3313 const char* headless = Arguments::get_property("java.awt.headless");
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3314 if (headless == NULL) {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3315 char envbuffer[128];
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3316 if (!os::getenv("JAVA_AWT_HEADLESS", envbuffer, sizeof(envbuffer))) {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3317 if (!add_property("java.awt.headless=true")) {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3318 return JNI_ENOMEM;
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3319 }
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3320 } else {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3321 char buffer[256];
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3322 strcpy(buffer, "java.awt.headless=");
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3323 strcat(buffer, envbuffer);
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3324 if (!add_property(buffer)) {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3325 return JNI_ENOMEM;
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3326 }
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3327 }
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3328 }
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3329 }
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3330
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3331 if (!check_vm_args_consistency()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3332 return JNI_ERR;
a61af66fc99e Initial load
duke
parents:
diff changeset
3333 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3334
a61af66fc99e Initial load
duke
parents:
diff changeset
3335 return JNI_OK;
a61af66fc99e Initial load
duke
parents:
diff changeset
3336 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3337
a61af66fc99e Initial load
duke
parents:
diff changeset
3338 jint Arguments::parse_java_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3339 return parse_options_environment_variable("_JAVA_OPTIONS", scp_p,
a61af66fc99e Initial load
duke
parents:
diff changeset
3340 scp_assembly_required_p);
a61af66fc99e Initial load
duke
parents:
diff changeset
3341 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3342
a61af66fc99e Initial load
duke
parents:
diff changeset
3343 jint Arguments::parse_java_tool_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3344 return parse_options_environment_variable("JAVA_TOOL_OPTIONS", scp_p,
a61af66fc99e Initial load
duke
parents:
diff changeset
3345 scp_assembly_required_p);
a61af66fc99e Initial load
duke
parents:
diff changeset
3346 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3347
a61af66fc99e Initial load
duke
parents:
diff changeset
3348 jint Arguments::parse_options_environment_variable(const char* name, SysClassPath* scp_p, bool* scp_assembly_required_p) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3349 const int N_MAX_OPTIONS = 64;
a61af66fc99e Initial load
duke
parents:
diff changeset
3350 const int OPTION_BUFFER_SIZE = 1024;
a61af66fc99e Initial load
duke
parents:
diff changeset
3351 char buffer[OPTION_BUFFER_SIZE];
a61af66fc99e Initial load
duke
parents:
diff changeset
3352
a61af66fc99e Initial load
duke
parents:
diff changeset
3353 // The variable will be ignored if it exceeds the length of the buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
3354 // Don't check this variable if user has special privileges
a61af66fc99e Initial load
duke
parents:
diff changeset
3355 // (e.g. unix su command).
a61af66fc99e Initial load
duke
parents:
diff changeset
3356 if (os::getenv(name, buffer, sizeof(buffer)) &&
a61af66fc99e Initial load
duke
parents:
diff changeset
3357 !os::have_special_privileges()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3358 JavaVMOption options[N_MAX_OPTIONS]; // Construct option array
a61af66fc99e Initial load
duke
parents:
diff changeset
3359 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3360 "Picked up %s: %s\n", name, buffer);
a61af66fc99e Initial load
duke
parents:
diff changeset
3361 char* rd = buffer; // pointer to the input string (rd)
a61af66fc99e Initial load
duke
parents:
diff changeset
3362 int i;
a61af66fc99e Initial load
duke
parents:
diff changeset
3363 for (i = 0; i < N_MAX_OPTIONS;) { // repeat for all options in the input string
a61af66fc99e Initial load
duke
parents:
diff changeset
3364 while (isspace(*rd)) rd++; // skip whitespace
a61af66fc99e Initial load
duke
parents:
diff changeset
3365 if (*rd == 0) break; // we re done when the input string is read completely
a61af66fc99e Initial load
duke
parents:
diff changeset
3366
a61af66fc99e Initial load
duke
parents:
diff changeset
3367 // The output, option string, overwrites the input string.
a61af66fc99e Initial load
duke
parents:
diff changeset
3368 // Because of quoting, the pointer to the option string (wrt) may lag the pointer to
a61af66fc99e Initial load
duke
parents:
diff changeset
3369 // input string (rd).
a61af66fc99e Initial load
duke
parents:
diff changeset
3370 char* wrt = rd;
a61af66fc99e Initial load
duke
parents:
diff changeset
3371
a61af66fc99e Initial load
duke
parents:
diff changeset
3372 options[i++].optionString = wrt; // Fill in option
a61af66fc99e Initial load
duke
parents:
diff changeset
3373 while (*rd != 0 && !isspace(*rd)) { // unquoted strings terminate with a space or NULL
a61af66fc99e Initial load
duke
parents:
diff changeset
3374 if (*rd == '\'' || *rd == '"') { // handle a quoted string
a61af66fc99e Initial load
duke
parents:
diff changeset
3375 int quote = *rd; // matching quote to look for
a61af66fc99e Initial load
duke
parents:
diff changeset
3376 rd++; // don't copy open quote
a61af66fc99e Initial load
duke
parents:
diff changeset
3377 while (*rd != quote) { // include everything (even spaces) up until quote
a61af66fc99e Initial load
duke
parents:
diff changeset
3378 if (*rd == 0) { // string termination means unmatched string
a61af66fc99e Initial load
duke
parents:
diff changeset
3379 jio_fprintf(defaultStream::error_stream(),
a61af66fc99e Initial load
duke
parents:
diff changeset
3380 "Unmatched quote in %s\n", name);
a61af66fc99e Initial load
duke
parents:
diff changeset
3381 return JNI_ERR;
a61af66fc99e Initial load
duke
parents:
diff changeset
3382 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3383 *wrt++ = *rd++; // copy to option string
a61af66fc99e Initial load
duke
parents:
diff changeset
3384 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3385 rd++; // don't copy close quote
a61af66fc99e Initial load
duke
parents:
diff changeset
3386 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
3387 *wrt++ = *rd++; // copy to option string
a61af66fc99e Initial load
duke
parents:
diff changeset
3388 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3389 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3390 // Need to check if we're done before writing a NULL,
a61af66fc99e Initial load
duke
parents:
diff changeset
3391 // because the write could be to the byte that rd is pointing to.
a61af66fc99e Initial load
duke
parents:
diff changeset
3392 if (*rd++ == 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3393 *wrt = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
3394 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
3395 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3396 *wrt = 0; // Zero terminate option
a61af66fc99e Initial load
duke
parents:
diff changeset
3397 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3398 // Construct JavaVMInitArgs structure and parse as if it was part of the command line
a61af66fc99e Initial load
duke
parents:
diff changeset
3399 JavaVMInitArgs vm_args;
a61af66fc99e Initial load
duke
parents:
diff changeset
3400 vm_args.version = JNI_VERSION_1_2;
a61af66fc99e Initial load
duke
parents:
diff changeset
3401 vm_args.options = options;
a61af66fc99e Initial load
duke
parents:
diff changeset
3402 vm_args.nOptions = i;
564
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3403 vm_args.ignoreUnrecognized = IgnoreUnrecognizedVMOptions;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3404
a61af66fc99e Initial load
duke
parents:
diff changeset
3405 if (PrintVMOptions) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3406 const char* tail;
a61af66fc99e Initial load
duke
parents:
diff changeset
3407 for (int i = 0; i < vm_args.nOptions; i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3408 const JavaVMOption *option = vm_args.options + i;
a61af66fc99e Initial load
duke
parents:
diff changeset
3409 if (match_option(option, "-XX:", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3410 logOption(tail);
a61af66fc99e Initial load
duke
parents:
diff changeset
3411 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3412 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3413 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3414
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12269
diff changeset
3415 return(parse_each_vm_init_arg(&vm_args, scp_p, scp_assembly_required_p, Flag::ENVIRON_VAR));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3416 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3417 return JNI_OK;
a61af66fc99e Initial load
duke
parents:
diff changeset
3418 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3419
2362
a2c2eac1ca62 7018056: large pages not always enabled by default
jcoomes
parents: 2302
diff changeset
3420 void Arguments::set_shared_spaces_flags() {
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
3421 if (DumpSharedSpaces) {
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
3422 if (RequireSharedSpaces) {
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
3423 warning("cannot dump shared archive while using shared archive");
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
3424 }
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
3425 UseSharedSpaces = false;
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
3426 #ifdef _LP64
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3427 if (!UseCompressedOops || !UseCompressedClassPointers) {
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
3428 vm_exit_during_initialization(
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3429 "Cannot dump shared archive when UseCompressedOops or UseCompressedClassPointers is off.", NULL);
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
3430 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
3431 } else {
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3432 // UseCompressedOops and UseCompressedClassPointers must be on for UseSharedSpaces.
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3433 if (!UseCompressedOops || !UseCompressedClassPointers) {
12056
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
3434 no_shared_spaces();
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
3435 }
740e263c80c6 8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents: 12003
diff changeset
3436 #endif
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6628
diff changeset
3437 }
2362
a2c2eac1ca62 7018056: large pages not always enabled by default
jcoomes
parents: 2302
diff changeset
3438 }
1891
9de67bf4244d 6996136: VM crash in src/share/vm/runtime/virtualspace.cpp:424
iveresov
parents: 1890
diff changeset
3439
9060
cc32ccaaf47f 8003310: Enable -Wunused-function when compiling with gcc
mikael
parents: 8847
diff changeset
3440 #if !INCLUDE_ALL_GCS
8086
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3441 static void force_serial_gc() {
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3442 FLAG_SET_DEFAULT(UseSerialGC, true);
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3443 FLAG_SET_DEFAULT(CMSIncrementalMode, false); // special CMS suboption
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3444 UNSUPPORTED_GC_OPTION(UseG1GC);
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3445 UNSUPPORTED_GC_OPTION(UseParallelGC);
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3446 UNSUPPORTED_GC_OPTION(UseParallelOldGC);
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3447 UNSUPPORTED_GC_OPTION(UseConcMarkSweepGC);
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3448 UNSUPPORTED_GC_OPTION(UseParNewGC);
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3449 }
9060
cc32ccaaf47f 8003310: Enable -Wunused-function when compiling with gcc
mikael
parents: 8847
diff changeset
3450 #endif // INCLUDE_ALL_GCS
8086
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3451
10270
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3452 // Sharing support
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3453 // Construct the path to the archive
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3454 static char* get_shared_archive_path() {
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3455 char *shared_archive_path;
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3456 if (SharedArchiveFile == NULL) {
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3457 char jvm_path[JVM_MAXPATHLEN];
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3458 os::jvm_path(jvm_path, sizeof(jvm_path));
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3459 char *end = strrchr(jvm_path, *os::file_separator());
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3460 if (end != NULL) *end = '\0';
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3461 size_t jvm_path_len = strlen(jvm_path);
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3462 size_t file_sep_len = strlen(os::file_separator());
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3463 shared_archive_path = NEW_C_HEAP_ARRAY(char, jvm_path_len +
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3464 file_sep_len + 20, mtInternal);
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3465 if (shared_archive_path != NULL) {
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3466 strncpy(shared_archive_path, jvm_path, jvm_path_len + 1);
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3467 strncat(shared_archive_path, os::file_separator(), file_sep_len);
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3468 strncat(shared_archive_path, "classes.jsa", 11);
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3469 }
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3470 } else {
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3471 shared_archive_path = NEW_C_HEAP_ARRAY(char, strlen(SharedArchiveFile) + 1, mtInternal);
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3472 if (shared_archive_path != NULL) {
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3473 strncpy(shared_archive_path, SharedArchiveFile, strlen(SharedArchiveFile) + 1);
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3474 }
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3475 }
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3476 return shared_archive_path;
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3477 }
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3478
12257
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3479 #ifndef PRODUCT
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3480 // Determine whether LogVMOutput should be implicitly turned on.
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3481 static bool use_vm_log() {
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3482 if (LogCompilation || !FLAG_IS_DEFAULT(LogFile) ||
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3483 PrintCompilation || PrintInlining || PrintDependencies || PrintNativeNMethods ||
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3484 PrintDebugInfo || PrintRelocations || PrintNMethods || PrintExceptionHandlers ||
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3485 PrintAssembly || TraceDeoptimization || TraceDependencies ||
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3486 (VerifyDependencies && FLAG_IS_CMDLINE(VerifyDependencies))) {
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3487 return true;
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3488 }
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3489
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3490 #ifdef COMPILER1
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3491 if (PrintC1Statistics) {
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3492 return true;
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3493 }
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3494 #endif // COMPILER1
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3495
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3496 #ifdef COMPILER2
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3497 if (PrintOptoAssembly || PrintOptoStatistics) {
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3498 return true;
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3499 }
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3500 #endif // COMPILER2
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3501
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3502 return false;
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3503 }
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3504 #endif // PRODUCT
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3505
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3506 // Parse entry point called from JNI_CreateJavaVM
a61af66fc99e Initial load
duke
parents:
diff changeset
3507
a61af66fc99e Initial load
duke
parents:
diff changeset
3508 jint Arguments::parse(const JavaVMInitArgs* args) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3509
a61af66fc99e Initial load
duke
parents:
diff changeset
3510 // Remaining part of option string
a61af66fc99e Initial load
duke
parents:
diff changeset
3511 const char* tail;
a61af66fc99e Initial load
duke
parents:
diff changeset
3512
a61af66fc99e Initial load
duke
parents:
diff changeset
3513 // If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
6196
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3514 const char* hotspotrc = ".hotspotrc";
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3515 bool settings_file_specified = false;
6196
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3516 bool needs_hotspotrc_warning = false;
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3517
564
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3518 const char* flags_file;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3519 int index;
a61af66fc99e Initial load
duke
parents:
diff changeset
3520 for (index = 0; index < args->nOptions; index++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3521 const JavaVMOption *option = args->options + index;
a61af66fc99e Initial load
duke
parents:
diff changeset
3522 if (match_option(option, "-XX:Flags=", &tail)) {
564
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3523 flags_file = tail;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3524 settings_file_specified = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
3525 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3526 if (match_option(option, "-XX:+PrintVMOptions", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3527 PrintVMOptions = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
3528 }
253
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 196
diff changeset
3529 if (match_option(option, "-XX:-PrintVMOptions", &tail)) {
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 196
diff changeset
3530 PrintVMOptions = false;
b0fe4deeb9fb 6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.")
kvn
parents: 196
diff changeset
3531 }
564
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3532 if (match_option(option, "-XX:+IgnoreUnrecognizedVMOptions", &tail)) {
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3533 IgnoreUnrecognizedVMOptions = true;
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3534 }
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3535 if (match_option(option, "-XX:-IgnoreUnrecognizedVMOptions", &tail)) {
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3536 IgnoreUnrecognizedVMOptions = false;
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3537 }
1150
f62a22282a47 6914622: Print values of all flags for product VM
kvn
parents: 1135
diff changeset
3538 if (match_option(option, "-XX:+PrintFlagsInitial", &tail)) {
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4111
diff changeset
3539 CommandLineFlags::printFlags(tty, false);
1150
f62a22282a47 6914622: Print values of all flags for product VM
kvn
parents: 1135
diff changeset
3540 vm_exit(0);
f62a22282a47 6914622: Print values of all flags for product VM
kvn
parents: 1135
diff changeset
3541 }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
3542 if (match_option(option, "-XX:NativeMemoryTracking", &tail)) {
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
3543 #if INCLUDE_NMT
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
3544 MemTracker::init_tracking_options(tail);
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
3545 #else
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3546 jio_fprintf(defaultStream::error_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3547 "Native Memory Tracking is not supported in this VM\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3548 return JNI_ERR;
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
3549 #endif
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
3550 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6065
diff changeset
3551
1768
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1745
diff changeset
3552
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1745
diff changeset
3553 #ifndef PRODUCT
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1745
diff changeset
3554 if (match_option(option, "-XX:+PrintFlagsWithComments", &tail)) {
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4111
diff changeset
3555 CommandLineFlags::printFlags(tty, true);
1768
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1745
diff changeset
3556 vm_exit(0);
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1745
diff changeset
3557 }
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1745
diff changeset
3558 #endif
564
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3559 }
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3560
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3561 if (IgnoreUnrecognizedVMOptions) {
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3562 // uncast const to modify the flag args->ignoreUnrecognized
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3563 *(jboolean*)(&args->ignoreUnrecognized) = true;
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3564 }
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3565
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3566 // Parse specified settings file
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3567 if (settings_file_specified) {
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3568 if (!process_settings_file(flags_file, true, args->ignoreUnrecognized)) {
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3569 return JNI_EINVAL;
323728917cf4 6788376: allow to ignore unrecognized VM options
kvn
parents: 489
diff changeset
3570 }
6196
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3571 } else {
6150
1e76463170b3 7110720: Issue with vm config file loadingIssue with vm config file loading
kamg
parents: 4780
diff changeset
3572 #ifdef ASSERT
6196
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3573 // Parse default .hotspotrc settings file
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3574 if (!process_settings_file(".hotspotrc", false, args->ignoreUnrecognized)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3575 return JNI_EINVAL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3576 }
6196
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3577 #else
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3578 struct stat buf;
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3579 if (os::stat(hotspotrc, &buf) == 0) {
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3580 needs_hotspotrc_warning = true;
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3581 }
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3582 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3583 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3584
a61af66fc99e Initial load
duke
parents:
diff changeset
3585 if (PrintVMOptions) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3586 for (index = 0; index < args->nOptions; index++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3587 const JavaVMOption *option = args->options + index;
a61af66fc99e Initial load
duke
parents:
diff changeset
3588 if (match_option(option, "-XX:", &tail)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3589 logOption(tail);
a61af66fc99e Initial load
duke
parents:
diff changeset
3590 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3591 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3592 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3593
a61af66fc99e Initial load
duke
parents:
diff changeset
3594 // Parse JavaVMInitArgs structure passed in, as well as JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
a61af66fc99e Initial load
duke
parents:
diff changeset
3595 jint result = parse_vm_init_args(args);
a61af66fc99e Initial load
duke
parents:
diff changeset
3596 if (result != JNI_OK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3597 return result;
a61af66fc99e Initial load
duke
parents:
diff changeset
3598 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3599
10270
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3600 // Call get_shared_archive_path() here, after possible SharedArchiveFile option got parsed.
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3601 SharedArchivePath = get_shared_archive_path();
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3602 if (SharedArchivePath == NULL) {
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3603 return JNI_ENOMEM;
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3604 }
f944ba972151 8014138: Add VM option to facilitate the writing of CDS tests
hseigel
parents: 10264
diff changeset
3605
6196
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3606 // Delay warning until here so that we've had a chance to process
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3607 // the -XX:-PrintWarnings flag
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3608 if (needs_hotspotrc_warning) {
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3609 warning("%s file is present but has been ignored. "
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3610 "Run with -XX:Flags=%s to load the file.",
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3611 hotspotrc, hotspotrc);
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3612 }
3759236eea14 7167142: Consider a warning when finding a .hotspotrc or .hotspot_compiler file that isn't used
kamg
parents: 6158
diff changeset
3613
6917
e81fbc04a942 7191817: -XX:+UseSerialGC -XX:+UseLargePages crashes with SIGFPE on MacOS X
coleenp
parents: 6916
diff changeset
3614 #ifdef _ALLBSD_SOURCE // UseLargePages is not yet supported on BSD.
e81fbc04a942 7191817: -XX:+UseSerialGC -XX:+UseLargePages crashes with SIGFPE on MacOS X
coleenp
parents: 6916
diff changeset
3615 UNSUPPORTED_OPTION(UseLargePages, "-XX:+UseLargePages");
e81fbc04a942 7191817: -XX:+UseSerialGC -XX:+UseLargePages crashes with SIGFPE on MacOS X
coleenp
parents: 6916
diff changeset
3616 #endif
e81fbc04a942 7191817: -XX:+UseSerialGC -XX:+UseLargePages crashes with SIGFPE on MacOS X
coleenp
parents: 6916
diff changeset
3617
8086
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3618 #if INCLUDE_ALL_GCS
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3619 #if (defined JAVASE_EMBEDDED || defined ARM)
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3620 UNSUPPORTED_OPTION(UseG1GC, "G1 GC");
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3621 #endif
1605eef8e11e 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
jprovino
parents: 8083
diff changeset
3622 #endif
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
3623
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3624 #ifndef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
3625 if (TraceBytecodesAt != 0) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3626 TraceBytecodes = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
3627 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3628 if (CountCompiledCalls) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3629 if (UseCounterDecay) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3630 warning("UseCounterDecay disabled because CountCalls is set");
a61af66fc99e Initial load
duke
parents:
diff changeset
3631 UseCounterDecay = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
3632 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3633 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3634 #endif // PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
3635
2416
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3636 // JSR 292 is not supported before 1.7
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3637 if (!JDK_Version::is_gte_jdk17x_version()) {
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3638 if (EnableInvokeDynamic) {
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3639 if (!FLAG_IS_DEFAULT(EnableInvokeDynamic)) {
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3640 warning("JSR 292 is not supported before 1.7. Disabling support.");
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3641 }
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3642 EnableInvokeDynamic = false;
710
e5b0439ef4ae 6655638: dynamic languages need method handles
jrose
parents: 681
diff changeset
3643 }
e5b0439ef4ae 6655638: dynamic languages need method handles
jrose
parents: 681
diff changeset
3644 }
2416
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3645
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3646 if (EnableInvokeDynamic && ScavengeRootsInCode == 0) {
989
148e5441d916 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 932
diff changeset
3647 if (!FLAG_IS_DEFAULT(ScavengeRootsInCode)) {
2416
38fea01eb669 6817525: turn on method handle functionality by default for JSR 292
twisti
parents: 2378
diff changeset
3648 warning("forcing ScavengeRootsInCode non-zero because EnableInvokeDynamic is true");
989
148e5441d916 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 932
diff changeset
3649 }
148e5441d916 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 932
diff changeset
3650 ScavengeRootsInCode = 1;
148e5441d916 6863023: need non-perm oops in code cache for JSR 292
jrose
parents: 932
diff changeset
3651 }
710
e5b0439ef4ae 6655638: dynamic languages need method handles
jrose
parents: 681
diff changeset
3652
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3653 if (PrintGCDetails) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3654 // Turn on -verbose:gc options as well
a61af66fc99e Initial load
duke
parents:
diff changeset
3655 PrintGC = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
3656 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3657
6064
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3658 if (!JDK_Version::is_gte_jdk18x_version()) {
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3659 // To avoid changing the log format for 7 updates this flag is only
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3660 // true by default in JDK8 and above.
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3661 if (FLAG_IS_DEFAULT(PrintGCCause)) {
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3662 FLAG_SET_DEFAULT(PrintGCCause, false);
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3663 }
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3664 }
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 6017
diff changeset
3665
1571
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
3666 // Set object alignment values.
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
3667 set_object_alignment();
2d127394260e 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
kvn
parents: 1506
diff changeset
3668
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
3669 #if !INCLUDE_ALL_GCS
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 1010
diff changeset
3670 force_serial_gc();
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
3671 #endif // INCLUDE_ALL_GCS
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
3672 #if !INCLUDE_CDS
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3673 if (DumpSharedSpaces || RequireSharedSpaces) {
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3674 jio_fprintf(defaultStream::error_stream(),
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3675 "Shared spaces are not supported in this VM\n");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3676 return JNI_ERR;
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3677 }
8724
69ffa4ac9e53 8009835: Only produce a warning when -Xshare:auto is explicitly requested
jprovino
parents: 8720
diff changeset
3678 if ((UseSharedSpaces && FLAG_IS_CMDLINE(UseSharedSpaces)) || PrintSharedSpaces) {
8720
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3679 warning("Shared spaces are not supported in this VM");
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3680 FLAG_SET_DEFAULT(UseSharedSpaces, false);
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3681 FLAG_SET_DEFAULT(PrintSharedSpaces, false);
fad90b102190 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
jprovino
parents: 8105
diff changeset
3682 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3683 no_shared_spaces();
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
3684 #endif // INCLUDE_CDS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3685
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
3686 return JNI_OK;
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
3687 }
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
3688
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
3689 jint Arguments::apply_ergo() {
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12226
diff changeset
3690
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3691 // Set flags based on ergonomics.
a61af66fc99e Initial load
duke
parents:
diff changeset
3692 set_ergonomics_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
3693
2362
a2c2eac1ca62 7018056: large pages not always enabled by default
jcoomes
parents: 2302
diff changeset
3694 set_shared_spaces_flags();
1135
e66fd840cb6b 6893081: method handle & invokedynamic code needs additional cleanup (post 6815692, 6858164)
twisti
parents: 1131
diff changeset
3695
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3696 // Check the GC selections again.
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3697 if (!check_gc_consistency()) {
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3698 return JNI_EINVAL;
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3699 }
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3700
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3701 if (TieredCompilation) {
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3702 set_tiered_flags();
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3703 } else {
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3704 // Check if the policy is valid. Policies 0 and 1 are valid for non-tiered setup.
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3705 if (CompilationPolicyChoice >= 2) {
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3706 vm_exit_during_initialization(
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3707 "Incompatible compilation policy selected", NULL);
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3708 }
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3709 }
13074
78da3894b86f 8027593: performance drop with constrained codecache starting with hs25 b111
anoll
parents: 13008
diff changeset
3710 // Set NmethodSweepFraction after the size of the code cache is adapted (in case of tiered)
78da3894b86f 8027593: performance drop with constrained codecache starting with hs25 b111
anoll
parents: 13008
diff changeset
3711 if (FLAG_IS_DEFAULT(NmethodSweepFraction)) {
78da3894b86f 8027593: performance drop with constrained codecache starting with hs25 b111
anoll
parents: 13008
diff changeset
3712 FLAG_SET_DEFAULT(NmethodSweepFraction, 1 + ReservedCodeCacheSize / (16 * M));
78da3894b86f 8027593: performance drop with constrained codecache starting with hs25 b111
anoll
parents: 13008
diff changeset
3713 }
78da3894b86f 8027593: performance drop with constrained codecache starting with hs25 b111
anoll
parents: 13008
diff changeset
3714
1783
d5d065957597 6953144: Tiered compilation
iveresov
parents: 1764
diff changeset
3715
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3716 // Set heap size based on available physical memory
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3717 set_heap_size();
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6818
diff changeset
3718
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
3719 #if INCLUDE_ALL_GCS
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3720 // Set per-collector flags
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3721 if (UseParallelGC || UseParallelOldGC) {
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3722 set_parallel_gc_flags();
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3723 } else if (UseConcMarkSweepGC) { // should be done before ParNew check below
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
3724 set_cms_and_parnew_gc_flags();
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3725 } else if (UseParNewGC) { // skipped if CMS is set above
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3726 set_parnew_gc_flags();
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3727 } else if (UseG1GC) {
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2366
diff changeset
3728 set_g1_gc_flags();
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 135
diff changeset
3729 }
7452
e0ab18eafbde 8003820: Deprecate untested and rarely used GC combinations
brutisso
parents: 7451
diff changeset
3730 check_deprecated_gcs();
8734
209f8ba5020b 8008368: Deprecate MaxGCMinorPauseMillis
tamao
parents: 8105
diff changeset
3731 check_deprecated_gc_flags();
8845
1b90c7607451 2178143: JVM crashes if the number of bound CPUs changed during runtime
minqi
parents: 8819
diff changeset
3732 if (AssumeMP && !UseSerialGC) {
1b90c7607451 2178143: JVM crashes if the number of bound CPUs changed during runtime
minqi
parents: 8819
diff changeset
3733 if (FLAG_IS_DEFAULT(ParallelGCThreads) && ParallelGCThreads == 1) {
1b90c7607451 2178143: JVM crashes if the number of bound CPUs changed during runtime
minqi
parents: 8819
diff changeset
3734 warning("If the number of processors is expected to increase from one, then"
1b90c7607451 2178143: JVM crashes if the number of bound CPUs changed during runtime
minqi
parents: 8819
diff changeset
3735 " you should configure the number of parallel GC threads appropriately"
1b90c7607451 2178143: JVM crashes if the number of bound CPUs changed during runtime
minqi
parents: 8819
diff changeset
3736 " using -XX:ParallelGCThreads=N");
1b90c7607451 2178143: JVM crashes if the number of bound CPUs changed during runtime
minqi
parents: 8819
diff changeset
3737 }
1b90c7607451 2178143: JVM crashes if the number of bound CPUs changed during runtime
minqi
parents: 8819
diff changeset
3738 }
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
3739 #else // INCLUDE_ALL_GCS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3740 assert(verify_serial_gc_flags(), "SerialGC unset");
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
3741 #endif // INCLUDE_ALL_GCS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3742
12838
85c1ca43713f 8024547: MaxMetaspaceSize should limit the committed memory used by the metaspaces
stefank
parents: 12831
diff changeset
3743 // Initialize Metaspace flags and alignments.
85c1ca43713f 8024547: MaxMetaspaceSize should limit the committed memory used by the metaspaces
stefank
parents: 12831
diff changeset
3744 Metaspace::ergo_initialize();
85c1ca43713f 8024547: MaxMetaspaceSize should limit the committed memory used by the metaspaces
stefank
parents: 12831
diff changeset
3745
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3746 // Set bytecode rewriting flags
a61af66fc99e Initial load
duke
parents:
diff changeset
3747 set_bytecode_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
3748
a61af66fc99e Initial load
duke
parents:
diff changeset
3749 // Set flags if Aggressive optimization flags (-XX:+AggressiveOpts) enabled.
a61af66fc99e Initial load
duke
parents:
diff changeset
3750 set_aggressive_opts_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
3751
2239
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3752 // Turn off biased locking for locking debug mode flags,
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3753 // which are subtlely different from each other but neither works with
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3754 // biased locking.
2331
9f44e9aad2d9 7022999: Can't build with FORCE_TIERED=0
coleenp
parents: 2302
diff changeset
3755 if (UseHeavyMonitors
9f44e9aad2d9 7022999: Can't build with FORCE_TIERED=0
coleenp
parents: 2302
diff changeset
3756 #ifdef COMPILER1
9f44e9aad2d9 7022999: Can't build with FORCE_TIERED=0
coleenp
parents: 2302
diff changeset
3757 || !UseFastLocking
9f44e9aad2d9 7022999: Can't build with FORCE_TIERED=0
coleenp
parents: 2302
diff changeset
3758 #endif // COMPILER1
7154
5d0bb7d52783 changes to support Graal co-existing with the other HotSpot compiler(s) and being used for explicit compilation requests and code installation via the Graal API
Doug Simon <doug.simon@oracle.com>
parents: 7125
diff changeset
3759 #ifdef GRAAL
5d0bb7d52783 changes to support Graal co-existing with the other HotSpot compiler(s) and being used for explicit compilation requests and code installation via the Graal API
Doug Simon <doug.simon@oracle.com>
parents: 7125
diff changeset
3760 || !GraalUseFastLocking
5d0bb7d52783 changes to support Graal co-existing with the other HotSpot compiler(s) and being used for explicit compilation requests and code installation via the Graal API
Doug Simon <doug.simon@oracle.com>
parents: 7125
diff changeset
3761 #endif // GRAAL
2331
9f44e9aad2d9 7022999: Can't build with FORCE_TIERED=0
coleenp
parents: 2302
diff changeset
3762 ) {
2239
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3763 if (!FLAG_IS_DEFAULT(UseBiasedLocking) && UseBiasedLocking) {
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3764 // flag set to true on command line; warn the user that they
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3765 // can't enable biased locking here
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3766 warning("Biased Locking is not supported with locking debug flags"
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3767 "; ignoring UseBiasedLocking flag." );
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3768 }
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3769 UseBiasedLocking = false;
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3770 }
c08677f98289 6840152: JVM crashes when heavyweight monitors are used
coleenp
parents: 2176
diff changeset
3771
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3772 #ifdef CC_INTERP
1131
40e7c1d24e4a 6909153: Fix broken options on Zero
twisti
parents: 1074
diff changeset
3773 // Clear flags not supported by the C++ interpreter
40e7c1d24e4a 6909153: Fix broken options on Zero
twisti
parents: 1074
diff changeset
3774 FLAG_SET_DEFAULT(ProfileInterpreter, false);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3775 FLAG_SET_DEFAULT(UseBiasedLocking, false);
1131
40e7c1d24e4a 6909153: Fix broken options on Zero
twisti
parents: 1074
diff changeset
3776 LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedOops, false));
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3777 LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedClassPointers, false));
1131
40e7c1d24e4a 6909153: Fix broken options on Zero
twisti
parents: 1074
diff changeset
3778 #endif // CC_INTERP
40e7c1d24e4a 6909153: Fix broken options on Zero
twisti
parents: 1074
diff changeset
3779
420
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 416
diff changeset
3780 #ifdef COMPILER2
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 416
diff changeset
3781 if (!UseBiasedLocking || EmitSync != 0) {
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 416
diff changeset
3782 UseOptoBiasInlining = false;
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 416
diff changeset
3783 }
4777
e9a5e0a812c8 7125896: Eliminate nested locks
kvn
parents: 4758
diff changeset
3784 if (!EliminateLocks) {
e9a5e0a812c8 7125896: Eliminate nested locks
kvn
parents: 4758
diff changeset
3785 EliminateNestedLocks = false;
e9a5e0a812c8 7125896: Eliminate nested locks
kvn
parents: 4758
diff changeset
3786 }
7473
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3787 if (!Inline) {
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3788 IncrementalInline = false;
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3789 }
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3790 #ifndef PRODUCT
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3791 if (!IncrementalInline) {
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3792 AlwaysIncrementalInline = false;
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3793 }
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3794 #endif
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3795 if (IncrementalInline && FLAG_IS_DEFAULT(MaxNodeLimit)) {
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3796 // incremental inlining: bump MaxNodeLimit
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3797 FLAG_SET_DEFAULT(MaxNodeLimit, (intx)75000);
d092d1b31229 8005071: Incremental inlining for JSR 292
roland
parents: 7397
diff changeset
3798 }
12966
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3799 if (!UseTypeSpeculation && FLAG_IS_DEFAULT(TypeProfileLevel)) {
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3800 // nothing to use the profiling, turn if off
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3801 FLAG_SET_DEFAULT(TypeProfileLevel, 0);
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3802 }
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3803 if (UseTypeSpeculation && FLAG_IS_DEFAULT(ReplaceInParentMaps)) {
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3804 // Doing the replace in parent maps helps speculation
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3805 FLAG_SET_DEFAULT(ReplaceInParentMaps, true);
b2ee5dc63353 8024070: C2 needs some form of type speculation
roland
parents: 12896
diff changeset
3806 }
12976
f7d928a3181c 8026978: JSR292: fatal error: Type profiling not implemented on this platform
roland
parents: 12973
diff changeset
3807 #ifndef X86
f7d928a3181c 8026978: JSR292: fatal error: Type profiling not implemented on this platform
roland
parents: 12973
diff changeset
3808 // Only on x86 for now
f7d928a3181c 8026978: JSR292: fatal error: Type profiling not implemented on this platform
roland
parents: 12973
diff changeset
3809 FLAG_SET_DEFAULT(TypeProfileLevel, 0);
f7d928a3181c 8026978: JSR292: fatal error: Type profiling not implemented on this platform
roland
parents: 12973
diff changeset
3810 #endif
420
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 416
diff changeset
3811 #endif
a1980da045cc 6462850: generate biased locking code in C2 ideal graph
kvn
parents: 416
diff changeset
3812
1155
4e6abf09f540 6912062: disassembler plugin needs to produce symbolic information in product mode
jrose
parents: 1150
diff changeset
3813 if (PrintAssembly && FLAG_IS_DEFAULT(DebugNonSafepoints)) {
4e6abf09f540 6912062: disassembler plugin needs to produce symbolic information in product mode
jrose
parents: 1150
diff changeset
3814 warning("PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output");
4e6abf09f540 6912062: disassembler plugin needs to produce symbolic information in product mode
jrose
parents: 1150
diff changeset
3815 DebugNonSafepoints = true;
4e6abf09f540 6912062: disassembler plugin needs to produce symbolic information in product mode
jrose
parents: 1150
diff changeset
3816 }
4e6abf09f540 6912062: disassembler plugin needs to produce symbolic information in product mode
jrose
parents: 1150
diff changeset
3817
12226
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3818 if (FLAG_IS_CMDLINE(CompressedClassSpaceSize) && !UseCompressedClassPointers) {
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3819 warning("Setting CompressedClassSpaceSize has no effect when compressed class pointers are not used");
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3820 }
7944aba7ba41 8015107: NPG: Use consistent naming for metaspace concepts
ehelin
parents: 12182
diff changeset
3821
1188
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3822 #ifndef PRODUCT
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3823 if (CompileTheWorld) {
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3824 // Force NmethodSweeper to sweep whole CodeCache each time.
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3825 if (FLAG_IS_DEFAULT(NmethodSweepFraction)) {
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3826 NmethodSweepFraction = 1;
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3827 }
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3828 }
12257
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3829
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3830 if (!LogVMOutput && FLAG_IS_DEFAULT(LogVMOutput)) {
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3831 if (use_vm_log()) {
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3832 LogVMOutput = true;
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3833 }
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3834 }
01b268b3080a 8023134: Rename VM LogFile to hotspot_pid{pid}.log (was hotspot.log)
vlivanov
parents: 12129
diff changeset
3835 #endif // PRODUCT
1188
99af867dfa05 6919886: Sweep CodeCache more aggressively to reduce its usage for CompileTheWorld
kvn
parents: 1161
diff changeset
3836
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3837 if (PrintCommandLineFlags) {
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4111
diff changeset
3838 CommandLineFlags::printSetFlags(tty);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3839 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3840
1681
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3841 // Apply CPU specific policy for the BiasedLocking
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3842 if (UseBiasedLocking) {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3843 if (!VM_Version::use_biased_locking() &&
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3844 !(FLAG_IS_CMDLINE(UseBiasedLocking))) {
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3845 UseBiasedLocking = false;
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3846 }
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3847 }
126ea7725993 6953477: Increase portability and flexibility of building Hotspot
bobv
parents: 1679
diff changeset
3848
2302
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3849 // set PauseAtExit if the gamma launcher was used and a debugger is attached
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3850 // but only if not already set on the commandline
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3851 if (Arguments::created_by_gamma_launcher() && os::is_debugger_attached()) {
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3852 bool set = false;
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3853 CommandLineFlags::wasSetOnCmdline("PauseAtExit", &set);
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3854 if (!set) {
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3855 FLAG_SET_DEFAULT(PauseAtExit, true);
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3856 }
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3857 }
da091bb67459 7022037: Pause when exiting if debugger is attached on windows
sla
parents: 2243
diff changeset
3858
12490
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3859 #ifdef GRAAL
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3860 if (_graal_gpu_isalist->value() == NULL) {
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3861 // Initialize the graal.gpu.isalist system property if
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3862 // a) it was not explicitly defined by the user and
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3863 // b) at least one GPU is available.
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3864 // GPU offload can be disabled by setting the property
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3865 // to the empty string on the command line
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3866 if (gpu::is_available() && gpu::has_gpu_linkage()) {
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3867 if (gpu::get_target_il_type() == gpu::PTX) {
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3868 _graal_gpu_isalist->append_value("PTX");
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3869 }
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3870 if (gpu::get_target_il_type() == gpu::HSAIL) {
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3871 _graal_gpu_isalist->append_value("HSAIL");
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3872 }
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3873 }
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3874 }
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3875 #endif
4dba97fb1a6f available GPUs are exposed to Graal only by the graal.gpu.isalist system property which is set up during command line argument parsing
Doug Simon <doug.simon@oracle.com>
parents: 12356
diff changeset
3876
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3877 return JNI_OK;
a61af66fc99e Initial load
duke
parents:
diff changeset
3878 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3879
7177
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3880 jint Arguments::adjust_after_os() {
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
3881 #if INCLUDE_ALL_GCS
7177
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3882 if (UseParallelGC || UseParallelOldGC) {
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3883 if (UseNUMA) {
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3884 if (FLAG_IS_DEFAULT(MinHeapDeltaBytes)) {
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3885 FLAG_SET_DEFAULT(MinHeapDeltaBytes, 64*M);
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3886 }
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3887 // For those collectors or operating systems (eg, Windows) that do
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3888 // not support full UseNUMA, we will map to UseNUMAInterleaving for now
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3889 UseNUMAInterleaving = true;
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3890 }
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3891 }
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 7479
diff changeset
3892 #endif // INCLUDE_ALL_GCS
7177
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3893 return JNI_OK;
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3894 }
53715fb1597d 7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents: 6982
diff changeset
3895
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3896 int Arguments::PropertyList_count(SystemProperty* pl) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3897 int count = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
3898 while(pl != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3899 count++;
a61af66fc99e Initial load
duke
parents:
diff changeset
3900 pl = pl->next();
a61af66fc99e Initial load
duke
parents:
diff changeset
3901 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3902 return count;
a61af66fc99e Initial load
duke
parents:
diff changeset
3903 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3904
a61af66fc99e Initial load
duke
parents:
diff changeset
3905 const char* Arguments::PropertyList_get_value(SystemProperty *pl, const char* key) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3906 assert(key != NULL, "just checking");
a61af66fc99e Initial load
duke
parents:
diff changeset
3907 SystemProperty* prop;
a61af66fc99e Initial load
duke
parents:
diff changeset
3908 for (prop = pl; prop != NULL; prop = prop->next()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3909 if (strcmp(key, prop->key()) == 0) return prop->value();
a61af66fc99e Initial load
duke
parents:
diff changeset
3910 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3911 return NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3912 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3913
a61af66fc99e Initial load
duke
parents:
diff changeset
3914 const char* Arguments::PropertyList_get_key_at(SystemProperty *pl, int index) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3915 int count = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
3916 const char* ret_val = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3917
a61af66fc99e Initial load
duke
parents:
diff changeset
3918 while(pl != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3919 if(count >= index) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3920 ret_val = pl->key();
a61af66fc99e Initial load
duke
parents:
diff changeset
3921 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
3922 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3923 count++;
a61af66fc99e Initial load
duke
parents:
diff changeset
3924 pl = pl->next();
a61af66fc99e Initial load
duke
parents:
diff changeset
3925 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3926
a61af66fc99e Initial load
duke
parents:
diff changeset
3927 return ret_val;
a61af66fc99e Initial load
duke
parents:
diff changeset
3928 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3929
a61af66fc99e Initial load
duke
parents:
diff changeset
3930 char* Arguments::PropertyList_get_value_at(SystemProperty* pl, int index) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3931 int count = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
3932 char* ret_val = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
3933
a61af66fc99e Initial load
duke
parents:
diff changeset
3934 while(pl != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3935 if(count >= index) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3936 ret_val = pl->value();
a61af66fc99e Initial load
duke
parents:
diff changeset
3937 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
3938 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3939 count++;
a61af66fc99e Initial load
duke
parents:
diff changeset
3940 pl = pl->next();
a61af66fc99e Initial load
duke
parents:
diff changeset
3941 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3942
a61af66fc99e Initial load
duke
parents:
diff changeset
3943 return ret_val;
a61af66fc99e Initial load
duke
parents:
diff changeset
3944 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3945
a61af66fc99e Initial load
duke
parents:
diff changeset
3946 void Arguments::PropertyList_add(SystemProperty** plist, SystemProperty *new_p) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3947 SystemProperty* p = *plist;
a61af66fc99e Initial load
duke
parents:
diff changeset
3948 if (p == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3949 *plist = new_p;
a61af66fc99e Initial load
duke
parents:
diff changeset
3950 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
3951 while (p->next() != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3952 p = p->next();
a61af66fc99e Initial load
duke
parents:
diff changeset
3953 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3954 p->set_next(new_p);
a61af66fc99e Initial load
duke
parents:
diff changeset
3955 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3956 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3957
a61af66fc99e Initial load
duke
parents:
diff changeset
3958 void Arguments::PropertyList_add(SystemProperty** plist, const char* k, char* v) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3959 if (plist == NULL)
a61af66fc99e Initial load
duke
parents:
diff changeset
3960 return;
a61af66fc99e Initial load
duke
parents:
diff changeset
3961
a61af66fc99e Initial load
duke
parents:
diff changeset
3962 SystemProperty* new_p = new SystemProperty(k, v, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
3963 PropertyList_add(plist, new_p);
a61af66fc99e Initial load
duke
parents:
diff changeset
3964 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3965
a61af66fc99e Initial load
duke
parents:
diff changeset
3966 // This add maintains unique property key in the list.
691
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
3967 void Arguments::PropertyList_unique_add(SystemProperty** plist, const char* k, char* v, jboolean append) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3968 if (plist == NULL)
a61af66fc99e Initial load
duke
parents:
diff changeset
3969 return;
a61af66fc99e Initial load
duke
parents:
diff changeset
3970
a61af66fc99e Initial load
duke
parents:
diff changeset
3971 // If property key exist then update with new value.
a61af66fc99e Initial load
duke
parents:
diff changeset
3972 SystemProperty* prop;
a61af66fc99e Initial load
duke
parents:
diff changeset
3973 for (prop = *plist; prop != NULL; prop = prop->next()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3974 if (strcmp(k, prop->key()) == 0) {
691
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
3975 if (append) {
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
3976 prop->append_value(v);
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
3977 } else {
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
3978 prop->set_value(v);
956304450e80 6819213: revive sun.boot.library.path
phh
parents: 647
diff changeset
3979 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3980 return;
a61af66fc99e Initial load
duke
parents:
diff changeset
3981 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3982 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3983
a61af66fc99e Initial load
duke
parents:
diff changeset
3984 PropertyList_add(plist, k, v);
a61af66fc99e Initial load
duke
parents:
diff changeset
3985 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3986
a61af66fc99e Initial load
duke
parents:
diff changeset
3987 // Copies src into buf, replacing "%%" with "%" and "%p" with pid
a61af66fc99e Initial load
duke
parents:
diff changeset
3988 // Returns true if all of the source pointed by src has been copied over to
a61af66fc99e Initial load
duke
parents:
diff changeset
3989 // the destination buffer pointed by buf. Otherwise, returns false.
a61af66fc99e Initial load
duke
parents:
diff changeset
3990 // Notes:
a61af66fc99e Initial load
duke
parents:
diff changeset
3991 // 1. If the length (buflen) of the destination buffer excluding the
a61af66fc99e Initial load
duke
parents:
diff changeset
3992 // NULL terminator character is not long enough for holding the expanded
a61af66fc99e Initial load
duke
parents:
diff changeset
3993 // pid characters, it also returns false instead of returning the partially
a61af66fc99e Initial load
duke
parents:
diff changeset
3994 // expanded one.
a61af66fc99e Initial load
duke
parents:
diff changeset
3995 // 2. The passed in "buflen" should be large enough to hold the null terminator.
a61af66fc99e Initial load
duke
parents:
diff changeset
3996 bool Arguments::copy_expand_pid(const char* src, size_t srclen,
a61af66fc99e Initial load
duke
parents:
diff changeset
3997 char* buf, size_t buflen) {
a61af66fc99e Initial load
duke
parents:
diff changeset
3998 const char* p = src;
a61af66fc99e Initial load
duke
parents:
diff changeset
3999 char* b = buf;
a61af66fc99e Initial load
duke
parents:
diff changeset
4000 const char* src_end = &src[srclen];
a61af66fc99e Initial load
duke
parents:
diff changeset
4001 char* buf_end = &buf[buflen - 1];
a61af66fc99e Initial load
duke
parents:
diff changeset
4002
a61af66fc99e Initial load
duke
parents:
diff changeset
4003 while (p < src_end && b < buf_end) {
a61af66fc99e Initial load
duke
parents:
diff changeset
4004 if (*p == '%') {
a61af66fc99e Initial load
duke
parents:
diff changeset
4005 switch (*(++p)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
4006 case '%': // "%%" ==> "%"
a61af66fc99e Initial load
duke
parents:
diff changeset
4007 *b++ = *p++;
a61af66fc99e Initial load
duke
parents:
diff changeset
4008 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
4009 case 'p': { // "%p" ==> current process id
a61af66fc99e Initial load
duke
parents:
diff changeset
4010 // buf_end points to the character before the last character so
a61af66fc99e Initial load
duke
parents:
diff changeset
4011 // that we could write '\0' to the end of the buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
4012 size_t buf_sz = buf_end - b + 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
4013 int ret = jio_snprintf(b, buf_sz, "%d", os::current_process_id());
a61af66fc99e Initial load
duke
parents:
diff changeset
4014
a61af66fc99e Initial load
duke
parents:
diff changeset
4015 // if jio_snprintf fails or the buffer is not long enough to hold
a61af66fc99e Initial load
duke
parents:
diff changeset
4016 // the expanded pid, returns false.
a61af66fc99e Initial load
duke
parents:
diff changeset
4017 if (ret < 0 || ret >= (int)buf_sz) {
a61af66fc99e Initial load
duke
parents:
diff changeset
4018 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
4019 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
4020 b += ret;
a61af66fc99e Initial load
duke
parents:
diff changeset
4021 assert(*b == '\0', "fail in copy_expand_pid");
a61af66fc99e Initial load
duke
parents:
diff changeset
4022 if (p == src_end && b == buf_end + 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
4023 // reach the end of the buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
4024 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
4025 }
a61af66fc99e Initial load
duke
parents:
diff changeset
4026 }
a61af66fc99e Initial load
duke
parents:
diff changeset
4027 p++;
a61af66fc99e Initial load
duke
parents:
diff changeset
4028 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
4029 }
a61af66fc99e Initial load
duke
parents:
diff changeset
4030 default :
a61af66fc99e Initial load
duke
parents:
diff changeset
4031 *b++ = '%';
a61af66fc99e Initial load
duke
parents:
diff changeset
4032 }
a61af66fc99e Initial load
duke
parents:
diff changeset
4033 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
4034 *b++ = *p++;
a61af66fc99e Initial load
duke
parents:
diff changeset
4035 }
a61af66fc99e Initial load
duke
parents:
diff changeset
4036 }
a61af66fc99e Initial load
duke
parents:
diff changeset
4037 *b = '\0';
a61af66fc99e Initial load
duke
parents:
diff changeset
4038 return (p == src_end); // return false if not all of the source was copied
a61af66fc99e Initial load
duke
parents:
diff changeset
4039 }