Mercurial > hg > truffle
annotate src/share/vm/runtime/arguments.hpp @ 8854:754c24457b20
7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
Summary: Ergonomics now also takes available virtual memory into account when deciding for a heap size. The helper method to determine the maximum allocatable memory block now uses the appropriate OS specific calls to retrieve available virtual memory for the java process. In 32 bit environments this method now also searches for the maximum actually reservable amount of memory. Merge previously separate implementations for Linux/BSD/Solaris into a single method.
Reviewed-by: jmasa, tamao
author | tschatzl |
---|---|
date | Wed, 27 Mar 2013 19:21:18 +0100 |
parents | eac371996b44 |
children | b9a918201d47 0abfeed51c9e |
rev | line source |
---|---|
0 | 1 /* |
7951 | 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1284
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1284
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:
1284
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_RUNTIME_ARGUMENTS_HPP |
26 #define SHARE_VM_RUNTIME_ARGUMENTS_HPP | |
27 | |
28 #include "runtime/java.hpp" | |
29 #include "runtime/perfData.hpp" | |
30 #include "utilities/top.hpp" | |
31 | |
0 | 32 // Arguments parses the command line and recognizes options |
33 | |
34 // Invocation API hook typedefs (these should really be defined in jni.hpp) | |
35 extern "C" { | |
36 typedef void (JNICALL *abort_hook_t)(void); | |
37 typedef void (JNICALL *exit_hook_t)(jint code); | |
38 typedef jint (JNICALL *vfprintf_hook_t)(FILE *fp, const char *format, va_list args); | |
39 } | |
40 | |
41 // Forward declarations | |
42 | |
43 class SysClassPath; | |
44 | |
45 // Element describing System and User (-Dkey=value flags) defined property. | |
46 | |
6197 | 47 class SystemProperty: public CHeapObj<mtInternal> { |
0 | 48 private: |
49 char* _key; | |
50 char* _value; | |
51 SystemProperty* _next; | |
52 bool _writeable; | |
53 bool writeable() { return _writeable; } | |
54 | |
55 public: | |
56 // Accessors | |
57 const char* key() const { return _key; } | |
58 char* value() const { return _value; } | |
59 SystemProperty* next() const { return _next; } | |
60 void set_next(SystemProperty* next) { _next = next; } | |
61 bool set_value(char *value) { | |
62 if (writeable()) { | |
63 if (_value != NULL) { | |
64 FreeHeap(_value); | |
65 } | |
6197 | 66 _value = AllocateHeap(strlen(value)+1, mtInternal); |
0 | 67 if (_value != NULL) { |
68 strcpy(_value, value); | |
69 } | |
70 return true; | |
71 } | |
72 return false; | |
73 } | |
74 | |
75 void append_value(const char *value) { | |
76 char *sp; | |
77 size_t len = 0; | |
78 if (value != NULL) { | |
79 len = strlen(value); | |
80 if (_value != NULL) { | |
81 len += strlen(_value); | |
82 } | |
6197 | 83 sp = AllocateHeap(len+2, mtInternal); |
0 | 84 if (sp != NULL) { |
85 if (_value != NULL) { | |
86 strcpy(sp, _value); | |
87 strcat(sp, os::path_separator()); | |
88 strcat(sp, value); | |
89 FreeHeap(_value); | |
90 } else { | |
91 strcpy(sp, value); | |
92 } | |
93 _value = sp; | |
94 } | |
95 } | |
96 } | |
97 | |
98 // Constructor | |
99 SystemProperty(const char* key, const char* value, bool writeable) { | |
100 if (key == NULL) { | |
101 _key = NULL; | |
102 } else { | |
6197 | 103 _key = AllocateHeap(strlen(key)+1, mtInternal); |
0 | 104 strcpy(_key, key); |
105 } | |
106 if (value == NULL) { | |
107 _value = NULL; | |
108 } else { | |
6197 | 109 _value = AllocateHeap(strlen(value)+1, mtInternal); |
0 | 110 strcpy(_value, value); |
111 } | |
112 _next = NULL; | |
113 _writeable = writeable; | |
114 } | |
115 }; | |
116 | |
117 | |
118 // For use by -agentlib, -agentpath and -Xrun | |
6197 | 119 class AgentLibrary : public CHeapObj<mtInternal> { |
0 | 120 friend class AgentLibraryList; |
121 private: | |
122 char* _name; | |
123 char* _options; | |
124 void* _os_lib; | |
125 bool _is_absolute_path; | |
126 AgentLibrary* _next; | |
127 | |
128 public: | |
129 // Accessors | |
130 const char* name() const { return _name; } | |
131 char* options() const { return _options; } | |
132 bool is_absolute_path() const { return _is_absolute_path; } | |
133 void* os_lib() const { return _os_lib; } | |
134 void set_os_lib(void* os_lib) { _os_lib = os_lib; } | |
135 AgentLibrary* next() const { return _next; } | |
136 | |
137 // Constructor | |
138 AgentLibrary(const char* name, const char* options, bool is_absolute_path, void* os_lib) { | |
6197 | 139 _name = AllocateHeap(strlen(name)+1, mtInternal); |
0 | 140 strcpy(_name, name); |
141 if (options == NULL) { | |
142 _options = NULL; | |
143 } else { | |
6197 | 144 _options = AllocateHeap(strlen(options)+1, mtInternal); |
0 | 145 strcpy(_options, options); |
146 } | |
147 _is_absolute_path = is_absolute_path; | |
148 _os_lib = os_lib; | |
149 _next = NULL; | |
150 } | |
151 }; | |
152 | |
153 // maintain an order of entry list of AgentLibrary | |
154 class AgentLibraryList VALUE_OBJ_CLASS_SPEC { | |
155 private: | |
156 AgentLibrary* _first; | |
157 AgentLibrary* _last; | |
158 public: | |
159 bool is_empty() const { return _first == NULL; } | |
160 AgentLibrary* first() const { return _first; } | |
161 | |
162 // add to the end of the list | |
163 void add(AgentLibrary* lib) { | |
164 if (is_empty()) { | |
165 _first = _last = lib; | |
166 } else { | |
167 _last->_next = lib; | |
168 _last = lib; | |
169 } | |
170 lib->_next = NULL; | |
171 } | |
172 | |
173 // search for and remove a library known to be in the list | |
174 void remove(AgentLibrary* lib) { | |
175 AgentLibrary* curr; | |
176 AgentLibrary* prev = NULL; | |
177 for (curr = first(); curr != NULL; prev = curr, curr = curr->next()) { | |
178 if (curr == lib) { | |
179 break; | |
180 } | |
181 } | |
182 assert(curr != NULL, "always should be found"); | |
183 | |
184 if (curr != NULL) { | |
185 // it was found, by-pass this library | |
186 if (prev == NULL) { | |
187 _first = curr->_next; | |
188 } else { | |
189 prev->_next = curr->_next; | |
190 } | |
191 if (curr == _last) { | |
192 _last = prev; | |
193 } | |
194 curr->_next = NULL; | |
195 } | |
196 } | |
197 | |
198 AgentLibraryList() { | |
199 _first = NULL; | |
200 _last = NULL; | |
201 } | |
202 }; | |
203 | |
204 | |
205 class Arguments : AllStatic { | |
206 friend class VMStructs; | |
207 friend class JvmtiExport; | |
208 public: | |
209 // Operation modi | |
210 enum Mode { | |
211 _int, // corresponds to -Xint | |
212 _mixed, // corresponds to -Xmixed | |
213 _comp // corresponds to -Xcomp | |
214 }; | |
215 | |
216 enum ArgsRange { | |
217 arg_unreadable = -3, | |
218 arg_too_small = -2, | |
219 arg_too_big = -1, | |
220 arg_in_range = 0 | |
221 }; | |
222 | |
223 private: | |
224 | |
225 // an array containing all flags specified in the .hotspotrc file | |
226 static char** _jvm_flags_array; | |
227 static int _num_jvm_flags; | |
228 // an array containing all jvm arguments specified in the command line | |
229 static char** _jvm_args_array; | |
230 static int _num_jvm_args; | |
231 // string containing all java command (class/jarfile name and app args) | |
232 static char* _java_command; | |
233 | |
234 // Property list | |
235 static SystemProperty* _system_properties; | |
236 | |
237 // Quick accessor to System properties in the list: | |
238 static SystemProperty *_java_ext_dirs; | |
239 static SystemProperty *_java_endorsed_dirs; | |
240 static SystemProperty *_sun_boot_library_path; | |
241 static SystemProperty *_java_library_path; | |
242 static SystemProperty *_java_home; | |
243 static SystemProperty *_java_class_path; | |
244 static SystemProperty *_sun_boot_class_path; | |
245 | |
246 // Meta-index for knowing what packages are in the boot class path | |
247 static char* _meta_index_path; | |
248 static char* _meta_index_dir; | |
249 | |
250 // java.vendor.url.bug, bug reporting URL for fatal errors. | |
251 static const char* _java_vendor_url_bug; | |
252 | |
253 // sun.java.launcher, private property to provide information about | |
254 // java/gamma launcher | |
255 static const char* _sun_java_launcher; | |
256 | |
257 // sun.java.launcher.pid, private property | |
258 static int _sun_java_launcher_pid; | |
259 | |
2302
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
260 // was this VM created by the gamma launcher |
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
261 static bool _created_by_gamma_launcher; |
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
262 |
0 | 263 // Option flags |
264 static bool _has_profile; | |
265 static bool _has_alloc_profile; | |
266 static const char* _gc_log_filename; | |
267 static uintx _min_heap_size; | |
268 | |
269 // -Xrun arguments | |
270 static AgentLibraryList _libraryList; | |
271 static void add_init_library(const char* name, char* options) | |
272 { _libraryList.add(new AgentLibrary(name, options, false, NULL)); } | |
273 | |
274 // -agentlib and -agentpath arguments | |
275 static AgentLibraryList _agentList; | |
276 static void add_init_agent(const char* name, char* options, bool absolute_path) | |
277 { _agentList.add(new AgentLibrary(name, options, absolute_path, NULL)); } | |
278 | |
279 // Late-binding agents not started via arguments | |
280 static void add_loaded_agent(const char* name, char* options, bool absolute_path, void* os_lib) | |
281 { _agentList.add(new AgentLibrary(name, options, absolute_path, os_lib)); } | |
282 | |
283 // Operation modi | |
284 static Mode _mode; | |
285 static void set_mode_flags(Mode mode); | |
286 static bool _java_compiler; | |
287 static void set_java_compiler(bool arg) { _java_compiler = arg; } | |
288 static bool java_compiler() { return _java_compiler; } | |
289 | |
290 // -Xdebug flag | |
291 static bool _xdebug_mode; | |
292 static void set_xdebug_mode(bool arg) { _xdebug_mode = arg; } | |
293 static bool xdebug_mode() { return _xdebug_mode; } | |
294 | |
295 // Used to save default settings | |
296 static bool _AlwaysCompileLoopMethods; | |
297 static bool _UseOnStackReplacement; | |
298 static bool _BackgroundCompilation; | |
299 static bool _ClipInlining; | |
300 static bool _CIDynamicCompilePriority; | |
301 | |
1783 | 302 // Tiered |
303 static void set_tiered_flags(); | |
0 | 304 // CMS/ParNew garbage collectors |
305 static void set_parnew_gc_flags(); | |
306 static void set_cms_and_parnew_gc_flags(); | |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
10
diff
changeset
|
307 // UseParallel[Old]GC |
0 | 308 static void set_parallel_gc_flags(); |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
10
diff
changeset
|
309 // Garbage-First (UseG1GC) |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
10
diff
changeset
|
310 static void set_g1_gc_flags(); |
0 | 311 // GC ergonomics |
8741
eac371996b44
8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
brutisso
parents:
8734
diff
changeset
|
312 static void set_use_compressed_oops(); |
0 | 313 static void set_ergonomics_flags(); |
2362
a2c2eac1ca62
7018056: large pages not always enabled by default
jcoomes
parents:
2302
diff
changeset
|
314 static void set_shared_spaces_flags(); |
8854
754c24457b20
7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents:
8741
diff
changeset
|
315 // limits the given memory size by the maximum amount of memory this process is |
754c24457b20
7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents:
8741
diff
changeset
|
316 // currently allowed to allocate or reserve. |
754c24457b20
7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
tschatzl
parents:
8741
diff
changeset
|
317 static julong limit_by_allocatable_memory(julong size); |
1064 | 318 // Setup heap size |
319 static void set_heap_size(); | |
0 | 320 // Based on automatic selection criteria, should the |
321 // low pause collector be used. | |
322 static bool should_auto_select_low_pause_collector(); | |
323 | |
324 // Bytecode rewriting | |
325 static void set_bytecode_flags(); | |
326 | |
327 // Invocation API hooks | |
328 static abort_hook_t _abort_hook; | |
329 static exit_hook_t _exit_hook; | |
330 static vfprintf_hook_t _vfprintf_hook; | |
331 | |
332 // System properties | |
333 static bool add_property(const char* prop); | |
334 | |
335 // Aggressive optimization flags. | |
336 static void set_aggressive_opts_flags(); | |
337 | |
338 // Argument parsing | |
339 static void do_pd_flag_adjustments(); | |
340 static bool parse_argument(const char* arg, FlagValueOrigin origin); | |
341 static bool process_argument(const char* arg, jboolean ignore_unrecognized, FlagValueOrigin origin); | |
342 static void process_java_launcher_argument(const char*, void*); | |
343 static void process_java_compiler_argument(char* arg); | |
344 static jint parse_options_environment_variable(const char* name, SysClassPath* scp_p, bool* scp_assembly_required_p); | |
345 static jint parse_java_tool_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p); | |
346 static jint parse_java_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p); | |
347 static jint parse_vm_init_args(const JavaVMInitArgs* args); | |
348 static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, SysClassPath* scp_p, bool* scp_assembly_required_p, FlagValueOrigin origin); | |
349 static jint finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_required); | |
350 static bool is_bad_option(const JavaVMOption* option, jboolean ignore, | |
351 const char* option_type); | |
352 static bool is_bad_option(const JavaVMOption* option, jboolean ignore) { | |
353 return is_bad_option(option, ignore, NULL); | |
354 } | |
1244
745c853ee57f
6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents:
1064
diff
changeset
|
355 static bool verify_interval(uintx val, uintx min, |
745c853ee57f
6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents:
1064
diff
changeset
|
356 uintx max, const char* name); |
1744
f8c5d1bdaad4
6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents:
1552
diff
changeset
|
357 static bool verify_min_value(intx val, intx min, const char* name); |
0 | 358 static bool verify_percentage(uintx value, const char* name); |
359 static void describe_range_error(ArgsRange errcode); | |
489
2494ab195856
6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents:
356
diff
changeset
|
360 static ArgsRange check_memory_size(julong size, julong min_size); |
2494ab195856
6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents:
356
diff
changeset
|
361 static ArgsRange parse_memory_size(const char* s, julong* long_arg, |
2494ab195856
6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents:
356
diff
changeset
|
362 julong min_size); |
1284 | 363 // Parse a string for a unsigned integer. Returns true if value |
364 // is an unsigned integer greater than or equal to the minimum | |
365 // parameter passed and returns the value in uintx_arg. Returns | |
366 // false otherwise, with uintx_arg undefined. | |
367 static bool parse_uintx(const char* value, uintx* uintx_arg, | |
368 uintx min_size); | |
0 | 369 |
370 // methods to build strings from individual args | |
371 static void build_jvm_args(const char* arg); | |
372 static void build_jvm_flags(const char* arg); | |
373 static void add_string(char*** bldarray, int* count, const char* arg); | |
374 static const char* build_resource_string(char** args, int count); | |
375 | |
376 static bool methodExists( | |
377 char* className, char* methodName, | |
378 int classesNum, char** classes, bool* allMethods, | |
379 int methodsNum, char** methods, bool* allClasses | |
380 ); | |
381 | |
382 static void parseOnlyLine( | |
383 const char* line, | |
384 short* classesNum, short* classesMax, char*** classes, bool** allMethods, | |
385 short* methodsNum, short* methodsMax, char*** methods, bool** allClasses | |
386 ); | |
387 | |
242 | 388 // Returns true if the string s is in the list of flags that have recently |
389 // been made obsolete. If we detect one of these flags on the command | |
390 // line, instead of failing we print a warning message and ignore the | |
391 // flag. This gives the user a release or so to stop using the flag. | |
392 static bool is_newly_obsolete(const char* s, JDK_Version* buffer); | |
0 | 393 |
394 static short CompileOnlyClassesNum; | |
395 static short CompileOnlyClassesMax; | |
396 static char** CompileOnlyClasses; | |
397 static bool* CompileOnlyAllMethods; | |
398 | |
399 static short CompileOnlyMethodsNum; | |
400 static short CompileOnlyMethodsMax; | |
401 static char** CompileOnlyMethods; | |
402 static bool* CompileOnlyAllClasses; | |
403 | |
404 static short InterpretOnlyClassesNum; | |
405 static short InterpretOnlyClassesMax; | |
406 static char** InterpretOnlyClasses; | |
407 static bool* InterpretOnlyAllMethods; | |
408 | |
409 static bool CheckCompileOnly; | |
410 | |
411 static char* SharedArchivePath; | |
412 | |
413 public: | |
414 // Parses the arguments | |
415 static jint parse(const JavaVMInitArgs* args); | |
7177
53715fb1597d
7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents:
6842
diff
changeset
|
416 // Adjusts the arguments after the OS have adjusted the arguments |
53715fb1597d
7198334: UseNUMA modifies system parameters on non-NUMA system
brutisso
parents:
6842
diff
changeset
|
417 static jint adjust_after_os(); |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
418 // Check for consistency in the selection of the garbage collector. |
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
419 static bool check_gc_consistency(); |
7452
e0ab18eafbde
8003820: Deprecate untested and rarely used GC combinations
brutisso
parents:
7177
diff
changeset
|
420 static void check_deprecated_gcs(); |
8734 | 421 static void check_deprecated_gc_flags(); |
0 | 422 // Check consistecy or otherwise of VM argument settings |
423 static bool check_vm_args_consistency(); | |
1744
f8c5d1bdaad4
6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents:
1552
diff
changeset
|
424 // Check stack pages settings |
f8c5d1bdaad4
6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents:
1552
diff
changeset
|
425 static bool check_stack_pages(); |
0 | 426 // Used by os_solaris |
427 static bool process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized); | |
428 | |
429 // return a char* array containing all options | |
430 static char** jvm_flags_array() { return _jvm_flags_array; } | |
431 static char** jvm_args_array() { return _jvm_args_array; } | |
432 static int num_jvm_flags() { return _num_jvm_flags; } | |
433 static int num_jvm_args() { return _num_jvm_args; } | |
434 // return the arguments passed to the Java application | |
435 static const char* java_command() { return _java_command; } | |
436 | |
437 // print jvm_flags, jvm_args and java_command | |
438 static void print_on(outputStream* st); | |
439 | |
440 // convenient methods to obtain / print jvm_flags and jvm_args | |
441 static const char* jvm_flags() { return build_resource_string(_jvm_flags_array, _num_jvm_flags); } | |
442 static const char* jvm_args() { return build_resource_string(_jvm_args_array, _num_jvm_args); } | |
443 static void print_jvm_flags_on(outputStream* st); | |
444 static void print_jvm_args_on(outputStream* st); | |
445 | |
446 // -Dkey=value flags | |
447 static SystemProperty* system_properties() { return _system_properties; } | |
448 static const char* get_property(const char* key); | |
449 | |
450 // -Djava.vendor.url.bug | |
451 static const char* java_vendor_url_bug() { return _java_vendor_url_bug; } | |
452 | |
453 // -Dsun.java.launcher | |
454 static const char* sun_java_launcher() { return _sun_java_launcher; } | |
455 // Was VM created by a Java launcher? | |
456 static bool created_by_java_launcher(); | |
2302
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
457 // Was VM created by the gamma Java launcher? |
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
458 static bool created_by_gamma_launcher(); |
0 | 459 // -Dsun.java.launcher.pid |
460 static int sun_java_launcher_pid() { return _sun_java_launcher_pid; } | |
461 | |
462 // -Xloggc:<file>, if not specified will be NULL | |
463 static const char* gc_log_filename() { return _gc_log_filename; } | |
464 | |
465 // -Xprof/-Xaprof | |
466 static bool has_profile() { return _has_profile; } | |
467 static bool has_alloc_profile() { return _has_alloc_profile; } | |
468 | |
1064 | 469 // -Xms, -Xmx |
0 | 470 static uintx min_heap_size() { return _min_heap_size; } |
471 static void set_min_heap_size(uintx v) { _min_heap_size = v; } | |
472 | |
473 // -Xrun | |
474 static AgentLibrary* libraries() { return _libraryList.first(); } | |
475 static bool init_libraries_at_startup() { return !_libraryList.is_empty(); } | |
476 static void convert_library_to_agent(AgentLibrary* lib) | |
477 { _libraryList.remove(lib); | |
478 _agentList.add(lib); } | |
479 | |
480 // -agentlib -agentpath | |
481 static AgentLibrary* agents() { return _agentList.first(); } | |
482 static bool init_agents_at_startup() { return !_agentList.is_empty(); } | |
483 | |
484 // abort, exit, vfprintf hooks | |
485 static abort_hook_t abort_hook() { return _abort_hook; } | |
486 static exit_hook_t exit_hook() { return _exit_hook; } | |
487 static vfprintf_hook_t vfprintf_hook() { return _vfprintf_hook; } | |
488 | |
489 static bool GetCheckCompileOnly () { return CheckCompileOnly; } | |
490 | |
491 static const char* GetSharedArchivePath() { return SharedArchivePath; } | |
492 | |
493 static bool CompileMethod(char* className, char* methodName) { | |
494 return | |
495 methodExists( | |
496 className, methodName, | |
497 CompileOnlyClassesNum, CompileOnlyClasses, CompileOnlyAllMethods, | |
498 CompileOnlyMethodsNum, CompileOnlyMethods, CompileOnlyAllClasses | |
499 ); | |
500 } | |
501 | |
502 // Java launcher properties | |
503 static void process_sun_java_launcher_properties(JavaVMInitArgs* args); | |
504 | |
505 // System properties | |
506 static void init_system_properties(); | |
507 | |
1864
dfb38ea7da17
6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents:
1783
diff
changeset
|
508 // Update/Initialize System properties after JDK version number is known |
dfb38ea7da17
6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents:
1783
diff
changeset
|
509 static void init_version_specific_system_properties(); |
dfb38ea7da17
6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents:
1783
diff
changeset
|
510 |
691 | 511 // Property List manipulation |
0 | 512 static void PropertyList_add(SystemProperty** plist, SystemProperty *element); |
513 static void PropertyList_add(SystemProperty** plist, const char* k, char* v); | |
691 | 514 static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v) { |
515 PropertyList_unique_add(plist, k, v, false); | |
516 } | |
517 static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v, jboolean append); | |
0 | 518 static const char* PropertyList_get_value(SystemProperty* plist, const char* key); |
519 static int PropertyList_count(SystemProperty* pl); | |
520 static const char* PropertyList_get_key_at(SystemProperty* pl,int index); | |
521 static char* PropertyList_get_value_at(SystemProperty* pl,int index); | |
522 | |
523 // Miscellaneous System property value getter and setters. | |
524 static void set_dll_dir(char *value) { _sun_boot_library_path->set_value(value); } | |
525 static void set_java_home(char *value) { _java_home->set_value(value); } | |
526 static void set_library_path(char *value) { _java_library_path->set_value(value); } | |
527 static void set_ext_dirs(char *value) { _java_ext_dirs->set_value(value); } | |
528 static void set_endorsed_dirs(char *value) { _java_endorsed_dirs->set_value(value); } | |
529 static void set_sysclasspath(char *value) { _sun_boot_class_path->set_value(value); } | |
530 static void append_sysclasspath(const char *value) { _sun_boot_class_path->append_value(value); } | |
531 static void set_meta_index_path(char* meta_index_path, char* meta_index_dir) { | |
532 _meta_index_path = meta_index_path; | |
533 _meta_index_dir = meta_index_dir; | |
534 } | |
535 | |
536 static char *get_java_home() { return _java_home->value(); } | |
537 static char *get_dll_dir() { return _sun_boot_library_path->value(); } | |
538 static char *get_endorsed_dir() { return _java_endorsed_dirs->value(); } | |
539 static char *get_sysclasspath() { return _sun_boot_class_path->value(); } | |
540 static char* get_meta_index_path() { return _meta_index_path; } | |
541 static char* get_meta_index_dir() { return _meta_index_dir; } | |
542 | |
543 // Operation modi | |
544 static Mode mode() { return _mode; } | |
545 | |
546 // Utility: copies src into buf, replacing "%%" with "%" and "%p" with pid. | |
547 static bool copy_expand_pid(const char* src, size_t srclen, char* buf, size_t buflen); | |
548 }; | |
1972 | 549 |
550 #endif // SHARE_VM_RUNTIME_ARGUMENTS_HPP |