| // Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package com.android.tools.r8.naming.b139991218; |
| |
| import org.objectweb.asm.AnnotationVisitor; |
| import org.objectweb.asm.ClassWriter; |
| import org.objectweb.asm.FieldVisitor; |
| import org.objectweb.asm.Label; |
| import org.objectweb.asm.MethodVisitor; |
| import org.objectweb.asm.Opcodes; |
| |
| // This is the generated bytecode for a kotlin data class: |
| // data class Alpha(val id: String = next()) |
| // defined in com.android.tools.r8.naming.b139991218.Main.java. |
| public class Alpha implements Opcodes { |
| |
| public static byte[] dump() { |
| |
| ClassWriter classWriter = new ClassWriter(0); |
| FieldVisitor fieldVisitor; |
| MethodVisitor methodVisitor; |
| AnnotationVisitor annotationVisitor0; |
| |
| classWriter.visit( |
| V1_8, |
| ACC_PUBLIC | ACC_FINAL | ACC_SUPER, |
| "com/android/tools/r8/naming/b139991218/Alpha", |
| null, |
| "java/lang/Object", |
| null); |
| |
| classWriter.visitSource("main.kt", null); |
| |
| { |
| annotationVisitor0 = classWriter.visitAnnotation("Lkotlin/Metadata;", true); |
| annotationVisitor0.visit("mv", new int[] {1, 1, 13}); |
| annotationVisitor0.visit("bv", new int[] {1, 0, 3}); |
| annotationVisitor0.visit("k", new Integer(1)); |
| { |
| AnnotationVisitor annotationVisitor1 = annotationVisitor0.visitArray("d1"); |
| annotationVisitor1.visit( |
| null, |
| "\u0000 \n" |
| + "\u0002\u0018\u0002\n" |
| + "\u0002\u0010\u0000\n" |
| + "\u0000\n" |
| + "\u0002\u0010\u000e\n" |
| + "\u0002\u0008\u0006\n" |
| + "\u0002\u0010\u000b\n" |
| + "\u0002\u0008\u0002\n" |
| + "\u0002\u0010\u0008\n" |
| + "\u0000\u0008\u0086\u0008\u0018\u00002\u00020\u0001B\u000f\u0012\u0008\u0008\u0002\u0010\u0002\u001a\u00020\u0003\u00a2\u0006\u0002\u0010\u0004J\u0009\u0010\u0007\u001a\u00020\u0003H\u00c6\u0003J\u0013\u0010\u0008\u001a\u00020\u00002\u0008\u0008\u0002\u0010\u0002\u001a\u00020\u0003H\u00c6\u0001J\u0013\u0010\u0009\u001a\u00020\n" |
| + "2\u0008\u0010\u000b\u001a\u0004\u0018\u00010\u0001H\u00d6\u0003J\u0009\u0010\u000c\u001a\u00020\r" |
| + "H\u00d6\u0001J\u0009\u0010\u000e\u001a\u00020\u0003H\u00d6\u0001R\u0011\u0010\u0002\u001a\u00020\u0003\u00a2\u0006\u0008\n" |
| + "\u0000\u001a\u0004\u0008\u0005\u0010\u0006"); |
| annotationVisitor1.visitEnd(); |
| } |
| { |
| AnnotationVisitor annotationVisitor1 = annotationVisitor0.visitArray("d2"); |
| annotationVisitor1.visit(null, "Lcom/android/tools/r8/naming/b139991218/Alpha;"); |
| annotationVisitor1.visit(null, ""); |
| annotationVisitor1.visit(null, "id"); |
| annotationVisitor1.visit(null, ""); |
| annotationVisitor1.visit(null, "(Ljava/lang/String;)V"); |
| annotationVisitor1.visit(null, "getId"); |
| annotationVisitor1.visit(null, "()Ljava/lang/String;"); |
| annotationVisitor1.visit(null, "component1"); |
| annotationVisitor1.visit(null, "copy"); |
| annotationVisitor1.visit(null, "equals"); |
| annotationVisitor1.visit(null, ""); |
| annotationVisitor1.visit(null, "other"); |
| annotationVisitor1.visit(null, "hashCode"); |
| annotationVisitor1.visit(null, ""); |
| annotationVisitor1.visit(null, "toString"); |
| annotationVisitor1.visitEnd(); |
| } |
| annotationVisitor0.visitEnd(); |
| } |
| { |
| fieldVisitor = |
| classWriter.visitField(ACC_PRIVATE | ACC_FINAL, "id", "Ljava/lang/String;", null, null); |
| { |
| annotationVisitor0 = |
| fieldVisitor.visitAnnotation("Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| fieldVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod( |
| ACC_PUBLIC | ACC_FINAL, "getId", "()Ljava/lang/String;", null, null); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitAnnotation("Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitCode(); |
| Label label0 = new Label(); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitLineNumber(11, label0); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitFieldInsn( |
| GETFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitInsn(ARETURN); |
| Label label1 = new Label(); |
| methodVisitor.visitLabel(label1); |
| methodVisitor.visitLocalVariable( |
| "this", "Lcom/android/tools/r8/naming/b139991218/Alpha;", null, label0, label1, 0); |
| methodVisitor.visitMaxs(1, 1); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/String;)V", null, null); |
| methodVisitor.visitAnnotableParameterCount(1, false); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitParameterAnnotation(0, "Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitCode(); |
| Label label0 = new Label(); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitLdcInsn("id"); |
| methodVisitor.visitMethodInsn( |
| INVOKESTATIC, |
| "kotlin/jvm/internal/Intrinsics", |
| "checkParameterIsNotNull", |
| "(Ljava/lang/Object;Ljava/lang/String;)V", |
| false); |
| Label label1 = new Label(); |
| methodVisitor.visitLabel(label1); |
| methodVisitor.visitLineNumber(11, label1); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitFieldInsn( |
| PUTFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitInsn(RETURN); |
| Label label2 = new Label(); |
| methodVisitor.visitLabel(label2); |
| methodVisitor.visitLocalVariable( |
| "this", "Lcom/android/tools/r8/naming/b139991218/Alpha;", null, label0, label2, 0); |
| methodVisitor.visitLocalVariable("id", "Ljava/lang/String;", null, label0, label2, 1); |
| methodVisitor.visitMaxs(2, 2); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod( |
| ACC_PUBLIC | ACC_SYNTHETIC, |
| "<init>", |
| "(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V", |
| null, |
| null); |
| methodVisitor.visitCode(); |
| methodVisitor.visitVarInsn(ILOAD, 2); |
| methodVisitor.visitInsn(ICONST_1); |
| methodVisitor.visitInsn(IAND); |
| Label label0 = new Label(); |
| methodVisitor.visitJumpInsn(IFEQ, label0); |
| Label label1 = new Label(); |
| methodVisitor.visitLabel(label1); |
| methodVisitor.visitLineNumber(11, label1); |
| methodVisitor.visitMethodInsn( |
| INVOKESTATIC, |
| "com/android/tools/r8/naming/b139991218/Main", |
| "access$next", |
| "()Ljava/lang/String;", |
| false); |
| methodVisitor.visitVarInsn(ASTORE, 1); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitMethodInsn( |
| INVOKESPECIAL, |
| "com/android/tools/r8/naming/b139991218/Alpha", |
| "<init>", |
| "(Ljava/lang/String;)V", |
| false); |
| methodVisitor.visitInsn(RETURN); |
| methodVisitor.visitMaxs(2, 4); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); |
| methodVisitor.visitCode(); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitInsn(ACONST_NULL); |
| methodVisitor.visitInsn(ICONST_1); |
| methodVisitor.visitInsn(ACONST_NULL); |
| methodVisitor.visitMethodInsn( |
| INVOKESPECIAL, |
| "com/android/tools/r8/naming/b139991218/Alpha", |
| "<init>", |
| "(Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V", |
| false); |
| methodVisitor.visitInsn(RETURN); |
| methodVisitor.visitMaxs(4, 1); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod( |
| ACC_PUBLIC | ACC_FINAL, "component1", "()Ljava/lang/String;", null, null); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitAnnotation("Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitCode(); |
| Label label0 = new Label(); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitFieldInsn( |
| GETFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitInsn(ARETURN); |
| Label label1 = new Label(); |
| methodVisitor.visitLabel(label1); |
| methodVisitor.visitLocalVariable( |
| "this", "Lcom/android/tools/r8/naming/b139991218/Alpha;", null, label0, label1, 0); |
| methodVisitor.visitMaxs(1, 1); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod( |
| ACC_PUBLIC | ACC_FINAL, |
| "copy", |
| "(Ljava/lang/String;)Lcom/android/tools/r8/naming/b139991218/Alpha;", |
| null, |
| null); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitAnnotation("Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitAnnotableParameterCount(1, false); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitParameterAnnotation(0, "Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitCode(); |
| Label label0 = new Label(); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitLdcInsn("id"); |
| methodVisitor.visitMethodInsn( |
| INVOKESTATIC, |
| "kotlin/jvm/internal/Intrinsics", |
| "checkParameterIsNotNull", |
| "(Ljava/lang/Object;Ljava/lang/String;)V", |
| false); |
| methodVisitor.visitTypeInsn(NEW, "com/android/tools/r8/naming/b139991218/Alpha"); |
| methodVisitor.visitInsn(DUP); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitMethodInsn( |
| INVOKESPECIAL, |
| "com/android/tools/r8/naming/b139991218/Alpha", |
| "<init>", |
| "(Ljava/lang/String;)V", |
| false); |
| methodVisitor.visitInsn(ARETURN); |
| Label label1 = new Label(); |
| methodVisitor.visitLabel(label1); |
| methodVisitor.visitLocalVariable( |
| "this", "Lcom/android/tools/r8/naming/b139991218/Alpha;", null, label0, label1, 0); |
| methodVisitor.visitLocalVariable("id", "Ljava/lang/String;", null, label0, label1, 1); |
| methodVisitor.visitMaxs(3, 2); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod( |
| ACC_PUBLIC | ACC_STATIC | ACC_SYNTHETIC, |
| "copy$default", |
| "(Lcom/android/tools/r8/naming/b139991218/Alpha;Ljava/lang/String;ILjava/lang/Object;)Lcom/android/tools/r8/naming/b139991218/Alpha;", |
| null, |
| null); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitAnnotation("Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitCode(); |
| methodVisitor.visitVarInsn(ILOAD, 2); |
| methodVisitor.visitInsn(ICONST_1); |
| methodVisitor.visitInsn(IAND); |
| Label label0 = new Label(); |
| methodVisitor.visitJumpInsn(IFEQ, label0); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitFieldInsn( |
| GETFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitVarInsn(ASTORE, 1); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitMethodInsn( |
| INVOKEVIRTUAL, |
| "com/android/tools/r8/naming/b139991218/Alpha", |
| "copy", |
| "(Ljava/lang/String;)Lcom/android/tools/r8/naming/b139991218/Alpha;", |
| false); |
| methodVisitor.visitInsn(ARETURN); |
| methodVisitor.visitMaxs(2, 4); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod(ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitAnnotation("Lorg/jetbrains/annotations/NotNull;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitCode(); |
| methodVisitor.visitTypeInsn(NEW, "java/lang/StringBuilder"); |
| methodVisitor.visitInsn(DUP); |
| methodVisitor.visitMethodInsn( |
| INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V", false); |
| methodVisitor.visitLdcInsn("Alpha(id="); |
| methodVisitor.visitMethodInsn( |
| INVOKEVIRTUAL, |
| "java/lang/StringBuilder", |
| "append", |
| "(Ljava/lang/String;)Ljava/lang/StringBuilder;", |
| false); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitFieldInsn( |
| GETFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitMethodInsn( |
| INVOKEVIRTUAL, |
| "java/lang/StringBuilder", |
| "append", |
| "(Ljava/lang/String;)Ljava/lang/StringBuilder;", |
| false); |
| methodVisitor.visitLdcInsn(")"); |
| methodVisitor.visitMethodInsn( |
| INVOKEVIRTUAL, |
| "java/lang/StringBuilder", |
| "append", |
| "(Ljava/lang/String;)Ljava/lang/StringBuilder;", |
| false); |
| methodVisitor.visitMethodInsn( |
| INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false); |
| methodVisitor.visitInsn(ARETURN); |
| methodVisitor.visitMaxs(2, 1); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "hashCode", "()I", null, null); |
| methodVisitor.visitCode(); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitFieldInsn( |
| GETFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitInsn(DUP); |
| Label label0 = new Label(); |
| methodVisitor.visitJumpInsn(IFNULL, label0); |
| methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "hashCode", "()I", false); |
| Label label1 = new Label(); |
| methodVisitor.visitJumpInsn(GOTO, label1); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/String"}); |
| methodVisitor.visitInsn(POP); |
| methodVisitor.visitInsn(ICONST_0); |
| methodVisitor.visitLabel(label1); |
| methodVisitor.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {Opcodes.INTEGER}); |
| methodVisitor.visitInsn(IRETURN); |
| methodVisitor.visitMaxs(2, 1); |
| methodVisitor.visitEnd(); |
| } |
| { |
| methodVisitor = |
| classWriter.visitMethod(ACC_PUBLIC, "equals", "(Ljava/lang/Object;)Z", null, null); |
| methodVisitor.visitAnnotableParameterCount(1, false); |
| { |
| annotationVisitor0 = |
| methodVisitor.visitParameterAnnotation( |
| 0, "Lorg/jetbrains/annotations/Nullable;", false); |
| annotationVisitor0.visitEnd(); |
| } |
| methodVisitor.visitCode(); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| Label label0 = new Label(); |
| methodVisitor.visitJumpInsn(IF_ACMPEQ, label0); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitTypeInsn(INSTANCEOF, "com/android/tools/r8/naming/b139991218/Alpha"); |
| Label label1 = new Label(); |
| methodVisitor.visitJumpInsn(IFEQ, label1); |
| methodVisitor.visitVarInsn(ALOAD, 1); |
| methodVisitor.visitTypeInsn(CHECKCAST, "com/android/tools/r8/naming/b139991218/Alpha"); |
| methodVisitor.visitVarInsn(ASTORE, 2); |
| methodVisitor.visitVarInsn(ALOAD, 0); |
| methodVisitor.visitFieldInsn( |
| GETFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitVarInsn(ALOAD, 2); |
| methodVisitor.visitFieldInsn( |
| GETFIELD, "com/android/tools/r8/naming/b139991218/Alpha", "id", "Ljava/lang/String;"); |
| methodVisitor.visitMethodInsn( |
| INVOKESTATIC, |
| "kotlin/jvm/internal/Intrinsics", |
| "areEqual", |
| "(Ljava/lang/Object;Ljava/lang/Object;)Z", |
| false); |
| methodVisitor.visitJumpInsn(IFEQ, label1); |
| methodVisitor.visitLabel(label0); |
| methodVisitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null); |
| methodVisitor.visitInsn(ICONST_1); |
| methodVisitor.visitInsn(IRETURN); |
| methodVisitor.visitLabel(label1); |
| methodVisitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null); |
| methodVisitor.visitInsn(ICONST_0); |
| methodVisitor.visitInsn(IRETURN); |
| methodVisitor.visitMaxs(2, 3); |
| methodVisitor.visitEnd(); |
| } |
| classWriter.visitEnd(); |
| |
| return classWriter.toByteArray(); |
| } |
| } |