1 /* |
1 /* |
2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
25 * @test |
25 * @test |
26 * @bug 8141564 |
26 * @bug 8141564 |
27 * @summary itables=trace should have logging from each of the statements |
27 * @summary itables=trace should have logging from each of the statements |
28 * in the code |
28 * in the code |
29 * @library /testlibrary |
29 * @library /testlibrary |
30 * @ignore 8146435 |
|
31 * @compile ClassB.java |
30 * @compile ClassB.java |
|
31 * ItablesVtableTest.java |
32 * @modules java.base/sun.misc |
32 * @modules java.base/sun.misc |
33 * java.management |
33 * java.management |
34 * @run driver ItablesTest |
34 * @run driver ItablesTest |
35 */ |
35 */ |
36 |
36 |
37 import jdk.test.lib.*; |
37 import jdk.test.lib.*; |
38 |
38 |
39 public class ItablesTest { |
39 public class ItablesTest { |
40 public static void main(String[] args) throws Exception { |
40 public static void main(String[] args) throws Exception { |
41 if (Platform.isDebugBuild()) { |
41 if (Platform.isDebugBuild()) { |
42 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( |
42 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xlog:itables=trace", "ClassB"); |
43 "-Xlog:itables=trace", "ClassB"); |
|
44 OutputAnalyzer output = new OutputAnalyzer(pb.start()); |
43 OutputAnalyzer output = new OutputAnalyzer(pb.start()); |
45 output.shouldContain(": Initializing itables for ClassB"); |
44 output.shouldContain(": Initializing itables for ClassB"); |
46 output.shouldContain(": Initializing itable indices for interface "); |
45 output.shouldContain(": Initializing itable indices for interface "); |
47 output.shouldContain("vtable index "); |
|
48 output.shouldContain("itable index "); |
46 output.shouldContain("itable index "); |
49 output.shouldContain("target: ClassB.Method1()V, method_holder: ClassB target_method flags: public"); |
47 output.shouldContain("target: ClassB.Method1()V, method_holder: ClassB target_method flags: public"); |
50 output.shouldContain("invokeinterface resolved method: caller-class"); |
48 output.shouldContain("invokeinterface resolved method: caller-class"); |
51 output.shouldContain("invokespecial resolved method: caller-class:ClassB"); |
49 output.shouldContain("invokespecial resolved method: caller-class:ClassB"); |
52 output.shouldContain("invokespecial selected method: resolved-class:ClassB"); |
50 output.shouldContain("invokespecial selected method: resolved-class:ClassB"); |
53 output.shouldContain("invokeinterface selected method: receiver-class"); |
51 output.shouldContain("invokeinterface selected method: receiver-class"); |
54 output.shouldContain("Resolving: klass: "); |
52 output.shouldContain("Resolving: klass: "); |
55 output.shouldHaveExitValue(0); |
53 output.shouldHaveExitValue(0); |
|
54 |
|
55 pb = ProcessTools.createJavaProcessBuilder("-Xlog:itables=trace", "ItablesVtableTest"); |
|
56 output = new OutputAnalyzer(pb.start()); |
|
57 output.shouldContain("vtable index "); |
|
58 output.shouldHaveExitValue(0); |
56 } |
59 } |
57 } |
60 } |
58 } |
61 } |