< prev index next >

src/java.base/share/classes/java/lang/invoke/GenerateJLIClassesHelper.java

Print this page
rev 58565 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: duke
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com

*** 194,223 **** * a class with a specified name. */ private static byte[] generateCodeBytesForLFs(String className, String[] names, LambdaForm[] forms) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES); cw.visit(Opcodes.V1_8, Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, className, null, InvokerBytecodeGenerator.INVOKER_SUPER_NAME, null); cw.visitSource(className.substring(className.lastIndexOf('/') + 1), null); for (int i = 0; i < forms.length; i++) { - addMethod(className, names[i], forms[i], - forms[i].methodType(), cw); - } - return cw.toByteArray(); - } - - private static void addMethod(String className, String methodName, LambdaForm form, - MethodType type, ClassWriter cw) { InvokerBytecodeGenerator g ! = new InvokerBytecodeGenerator(className, methodName, form, type); g.setClassWriter(cw); g.addMethod(); } private static LambdaForm makeReinvokerFor(MethodType type) { MethodHandle emptyHandle = MethodHandles.empty(type); return DelegatingMethodHandle.makeReinvokerForm(emptyHandle, MethodTypeForm.LF_REBIND, BoundMethodHandle.speciesData_L(), --- 194,219 ---- * a class with a specified name. */ private static byte[] generateCodeBytesForLFs(String className, String[] names, LambdaForm[] forms) { + ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES); cw.visit(Opcodes.V1_8, Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, className, null, InvokerBytecodeGenerator.INVOKER_SUPER_NAME, null); cw.visitSource(className.substring(className.lastIndexOf('/') + 1), null); for (int i = 0; i < forms.length; i++) { InvokerBytecodeGenerator g ! = new InvokerBytecodeGenerator(className, names[i], forms[i], forms[i].methodType()); g.setClassWriter(cw); g.addMethod(); } + return cw.toByteArray(); + } + private static LambdaForm makeReinvokerFor(MethodType type) { MethodHandle emptyHandle = MethodHandles.empty(type); return DelegatingMethodHandle.makeReinvokerForm(emptyHandle, MethodTypeForm.LF_REBIND, BoundMethodHandle.speciesData_L(),
< prev index next >