Mercurial > hg > graal-jvmci-8
annotate src/share/vm/runtime/arguments.hpp @ 3979:4dfb2df418f2
6484982: G1: process references during evacuation pauses
Summary: G1 now uses two reference processors - one is used by concurrent marking and the other is used by STW GCs (both full and incremental evacuation pauses). In an evacuation pause, the reference processor is embedded into the closures used to scan objects. Doing so causes causes reference objects to be 'discovered' by the reference processor. At the end of the evacuation pause, these discovered reference objects are processed - preserving (and copying) referent objects (and their reachable graphs) as appropriate.
Reviewed-by: ysr, jwilhelm, brutisso, stefank, tonyp
author | johnc |
---|---|
date | Thu, 22 Sep 2011 10:57:37 -0700 |
parents | a2c2eac1ca62 |
children | 0654ee04b214 d2a62e0f25eb |
rev | line source |
---|---|
0 | 1 /* |
2302
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
2 * Copyright (c) 1997, 2011, 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 | |
47 class SystemProperty: public CHeapObj { | |
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 } | |
66 _value = AllocateHeap(strlen(value)+1); | |
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 } | |
83 sp = AllocateHeap(len+2); | |
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 { | |
103 _key = AllocateHeap(strlen(key)+1); | |
104 strcpy(_key, key); | |
105 } | |
106 if (value == NULL) { | |
107 _value = NULL; | |
108 } else { | |
109 _value = AllocateHeap(strlen(value)+1); | |
110 strcpy(_value, value); | |
111 } | |
112 _next = NULL; | |
113 _writeable = writeable; | |
114 } | |
115 }; | |
116 | |
117 | |
118 // For use by -agentlib, -agentpath and -Xrun | |
119 class AgentLibrary : public CHeapObj { | |
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) { | |
139 _name = AllocateHeap(strlen(name)+1); | |
140 strcpy(_name, name); | |
141 if (options == NULL) { | |
142 _options = NULL; | |
143 } else { | |
144 _options = AllocateHeap(strlen(options)+1); | |
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 |
312 static void set_ergonomics_flags(); | |
2362
a2c2eac1ca62
7018056: large pages not always enabled by default
jcoomes
parents:
2302
diff
changeset
|
313 static void set_shared_spaces_flags(); |
1064 | 314 // Setup heap size |
315 static void set_heap_size(); | |
0 | 316 // Based on automatic selection criteria, should the |
317 // low pause collector be used. | |
318 static bool should_auto_select_low_pause_collector(); | |
319 | |
320 // Bytecode rewriting | |
321 static void set_bytecode_flags(); | |
322 | |
323 // Invocation API hooks | |
324 static abort_hook_t _abort_hook; | |
325 static exit_hook_t _exit_hook; | |
326 static vfprintf_hook_t _vfprintf_hook; | |
327 | |
328 // System properties | |
329 static bool add_property(const char* prop); | |
330 | |
331 // Aggressive optimization flags. | |
332 static void set_aggressive_opts_flags(); | |
333 | |
334 // Argument parsing | |
335 static void do_pd_flag_adjustments(); | |
336 static bool parse_argument(const char* arg, FlagValueOrigin origin); | |
337 static bool process_argument(const char* arg, jboolean ignore_unrecognized, FlagValueOrigin origin); | |
338 static void process_java_launcher_argument(const char*, void*); | |
339 static void process_java_compiler_argument(char* arg); | |
340 static jint parse_options_environment_variable(const char* name, SysClassPath* scp_p, bool* scp_assembly_required_p); | |
341 static jint parse_java_tool_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p); | |
342 static jint parse_java_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p); | |
343 static jint parse_vm_init_args(const JavaVMInitArgs* args); | |
344 static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, SysClassPath* scp_p, bool* scp_assembly_required_p, FlagValueOrigin origin); | |
345 static jint finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_required); | |
346 static bool is_bad_option(const JavaVMOption* option, jboolean ignore, | |
347 const char* option_type); | |
348 static bool is_bad_option(const JavaVMOption* option, jboolean ignore) { | |
349 return is_bad_option(option, ignore, NULL); | |
350 } | |
1244
745c853ee57f
6885297: java -XX:RefDiscoveryPolicy=2 or -XX:TLABWasteTargetPercent=0 cause VM crash
johnc
parents:
1064
diff
changeset
|
351 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
|
352 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
|
353 static bool verify_min_value(intx val, intx min, const char* name); |
0 | 354 static bool verify_percentage(uintx value, const char* name); |
355 static void describe_range_error(ArgsRange errcode); | |
489
2494ab195856
6653214: MemoryPoolMXBean.setUsageThreshold() does not support large heap sizes.
swamyv
parents:
356
diff
changeset
|
356 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
|
357 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
|
358 julong min_size); |
1284 | 359 // Parse a string for a unsigned integer. Returns true if value |
360 // is an unsigned integer greater than or equal to the minimum | |
361 // parameter passed and returns the value in uintx_arg. Returns | |
362 // false otherwise, with uintx_arg undefined. | |
363 static bool parse_uintx(const char* value, uintx* uintx_arg, | |
364 uintx min_size); | |
0 | 365 |
366 // methods to build strings from individual args | |
367 static void build_jvm_args(const char* arg); | |
368 static void build_jvm_flags(const char* arg); | |
369 static void add_string(char*** bldarray, int* count, const char* arg); | |
370 static const char* build_resource_string(char** args, int count); | |
371 | |
372 static bool methodExists( | |
373 char* className, char* methodName, | |
374 int classesNum, char** classes, bool* allMethods, | |
375 int methodsNum, char** methods, bool* allClasses | |
376 ); | |
377 | |
378 static void parseOnlyLine( | |
379 const char* line, | |
380 short* classesNum, short* classesMax, char*** classes, bool** allMethods, | |
381 short* methodsNum, short* methodsMax, char*** methods, bool** allClasses | |
382 ); | |
383 | |
242 | 384 // Returns true if the string s is in the list of flags that have recently |
385 // been made obsolete. If we detect one of these flags on the command | |
386 // line, instead of failing we print a warning message and ignore the | |
387 // flag. This gives the user a release or so to stop using the flag. | |
388 static bool is_newly_obsolete(const char* s, JDK_Version* buffer); | |
0 | 389 |
390 static short CompileOnlyClassesNum; | |
391 static short CompileOnlyClassesMax; | |
392 static char** CompileOnlyClasses; | |
393 static bool* CompileOnlyAllMethods; | |
394 | |
395 static short CompileOnlyMethodsNum; | |
396 static short CompileOnlyMethodsMax; | |
397 static char** CompileOnlyMethods; | |
398 static bool* CompileOnlyAllClasses; | |
399 | |
400 static short InterpretOnlyClassesNum; | |
401 static short InterpretOnlyClassesMax; | |
402 static char** InterpretOnlyClasses; | |
403 static bool* InterpretOnlyAllMethods; | |
404 | |
405 static bool CheckCompileOnly; | |
406 | |
407 static char* SharedArchivePath; | |
408 | |
409 public: | |
410 // Parses the arguments | |
411 static jint parse(const JavaVMInitArgs* args); | |
10
28372612af5e
6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents:
0
diff
changeset
|
412 // 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
|
413 static bool check_gc_consistency(); |
0 | 414 // Check consistecy or otherwise of VM argument settings |
415 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
|
416 // Check stack pages settings |
f8c5d1bdaad4
6885308: The incorrect -XX:StackRedPages, -XX:StackShadowPages, -XX:StackYellowPages could cause VM crash
ptisnovs
parents:
1552
diff
changeset
|
417 static bool check_stack_pages(); |
0 | 418 // Used by os_solaris |
419 static bool process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized); | |
420 | |
421 // return a char* array containing all options | |
422 static char** jvm_flags_array() { return _jvm_flags_array; } | |
423 static char** jvm_args_array() { return _jvm_args_array; } | |
424 static int num_jvm_flags() { return _num_jvm_flags; } | |
425 static int num_jvm_args() { return _num_jvm_args; } | |
426 // return the arguments passed to the Java application | |
427 static const char* java_command() { return _java_command; } | |
428 | |
429 // print jvm_flags, jvm_args and java_command | |
430 static void print_on(outputStream* st); | |
431 | |
432 // convenient methods to obtain / print jvm_flags and jvm_args | |
433 static const char* jvm_flags() { return build_resource_string(_jvm_flags_array, _num_jvm_flags); } | |
434 static const char* jvm_args() { return build_resource_string(_jvm_args_array, _num_jvm_args); } | |
435 static void print_jvm_flags_on(outputStream* st); | |
436 static void print_jvm_args_on(outputStream* st); | |
437 | |
438 // -Dkey=value flags | |
439 static SystemProperty* system_properties() { return _system_properties; } | |
440 static const char* get_property(const char* key); | |
441 | |
442 // -Djava.vendor.url.bug | |
443 static const char* java_vendor_url_bug() { return _java_vendor_url_bug; } | |
444 | |
445 // -Dsun.java.launcher | |
446 static const char* sun_java_launcher() { return _sun_java_launcher; } | |
447 // Was VM created by a Java launcher? | |
448 static bool created_by_java_launcher(); | |
2302
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
449 // Was VM created by the gamma Java launcher? |
da091bb67459
7022037: Pause when exiting if debugger is attached on windows
sla
parents:
1972
diff
changeset
|
450 static bool created_by_gamma_launcher(); |
0 | 451 // -Dsun.java.launcher.pid |
452 static int sun_java_launcher_pid() { return _sun_java_launcher_pid; } | |
453 | |
454 // -Xloggc:<file>, if not specified will be NULL | |
455 static const char* gc_log_filename() { return _gc_log_filename; } | |
456 | |
457 // -Xprof/-Xaprof | |
458 static bool has_profile() { return _has_profile; } | |
459 static bool has_alloc_profile() { return _has_alloc_profile; } | |
460 | |
1064 | 461 // -Xms, -Xmx |
0 | 462 static uintx min_heap_size() { return _min_heap_size; } |
463 static void set_min_heap_size(uintx v) { _min_heap_size = v; } | |
464 | |
465 // -Xrun | |
466 static AgentLibrary* libraries() { return _libraryList.first(); } | |
467 static bool init_libraries_at_startup() { return !_libraryList.is_empty(); } | |
468 static void convert_library_to_agent(AgentLibrary* lib) | |
469 { _libraryList.remove(lib); | |
470 _agentList.add(lib); } | |
471 | |
472 // -agentlib -agentpath | |
473 static AgentLibrary* agents() { return _agentList.first(); } | |
474 static bool init_agents_at_startup() { return !_agentList.is_empty(); } | |
475 | |
476 // abort, exit, vfprintf hooks | |
477 static abort_hook_t abort_hook() { return _abort_hook; } | |
478 static exit_hook_t exit_hook() { return _exit_hook; } | |
479 static vfprintf_hook_t vfprintf_hook() { return _vfprintf_hook; } | |
480 | |
481 static bool GetCheckCompileOnly () { return CheckCompileOnly; } | |
482 | |
483 static const char* GetSharedArchivePath() { return SharedArchivePath; } | |
484 | |
485 static bool CompileMethod(char* className, char* methodName) { | |
486 return | |
487 methodExists( | |
488 className, methodName, | |
489 CompileOnlyClassesNum, CompileOnlyClasses, CompileOnlyAllMethods, | |
490 CompileOnlyMethodsNum, CompileOnlyMethods, CompileOnlyAllClasses | |
491 ); | |
492 } | |
493 | |
494 // Java launcher properties | |
495 static void process_sun_java_launcher_properties(JavaVMInitArgs* args); | |
496 | |
497 // System properties | |
498 static void init_system_properties(); | |
499 | |
1864
dfb38ea7da17
6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents:
1783
diff
changeset
|
500 // Update/Initialize System properties after JDK version number is known |
dfb38ea7da17
6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents:
1783
diff
changeset
|
501 static void init_version_specific_system_properties(); |
dfb38ea7da17
6988363: Rebrand vm vendor property settings (jdk7 only)
zgu
parents:
1783
diff
changeset
|
502 |
691 | 503 // Property List manipulation |
0 | 504 static void PropertyList_add(SystemProperty** plist, SystemProperty *element); |
505 static void PropertyList_add(SystemProperty** plist, const char* k, char* v); | |
691 | 506 static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v) { |
507 PropertyList_unique_add(plist, k, v, false); | |
508 } | |
509 static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v, jboolean append); | |
0 | 510 static const char* PropertyList_get_value(SystemProperty* plist, const char* key); |
511 static int PropertyList_count(SystemProperty* pl); | |
512 static const char* PropertyList_get_key_at(SystemProperty* pl,int index); | |
513 static char* PropertyList_get_value_at(SystemProperty* pl,int index); | |
514 | |
515 // Miscellaneous System property value getter and setters. | |
516 static void set_dll_dir(char *value) { _sun_boot_library_path->set_value(value); } | |
517 static void set_java_home(char *value) { _java_home->set_value(value); } | |
518 static void set_library_path(char *value) { _java_library_path->set_value(value); } | |
519 static void set_ext_dirs(char *value) { _java_ext_dirs->set_value(value); } | |
520 static void set_endorsed_dirs(char *value) { _java_endorsed_dirs->set_value(value); } | |
521 static void set_sysclasspath(char *value) { _sun_boot_class_path->set_value(value); } | |
522 static void append_sysclasspath(const char *value) { _sun_boot_class_path->append_value(value); } | |
523 static void set_meta_index_path(char* meta_index_path, char* meta_index_dir) { | |
524 _meta_index_path = meta_index_path; | |
525 _meta_index_dir = meta_index_dir; | |
526 } | |
527 | |
528 static char *get_java_home() { return _java_home->value(); } | |
529 static char *get_dll_dir() { return _sun_boot_library_path->value(); } | |
530 static char *get_endorsed_dir() { return _java_endorsed_dirs->value(); } | |
531 static char *get_sysclasspath() { return _sun_boot_class_path->value(); } | |
532 static char* get_meta_index_path() { return _meta_index_path; } | |
533 static char* get_meta_index_dir() { return _meta_index_dir; } | |
534 | |
535 // Operation modi | |
536 static Mode mode() { return _mode; } | |
537 | |
538 // Utility: copies src into buf, replacing "%%" with "%" and "%p" with pid. | |
539 static bool copy_expand_pid(const char* src, size_t srclen, char* buf, size_t buflen); | |
540 | |
541 #ifdef KERNEL | |
542 // For java kernel vm, return property string for kernel properties. | |
543 static char *get_kernel_properties(); | |
544 #endif // KERNEL | |
545 }; | |
1972 | 546 |
547 #endif // SHARE_VM_RUNTIME_ARGUMENTS_HPP |