test/runtime/7158988/FieldMonitor.java
Print this page
*** 32,48 ****
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.io.Reader;
- import java.io.Writer;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.sun.jdi.Bootstrap;
import com.sun.jdi.Field;
import com.sun.jdi.ReferenceType;
import com.sun.jdi.VirtualMachine;
--- 32,45 ----
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+ import java.io.PrintWriter;
import com.sun.jdi.Bootstrap;
import com.sun.jdi.Field;
import com.sun.jdi.ReferenceType;
import com.sun.jdi.VirtualMachine;
*** 69,85 ****
public static final String ARGUMENTS = "-Xshare:off -XX:+PrintGC";
public static void main(String[] args)
throws IOException, InterruptedException {
- StringBuffer sb = new StringBuffer();
-
- for (int i=0; i < args.length; i++) {
- sb.append(' ');
- sb.append(args[i]);
- }
- //VirtualMachine vm = launchTarget(sb.toString());
VirtualMachine vm = launchTarget(CLASS_NAME);
System.out.println("Vm launched");
// set watch field on already loaded classes
List<ReferenceType> referenceTypes = vm
--- 66,75 ----
*** 99,108 ****
--- 89,100 ----
// Copy target's output and error to our output and error.
Thread outThread = new StreamRedirectThread("out reader", process.getInputStream());
Thread errThread = new StreamRedirectThread("error reader", process.getErrorStream());
+ PrintWriter vmPrinter = null;
+
errThread.start();
outThread.start();
vm.resume();
*** 119,128 ****
--- 111,127 ----
System.out.println("ClassPrepareEvent");
ClassPrepareEvent classPrepEvent = (ClassPrepareEvent) event;
ReferenceType refType = classPrepEvent
.referenceType();
addFieldWatch(vm, refType);
+
+ // inform TestPostFieldModification that it can exit. // JDK-8007710
+ if (vmPrinter == null) {
+ vmPrinter = new PrintWriter(process.getOutputStream());
+ vmPrinter.println("");
+ vmPrinter.flush();
+ }
} else if (event instanceof ModificationWatchpointEvent) {
System.out.println("sleep for 500 ms");
Thread.sleep(500);
System.out.println("resume...");