annotate src/share/vm/runtime/arguments.hpp @ 94:0834225a7916

6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction Summary: The option CMSInitiatingPermOccupancyFraction now controls perm triggering threshold. Even though the actual value of the threshold has not yet been changed, so there is no change in policy, we now have the infrastructure in place for dynamically deciding when to collect the perm gen, an issue that will be addressed in the near future. Reviewed-by: jmasa
author ysr
date Sun, 16 Mar 2008 21:57:25 -0700
parents 28372612af5e
children d1605aabd0a1 37f87013dfd8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
2 * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
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 *
a61af66fc99e Initial load
duke
parents:
diff changeset
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
a61af66fc99e Initial load
duke
parents:
diff changeset
20 * CA 95054 USA or visit www.sun.com if you need additional information or
a61af66fc99e Initial load
duke
parents:
diff changeset
21 * have any questions.
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 // Arguments parses the command line and recognizes options
a61af66fc99e Initial load
duke
parents:
diff changeset
26
a61af66fc99e Initial load
duke
parents:
diff changeset
27 // Invocation API hook typedefs (these should really be defined in jni.hpp)
a61af66fc99e Initial load
duke
parents:
diff changeset
28 extern "C" {
a61af66fc99e Initial load
duke
parents:
diff changeset
29 typedef void (JNICALL *abort_hook_t)(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
30 typedef void (JNICALL *exit_hook_t)(jint code);
a61af66fc99e Initial load
duke
parents:
diff changeset
31 typedef jint (JNICALL *vfprintf_hook_t)(FILE *fp, const char *format, va_list args);
a61af66fc99e Initial load
duke
parents:
diff changeset
32 }
a61af66fc99e Initial load
duke
parents:
diff changeset
33
a61af66fc99e Initial load
duke
parents:
diff changeset
34 // Forward declarations
a61af66fc99e Initial load
duke
parents:
diff changeset
35
a61af66fc99e Initial load
duke
parents:
diff changeset
36 class SysClassPath;
a61af66fc99e Initial load
duke
parents:
diff changeset
37
a61af66fc99e Initial load
duke
parents:
diff changeset
38 // Element describing System and User (-Dkey=value flags) defined property.
a61af66fc99e Initial load
duke
parents:
diff changeset
39
a61af66fc99e Initial load
duke
parents:
diff changeset
40 class SystemProperty: public CHeapObj {
a61af66fc99e Initial load
duke
parents:
diff changeset
41 private:
a61af66fc99e Initial load
duke
parents:
diff changeset
42 char* _key;
a61af66fc99e Initial load
duke
parents:
diff changeset
43 char* _value;
a61af66fc99e Initial load
duke
parents:
diff changeset
44 SystemProperty* _next;
a61af66fc99e Initial load
duke
parents:
diff changeset
45 bool _writeable;
a61af66fc99e Initial load
duke
parents:
diff changeset
46 bool writeable() { return _writeable; }
a61af66fc99e Initial load
duke
parents:
diff changeset
47
a61af66fc99e Initial load
duke
parents:
diff changeset
48 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
49 // Accessors
a61af66fc99e Initial load
duke
parents:
diff changeset
50 const char* key() const { return _key; }
a61af66fc99e Initial load
duke
parents:
diff changeset
51 char* value() const { return _value; }
a61af66fc99e Initial load
duke
parents:
diff changeset
52 SystemProperty* next() const { return _next; }
a61af66fc99e Initial load
duke
parents:
diff changeset
53 void set_next(SystemProperty* next) { _next = next; }
a61af66fc99e Initial load
duke
parents:
diff changeset
54 bool set_value(char *value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
55 if (writeable()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
56 if (_value != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
57 FreeHeap(_value);
a61af66fc99e Initial load
duke
parents:
diff changeset
58 }
a61af66fc99e Initial load
duke
parents:
diff changeset
59 _value = AllocateHeap(strlen(value)+1);
a61af66fc99e Initial load
duke
parents:
diff changeset
60 if (_value != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
61 strcpy(_value, value);
a61af66fc99e Initial load
duke
parents:
diff changeset
62 }
a61af66fc99e Initial load
duke
parents:
diff changeset
63 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
64 }
a61af66fc99e Initial load
duke
parents:
diff changeset
65 return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
66 }
a61af66fc99e Initial load
duke
parents:
diff changeset
67
a61af66fc99e Initial load
duke
parents:
diff changeset
68 void append_value(const char *value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
69 char *sp;
a61af66fc99e Initial load
duke
parents:
diff changeset
70 size_t len = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
71 if (value != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
72 len = strlen(value);
a61af66fc99e Initial load
duke
parents:
diff changeset
73 if (_value != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
74 len += strlen(_value);
a61af66fc99e Initial load
duke
parents:
diff changeset
75 }
a61af66fc99e Initial load
duke
parents:
diff changeset
76 sp = AllocateHeap(len+2);
a61af66fc99e Initial load
duke
parents:
diff changeset
77 if (sp != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
78 if (_value != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
79 strcpy(sp, _value);
a61af66fc99e Initial load
duke
parents:
diff changeset
80 strcat(sp, os::path_separator());
a61af66fc99e Initial load
duke
parents:
diff changeset
81 strcat(sp, value);
a61af66fc99e Initial load
duke
parents:
diff changeset
82 FreeHeap(_value);
a61af66fc99e Initial load
duke
parents:
diff changeset
83 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
84 strcpy(sp, value);
a61af66fc99e Initial load
duke
parents:
diff changeset
85 }
a61af66fc99e Initial load
duke
parents:
diff changeset
86 _value = sp;
a61af66fc99e Initial load
duke
parents:
diff changeset
87 }
a61af66fc99e Initial load
duke
parents:
diff changeset
88 }
a61af66fc99e Initial load
duke
parents:
diff changeset
89 }
a61af66fc99e Initial load
duke
parents:
diff changeset
90
a61af66fc99e Initial load
duke
parents:
diff changeset
91 // Constructor
a61af66fc99e Initial load
duke
parents:
diff changeset
92 SystemProperty(const char* key, const char* value, bool writeable) {
a61af66fc99e Initial load
duke
parents:
diff changeset
93 if (key == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
94 _key = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
95 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
96 _key = AllocateHeap(strlen(key)+1);
a61af66fc99e Initial load
duke
parents:
diff changeset
97 strcpy(_key, key);
a61af66fc99e Initial load
duke
parents:
diff changeset
98 }
a61af66fc99e Initial load
duke
parents:
diff changeset
99 if (value == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
100 _value = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
101 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
102 _value = AllocateHeap(strlen(value)+1);
a61af66fc99e Initial load
duke
parents:
diff changeset
103 strcpy(_value, value);
a61af66fc99e Initial load
duke
parents:
diff changeset
104 }
a61af66fc99e Initial load
duke
parents:
diff changeset
105 _next = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
106 _writeable = writeable;
a61af66fc99e Initial load
duke
parents:
diff changeset
107 }
a61af66fc99e Initial load
duke
parents:
diff changeset
108 };
a61af66fc99e Initial load
duke
parents:
diff changeset
109
a61af66fc99e Initial load
duke
parents:
diff changeset
110
a61af66fc99e Initial load
duke
parents:
diff changeset
111 // For use by -agentlib, -agentpath and -Xrun
a61af66fc99e Initial load
duke
parents:
diff changeset
112 class AgentLibrary : public CHeapObj {
a61af66fc99e Initial load
duke
parents:
diff changeset
113 friend class AgentLibraryList;
a61af66fc99e Initial load
duke
parents:
diff changeset
114 private:
a61af66fc99e Initial load
duke
parents:
diff changeset
115 char* _name;
a61af66fc99e Initial load
duke
parents:
diff changeset
116 char* _options;
a61af66fc99e Initial load
duke
parents:
diff changeset
117 void* _os_lib;
a61af66fc99e Initial load
duke
parents:
diff changeset
118 bool _is_absolute_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
119 AgentLibrary* _next;
a61af66fc99e Initial load
duke
parents:
diff changeset
120
a61af66fc99e Initial load
duke
parents:
diff changeset
121 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
122 // Accessors
a61af66fc99e Initial load
duke
parents:
diff changeset
123 const char* name() const { return _name; }
a61af66fc99e Initial load
duke
parents:
diff changeset
124 char* options() const { return _options; }
a61af66fc99e Initial load
duke
parents:
diff changeset
125 bool is_absolute_path() const { return _is_absolute_path; }
a61af66fc99e Initial load
duke
parents:
diff changeset
126 void* os_lib() const { return _os_lib; }
a61af66fc99e Initial load
duke
parents:
diff changeset
127 void set_os_lib(void* os_lib) { _os_lib = os_lib; }
a61af66fc99e Initial load
duke
parents:
diff changeset
128 AgentLibrary* next() const { return _next; }
a61af66fc99e Initial load
duke
parents:
diff changeset
129
a61af66fc99e Initial load
duke
parents:
diff changeset
130 // Constructor
a61af66fc99e Initial load
duke
parents:
diff changeset
131 AgentLibrary(const char* name, const char* options, bool is_absolute_path, void* os_lib) {
a61af66fc99e Initial load
duke
parents:
diff changeset
132 _name = AllocateHeap(strlen(name)+1);
a61af66fc99e Initial load
duke
parents:
diff changeset
133 strcpy(_name, name);
a61af66fc99e Initial load
duke
parents:
diff changeset
134 if (options == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
135 _options = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
136 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
137 _options = AllocateHeap(strlen(options)+1);
a61af66fc99e Initial load
duke
parents:
diff changeset
138 strcpy(_options, options);
a61af66fc99e Initial load
duke
parents:
diff changeset
139 }
a61af66fc99e Initial load
duke
parents:
diff changeset
140 _is_absolute_path = is_absolute_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
141 _os_lib = os_lib;
a61af66fc99e Initial load
duke
parents:
diff changeset
142 _next = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
143 }
a61af66fc99e Initial load
duke
parents:
diff changeset
144 };
a61af66fc99e Initial load
duke
parents:
diff changeset
145
a61af66fc99e Initial load
duke
parents:
diff changeset
146 // maintain an order of entry list of AgentLibrary
a61af66fc99e Initial load
duke
parents:
diff changeset
147 class AgentLibraryList VALUE_OBJ_CLASS_SPEC {
a61af66fc99e Initial load
duke
parents:
diff changeset
148 private:
a61af66fc99e Initial load
duke
parents:
diff changeset
149 AgentLibrary* _first;
a61af66fc99e Initial load
duke
parents:
diff changeset
150 AgentLibrary* _last;
a61af66fc99e Initial load
duke
parents:
diff changeset
151 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
152 bool is_empty() const { return _first == NULL; }
a61af66fc99e Initial load
duke
parents:
diff changeset
153 AgentLibrary* first() const { return _first; }
a61af66fc99e Initial load
duke
parents:
diff changeset
154
a61af66fc99e Initial load
duke
parents:
diff changeset
155 // add to the end of the list
a61af66fc99e Initial load
duke
parents:
diff changeset
156 void add(AgentLibrary* lib) {
a61af66fc99e Initial load
duke
parents:
diff changeset
157 if (is_empty()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
158 _first = _last = lib;
a61af66fc99e Initial load
duke
parents:
diff changeset
159 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
160 _last->_next = lib;
a61af66fc99e Initial load
duke
parents:
diff changeset
161 _last = lib;
a61af66fc99e Initial load
duke
parents:
diff changeset
162 }
a61af66fc99e Initial load
duke
parents:
diff changeset
163 lib->_next = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
164 }
a61af66fc99e Initial load
duke
parents:
diff changeset
165
a61af66fc99e Initial load
duke
parents:
diff changeset
166 // search for and remove a library known to be in the list
a61af66fc99e Initial load
duke
parents:
diff changeset
167 void remove(AgentLibrary* lib) {
a61af66fc99e Initial load
duke
parents:
diff changeset
168 AgentLibrary* curr;
a61af66fc99e Initial load
duke
parents:
diff changeset
169 AgentLibrary* prev = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
170 for (curr = first(); curr != NULL; prev = curr, curr = curr->next()) {
a61af66fc99e Initial load
duke
parents:
diff changeset
171 if (curr == lib) {
a61af66fc99e Initial load
duke
parents:
diff changeset
172 break;
a61af66fc99e Initial load
duke
parents:
diff changeset
173 }
a61af66fc99e Initial load
duke
parents:
diff changeset
174 }
a61af66fc99e Initial load
duke
parents:
diff changeset
175 assert(curr != NULL, "always should be found");
a61af66fc99e Initial load
duke
parents:
diff changeset
176
a61af66fc99e Initial load
duke
parents:
diff changeset
177 if (curr != NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
178 // it was found, by-pass this library
a61af66fc99e Initial load
duke
parents:
diff changeset
179 if (prev == NULL) {
a61af66fc99e Initial load
duke
parents:
diff changeset
180 _first = curr->_next;
a61af66fc99e Initial load
duke
parents:
diff changeset
181 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
182 prev->_next = curr->_next;
a61af66fc99e Initial load
duke
parents:
diff changeset
183 }
a61af66fc99e Initial load
duke
parents:
diff changeset
184 if (curr == _last) {
a61af66fc99e Initial load
duke
parents:
diff changeset
185 _last = prev;
a61af66fc99e Initial load
duke
parents:
diff changeset
186 }
a61af66fc99e Initial load
duke
parents:
diff changeset
187 curr->_next = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
188 }
a61af66fc99e Initial load
duke
parents:
diff changeset
189 }
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 AgentLibraryList() {
a61af66fc99e Initial load
duke
parents:
diff changeset
192 _first = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
193 _last = NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
194 }
a61af66fc99e Initial load
duke
parents:
diff changeset
195 };
a61af66fc99e Initial load
duke
parents:
diff changeset
196
a61af66fc99e Initial load
duke
parents:
diff changeset
197
a61af66fc99e Initial load
duke
parents:
diff changeset
198 class Arguments : AllStatic {
a61af66fc99e Initial load
duke
parents:
diff changeset
199 friend class VMStructs;
a61af66fc99e Initial load
duke
parents:
diff changeset
200 friend class JvmtiExport;
a61af66fc99e Initial load
duke
parents:
diff changeset
201 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
202 // Operation modi
a61af66fc99e Initial load
duke
parents:
diff changeset
203 enum Mode {
a61af66fc99e Initial load
duke
parents:
diff changeset
204 _int, // corresponds to -Xint
a61af66fc99e Initial load
duke
parents:
diff changeset
205 _mixed, // corresponds to -Xmixed
a61af66fc99e Initial load
duke
parents:
diff changeset
206 _comp // corresponds to -Xcomp
a61af66fc99e Initial load
duke
parents:
diff changeset
207 };
a61af66fc99e Initial load
duke
parents:
diff changeset
208
a61af66fc99e Initial load
duke
parents:
diff changeset
209 enum ArgsRange {
a61af66fc99e Initial load
duke
parents:
diff changeset
210 arg_unreadable = -3,
a61af66fc99e Initial load
duke
parents:
diff changeset
211 arg_too_small = -2,
a61af66fc99e Initial load
duke
parents:
diff changeset
212 arg_too_big = -1,
a61af66fc99e Initial load
duke
parents:
diff changeset
213 arg_in_range = 0
a61af66fc99e Initial load
duke
parents:
diff changeset
214 };
a61af66fc99e Initial load
duke
parents:
diff changeset
215
a61af66fc99e Initial load
duke
parents:
diff changeset
216 private:
a61af66fc99e Initial load
duke
parents:
diff changeset
217
a61af66fc99e Initial load
duke
parents:
diff changeset
218 // an array containing all flags specified in the .hotspotrc file
a61af66fc99e Initial load
duke
parents:
diff changeset
219 static char** _jvm_flags_array;
a61af66fc99e Initial load
duke
parents:
diff changeset
220 static int _num_jvm_flags;
a61af66fc99e Initial load
duke
parents:
diff changeset
221 // an array containing all jvm arguments specified in the command line
a61af66fc99e Initial load
duke
parents:
diff changeset
222 static char** _jvm_args_array;
a61af66fc99e Initial load
duke
parents:
diff changeset
223 static int _num_jvm_args;
a61af66fc99e Initial load
duke
parents:
diff changeset
224 // string containing all java command (class/jarfile name and app args)
a61af66fc99e Initial load
duke
parents:
diff changeset
225 static char* _java_command;
a61af66fc99e Initial load
duke
parents:
diff changeset
226
a61af66fc99e Initial load
duke
parents:
diff changeset
227 // Property list
a61af66fc99e Initial load
duke
parents:
diff changeset
228 static SystemProperty* _system_properties;
a61af66fc99e Initial load
duke
parents:
diff changeset
229
a61af66fc99e Initial load
duke
parents:
diff changeset
230 // Quick accessor to System properties in the list:
a61af66fc99e Initial load
duke
parents:
diff changeset
231 static SystemProperty *_java_ext_dirs;
a61af66fc99e Initial load
duke
parents:
diff changeset
232 static SystemProperty *_java_endorsed_dirs;
a61af66fc99e Initial load
duke
parents:
diff changeset
233 static SystemProperty *_sun_boot_library_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
234 static SystemProperty *_java_library_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
235 static SystemProperty *_java_home;
a61af66fc99e Initial load
duke
parents:
diff changeset
236 static SystemProperty *_java_class_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
237 static SystemProperty *_sun_boot_class_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
238
a61af66fc99e Initial load
duke
parents:
diff changeset
239 // Meta-index for knowing what packages are in the boot class path
a61af66fc99e Initial load
duke
parents:
diff changeset
240 static char* _meta_index_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
241 static char* _meta_index_dir;
a61af66fc99e Initial load
duke
parents:
diff changeset
242
a61af66fc99e Initial load
duke
parents:
diff changeset
243 // java.vendor.url.bug, bug reporting URL for fatal errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
244 static const char* _java_vendor_url_bug;
a61af66fc99e Initial load
duke
parents:
diff changeset
245
a61af66fc99e Initial load
duke
parents:
diff changeset
246 // sun.java.launcher, private property to provide information about
a61af66fc99e Initial load
duke
parents:
diff changeset
247 // java/gamma launcher
a61af66fc99e Initial load
duke
parents:
diff changeset
248 static const char* _sun_java_launcher;
a61af66fc99e Initial load
duke
parents:
diff changeset
249
a61af66fc99e Initial load
duke
parents:
diff changeset
250 // sun.java.launcher.pid, private property
a61af66fc99e Initial load
duke
parents:
diff changeset
251 static int _sun_java_launcher_pid;
a61af66fc99e Initial load
duke
parents:
diff changeset
252
a61af66fc99e Initial load
duke
parents:
diff changeset
253 // Option flags
a61af66fc99e Initial load
duke
parents:
diff changeset
254 static bool _has_profile;
a61af66fc99e Initial load
duke
parents:
diff changeset
255 static bool _has_alloc_profile;
a61af66fc99e Initial load
duke
parents:
diff changeset
256 static const char* _gc_log_filename;
a61af66fc99e Initial load
duke
parents:
diff changeset
257 static uintx _initial_heap_size;
a61af66fc99e Initial load
duke
parents:
diff changeset
258 static uintx _min_heap_size;
a61af66fc99e Initial load
duke
parents:
diff changeset
259
a61af66fc99e Initial load
duke
parents:
diff changeset
260 // -Xrun arguments
a61af66fc99e Initial load
duke
parents:
diff changeset
261 static AgentLibraryList _libraryList;
a61af66fc99e Initial load
duke
parents:
diff changeset
262 static void add_init_library(const char* name, char* options)
a61af66fc99e Initial load
duke
parents:
diff changeset
263 { _libraryList.add(new AgentLibrary(name, options, false, NULL)); }
a61af66fc99e Initial load
duke
parents:
diff changeset
264
a61af66fc99e Initial load
duke
parents:
diff changeset
265 // -agentlib and -agentpath arguments
a61af66fc99e Initial load
duke
parents:
diff changeset
266 static AgentLibraryList _agentList;
a61af66fc99e Initial load
duke
parents:
diff changeset
267 static void add_init_agent(const char* name, char* options, bool absolute_path)
a61af66fc99e Initial load
duke
parents:
diff changeset
268 { _agentList.add(new AgentLibrary(name, options, absolute_path, NULL)); }
a61af66fc99e Initial load
duke
parents:
diff changeset
269
a61af66fc99e Initial load
duke
parents:
diff changeset
270 // Late-binding agents not started via arguments
a61af66fc99e Initial load
duke
parents:
diff changeset
271 static void add_loaded_agent(const char* name, char* options, bool absolute_path, void* os_lib)
a61af66fc99e Initial load
duke
parents:
diff changeset
272 { _agentList.add(new AgentLibrary(name, options, absolute_path, os_lib)); }
a61af66fc99e Initial load
duke
parents:
diff changeset
273
a61af66fc99e Initial load
duke
parents:
diff changeset
274 // Operation modi
a61af66fc99e Initial load
duke
parents:
diff changeset
275 static Mode _mode;
a61af66fc99e Initial load
duke
parents:
diff changeset
276 static void set_mode_flags(Mode mode);
a61af66fc99e Initial load
duke
parents:
diff changeset
277 static bool _java_compiler;
a61af66fc99e Initial load
duke
parents:
diff changeset
278 static void set_java_compiler(bool arg) { _java_compiler = arg; }
a61af66fc99e Initial load
duke
parents:
diff changeset
279 static bool java_compiler() { return _java_compiler; }
a61af66fc99e Initial load
duke
parents:
diff changeset
280
a61af66fc99e Initial load
duke
parents:
diff changeset
281 // -Xdebug flag
a61af66fc99e Initial load
duke
parents:
diff changeset
282 static bool _xdebug_mode;
a61af66fc99e Initial load
duke
parents:
diff changeset
283 static void set_xdebug_mode(bool arg) { _xdebug_mode = arg; }
a61af66fc99e Initial load
duke
parents:
diff changeset
284 static bool xdebug_mode() { return _xdebug_mode; }
a61af66fc99e Initial load
duke
parents:
diff changeset
285
a61af66fc99e Initial load
duke
parents:
diff changeset
286 // Used to save default settings
a61af66fc99e Initial load
duke
parents:
diff changeset
287 static bool _AlwaysCompileLoopMethods;
a61af66fc99e Initial load
duke
parents:
diff changeset
288 static bool _UseOnStackReplacement;
a61af66fc99e Initial load
duke
parents:
diff changeset
289 static bool _BackgroundCompilation;
a61af66fc99e Initial load
duke
parents:
diff changeset
290 static bool _ClipInlining;
a61af66fc99e Initial load
duke
parents:
diff changeset
291 static bool _CIDynamicCompilePriority;
a61af66fc99e Initial load
duke
parents:
diff changeset
292 static intx _Tier2CompileThreshold;
a61af66fc99e Initial load
duke
parents:
diff changeset
293
a61af66fc99e Initial load
duke
parents:
diff changeset
294 // CMS/ParNew garbage collectors
a61af66fc99e Initial load
duke
parents:
diff changeset
295 static void set_parnew_gc_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
296 static void set_cms_and_parnew_gc_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
297 // UseParallelGC
a61af66fc99e Initial load
duke
parents:
diff changeset
298 static void set_parallel_gc_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
299 // GC ergonomics
a61af66fc99e Initial load
duke
parents:
diff changeset
300 static void set_ergonomics_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
301 // Based on automatic selection criteria, should the
a61af66fc99e Initial load
duke
parents:
diff changeset
302 // low pause collector be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
303 static bool should_auto_select_low_pause_collector();
a61af66fc99e Initial load
duke
parents:
diff changeset
304
a61af66fc99e Initial load
duke
parents:
diff changeset
305 // Bytecode rewriting
a61af66fc99e Initial load
duke
parents:
diff changeset
306 static void set_bytecode_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
307
a61af66fc99e Initial load
duke
parents:
diff changeset
308 // Invocation API hooks
a61af66fc99e Initial load
duke
parents:
diff changeset
309 static abort_hook_t _abort_hook;
a61af66fc99e Initial load
duke
parents:
diff changeset
310 static exit_hook_t _exit_hook;
a61af66fc99e Initial load
duke
parents:
diff changeset
311 static vfprintf_hook_t _vfprintf_hook;
a61af66fc99e Initial load
duke
parents:
diff changeset
312
a61af66fc99e Initial load
duke
parents:
diff changeset
313 // System properties
a61af66fc99e Initial load
duke
parents:
diff changeset
314 static bool add_property(const char* prop);
a61af66fc99e Initial load
duke
parents:
diff changeset
315
a61af66fc99e Initial load
duke
parents:
diff changeset
316 // Aggressive optimization flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
317 static void set_aggressive_opts_flags();
a61af66fc99e Initial load
duke
parents:
diff changeset
318
a61af66fc99e Initial load
duke
parents:
diff changeset
319 // Argument parsing
a61af66fc99e Initial load
duke
parents:
diff changeset
320 static void do_pd_flag_adjustments();
a61af66fc99e Initial load
duke
parents:
diff changeset
321 static bool parse_argument(const char* arg, FlagValueOrigin origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
322 static bool process_argument(const char* arg, jboolean ignore_unrecognized, FlagValueOrigin origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
323 static void process_java_launcher_argument(const char*, void*);
a61af66fc99e Initial load
duke
parents:
diff changeset
324 static void process_java_compiler_argument(char* arg);
a61af66fc99e Initial load
duke
parents:
diff changeset
325 static jint parse_options_environment_variable(const char* name, SysClassPath* scp_p, bool* scp_assembly_required_p);
a61af66fc99e Initial load
duke
parents:
diff changeset
326 static jint parse_java_tool_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p);
a61af66fc99e Initial load
duke
parents:
diff changeset
327 static jint parse_java_options_environment_variable(SysClassPath* scp_p, bool* scp_assembly_required_p);
a61af66fc99e Initial load
duke
parents:
diff changeset
328 static jint parse_vm_init_args(const JavaVMInitArgs* args);
a61af66fc99e Initial load
duke
parents:
diff changeset
329 static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, SysClassPath* scp_p, bool* scp_assembly_required_p, FlagValueOrigin origin);
a61af66fc99e Initial load
duke
parents:
diff changeset
330 static jint finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_required);
a61af66fc99e Initial load
duke
parents:
diff changeset
331 static bool is_bad_option(const JavaVMOption* option, jboolean ignore,
a61af66fc99e Initial load
duke
parents:
diff changeset
332 const char* option_type);
a61af66fc99e Initial load
duke
parents:
diff changeset
333 static bool is_bad_option(const JavaVMOption* option, jboolean ignore) {
a61af66fc99e Initial load
duke
parents:
diff changeset
334 return is_bad_option(option, ignore, NULL);
a61af66fc99e Initial load
duke
parents:
diff changeset
335 }
a61af66fc99e Initial load
duke
parents:
diff changeset
336 static bool verify_percentage(uintx value, const char* name);
a61af66fc99e Initial load
duke
parents:
diff changeset
337 static void describe_range_error(ArgsRange errcode);
a61af66fc99e Initial load
duke
parents:
diff changeset
338 static ArgsRange check_memory_size(jlong size, jlong min_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
339 static ArgsRange parse_memory_size(const char* s, jlong* long_arg,
a61af66fc99e Initial load
duke
parents:
diff changeset
340 jlong min_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
341
a61af66fc99e Initial load
duke
parents:
diff changeset
342 // methods to build strings from individual args
a61af66fc99e Initial load
duke
parents:
diff changeset
343 static void build_jvm_args(const char* arg);
a61af66fc99e Initial load
duke
parents:
diff changeset
344 static void build_jvm_flags(const char* arg);
a61af66fc99e Initial load
duke
parents:
diff changeset
345 static void add_string(char*** bldarray, int* count, const char* arg);
a61af66fc99e Initial load
duke
parents:
diff changeset
346 static const char* build_resource_string(char** args, int count);
a61af66fc99e Initial load
duke
parents:
diff changeset
347
a61af66fc99e Initial load
duke
parents:
diff changeset
348 static bool methodExists(
a61af66fc99e Initial load
duke
parents:
diff changeset
349 char* className, char* methodName,
a61af66fc99e Initial load
duke
parents:
diff changeset
350 int classesNum, char** classes, bool* allMethods,
a61af66fc99e Initial load
duke
parents:
diff changeset
351 int methodsNum, char** methods, bool* allClasses
a61af66fc99e Initial load
duke
parents:
diff changeset
352 );
a61af66fc99e Initial load
duke
parents:
diff changeset
353
a61af66fc99e Initial load
duke
parents:
diff changeset
354 static void parseOnlyLine(
a61af66fc99e Initial load
duke
parents:
diff changeset
355 const char* line,
a61af66fc99e Initial load
duke
parents:
diff changeset
356 short* classesNum, short* classesMax, char*** classes, bool** allMethods,
a61af66fc99e Initial load
duke
parents:
diff changeset
357 short* methodsNum, short* methodsMax, char*** methods, bool** allClasses
a61af66fc99e Initial load
duke
parents:
diff changeset
358 );
a61af66fc99e Initial load
duke
parents:
diff changeset
359
a61af66fc99e Initial load
duke
parents:
diff changeset
360 // Returns true if the string s is in the list of
a61af66fc99e Initial load
duke
parents:
diff changeset
361 // flags made obsolete in 1.5.0.
a61af66fc99e Initial load
duke
parents:
diff changeset
362 static bool made_obsolete_in_1_5_0(const char* s);
a61af66fc99e Initial load
duke
parents:
diff changeset
363
a61af66fc99e Initial load
duke
parents:
diff changeset
364 static short CompileOnlyClassesNum;
a61af66fc99e Initial load
duke
parents:
diff changeset
365 static short CompileOnlyClassesMax;
a61af66fc99e Initial load
duke
parents:
diff changeset
366 static char** CompileOnlyClasses;
a61af66fc99e Initial load
duke
parents:
diff changeset
367 static bool* CompileOnlyAllMethods;
a61af66fc99e Initial load
duke
parents:
diff changeset
368
a61af66fc99e Initial load
duke
parents:
diff changeset
369 static short CompileOnlyMethodsNum;
a61af66fc99e Initial load
duke
parents:
diff changeset
370 static short CompileOnlyMethodsMax;
a61af66fc99e Initial load
duke
parents:
diff changeset
371 static char** CompileOnlyMethods;
a61af66fc99e Initial load
duke
parents:
diff changeset
372 static bool* CompileOnlyAllClasses;
a61af66fc99e Initial load
duke
parents:
diff changeset
373
a61af66fc99e Initial load
duke
parents:
diff changeset
374 static short InterpretOnlyClassesNum;
a61af66fc99e Initial load
duke
parents:
diff changeset
375 static short InterpretOnlyClassesMax;
a61af66fc99e Initial load
duke
parents:
diff changeset
376 static char** InterpretOnlyClasses;
a61af66fc99e Initial load
duke
parents:
diff changeset
377 static bool* InterpretOnlyAllMethods;
a61af66fc99e Initial load
duke
parents:
diff changeset
378
a61af66fc99e Initial load
duke
parents:
diff changeset
379 static bool CheckCompileOnly;
a61af66fc99e Initial load
duke
parents:
diff changeset
380
a61af66fc99e Initial load
duke
parents:
diff changeset
381 static char* SharedArchivePath;
a61af66fc99e Initial load
duke
parents:
diff changeset
382
a61af66fc99e Initial load
duke
parents:
diff changeset
383 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
384 // Parses the arguments
a61af66fc99e Initial load
duke
parents:
diff changeset
385 static jint parse(const JavaVMInitArgs* args);
10
28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads.
jmasa
parents: 0
diff changeset
386 // 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
387 static bool check_gc_consistency();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
388 // Check consistecy or otherwise of VM argument settings
a61af66fc99e Initial load
duke
parents:
diff changeset
389 static bool check_vm_args_consistency();
a61af66fc99e Initial load
duke
parents:
diff changeset
390 // Used by os_solaris
a61af66fc99e Initial load
duke
parents:
diff changeset
391 static bool process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized);
a61af66fc99e Initial load
duke
parents:
diff changeset
392
a61af66fc99e Initial load
duke
parents:
diff changeset
393 // return a char* array containing all options
a61af66fc99e Initial load
duke
parents:
diff changeset
394 static char** jvm_flags_array() { return _jvm_flags_array; }
a61af66fc99e Initial load
duke
parents:
diff changeset
395 static char** jvm_args_array() { return _jvm_args_array; }
a61af66fc99e Initial load
duke
parents:
diff changeset
396 static int num_jvm_flags() { return _num_jvm_flags; }
a61af66fc99e Initial load
duke
parents:
diff changeset
397 static int num_jvm_args() { return _num_jvm_args; }
a61af66fc99e Initial load
duke
parents:
diff changeset
398 // return the arguments passed to the Java application
a61af66fc99e Initial load
duke
parents:
diff changeset
399 static const char* java_command() { return _java_command; }
a61af66fc99e Initial load
duke
parents:
diff changeset
400
a61af66fc99e Initial load
duke
parents:
diff changeset
401 // print jvm_flags, jvm_args and java_command
a61af66fc99e Initial load
duke
parents:
diff changeset
402 static void print_on(outputStream* st);
a61af66fc99e Initial load
duke
parents:
diff changeset
403
a61af66fc99e Initial load
duke
parents:
diff changeset
404 // convenient methods to obtain / print jvm_flags and jvm_args
a61af66fc99e Initial load
duke
parents:
diff changeset
405 static const char* jvm_flags() { return build_resource_string(_jvm_flags_array, _num_jvm_flags); }
a61af66fc99e Initial load
duke
parents:
diff changeset
406 static const char* jvm_args() { return build_resource_string(_jvm_args_array, _num_jvm_args); }
a61af66fc99e Initial load
duke
parents:
diff changeset
407 static void print_jvm_flags_on(outputStream* st);
a61af66fc99e Initial load
duke
parents:
diff changeset
408 static void print_jvm_args_on(outputStream* st);
a61af66fc99e Initial load
duke
parents:
diff changeset
409
a61af66fc99e Initial load
duke
parents:
diff changeset
410 // -Dkey=value flags
a61af66fc99e Initial load
duke
parents:
diff changeset
411 static SystemProperty* system_properties() { return _system_properties; }
a61af66fc99e Initial load
duke
parents:
diff changeset
412 static const char* get_property(const char* key);
a61af66fc99e Initial load
duke
parents:
diff changeset
413
a61af66fc99e Initial load
duke
parents:
diff changeset
414 // -Djava.vendor.url.bug
a61af66fc99e Initial load
duke
parents:
diff changeset
415 static const char* java_vendor_url_bug() { return _java_vendor_url_bug; }
a61af66fc99e Initial load
duke
parents:
diff changeset
416
a61af66fc99e Initial load
duke
parents:
diff changeset
417 // -Dsun.java.launcher
a61af66fc99e Initial load
duke
parents:
diff changeset
418 static const char* sun_java_launcher() { return _sun_java_launcher; }
a61af66fc99e Initial load
duke
parents:
diff changeset
419 // Was VM created by a Java launcher?
a61af66fc99e Initial load
duke
parents:
diff changeset
420 static bool created_by_java_launcher();
a61af66fc99e Initial load
duke
parents:
diff changeset
421 // -Dsun.java.launcher.pid
a61af66fc99e Initial load
duke
parents:
diff changeset
422 static int sun_java_launcher_pid() { return _sun_java_launcher_pid; }
a61af66fc99e Initial load
duke
parents:
diff changeset
423
a61af66fc99e Initial load
duke
parents:
diff changeset
424 // -Xloggc:<file>, if not specified will be NULL
a61af66fc99e Initial load
duke
parents:
diff changeset
425 static const char* gc_log_filename() { return _gc_log_filename; }
a61af66fc99e Initial load
duke
parents:
diff changeset
426
a61af66fc99e Initial load
duke
parents:
diff changeset
427 // -Xprof/-Xaprof
a61af66fc99e Initial load
duke
parents:
diff changeset
428 static bool has_profile() { return _has_profile; }
a61af66fc99e Initial load
duke
parents:
diff changeset
429 static bool has_alloc_profile() { return _has_alloc_profile; }
a61af66fc99e Initial load
duke
parents:
diff changeset
430
a61af66fc99e Initial load
duke
parents:
diff changeset
431 // -Xms , -Xmx
a61af66fc99e Initial load
duke
parents:
diff changeset
432 static uintx initial_heap_size() { return _initial_heap_size; }
a61af66fc99e Initial load
duke
parents:
diff changeset
433 static void set_initial_heap_size(uintx v) { _initial_heap_size = v; }
a61af66fc99e Initial load
duke
parents:
diff changeset
434 static uintx min_heap_size() { return _min_heap_size; }
a61af66fc99e Initial load
duke
parents:
diff changeset
435 static void set_min_heap_size(uintx v) { _min_heap_size = v; }
a61af66fc99e Initial load
duke
parents:
diff changeset
436
a61af66fc99e Initial load
duke
parents:
diff changeset
437 // -Xrun
a61af66fc99e Initial load
duke
parents:
diff changeset
438 static AgentLibrary* libraries() { return _libraryList.first(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
439 static bool init_libraries_at_startup() { return !_libraryList.is_empty(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
440 static void convert_library_to_agent(AgentLibrary* lib)
a61af66fc99e Initial load
duke
parents:
diff changeset
441 { _libraryList.remove(lib);
a61af66fc99e Initial load
duke
parents:
diff changeset
442 _agentList.add(lib); }
a61af66fc99e Initial load
duke
parents:
diff changeset
443
a61af66fc99e Initial load
duke
parents:
diff changeset
444 // -agentlib -agentpath
a61af66fc99e Initial load
duke
parents:
diff changeset
445 static AgentLibrary* agents() { return _agentList.first(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
446 static bool init_agents_at_startup() { return !_agentList.is_empty(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
447
a61af66fc99e Initial load
duke
parents:
diff changeset
448 // abort, exit, vfprintf hooks
a61af66fc99e Initial load
duke
parents:
diff changeset
449 static abort_hook_t abort_hook() { return _abort_hook; }
a61af66fc99e Initial load
duke
parents:
diff changeset
450 static exit_hook_t exit_hook() { return _exit_hook; }
a61af66fc99e Initial load
duke
parents:
diff changeset
451 static vfprintf_hook_t vfprintf_hook() { return _vfprintf_hook; }
a61af66fc99e Initial load
duke
parents:
diff changeset
452
a61af66fc99e Initial load
duke
parents:
diff changeset
453 static bool GetCheckCompileOnly () { return CheckCompileOnly; }
a61af66fc99e Initial load
duke
parents:
diff changeset
454
a61af66fc99e Initial load
duke
parents:
diff changeset
455 static const char* GetSharedArchivePath() { return SharedArchivePath; }
a61af66fc99e Initial load
duke
parents:
diff changeset
456
a61af66fc99e Initial load
duke
parents:
diff changeset
457 static bool CompileMethod(char* className, char* methodName) {
a61af66fc99e Initial load
duke
parents:
diff changeset
458 return
a61af66fc99e Initial load
duke
parents:
diff changeset
459 methodExists(
a61af66fc99e Initial load
duke
parents:
diff changeset
460 className, methodName,
a61af66fc99e Initial load
duke
parents:
diff changeset
461 CompileOnlyClassesNum, CompileOnlyClasses, CompileOnlyAllMethods,
a61af66fc99e Initial load
duke
parents:
diff changeset
462 CompileOnlyMethodsNum, CompileOnlyMethods, CompileOnlyAllClasses
a61af66fc99e Initial load
duke
parents:
diff changeset
463 );
a61af66fc99e Initial load
duke
parents:
diff changeset
464 }
a61af66fc99e Initial load
duke
parents:
diff changeset
465
a61af66fc99e Initial load
duke
parents:
diff changeset
466 // Java launcher properties
a61af66fc99e Initial load
duke
parents:
diff changeset
467 static void process_sun_java_launcher_properties(JavaVMInitArgs* args);
a61af66fc99e Initial load
duke
parents:
diff changeset
468
a61af66fc99e Initial load
duke
parents:
diff changeset
469 // System properties
a61af66fc99e Initial load
duke
parents:
diff changeset
470 static void init_system_properties();
a61af66fc99e Initial load
duke
parents:
diff changeset
471
a61af66fc99e Initial load
duke
parents:
diff changeset
472 // Proptery List manipulation
a61af66fc99e Initial load
duke
parents:
diff changeset
473 static void PropertyList_add(SystemProperty** plist, SystemProperty *element);
a61af66fc99e Initial load
duke
parents:
diff changeset
474 static void PropertyList_add(SystemProperty** plist, const char* k, char* v);
a61af66fc99e Initial load
duke
parents:
diff changeset
475 static void PropertyList_unique_add(SystemProperty** plist, const char* k, char* v);
a61af66fc99e Initial load
duke
parents:
diff changeset
476 static const char* PropertyList_get_value(SystemProperty* plist, const char* key);
a61af66fc99e Initial load
duke
parents:
diff changeset
477 static int PropertyList_count(SystemProperty* pl);
a61af66fc99e Initial load
duke
parents:
diff changeset
478 static const char* PropertyList_get_key_at(SystemProperty* pl,int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
479 static char* PropertyList_get_value_at(SystemProperty* pl,int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
480
a61af66fc99e Initial load
duke
parents:
diff changeset
481 // Miscellaneous System property value getter and setters.
a61af66fc99e Initial load
duke
parents:
diff changeset
482 static void set_dll_dir(char *value) { _sun_boot_library_path->set_value(value); }
a61af66fc99e Initial load
duke
parents:
diff changeset
483 static void set_java_home(char *value) { _java_home->set_value(value); }
a61af66fc99e Initial load
duke
parents:
diff changeset
484 static void set_library_path(char *value) { _java_library_path->set_value(value); }
a61af66fc99e Initial load
duke
parents:
diff changeset
485 static void set_ext_dirs(char *value) { _java_ext_dirs->set_value(value); }
a61af66fc99e Initial load
duke
parents:
diff changeset
486 static void set_endorsed_dirs(char *value) { _java_endorsed_dirs->set_value(value); }
a61af66fc99e Initial load
duke
parents:
diff changeset
487 static void set_sysclasspath(char *value) { _sun_boot_class_path->set_value(value); }
a61af66fc99e Initial load
duke
parents:
diff changeset
488 static void append_sysclasspath(const char *value) { _sun_boot_class_path->append_value(value); }
a61af66fc99e Initial load
duke
parents:
diff changeset
489 static void set_meta_index_path(char* meta_index_path, char* meta_index_dir) {
a61af66fc99e Initial load
duke
parents:
diff changeset
490 _meta_index_path = meta_index_path;
a61af66fc99e Initial load
duke
parents:
diff changeset
491 _meta_index_dir = meta_index_dir;
a61af66fc99e Initial load
duke
parents:
diff changeset
492 }
a61af66fc99e Initial load
duke
parents:
diff changeset
493
a61af66fc99e Initial load
duke
parents:
diff changeset
494 static char *get_java_home() { return _java_home->value(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
495 static char *get_dll_dir() { return _sun_boot_library_path->value(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
496 static char *get_endorsed_dir() { return _java_endorsed_dirs->value(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
497 static char *get_sysclasspath() { return _sun_boot_class_path->value(); }
a61af66fc99e Initial load
duke
parents:
diff changeset
498 static char* get_meta_index_path() { return _meta_index_path; }
a61af66fc99e Initial load
duke
parents:
diff changeset
499 static char* get_meta_index_dir() { return _meta_index_dir; }
a61af66fc99e Initial load
duke
parents:
diff changeset
500
a61af66fc99e Initial load
duke
parents:
diff changeset
501 // Operation modi
a61af66fc99e Initial load
duke
parents:
diff changeset
502 static Mode mode() { return _mode; }
a61af66fc99e Initial load
duke
parents:
diff changeset
503
a61af66fc99e Initial load
duke
parents:
diff changeset
504 // Utility: copies src into buf, replacing "%%" with "%" and "%p" with pid.
a61af66fc99e Initial load
duke
parents:
diff changeset
505 static bool copy_expand_pid(const char* src, size_t srclen, char* buf, size_t buflen);
a61af66fc99e Initial load
duke
parents:
diff changeset
506
a61af66fc99e Initial load
duke
parents:
diff changeset
507 #ifdef KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
508 // For java kernel vm, return property string for kernel properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
509 static char *get_kernel_properties();
a61af66fc99e Initial load
duke
parents:
diff changeset
510 #endif // KERNEL
a61af66fc99e Initial load
duke
parents:
diff changeset
511 };