diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp001.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp001.java index 7378c4dc96b..201995bde3f 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp001.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp001.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -108,8 +108,7 @@ private int runThis (String argv[], PrintStream out) { logHandler = new Log(out, argsHandler); Binder binder = new Binder(argsHandler, logHandler); - debugee = Debugee.prepareDebugee(argsHandler, logHandler, - debugeeName + (argsHandler.verbose() ? " -vbs" : "")); + debugee = Debugee.prepareDebugee(argsHandler, logHandler, debugeeName); // ReferenceType classes[] = debugee.classes(); // for (int i=0; i thread in debuggee"); - checkedThread = debuggee.threadByName("main"); + checkedThread = debuggee.mainThread(); if (checkedThread == null) { throw new Failure("TEST BUG: unable to find reference to main thread"); } diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method001.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method001.java index a1515979a18..98e9b31c965 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method001.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method001.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -110,6 +110,9 @@ public static int run(final String args[], final PrintStream out) { pipe = debuggee.createIOPipe(); + ClassPrepareEvent cpEvent = debuggee.waitForClassPrepare(DEBUGGEE_NAME); + debuggee.setMainThread(cpEvent.thread()); + // resume debuggee log.display("Resuming debuggee"); debuggee.resume(); @@ -131,7 +134,7 @@ public static int run(final String args[], final PrintStream out) { checkedClass = debuggee.classByName(DEBUGGEE_NAME); log.display("Getting reference to thread
"); - checkedThread = debuggee.threadByName("main"); + checkedThread = debuggee.mainThread(); if (checkedThread == null) { throw new Failure("TEST BUG: unable to find reference to main thread"); } diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method002.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method002.java index 0f0bd3773f3..b7c6eb705b1 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method002.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method002.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -114,6 +114,9 @@ public static int run(final String args[], final PrintStream out) { pipe = debuggee.createIOPipe(); + ClassPrepareEvent cpEvent = debuggee.waitForClassPrepare(DEBUGGEE_NAME); + debuggee.setMainThread(cpEvent.thread()); + // resume debuggee log.display("Resuming debuggee"); debuggee.resume(); @@ -136,7 +139,7 @@ public static int run(final String args[], final PrintStream out) { checkedClass = debuggee.classByName(CHILD_NAME); log.display("Getting reference to thread
"); - checkedThread = debuggee.threadByName("main"); + checkedThread = debuggee.mainThread(); if (checkedThread == null) { throw new Failure("TEST BUG: unable to find reference to main thread"); } diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002.java index 7736eae1d2b..aef3dfde0da 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -153,7 +153,7 @@ private int runThis(String argv[], PrintStream out) { //--------------------------------------------------------- mutable common methods private void execTest() { - ThreadReference mainThread = debuggee.threadByName("main"); + ThreadReference mainThread = debuggee.mainThread(); BreakpointRequest bpRequest = debuggee.makeBreakpoint(debuggeeClass, "methodForCommunication", @@ -290,6 +290,8 @@ private ReferenceType waitForDebuggeeClassPrepared () { ClassPrepareEvent event = (ClassPrepareEvent) waitForEvent(cpRequest); cpRequest.disable(); + debuggee.setMainThread(event.thread()); // Needed so debuggee.mainThread() will work + if (!event.referenceType().name().equals(debuggeeName)) { throw new Failure("Unexpected class name for ClassPrepareEvent : " + debuggeeClass.name()); } diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002.java index 89d1b703310..af940a69270 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -153,7 +153,7 @@ private int runThis(String argv[], PrintStream out) { //--------------------------------------------------------- mutable common methods private void execTest() { - ThreadReference mainThread = debuggee.threadByName("main"); + ThreadReference mainThread = debuggee.mainThread(); BreakpointRequest bpRequest = debuggee.makeBreakpoint(debuggeeClass, "methodForCommunication", @@ -298,6 +298,8 @@ private ReferenceType waitForDebuggeeClassPrepared () { ClassPrepareEvent event = (ClassPrepareEvent) waitForEvent(cpRequest); cpRequest.disable(); + debuggee.setMainThread(event.thread()); // Needed so debuggee.mainThread() will work + if (!event.referenceType().name().equals(debuggeeName)) { throw new Failure("Unexpected class name for ClassPrepareEvent : " + debuggeeClass.name()); } diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002.java index 092e0beb983..7a9f5f0547e 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -95,7 +95,7 @@ public static int run(String argv[], PrintStream out) { private void execTest() { debugee.VM().suspend(); - ThreadReference thread = debugee.threadByName("main"); + ThreadReference thread = debugee.mainThread(); StackFrame stackFrame = null; boolean isTopmostFrame = false; try { diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001.java index 7ec7b0bb5a0..a415d5dd6ff 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -87,7 +87,7 @@ private void execTest() { display(""); display(">>>creating StepRequest"); - ThreadReference thread = debugee.threadByName("main"); + ThreadReference thread = debugee.mainThread(); EventRequestManager evm = debugee.getEventRequestManager(); StepRequest request = evm.createStepRequest(thread, StepRequest.STEP_LINE, StepRequest.STEP_INTO); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/_bounds_/bounds001.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/_bounds_/bounds001.java index 13355b1b125..9e6b52d8be4 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/_bounds_/bounds001.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/_bounds_/bounds001.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -97,7 +97,7 @@ public static int run(String argv[], PrintStream out) { private void execTest() { debugee.VM().suspend(); - ThreadReference thread = debugee.threadByName("main"); + ThreadReference thread = debugee.mainThread(); display("\nTEST BEGINS"); display("==========="); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004.java index cbccac467e7..f05b7dd1ed7 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -158,7 +158,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { display("\n\n<<>>"); display("--------------------------"); @@ -167,7 +167,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { display("\n\n<<>>"); display("------------------------------"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005.java index 92e1a4617c8..78a888e6d4d 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -155,7 +155,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -165,7 +165,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006.java index c12295948a0..fab18f6b374 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -157,7 +157,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -167,7 +167,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007.java index cafe5e05c35..a6340f30d4c 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -164,7 +164,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -174,7 +174,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008.java index 5ebc7d5442f..2fcc2ba2188 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -162,7 +162,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -172,7 +172,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009.java index 38e0093570c..91e7d1b0caa 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -154,7 +154,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -164,7 +164,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010.java index 8d6fc4ac3c4..98465a87836 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -156,7 +156,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -166,7 +166,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011.java index 573c60f5cb3..ed08a793ebd 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -158,7 +158,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -168,7 +168,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012.java index 23aac498c87..8b1d0bf6e0a 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -154,7 +154,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -164,7 +164,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013.java index e0b344e51a0..0bee7b62655 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -161,7 +161,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -171,7 +171,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014.java index b664992fcc3..a2147234d2a 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -162,7 +162,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -172,7 +172,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015.java index 083ceabc71d..288fb024f98 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -182,7 +182,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -192,7 +192,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016.java index 10ab031738b..812bf0d96a9 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -163,7 +163,7 @@ private void execTest() throws TestBug { display("\nTEST BEGINS"); display("==========="); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); @@ -173,7 +173,6 @@ private void execTest() throws TestBug { debugee.resume(); - thrd = debugee.threadByName("main"); if (!thrd.isSuspended()) { statDebugee = "Debugee is not suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020.java index 2d722a65bce..32182359084 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -236,7 +236,7 @@ private Map mapClassToBytes(String f } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021.java index 540573bf071..2b64ce73325 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -233,7 +233,7 @@ private String typePrompt(ReferenceType refType) { } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022.java index f703383d024..a818c152c36 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -234,7 +234,7 @@ private Map mapClassToBytes(String f } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024.java index 2c9c861908e..909f254ffac 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -292,7 +292,7 @@ private String typePrompt(ReferenceType refType) { } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses025.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses025.java index dc3d8ff896f..fa9748ddd10 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses025.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses025.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -267,7 +267,7 @@ private String typePrompt(ReferenceType refType) { } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026.java index 9b391ac4459..e9c48d0d6c5 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -206,7 +206,7 @@ private String typePrompt(ReferenceType refType) { } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027.java index 6dc6ef4704f..ae29c6f9ef8 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -265,7 +265,7 @@ private String typePrompt(ReferenceType refType) { } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028.java index b22368d6b39..818b5f382f8 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -210,7 +210,7 @@ private String typePrompt(ReferenceType refType) { } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030.java index 3c7a028b5a8..5e9b921258e 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -231,7 +231,7 @@ private String typePrompt(ReferenceType refType) { } void displayVMStatus() { - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); if (thrd.isSuspended()) { statDebugee = "Debugee is suspended"; display("\n\n<<<" + statDebugee + ">>>"); diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses031.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses031.java index d0f65a08d70..11ee58817d1 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses031.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses031.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -140,7 +140,7 @@ private void execTest() throws Failure { display("Tested class\t:" + debugeeClass.name()); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); StepRequest sreq; BreakpointRequest brkp; diff --git a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032.java b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032.java index d36ce86835f..2b50e81ab26 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -124,7 +124,7 @@ private void execTest() throws Failure { display("Tested class\t:" + debugeeClass.name()); - ThreadReference thrd = debugee.threadByName("main"); + ThreadReference thrd = debugee.mainThread(); BreakpointRequest brkp = debugee.setBreakpoint(debugeeClass, redefineclasses032a.brkpMethodName, diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java index 0f0b6fe9052..b121bd15fe3 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java @@ -38,11 +38,11 @@ * This class is wrapper for debugee VM constructed by Binder * and it uses com.sun.jdi.VirtualMachine to interact with debugee VM. *

- * In addition to the general abities to control of debugee VM process, + * In addition to the general abilities to control the debugee VM process * provided by the base class DebugeeProcess, this class * adds also several service methods over the JDI features to simplify interaction * with debugee VM (such as finding classes, setting breakpoints, - * handling events, and so on.). + * handling events, and so on). * * @see Binder * @see DebugeeProcess @@ -61,11 +61,18 @@ public class Debugee extends DebugeeProcess { /** Argument handler. */ protected ArgumentHandler argumentHandler = null; + /** wait time in ms. */ + protected long waitTime; + + /** Stashed ThreadReference for debuggee "main" thread. Not always setup. */ + protected ThreadReference mainThread; + /** Create new Debugee object for a given binder. */ protected Debugee (Binder binder) { super(binder); this.binder = binder; this.argumentHandler = (ArgumentHandler)binder.getArgumentHandler(); + this.waitTime = argumentHandler.getWaitTime() * 60000; } protected Debugee (Process process, Binder binder) { @@ -73,6 +80,7 @@ protected Debugee (Process process, Binder binder) { this.process = process; this.binder = binder; this.argumentHandler = (ArgumentHandler)binder.getArgumentHandler(); + this.waitTime = argumentHandler.getWaitTime() * 60000; } /** Setup Debugee object with given VM mirror. */ @@ -264,6 +272,21 @@ public ThreadReference threadByNameOrThrow(String name) throws JDITestRuntimeExc throw new JDITestRuntimeException("** Thread IS NOT found ** : " + name); } + public void setMainThread(ThreadReference thread) { + String threadName = thread.name(); + if (!threadName.equals("main")) { + throw new TestBug("Thread is not \"main\" thread: " + threadName); + } + mainThread = thread; + } + + public ThreadReference mainThread() { + if (mainThread == null) { + throw new JDITestRuntimeException("** mainThrad has not been set **"); + } + return mainThread; + } + /** * Return a debuggee thread by fetching it from a static field in the debuggee. */ @@ -576,8 +599,13 @@ public static Debugee prepareDebugee(ArgumentHandler argHandler, Log log, Debugee debugee = binder.bindToDebugee(mainClassName); debugee.createIOPipe(); - debugee.redirectStderr(log, DEBUGEE_STDERR_LOG_PREFIX); + + // Get the ClassPrepareEvent for the main class for the sole purpose + // of using it to get the ThreadReference for the "main" thread. + ClassPrepareEvent cpEvent = debugee.waitForClassPrepare(mainClassName); + debugee.setMainThread(cpEvent.thread()); + debugee.resume(); debugee.receiveExpectedSignal("ready"); @@ -585,6 +613,37 @@ public static Debugee prepareDebugee(ArgumentHandler argHandler, Log log, return debugee; } + public ClassPrepareEvent waitForClassPrepare(String classname) { + Event event; + EventRequestManager eventRManager = getEventRequestManager(); + ClassPrepareRequest cpRequest = eventRManager.createClassPrepareRequest(); + cpRequest.setSuspendPolicy(EventRequest.SUSPEND_ALL); + cpRequest.addClassFilter(classname); + cpRequest.addCountFilter(1); + + cpRequest.enable(); + vm.resume(); + try { + event = (ClassPrepareEvent)waitingEvent(cpRequest, waitTime); + } catch (InterruptedException e) { + throw new Failure("Thread interrupted while waiting for ClassPrepareEvent: " + e); + } + cpRequest.disable(); + + if (!(event instanceof ClassPrepareEvent)) { + throw new Failure("Unexpected Event: " + event); + } + + ClassPrepareEvent cpEvent = (ClassPrepareEvent)event; + ReferenceType cls = cpEvent.referenceType(); + if (!cls.name().equals(classname)) { + throw new Failure("Unexpected ClassName for ClassPrepareEvent: " + cls.name()); + } + + display("received: ClassPrepareEvent for class: " + classname); + return cpEvent; + } + /** * Send "quit" signal, wait for debugee VM exit and check exit. *