test/com/sun/jdi/NativeInstanceFilter.java

Print this page

        

*** 55,64 **** --- 55,65 ---- super(); } static EventRequestManager requestManager = null; static MethodExitRequest request = null; + static ThreadReference mainThread = null; private void listen() { TargetAdapter adapter = new TargetAdapter() { EventSet set = null; ObjectReference instance = null;
*** 75,84 **** --- 76,86 ---- System.out.println("Setting up instance filter"); instance = (ObjectReference)event.returnValue(); requestManager.deleteEventRequest(request); request = requestManager.createMethodExitRequest(); request.addInstanceFilter(instance); + request.addThreadFilter(mainThread); request.enable(); } else if (instance != null && name.equals("intern")) { // If not for the filter, this will be called twice System.out.println("method exit event (String.intern())"); ++unfilteredEvents;
*** 99,112 **** connect(args); waitForVMStart(); // VM has started, but hasn't started running the test program yet. requestManager = vm().eventRequestManager(); ! ReferenceType referenceType = ! resumeToPrepareOf("NativeInstanceFilterTarg").referenceType(); request = requestManager.createMethodExitRequest(); request.enable(); listen(); vm().resume(); --- 101,116 ---- connect(args); waitForVMStart(); // VM has started, but hasn't started running the test program yet. requestManager = vm().eventRequestManager(); ! ClassPrepareEvent e = resumeToPrepareOf("NativeInstanceFilterTarg"); ! ReferenceType referenceType = e.referenceType(); ! mainThread = e.thread(); request = requestManager.createMethodExitRequest(); + request.addThreadFilter(mainThread); request.enable(); listen(); vm().resume();