xref: /aosp_15_r20/art/test/2034-spaces-in-SimpleName/src_gen/SpacesInSimpleName.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2019 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker import java.io.*;
18*795d594fSAndroid Build Coastguard Worker 
19*795d594fSAndroid Build Coastguard Worker import org.objectweb.asm.*;
20*795d594fSAndroid Build Coastguard Worker 
21*795d594fSAndroid Build Coastguard Worker public class SpacesInSimpleName {
main(String args[])22*795d594fSAndroid Build Coastguard Worker   public static void main(String args[]) throws Exception {
23*795d594fSAndroid Build Coastguard Worker     String methodName = "method_with_spaces_"
24*795d594fSAndroid Build Coastguard Worker         + "20 "
25*795d594fSAndroid Build Coastguard Worker         + "a0\u00a0"
26*795d594fSAndroid Build Coastguard Worker         + "1680\u1680"
27*795d594fSAndroid Build Coastguard Worker         + "2000\u2000"
28*795d594fSAndroid Build Coastguard Worker         + "2001\u2001"
29*795d594fSAndroid Build Coastguard Worker         + "2002\u2002"
30*795d594fSAndroid Build Coastguard Worker         + "2003\u2003"
31*795d594fSAndroid Build Coastguard Worker         + "2004\u2004"
32*795d594fSAndroid Build Coastguard Worker         + "2005\u2005"
33*795d594fSAndroid Build Coastguard Worker         + "2006\u2006"
34*795d594fSAndroid Build Coastguard Worker         + "2007\u2007"
35*795d594fSAndroid Build Coastguard Worker         + "2008\u2008"
36*795d594fSAndroid Build Coastguard Worker         + "2009\u2009"
37*795d594fSAndroid Build Coastguard Worker         + "200a\u200a"
38*795d594fSAndroid Build Coastguard Worker         + "202f\u202f"
39*795d594fSAndroid Build Coastguard Worker         + "205f\u205f"
40*795d594fSAndroid Build Coastguard Worker         + "3000\u3000";
41*795d594fSAndroid Build Coastguard Worker 
42*795d594fSAndroid Build Coastguard Worker     ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
43*795d594fSAndroid Build Coastguard Worker 
44*795d594fSAndroid Build Coastguard Worker     cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, "Main",
45*795d594fSAndroid Build Coastguard Worker       null, "java/lang/Object", null);
46*795d594fSAndroid Build Coastguard Worker 
47*795d594fSAndroid Build Coastguard Worker     MethodVisitor mvMain = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC,
48*795d594fSAndroid Build Coastguard Worker       "main", "([Ljava/lang/String;)V", null, null);
49*795d594fSAndroid Build Coastguard Worker     mvMain.visitCode();
50*795d594fSAndroid Build Coastguard Worker     mvMain.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out",
51*795d594fSAndroid Build Coastguard Worker       "Ljava/io/PrintStream;");
52*795d594fSAndroid Build Coastguard Worker     mvMain.visitLdcInsn("Hello, world!");
53*795d594fSAndroid Build Coastguard Worker     mvMain.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream",
54*795d594fSAndroid Build Coastguard Worker       "println", "(Ljava/lang/String;)V", false);
55*795d594fSAndroid Build Coastguard Worker     mvMain.visitMethodInsn(Opcodes.INVOKESTATIC, "Main", methodName, "()V", false);
56*795d594fSAndroid Build Coastguard Worker     mvMain.visitInsn(Opcodes.RETURN);
57*795d594fSAndroid Build Coastguard Worker     mvMain.visitMaxs(0, 0); // args are ignored with COMPUTE_MAXS
58*795d594fSAndroid Build Coastguard Worker     mvMain.visitEnd();
59*795d594fSAndroid Build Coastguard Worker     MethodVisitor mvSpaces = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC,
60*795d594fSAndroid Build Coastguard Worker       methodName, "()V", null, null);
61*795d594fSAndroid Build Coastguard Worker     mvSpaces.visitCode();
62*795d594fSAndroid Build Coastguard Worker     mvSpaces.visitInsn(Opcodes.RETURN);
63*795d594fSAndroid Build Coastguard Worker     mvSpaces.visitMaxs(0, 0); // args are ignored with COMPUTE_MAXS
64*795d594fSAndroid Build Coastguard Worker     mvSpaces.visitEnd();
65*795d594fSAndroid Build Coastguard Worker 
66*795d594fSAndroid Build Coastguard Worker     cw.visitEnd();
67*795d594fSAndroid Build Coastguard Worker 
68*795d594fSAndroid Build Coastguard Worker     byte[] b = cw.toByteArray();
69*795d594fSAndroid Build Coastguard Worker     OutputStream out = new FileOutputStream("Main.class");
70*795d594fSAndroid Build Coastguard Worker     out.write(b, 0, b.length);
71*795d594fSAndroid Build Coastguard Worker     out.close();
72*795d594fSAndroid Build Coastguard Worker   }
73*795d594fSAndroid Build Coastguard Worker }
74