src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java
changeset 54955 46409371a691
parent 53637 4366a1e4a021
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java	Tue May 21 00:52:04 2019 -0700
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java	Tue May 21 10:34:57 2019 +0200
@@ -536,7 +536,8 @@
                 // Not an address
                 boolean all = name.equals("-a");
                 Threads threads = VM.getVM().getThreads();
-                for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                    JavaThread thread = threads.getJavaThreadAt(i);
                     ByteArrayOutputStream bos = new ByteArrayOutputStream();
                     thread.printThreadIDOn(new PrintStream(bos));
                     if (all || bos.toString().equals(name)) {
@@ -898,7 +899,8 @@
                     String name = t.nextToken();
                     boolean all = name.equals("-a");
                     Threads threads = VM.getVM().getThreads();
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         ByteArrayOutputStream bos = new ByteArrayOutputStream();
                         thread.printThreadIDOn(new PrintStream(bos));
                         if (all || bos.toString().equals(name)) {
@@ -927,7 +929,8 @@
                     String name = t.nextToken();
                     boolean all = name.equals("-a");
                     Threads threads = VM.getVM().getThreads();
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         ByteArrayOutputStream bos = new ByteArrayOutputStream();
                         thread.printThreadIDOn(new PrintStream(bos));
                         if (all || bos.toString().equals(name)) {
@@ -954,7 +957,8 @@
                     String name = t.nextToken();
                     boolean all = name.equals("-a");
                     Threads threads = VM.getVM().getThreads();
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         ByteArrayOutputStream bos = new ByteArrayOutputStream();
                         thread.printThreadIDOn(new PrintStream(bos));
                         if (all || bos.toString().equals(name)) {
@@ -1437,7 +1441,8 @@
                 final long stride = VM.getVM().getAddressSize();
                 if (type.equals("threads")) {
                     Threads threads = VM.getVM().getThreads();
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         Address base = thread.getStackBase();
                         Address end = thread.getLastJavaSP();
                         if (end == null) continue;
@@ -1561,7 +1566,8 @@
                     String name = t.nextToken();
                     Threads threads = VM.getVM().getThreads();
                     boolean all = name.equals("-a");
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         ByteArrayOutputStream bos = new ByteArrayOutputStream();
                         thread.printThreadIDOn(new PrintStream(bos));
                         if (all || bos.toString().equals(name)) {
@@ -1590,7 +1596,8 @@
                     String name = t.nextToken();
                     Threads threads = VM.getVM().getThreads();
                     boolean all = name.equals("-a");
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         ByteArrayOutputStream bos = new ByteArrayOutputStream();
                         thread.printThreadIDOn(new PrintStream(bos));
                         if (all || bos.toString().equals(name)) {
@@ -1613,7 +1620,8 @@
                     usage();
                 } else {
                     Threads threads = VM.getVM().getThreads();
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         thread.printThreadIDOn(out);
                         out.println(" " + thread.getThreadName());
                         thread.printInfoOn(out);
@@ -1631,7 +1639,8 @@
                     ArrayList nmethods = new ArrayList();
                     Threads threads = VM.getVM().getThreads();
                     HTMLGenerator gen = new HTMLGenerator(false);
-                    for (JavaThread thread = threads.first(); thread != null; thread = thread.next()) {
+                    for (int i = 0; i < threads.getNumberOfThreads(); i++) {
+                        JavaThread thread = threads.getJavaThreadAt(i);
                         try {
                             for (JavaVFrame vf = thread.getLastJavaVFrameDbg(); vf != null; vf = vf.javaSender()) {
                                 if (vf instanceof CompiledVFrame) {