--- old/test/java/lang/StackWalker/Basic.java 2017-08-28 15:42:34.000000000 -0700 +++ new/test/java/lang/StackWalker/Basic.java 2017-08-28 15:42:33.000000000 -0700 @@ -74,6 +74,41 @@ found); } + @Test + public static void testMethodDescriptor() { + List frames = new StackBuilder(16, 16).build(); + for (StackFrame f : frames) { + System.out.format("%s.%s %s%n", f.getClassName(), f.getMethodName(), + f.getMethodDescriptor()); + switch (f.getMethodName()) { + case "m1": + if (!f.getMethodDescriptor().equals("()V")) { + throw new RuntimeException("unexpected m1 descriptor: " + + f.getMethodDescriptor()); + } + break; + case "m2": + if (!f.getMethodDescriptor().equals("()Ljava/util/List;")) { + throw new RuntimeException("unexpected m2 descriptor: " + + f.getMethodDescriptor()); + } + break; + case "m3": + if (!f.getMethodDescriptor().equals("()I")) { + throw new RuntimeException("unexpected m3 descriptor: " + + f.getMethodDescriptor()); + } + break; + case "m4": + if (!f.getMethodDescriptor().equals("(Ljava/lang/Object;)V")) { + throw new RuntimeException("unexpected m3 descriptor: " + + f.getMethodDescriptor()); + } + break; + } + } + } + private final int depth; Basic(int depth) { this.depth = depth; @@ -132,7 +167,7 @@ } } - class StackBuilder { + static class StackBuilder { private final int stackDepth; private final int limit; private int depth = 0; @@ -150,15 +185,17 @@ trace("m1"); m2(); } - void m2() { + List m2() { trace("m2"); m3(); + return null; } - void m3() { + int m3() { trace("m3"); - m4(); + m4(null); + return 0; } - void m4() { + void m4(Object o) { trace("m4"); int remaining = stackDepth-depth-1; if (remaining >= 4) {