1 /*
2 * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
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 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
108 {
109 runit(class_name, null);
110 }
111
112 /*
113 * Execute a process with an -agentpath or -agentlib command option
114 * plus any set of other java options.
115 */
116 public void runit(String class_name, String vm_options[])
117 {
118 String jre_home = System.getProperty("java.home");
119 String sdk_home = (jre_home.endsWith("jre") ?
120 (jre_home + File.separator + "..") :
121 jre_home );
122 String cdir = System.getProperty("test.classes", ".");
123 String os_arch = System.getProperty("os.arch");
124 String os_name = System.getProperty("os.name");
125 String libprefix = os_name.contains("Windows")?"":"lib";
126 String libsuffix = os_name.contains("Windows")?".dll":
127 os_name.contains("OS X")?".dylib":".so";
128 boolean d64 = ( os_name.contains("Solaris") ||
129 os_name.contains("SunOS") )
130 && ( os_arch.equals("sparcv9") ||
131 os_arch.equals("amd64"));
132 boolean hprof = demo_name.equals("hprof");
133 String isa_dir = d64?(File.separator+os_arch):"";
134 String java = jre_home
135 + File.separator + "bin" + isa_dir
136 + File.separator + "java";
137 /* Array of strings to be passed in for exec:
138 * 1. java
139 * 2. -Dtest.classes=.
140 * 3. -d64 (optional)
141 * 4. -Xcheck:jni (Just because it finds bugs)
142 * 5. -Xverify:all (Make sure verification is on full blast)
143 * 6. -agent
144 * vm_options
145 * 7+i. classname
146 */
147 int nvm_options = 0;
148 if ( vm_options != null ) nvm_options = vm_options.length;
149 String cmd[] = new String[1 + (d64?1:0) + 7 + nvm_options];
150 String cmdLine;
151 int exitStatus;
152 int i,j;
153
154 i = 0;
155 cmdLine = "";
156 cmdLine += (cmd[i++] = java);
157 cmdLine += " ";
158 cmdLine += (cmd[i++] = "-cp");
159 cmdLine += " ";
160 cmdLine += (cmd[i++] = cdir);
161 cmdLine += " ";
162 cmdLine += (cmd[i++] = "-Dtest.classes=" + cdir);
163 if ( d64 ) {
164 cmdLine += " ";
165 cmdLine += (cmd[i++] = "-d64");
166 }
167 cmdLine += " ";
168 cmdLine += (cmd[i++] = "-Xcheck:jni");
169 cmdLine += " ";
170 cmdLine += (cmd[i++] = "-Xverify:all");
171 if ( hprof ) {
172 /* Load hprof with -agentlib since it's part of jre */
173 cmdLine += " ";
174 cmdLine += (cmd[i++] = "-agentlib:" + demo_name
175 + (demo_options.equals("")?"":("="+demo_options)));
176 } else {
177 String libname = sdk_home
178 + File.separator + "demo"
179 + File.separator + "jvmti"
180 + File.separator + demo_name
181 + File.separator + "lib" + isa_dir
182 + File.separator + libprefix + demo_name + libsuffix;
183 cmdLine += " ";
184 cmdLine += (cmd[i++] = "-agentpath:" + libname
185 + (demo_options.equals("")?"":("="+demo_options)));
186 }
187 /* Add any special VM options */
188 for ( j = 0; j < nvm_options; j++ ) {
189 cmdLine += " ";
190 cmdLine += (cmd[i++] = vm_options[j]);
191 }
192 /* Add classname */
193 cmdLine += " ";
194 cmdLine += (cmd[i++] = class_name);
195
196 /* Begin process */
197 Process p;
198
199 System.out.println("Starting: " + cmdLine);
200 try {
201 p = Runtime.getRuntime().exec(cmd);
|
1 /*
2 * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
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 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
108 {
109 runit(class_name, null);
110 }
111
112 /*
113 * Execute a process with an -agentpath or -agentlib command option
114 * plus any set of other java options.
115 */
116 public void runit(String class_name, String vm_options[])
117 {
118 String jre_home = System.getProperty("java.home");
119 String sdk_home = (jre_home.endsWith("jre") ?
120 (jre_home + File.separator + "..") :
121 jre_home );
122 String cdir = System.getProperty("test.classes", ".");
123 String os_arch = System.getProperty("os.arch");
124 String os_name = System.getProperty("os.name");
125 String libprefix = os_name.contains("Windows")?"":"lib";
126 String libsuffix = os_name.contains("Windows")?".dll":
127 os_name.contains("OS X")?".dylib":".so";
128 boolean hprof = demo_name.equals("hprof");
129 String java = jre_home
130 + File.separator + "bin"
131 + File.separator + "java";
132 /* Array of strings to be passed in for exec:
133 * 1. java
134 * 2. -Dtest.classes=.
135 * 3. -Xcheck:jni (Just because it finds bugs)
136 * 4. -Xverify:all (Make sure verification is on full blast)
137 * 5. -agent
138 * vm_options
139 * 6+i. classname
140 */
141 int nvm_options = 0;
142 if ( vm_options != null ) nvm_options = vm_options.length;
143 String cmd[] = new String[1 + 7 + nvm_options];
144 String cmdLine;
145 int exitStatus;
146 int i,j;
147
148 i = 0;
149 cmdLine = "";
150 cmdLine += (cmd[i++] = java);
151 cmdLine += " ";
152 cmdLine += (cmd[i++] = "-cp");
153 cmdLine += " ";
154 cmdLine += (cmd[i++] = cdir);
155 cmdLine += " ";
156 cmdLine += (cmd[i++] = "-Dtest.classes=" + cdir);
157 cmdLine += " ";
158 cmdLine += (cmd[i++] = "-Xcheck:jni");
159 cmdLine += " ";
160 cmdLine += (cmd[i++] = "-Xverify:all");
161 if ( hprof ) {
162 /* Load hprof with -agentlib since it's part of jre */
163 cmdLine += " ";
164 cmdLine += (cmd[i++] = "-agentlib:" + demo_name
165 + (demo_options.equals("")?"":("="+demo_options)));
166 } else {
167 String libname = sdk_home
168 + File.separator + "demo"
169 + File.separator + "jvmti"
170 + File.separator + demo_name
171 + File.separator + "lib"
172 + File.separator + libprefix + demo_name + libsuffix;
173 cmdLine += " ";
174 cmdLine += (cmd[i++] = "-agentpath:" + libname
175 + (demo_options.equals("")?"":("="+demo_options)));
176 }
177 /* Add any special VM options */
178 for ( j = 0; j < nvm_options; j++ ) {
179 cmdLine += " ";
180 cmdLine += (cmd[i++] = vm_options[j]);
181 }
182 /* Add classname */
183 cmdLine += " ";
184 cmdLine += (cmd[i++] = class_name);
185
186 /* Begin process */
187 Process p;
188
189 System.out.println("Starting: " + cmdLine);
190 try {
191 p = Runtime.getRuntime().exec(cmd);
|