51
52 void testStandard() throws Exception {
53 // compile and disassemble E.java, check for reference to Object.clone()
54 File x = new File(testSrc, "x");
55 String[] jcArgs = { "-d", ".",
56 new File(x, "E.java").getPath() };
57 compile(jcArgs);
58
59 String[] jpArgs = { "-classpath", ".", "-c", "E" };
60
61 StringWriter sw = new StringWriter();
62 javap(new PrintWriter(sw, true), jpArgs);
63 check(sw.toString(), "Method \"[LE;\".clone:()Ljava/lang/Object;");
64 callValues();
65 }
66
67 void testNoClone() throws Exception {
68 // compile and disassemble E.java, using modified Object.java,
69 // check for reference to System.arraycopy
70 File x = new File(testSrc, "x");
71 String[] jcArgs = { "-d", ".", "-Xmodule:java.base",
72 new File(x, "E.java").getPath(),
73 new File(x, "Object.java").getPath()};
74 compile(jcArgs);
75
76 String[] jpArgs = { "-classpath", ".", "-c", "E" };
77
78 StringWriter sw = new StringWriter();
79 javap(new PrintWriter(sw, true), jpArgs);
80 check(sw.toString(), "// Method java/lang/System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V");
81 callValues();
82 }
83
84 void compile(String... args) {
85 int rc = com.sun.tools.javac.Main.compile(args);
86 if (rc != 0)
87 throw new Error("javac failed: " + Arrays.asList(args) + ": " + rc);
88 }
89
90 void javap(PrintWriter out, String... args) throws Exception {
91 int rc = com.sun.tools.javap.Main.run(args, out);
92 if (rc != 0)
93 throw new Error("javap failed: " + Arrays.asList(args) + ": " + rc);
|
51
52 void testStandard() throws Exception {
53 // compile and disassemble E.java, check for reference to Object.clone()
54 File x = new File(testSrc, "x");
55 String[] jcArgs = { "-d", ".",
56 new File(x, "E.java").getPath() };
57 compile(jcArgs);
58
59 String[] jpArgs = { "-classpath", ".", "-c", "E" };
60
61 StringWriter sw = new StringWriter();
62 javap(new PrintWriter(sw, true), jpArgs);
63 check(sw.toString(), "Method \"[LE;\".clone:()Ljava/lang/Object;");
64 callValues();
65 }
66
67 void testNoClone() throws Exception {
68 // compile and disassemble E.java, using modified Object.java,
69 // check for reference to System.arraycopy
70 File x = new File(testSrc, "x");
71 String[] jcArgs = { "-d", ".", "--patch-module", "java.base=" + x.getAbsolutePath(),
72 new File(x, "E.java").getPath(),
73 new File(new File(new File(x, "java"), "lang"), "Object.java").getPath()};
74 compile(jcArgs);
75
76 String[] jpArgs = { "-classpath", ".", "-c", "E" };
77
78 StringWriter sw = new StringWriter();
79 javap(new PrintWriter(sw, true), jpArgs);
80 check(sw.toString(), "// Method java/lang/System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V");
81 callValues();
82 }
83
84 void compile(String... args) {
85 int rc = com.sun.tools.javac.Main.compile(args);
86 if (rc != 0)
87 throw new Error("javac failed: " + Arrays.asList(args) + ": " + rc);
88 }
89
90 void javap(PrintWriter out, String... args) throws Exception {
91 int rc = com.sun.tools.javap.Main.run(args, out);
92 if (rc != 0)
93 throw new Error("javap failed: " + Arrays.asList(args) + ": " + rc);
|