1 package annotations; 2 import org.objectweb.asm.*; 3 public class ExtendedValuesDump implements Opcodes { 4 5 public static byte[] dump () throws Exception { 6 7 ClassWriter cw = new ClassWriter(false); 8 FieldVisitor fv; 9 MethodVisitor mv; 10 AnnotationVisitor av0; 11 12 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/Values", null, "java/lang/Object", null); 13 14 cw.visitSource("Values.java", null); 15 16 { 17 av0 = cw.visitAnnotation("Lannotations/ValuesAnnotation;", true); 18 av0.visit("byteValue", new Byte((byte)1)); 19 av0.visit("charValue", new Character((char)65)); 20 av0.visit("booleanValue", new Boolean(true)); 21 av0.visit("intValue", new Integer(1)); 22 av0.visit("shortValue", new Short((short)1)); 23 av0.visit("longValue", new Long(1L)); 24 av0.visit("floatValue", new Float("1.0")); 25 av0.visit("doubleValue", new Double("1.0")); 26 av0.visit("stringValue", "A"); 27 av0.visitEnum("enumValue", "Lannotations/ValuesEnum;", "ONE"); 28 { 29 AnnotationVisitor av1 = av0.visitAnnotation("annotationValue", "Lannotations/ValueAttrAnnotation;"); 30 av1.visit("value", "annotation"); 31 av1.visitEnd(); 32 } 33 av0.visit("classValue", Type.getType("Lannotations/Values;")); 34 av0.visit("byteArrayValue", new byte[] {1,-1}); 35 av0.visit("charArrayValue", new char[] {(char)99,(char)98,(char)65535}); 36 av0.visit("booleanArrayValue", new boolean[] {true,false}); 37 av0.visit("intArrayValue", new int[] {1,-1}); 38 av0.visit("shortArrayValue", new short[] {(short)1,(short)-1}); 39 av0.visit("longArrayValue", new long[] {1L,-1L}); 40 av0.visit("floatArrayValue", new float[] {1.0f,-1.0f}); 41 av0.visit("doubleArrayValue", new double[] {1.0d,-1.0d}); 42 { 43 AnnotationVisitor av1 = av0.visitArray("stringArrayValue"); 44 av1.visit(null, "aa"); 45 av1.visit(null, "bb"); 46 av1.visitEnd(); 47 } 48 { 49 AnnotationVisitor av1 = av0.visitArray("enumArrayValue"); 50 av1.visitEnum(null, "Lannotations/ValuesEnum;", "ONE"); 51 av1.visitEnum(null, "Lannotations/ValuesEnum;", "TWO"); 52 av1.visitEnd(); 53 } 54 { 55 AnnotationVisitor av1 = av0.visitArray("annotationArrayValue"); 56 { 57 AnnotationVisitor av2 = av1.visitAnnotation(null, "Lannotations/ValueAttrAnnotation;"); 58 av2.visit("value", "annotation1"); 59 av2.visitEnd(); 60 } 61 { 62 AnnotationVisitor av2 = av1.visitAnnotation(null, "Lannotations/ValueAttrAnnotation;"); 63 av2.visit("value", "annotation2"); 64 av2.visitEnd(); 65 } 66 av1.visitEnd(); 67 } 68 { 69 AnnotationVisitor av1 = av0.visitArray("classArrayValue"); 70 av1.visit(null, Type.getType("Lannotations/Values;")); 71 av1.visit(null, Type.getType("Lannotations/Values;")); 72 av1.visitEnd(); 73 } 74 av0.visitEnd(); 75 } 76 { 77 av0 = cw.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true); 78 av0.visit("value", "classAnnotation1"); 79 av0.visitEnd(); 80 } 81 { 82 av0 = cw.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true); 83 av0.visit("value", "classAnnotation2"); 84 av0.visitEnd(); 85 } 86 { 87 fv = cw.visitField(ACC_PUBLIC, "testfield", "Ljava/lang/String;", null, null); 88 { 89 av0 = fv.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true); 90 av0.visit("value", "fieldAnnotation1"); 91 av0.visitEnd(); 92 } 93 { 94 av0 = fv.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true); 95 av0.visit("value", "fieldAnnotation2"); 96 av0.visitEnd(); 97 } 98 fv.visitEnd(); 99 } 100 { 101 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 102 mv.visitVarInsn(ALOAD, 0); 103 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 104 mv.visitVarInsn(ALOAD, 0); 105 mv.visitLdcInsn("test"); 106 mv.visitFieldInsn(PUTFIELD, "annotations/Values", "testfield", "Ljava/lang/String;"); 107 mv.visitInsn(RETURN); 108 mv.visitMaxs(2, 1); 109 mv.visitEnd(); 110 } 111 { 112 mv = cw.visitMethod(ACC_PUBLIC, "testMethod", "(Ljava/lang/String;I)V", null, null); 113 { 114 av0 = mv.visitAnnotation("Lannotations/ValueAttrAnnotation1;", true); 115 av0.visit("value", "methodAnnotation1"); 116 av0.visitEnd(); 117 } 118 { 119 av0 = mv.visitAnnotation("Lannotations/ValueAttrAnnotation2;", true); 120 av0.visit("value", "methodAnnotation2"); 121 av0.visitEnd(); 122 } 123 { 124 av0 = mv.visitParameterAnnotation(0, "Lannotations/ValueAttrAnnotation1;", true); 125 av0.visit("value", "param1Annotation1"); 126 av0.visitEnd(); 127 } 128 { 129 av0 = mv.visitParameterAnnotation(0, "Lannotations/ValueAttrAnnotation2;", true); 130 av0.visit("value", "param1Annotation2"); 131 av0.visitEnd(); 132 } 133 { 134 av0 = mv.visitParameterAnnotation(1, "Lannotations/ValueAttrAnnotation1;", true); 135 av0.visit("value", "param2Annotation1"); 136 av0.visitEnd(); 137 } 138 { 139 av0 = mv.visitParameterAnnotation(1, "Lannotations/ValueAttrAnnotation2;", true); 140 av0.visit("value", "param2Annotation2"); 141 av0.visitEnd(); 142 } 143 mv.visitInsn(RETURN); 144 mv.visitMaxs(0, 3); 145 mv.visitEnd(); 146 } 147 cw.visitEnd(); 148 149 return cw.toByteArray(); 150 } 151 152 public static byte[] dumpClassEmpty () throws Exception { 153 154 ClassWriter cw = new ClassWriter(false); 155 FieldVisitor fv; 156 MethodVisitor mv; 157 AnnotationVisitor av0; 158 TypeAnnotationVisitor xav0; 159 160 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestClassEmpty", null, "java/lang/Object", null); 161 162 cw.visitSource("TestClassEmpty.java", null); 163 164 { 165 av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 166 av0.visitEnd(); 167 } 168 { 169 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 170 mv.visitCode(); 171 Label l0 = new Label(); 172 mv.visitLabel(l0); 173 mv.visitLineNumber(3, l0); 174 mv.visitVarInsn(ALOAD, 0); 175 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 176 mv.visitInsn(RETURN); 177 Label l1 = new Label(); 178 mv.visitLabel(l1); 179 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassEmpty;", null, l0, l1, 0); 180 mv.visitMaxs(1, 1); 181 mv.visitEnd(); 182 } 183 cw.visitEnd(); 184 185 return cw.toByteArray(); 186 } 187 188 public static byte[] dumpClassNonEmpty () throws Exception { 189 190 ClassWriter cw = new ClassWriter(false); 191 FieldVisitor fv; 192 MethodVisitor mv; 193 AnnotationVisitor av0; 194 TypeAnnotationVisitor xav0; 195 196 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestClassNonEmpty", null, "java/lang/Object", null); 197 198 cw.visitSource("TestClassNonEmpty.java", null); 199 200 { 201 av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 202 av0.visitEnd(); 203 } 204 { 205 fv = cw.visitField(ACC_PUBLIC, "i", "I", null, null); 206 fv.visitEnd(); 207 } 208 { 209 fv = cw.visitField(ACC_PRIVATE, "a", "Ljava/lang/String;", null, null); 210 fv.visitEnd(); 211 } 212 { 213 mv = cw.visitMethod(ACC_PRIVATE, "<init>", "()V", null, null); 214 mv.visitCode(); 215 Label l0 = new Label(); 216 mv.visitLabel(l0); 217 mv.visitLineNumber(7, l0); 218 mv.visitVarInsn(ALOAD, 0); 219 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 220 Label l1 = new Label(); 221 mv.visitLabel(l1); 222 mv.visitLineNumber(8, l1); 223 mv.visitVarInsn(ALOAD, 0); 224 mv.visitInsn(ICONST_0); 225 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "i", "I"); 226 Label l2 = new Label(); 227 mv.visitLabel(l2); 228 mv.visitLineNumber(9, l2); 229 mv.visitInsn(RETURN); 230 Label l3 = new Label(); 231 mv.visitLabel(l3); 232 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l3, 0); 233 mv.visitMaxs(2, 1); 234 mv.visitEnd(); 235 } 236 { 237 mv = cw.visitMethod(ACC_PROTECTED, "<init>", "(Ljava/lang/String;)V", null, null); 238 mv.visitCode(); 239 Label l0 = new Label(); 240 mv.visitLabel(l0); 241 mv.visitLineNumber(11, l0); 242 mv.visitVarInsn(ALOAD, 0); 243 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 244 Label l1 = new Label(); 245 mv.visitLabel(l1); 246 mv.visitLineNumber(12, l1); 247 mv.visitVarInsn(ALOAD, 0); 248 mv.visitVarInsn(ALOAD, 1); 249 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "a", "Ljava/lang/String;"); 250 Label l2 = new Label(); 251 mv.visitLabel(l2); 252 mv.visitLineNumber(13, l2); 253 mv.visitInsn(RETURN); 254 Label l3 = new Label(); 255 mv.visitLabel(l3); 256 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l3, 0); 257 mv.visitLocalVariable("s", "Ljava/lang/String;", null, l0, l3, 1); 258 mv.visitMaxs(2, 2); 259 mv.visitEnd(); 260 } 261 { 262 mv = cw.visitMethod(ACC_PUBLIC, "i", "()I", null, null); 263 mv.visitCode(); 264 Label l0 = new Label(); 265 mv.visitLabel(l0); 266 mv.visitLineNumber(16, l0); 267 mv.visitVarInsn(ALOAD, 0); 268 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "i", "I"); 269 mv.visitInsn(IRETURN); 270 Label l1 = new Label(); 271 mv.visitLabel(l1); 272 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l1, 0); 273 mv.visitMaxs(1, 1); 274 mv.visitEnd(); 275 } 276 { 277 mv = cw.visitMethod(ACC_PUBLIC, "a", "()Ljava/lang/String;", null, null); 278 mv.visitCode(); 279 Label l0 = new Label(); 280 mv.visitLabel(l0); 281 mv.visitLineNumber(20, l0); 282 mv.visitTypeInsn(NEW, "java/lang/String"); 283 mv.visitInsn(DUP); 284 mv.visitVarInsn(ALOAD, 0); 285 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestClassNonEmpty", "a", "Ljava/lang/String;"); 286 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "(Ljava/lang/String;)V"); 287 mv.visitVarInsn(ASTORE, 1); 288 Label l1 = new Label(); 289 mv.visitLabel(l1); 290 mv.visitLineNumber(21, l1); 291 mv.visitTypeInsn(NEW, "java/lang/StringBuilder"); 292 mv.visitInsn(DUP); 293 mv.visitVarInsn(ALOAD, 1); 294 mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "valueOf", "(Ljava/lang/Object;)Ljava/lang/String;"); 295 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V"); 296 mv.visitVarInsn(ALOAD, 1); 297 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;"); 298 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;"); 299 mv.visitVarInsn(ASTORE, 1); 300 Label l2 = new Label(); 301 mv.visitLabel(l2); 302 mv.visitLineNumber(22, l2); 303 mv.visitVarInsn(ALOAD, 1); 304 mv.visitInsn(ARETURN); 305 Label l3 = new Label(); 306 mv.visitLabel(l3); 307 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestClassNonEmpty;", null, l0, l3, 0); 308 mv.visitLocalVariable("s", "Ljava/lang/String;", null, l1, l3, 1); 309 mv.visitMaxs(3, 2); 310 mv.visitEnd(); 311 } 312 cw.visitEnd(); 313 314 return cw.toByteArray(); 315 } 316 public static byte[] dumpFieldSimple () throws Exception { 317 318 ClassWriter cw = new ClassWriter(false); 319 FieldVisitor fv; 320 MethodVisitor mv; 321 AnnotationVisitor av0; 322 TypeAnnotationVisitor xav0; 323 324 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestFieldSimple", null, "java/lang/Object", null); 325 326 cw.visitSource("TestFieldSimple.java", null); 327 328 { 329 av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 330 av0.visitEnd(); 331 } 332 { 333 fv = cw.visitField(ACC_PUBLIC, "i", "I", null, null); 334 { 335 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 336 av0.visitEnd(); 337 } 338 fv.visitEnd(); 339 } 340 { 341 fv = cw.visitField(ACC_PRIVATE, "j", "I", null, null); 342 { 343 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true); 344 av0.visit("value", "Hello"); 345 av0.visitEnd(); 346 } 347 fv.visitEnd(); 348 } 349 { 350 fv = cw.visitField(ACC_PROTECTED, "o", "Ljava/lang/Object;", null, null); 351 { 352 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 353 av0.visitEnd(); 354 } 355 { 356 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true); 357 av0.visit("value", "H"); 358 av0.visitEnd(); 359 } 360 fv.visitEnd(); 361 } 362 { 363 fv = cw.visitField(0, "s", "Ljava/lang/String;", null, null); 364 { 365 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true); 366 av0.visit("value", "E"); 367 av0.visitEnd(); 368 } 369 fv.visitEnd(); 370 } 371 { 372 fv = cw.visitField(0, "f", "Lannotations/tests/classfile/cases/TestFieldSimple;", null, null); 373 fv.visitEnd(); 374 } 375 { 376 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 377 mv.visitCode(); 378 Label l0 = new Label(); 379 mv.visitLabel(l0); 380 mv.visitLineNumber(3, l0); 381 mv.visitVarInsn(ALOAD, 0); 382 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 383 Label l1 = new Label(); 384 mv.visitLabel(l1); 385 mv.visitLineNumber(7, l1); 386 mv.visitVarInsn(ALOAD, 0); 387 mv.visitInsn(ACONST_NULL); 388 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestFieldSimple", "s", "Ljava/lang/String;"); 389 Label l2 = new Label(); 390 mv.visitLabel(l2); 391 mv.visitLineNumber(8, l2); 392 mv.visitVarInsn(ALOAD, 0); 393 mv.visitInsn(ACONST_NULL); 394 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestFieldSimple", "f", "Lannotations/tests/classfile/cases/TestFieldSimple;"); 395 Label l3 = new Label(); 396 mv.visitLabel(l3); 397 mv.visitLineNumber(3, l3); 398 mv.visitInsn(RETURN); 399 Label l4 = new Label(); 400 mv.visitLabel(l4); 401 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestFieldSimple;", null, l0, l4, 0); 402 mv.visitMaxs(2, 1); 403 mv.visitEnd(); 404 } 405 cw.visitEnd(); 406 407 return cw.toByteArray(); 408 } 409 410 public static byte[] dumpFieldGeneric () throws Exception { 411 412 ClassWriter cw = new ClassWriter(false); 413 FieldVisitor fv; 414 MethodVisitor mv; 415 AnnotationVisitor av0; 416 TypeAnnotationVisitor xav0; 417 418 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestFieldGeneric", "<T:Ljava/lang/Object;>Ljava/lang/Object;", "java/lang/Object", null); 419 420 cw.visitSource("TestFieldGeneric.java", null); 421 422 { 423 av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 424 av0.visitEnd(); 425 } 426 { 427 fv = cw.visitField(0, "s", "Ljava/lang/String;", null, null); 428 { 429 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/F;", true); 430 av0.visit("fieldA", new Integer(1)); 431 av0.visit("fieldB", "fi"); 432 av0.visitEnd(); 433 } 434 fv.visitEnd(); 435 } 436 { 437 fv = cw.visitField(0, "list", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", null); 438 { 439 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/G;", true); 440 av0.visit("fieldA", new Integer(3)); 441 av0.visit("fieldB", "three"); 442 av0.visit("fieldC", new boolean[] {true,false}); 443 av0.visit("fieldD", new Integer(2)); 444 av0.visit("fieldE", new Integer(4)); 445 av0.visitEnd(); 446 } 447 fv.visitEnd(); 448 } 449 { 450 fv = cw.visitField(0, "set", "Ljava/util/Set;", "Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric;>;", null); 451 { 452 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/E;", true); 453 av0.visit("fieldA", new Integer(2)); 454 av0.visit("fieldB", "rh"); 455 av0.visitEnd(); 456 } 457 { 458 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/F;", true); 459 av0.visit("fieldA", new Integer(1)); 460 av0.visit("fieldB", "if"); 461 av0.visitEnd(); 462 } 463 fv.visitEnd(); 464 } 465 { 466 fv = cw.visitField(0, "testFieldGeneric", "Lannotations/tests/classfile/cases/TestFieldGeneric;", "Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;", null); 467 { 468 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 469 xav0.visitXTargetType(new Integer(11)); 470 xav0.visitXLocationLength(new Integer(1)); 471 xav0.visitXLocation(new Integer(0)); 472 xav0.visitEnd(); 473 } 474 fv.visitEnd(); 475 } 476 { 477 fv = cw.visitField(0, "otherSet", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", null); 478 fv.visitEnd(); 479 } 480 { 481 fv = cw.visitField(0, "nestedSet", "Ljava/util/Set;", "Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric<Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric;>;>;>;", null); 482 { 483 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true); 484 av0.visit("value", "nested"); 485 av0.visitEnd(); 486 } 487 { 488 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/F;", true); 489 xav0.visit("fieldA", new Integer(1)); 490 xav0.visit("fieldB", "n"); 491 xav0.visitXTargetType(new Integer(11)); 492 xav0.visitXLocationLength(new Integer(1)); 493 xav0.visitXLocation(new Integer(0)); 494 xav0.visitEnd(); 495 } 496 { 497 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 498 xav0.visitXTargetType(new Integer(11)); 499 xav0.visitXLocationLength(new Integer(1)); 500 xav0.visitXLocation(new Integer(0)); 501 xav0.visitEnd(); 502 } 503 { 504 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 505 xav0.visit("fieldA", new Integer(-2)); 506 xav0.visit("fieldB", "nl"); 507 xav0.visitXTargetType(new Integer(11)); 508 xav0.visitXLocationLength(new Integer(1)); 509 xav0.visitXLocation(new Integer(0)); 510 xav0.visitEnd(); 511 } 512 { 513 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 514 xav0.visit("value", "nil"); 515 xav0.visitXTargetType(new Integer(11)); 516 xav0.visitXLocationLength(new Integer(2)); 517 xav0.visitXLocation(new Integer(0)); 518 xav0.visitXLocation(new Integer(0)); 519 xav0.visitEnd(); 520 } 521 { 522 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/D;", true); 523 xav0.visit("fieldA", new Integer(-1)); 524 xav0.visit("fieldB", "hello"); 525 xav0.visit("fieldC", new int[] {3,2,4}); 526 xav0.visitXTargetType(new Integer(11)); 527 xav0.visitXLocationLength(new Integer(3)); 528 xav0.visitXLocation(new Integer(0)); 529 xav0.visitXLocation(new Integer(0)); 530 xav0.visitXLocation(new Integer(0)); 531 xav0.visitEnd(); 532 } 533 fv.visitEnd(); 534 } 535 { 536 fv = cw.visitField(0, "nestedMap", "Ljava/util/Map;", "Ljava/util/Map<Ljava/util/Set<Lannotations/tests/classfile/cases/TestFieldGeneric;>;Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;>;", null); 537 { 538 av0 = fv.visitAnnotation("Lannotations/tests/classfile/foo/C;", true); 539 av0.visit("fieldA", new Integer(1)); 540 av0.visit("fieldB", "nested"); 541 av0.visitEnd(); 542 } 543 { 544 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 545 xav0.visitXTargetType(new Integer(11)); 546 xav0.visitXLocationLength(new Integer(1)); 547 xav0.visitXLocation(new Integer(1)); 548 xav0.visitEnd(); 549 } 550 { 551 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 552 xav0.visit("value", "inner most T"); 553 xav0.visitXTargetType(new Integer(11)); 554 xav0.visitXLocationLength(new Integer(2)); 555 xav0.visitXLocation(new Integer(1)); 556 xav0.visitXLocation(new Integer(0)); 557 xav0.visitEnd(); 558 } 559 { 560 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 561 xav0.visit("fieldA", new Integer(256)); 562 xav0.visit("fieldB", "hello"); 563 xav0.visitXTargetType(new Integer(11)); 564 xav0.visitXLocationLength(new Integer(2)); 565 xav0.visitXLocation(new Integer(0)); 566 xav0.visitXLocation(new Integer(0)); 567 xav0.visitEnd(); 568 } 569 { 570 xav0 = fv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 571 xav0.visit("value", "inner most F"); 572 xav0.visitXTargetType(new Integer(11)); 573 xav0.visitXLocationLength(new Integer(1)); 574 xav0.visitXLocation(new Integer(0)); 575 xav0.visitEnd(); 576 } 577 fv.visitEnd(); 578 } 579 { 580 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 581 mv.visitCode(); 582 Label l0 = new Label(); 583 mv.visitLabel(l0); 584 mv.visitLineNumber(13, l0); 585 mv.visitVarInsn(ALOAD, 0); 586 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 587 Label l1 = new Label(); 588 mv.visitLabel(l1); 589 mv.visitLineNumber(11, l1); 590 mv.visitVarInsn(ALOAD, 0); 591 mv.visitTypeInsn(NEW, "annotations/tests/classfile/cases/TestFieldGeneric"); 592 mv.visitInsn(DUP); 593 mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestFieldGeneric", "<init>", "()V"); 594 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestFieldGeneric", "testFieldGeneric", "Lannotations/tests/classfile/cases/TestFieldGeneric;"); 595 Label l2 = new Label(); 596 mv.visitLabel(l2); 597 mv.visitLineNumber(15, l2); 598 mv.visitInsn(RETURN); 599 Label l3 = new Label(); 600 mv.visitLabel(l3); 601 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestFieldGeneric;", "Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;", l0, l3, 0); 602 mv.visitMaxs(3, 1); 603 mv.visitEnd(); 604 } 605 { 606 mv = cw.visitMethod(ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null); 607 mv.visitCode(); 608 Label l0 = new Label(); 609 mv.visitLabel(l0); 610 mv.visitLineNumber(20, l0); 611 mv.visitVarInsn(ALOAD, 0); 612 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestFieldGeneric", "s", "Ljava/lang/String;"); 613 mv.visitInsn(ARETURN); 614 Label l1 = new Label(); 615 mv.visitLabel(l1); 616 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestFieldGeneric;", "Lannotations/tests/classfile/cases/TestFieldGeneric<TT;>;", l0, l1, 0); 617 mv.visitMaxs(1, 1); 618 mv.visitEnd(); 619 } 620 cw.visitEnd(); 621 622 return cw.toByteArray(); 623 } 624 public static byte[] dumpLocalVariable () throws Exception { 625 626 ClassWriter cw = new ClassWriter(false); 627 FieldVisitor fv; 628 MethodVisitor mv; 629 AnnotationVisitor av0; 630 TypeAnnotationVisitor xav0; 631 632 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestLocalVariable", "<T:Ljava/lang/Object;>Ljava/lang/Object;", "java/lang/Object", null); 633 634 cw.visitSource("TestLocalVariable.java", null); 635 636 { 637 av0 = cw.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 638 av0.visitEnd(); 639 } 640 { 641 fv = cw.visitField(ACC_PUBLIC, "i", "I", null, null); 642 fv.visitEnd(); 643 } 644 { 645 fv = cw.visitField(ACC_PUBLIC, "s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/util/Set;>;", null); 646 fv.visitEnd(); 647 } 648 { 649 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 650 { 651 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 652 xav0.visit("fieldA", new Integer(166)); 653 xav0.visit("fieldB", "good"); 654 xav0.visitXTargetType(new Integer(4)); 655 xav0.visitXOffset(new Integer(6)); 656 xav0.visitEnd(); 657 } 658 mv.visitCode(); 659 Label l0 = new Label(); 660 mv.visitLabel(l0); 661 mv.visitLineNumber(10, l0); 662 mv.visitVarInsn(ALOAD, 0); 663 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 664 Label l1 = new Label(); 665 mv.visitLabel(l1); 666 mv.visitLineNumber(11, l1); 667 mv.visitInsn(ICONST_0); 668 mv.visitVarInsn(ISTORE, 1); 669 Label l2 = new Label(); 670 mv.visitLabel(l2); 671 mv.visitLineNumber(12, l2); 672 mv.visitVarInsn(ALOAD, 0); 673 mv.visitInsn(ICONST_0); 674 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I"); 675 Label l3 = new Label(); 676 mv.visitLabel(l3); 677 mv.visitLineNumber(13, l3); 678 mv.visitInsn(RETURN); 679 Label l4 = new Label(); 680 mv.visitLabel(l4); 681 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l4, 0); 682 mv.visitLocalVariable("t", "I", null, l2, l4, 1); 683 mv.visitMaxs(2, 2); 684 mv.visitEnd(); 685 } 686 { 687 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(I)V", null, null); 688 { 689 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 690 xav0.visitXTargetType(new Integer(4)); 691 xav0.visitXOffset(new Integer(0)); 692 xav0.visitEnd(); 693 } 694 mv.visitCode(); 695 Label l0 = new Label(); 696 mv.visitLabel(l0); 697 mv.visitLineNumber(15, l0); 698 mv.visitVarInsn(ALOAD, 0); 699 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 700 Label l1 = new Label(); 701 mv.visitLabel(l1); 702 mv.visitLineNumber(16, l1); 703 mv.visitVarInsn(ALOAD, 0); 704 mv.visitVarInsn(ILOAD, 1); 705 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I"); 706 Label l2 = new Label(); 707 mv.visitLabel(l2); 708 mv.visitLineNumber(17, l2); 709 mv.visitInsn(RETURN); 710 Label l3 = new Label(); 711 mv.visitLabel(l3); 712 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l3, 0); 713 mv.visitLocalVariable("i", "I", null, l0, l3, 1); 714 mv.visitMaxs(2, 2); 715 mv.visitEnd(); 716 } 717 { 718 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(Ljava/lang/Integer;)V", null, null); 719 mv.visitCode(); 720 Label l0 = new Label(); 721 mv.visitLabel(l0); 722 mv.visitLineNumber(19, l0); 723 mv.visitVarInsn(ALOAD, 0); 724 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 725 Label l1 = new Label(); 726 mv.visitLabel(l1); 727 mv.visitLineNumber(20, l1); 728 mv.visitInsn(ICONST_1); 729 mv.visitVarInsn(ISTORE, 2); 730 Label l2 = new Label(); 731 mv.visitLabel(l2); 732 mv.visitLineNumber(21, l2); 733 mv.visitIincInsn(2, 1); 734 Label l3 = new Label(); 735 mv.visitLabel(l3); 736 mv.visitLineNumber(22, l3); 737 mv.visitVarInsn(ALOAD, 0); 738 mv.visitVarInsn(ALOAD, 1); 739 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I"); 740 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I"); 741 Label l4 = new Label(); 742 mv.visitLabel(l4); 743 mv.visitLineNumber(23, l4); 744 mv.visitIincInsn(2, -1); 745 Label l5 = new Label(); 746 mv.visitLabel(l5); 747 mv.visitLineNumber(24, l5); 748 mv.visitVarInsn(ALOAD, 0); 749 mv.visitVarInsn(ILOAD, 2); 750 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I"); 751 Label l6 = new Label(); 752 mv.visitLabel(l6); 753 mv.visitLineNumber(25, l6); 754 mv.visitInsn(RETURN); 755 Label l7 = new Label(); 756 mv.visitLabel(l7); 757 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l7, 0); 758 mv.visitLocalVariable("j", "Ljava/lang/Integer;", null, l0, l7, 1); 759 mv.visitLocalVariable("k", "I", null, l2, l7, 2); 760 mv.visitMaxs(2, 3); 761 mv.visitEnd(); 762 } 763 { 764 mv = cw.visitMethod(ACC_PUBLIC, "i", "()I", null, null); 765 mv.visitCode(); 766 Label l0 = new Label(); 767 mv.visitLabel(l0); 768 mv.visitLineNumber(28, l0); 769 mv.visitVarInsn(ALOAD, 0); 770 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariable", "i", "I"); 771 mv.visitInsn(IRETURN); 772 Label l1 = new Label(); 773 mv.visitLabel(l1); 774 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l1, 0); 775 mv.visitMaxs(1, 1); 776 mv.visitEnd(); 777 } 778 { 779 mv = cw.visitMethod(ACC_PUBLIC, "j", "()I", null, null); 780 { 781 av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 782 av0.visitEnd(); 783 } 784 { 785 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 786 xav0.visit("value", "hello"); 787 xav0.visitXTargetType(new Integer(4)); 788 xav0.visitXOffset(new Integer(2)); 789 xav0.visitEnd(); 790 } 791 mv.visitCode(); 792 Label l0 = new Label(); 793 mv.visitLabel(l0); 794 mv.visitLineNumber(32, l0); 795 mv.visitInsn(ICONST_1); 796 mv.visitVarInsn(ISTORE, 1); 797 Label l1 = new Label(); 798 mv.visitLabel(l1); 799 mv.visitLineNumber(33, l1); 800 mv.visitVarInsn(ALOAD, 0); 801 mv.visitMethodInsn(INVOKEVIRTUAL, "annotations/tests/classfile/cases/TestLocalVariable", "j", "()I"); 802 mv.visitInsn(IRETURN); 803 Label l2 = new Label(); 804 mv.visitLabel(l2); 805 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariable;", "Lannotations/tests/classfile/cases/TestLocalVariable<TT;>;", l0, l2, 0); 806 mv.visitLocalVariable("temp", "I", null, l1, l2, 1); 807 mv.visitMaxs(1, 2); 808 mv.visitEnd(); 809 } 810 { 811 mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "someMethod", "()V", null, null); 812 mv.visitCode(); 813 Label l0 = new Label(); 814 mv.visitLabel(l0); 815 mv.visitLineNumber(37, l0); 816 mv.visitTypeInsn(NEW, "annotations/tests/classfile/cases/TestLocalVariable"); 817 mv.visitInsn(DUP); 818 mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestLocalVariable", "<init>", "()V"); 819 mv.visitVarInsn(ASTORE, 0); 820 Label l1 = new Label(); 821 mv.visitLabel(l1); 822 mv.visitLineNumber(38, l1); 823 mv.visitTypeInsn(NEW, "java/lang/String"); 824 mv.visitInsn(DUP); 825 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "()V"); 826 mv.visitVarInsn(ASTORE, 1); 827 Label l2 = new Label(); 828 mv.visitLabel(l2); 829 mv.visitLineNumber(39, l2); 830 mv.visitLdcInsn(new Double("2.0")); 831 mv.visitMethodInsn(INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;"); 832 mv.visitVarInsn(ASTORE, 2); 833 Label l3 = new Label(); 834 mv.visitLabel(l3); 835 mv.visitLineNumber(40, l3); 836 mv.visitInsn(RETURN); 837 Label l4 = new Label(); 838 mv.visitLabel(l4); 839 mv.visitLocalVariable("t", "Lannotations/tests/classfile/cases/TestLocalVariable;", null, l1, l4, 0); 840 mv.visitLocalVariable("s", "Ljava/lang/String;", null, l2, l4, 1); 841 mv.visitLocalVariable("d", "Ljava/lang/Double;", null, l3, l4, 2); 842 mv.visitMaxs(2, 3); 843 mv.visitEnd(); 844 } 845 { 846 mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null); 847 mv.visitCode(); 848 Label l0 = new Label(); 849 mv.visitLabel(l0); 850 mv.visitLineNumber(43, l0); 851 mv.visitInsn(ICONST_1); 852 mv.visitVarInsn(ISTORE, 1); 853 Label l1 = new Label(); 854 mv.visitLabel(l1); 855 mv.visitLineNumber(44, l1); 856 mv.visitFieldInsn(GETSTATIC, "java/lang/Boolean", "TRUE", "Ljava/lang/Boolean;"); 857 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z"); 858 mv.visitVarInsn(ISTORE, 2); 859 Label l2 = new Label(); 860 mv.visitLabel(l2); 861 mv.visitLineNumber(45, l2); 862 mv.visitFieldInsn(GETSTATIC, "java/lang/Boolean", "FALSE", "Ljava/lang/Boolean;"); 863 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z"); 864 mv.visitVarInsn(ISTORE, 3); 865 Label l3 = new Label(); 866 mv.visitLabel(l3); 867 mv.visitLineNumber(46, l3); 868 mv.visitVarInsn(ILOAD, 2); 869 Label l4 = new Label(); 870 mv.visitJumpInsn(IFEQ, l4); 871 mv.visitVarInsn(ILOAD, 3); 872 mv.visitJumpInsn(IFEQ, l4); 873 mv.visitInsn(ICONST_1); 874 Label l5 = new Label(); 875 mv.visitJumpInsn(GOTO, l5); 876 mv.visitLabel(l4); 877 mv.visitInsn(ICONST_0); 878 mv.visitLabel(l5); 879 mv.visitVarInsn(ISTORE, 1); 880 Label l6 = new Label(); 881 mv.visitLabel(l6); 882 mv.visitLineNumber(47, l6); 883 mv.visitVarInsn(ILOAD, 1); 884 Label l7 = new Label(); 885 mv.visitJumpInsn(IFNE, l7); 886 mv.visitVarInsn(ILOAD, 3); 887 Label l8 = new Label(); 888 mv.visitJumpInsn(IFEQ, l8); 889 mv.visitLabel(l7); 890 mv.visitLineNumber(48, l7); 891 mv.visitVarInsn(ILOAD, 1); 892 mv.visitVarInsn(ISTORE, 2); 893 mv.visitLabel(l8); 894 mv.visitLineNumber(50, l8); 895 mv.visitVarInsn(ILOAD, 2); 896 Label l9 = new Label(); 897 mv.visitJumpInsn(IFEQ, l9); 898 Label l10 = new Label(); 899 mv.visitLabel(l10); 900 mv.visitLineNumber(51, l10); 901 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 902 mv.visitLdcInsn("Message"); 903 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); 904 mv.visitLabel(l9); 905 mv.visitLineNumber(53, l9); 906 mv.visitInsn(RETURN); 907 Label l11 = new Label(); 908 mv.visitLabel(l11); 909 mv.visitLocalVariable("args", "[Ljava/lang/String;", null, l0, l11, 0); 910 mv.visitLocalVariable("b", "Z", null, l1, l11, 1); 911 mv.visitLocalVariable("b1", "Z", null, l2, l11, 2); 912 mv.visitLocalVariable("b2", "Z", null, l3, l11, 3); 913 mv.visitMaxs(2, 4); 914 mv.visitEnd(); 915 } 916 cw.visitEnd(); 917 918 return cw.toByteArray(); 919 } 920 921 public static byte[] dumpLocalVariableGenericArray () throws Exception { 922 923 ClassWriter cw = new ClassWriter(false); 924 FieldVisitor fv; 925 MethodVisitor mv; 926 AnnotationVisitor av0; 927 TypeAnnotationVisitor xav0; 928 929 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", null, "java/lang/Object", null); 930 931 cw.visitSource("TestLocalVariableGenericArray.java", null); 932 933 { 934 fv = cw.visitField(0, "i", "Ljava/lang/Integer;", null, null); 935 fv.visitEnd(); 936 } 937 { 938 fv = cw.visitField(0, "map1", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;", null); 939 fv.visitEnd(); 940 } 941 { 942 fv = cw.visitField(0, "map2", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/ArrayList<Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;>;>;", null); 943 fv.visitEnd(); 944 } 945 { 946 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 947 { 948 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 949 xav0.visit("value", "good"); 950 xav0.visitXTargetType(new Integer(8)); 951 xav0.visitXStartPc(new Integer(37)); 952 xav0.visitXLength(new Integer(55)); 953 xav0.visitXIndex(new Integer(2)); 954 xav0.visitEnd(); 955 } 956 { 957 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 958 xav0.visit("value", "first param"); 959 xav0.visitXTargetType(new Integer(9)); 960 xav0.visitXStartPc(new Integer(37)); 961 xav0.visitXLength(new Integer(55)); 962 xav0.visitXIndex(new Integer(2)); 963 xav0.visitXLocationLength(new Integer(1)); 964 xav0.visitXLocation(new Integer(0)); 965 xav0.visitEnd(); 966 } 967 { 968 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 969 xav0.visit("value", "second param"); 970 xav0.visitXTargetType(new Integer(9)); 971 xav0.visitXStartPc(new Integer(37)); 972 xav0.visitXLength(new Integer(55)); 973 xav0.visitXIndex(new Integer(2)); 974 xav0.visitXLocationLength(new Integer(1)); 975 xav0.visitXLocation(new Integer(1)); 976 xav0.visitEnd(); 977 } 978 mv.visitCode(); 979 Label l0 = new Label(); 980 mv.visitLabel(l0); 981 mv.visitLineNumber(17, l0); 982 mv.visitVarInsn(ALOAD, 0); 983 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 984 Label l1 = new Label(); 985 mv.visitLabel(l1); 986 mv.visitLineNumber(18, l1); 987 mv.visitInsn(ICONST_1); 988 mv.visitVarInsn(ISTORE, 1); 989 Label l2 = new Label(); 990 mv.visitLabel(l2); 991 mv.visitLineNumber(19, l2); 992 mv.visitVarInsn(ALOAD, 0); 993 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "map2", "Ljava/util/Map;"); 994 mv.visitLdcInsn("4gf"); 995 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); 996 mv.visitTypeInsn(CHECKCAST, "java/util/ArrayList"); 997 mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "iterator", "()Ljava/util/Iterator;"); 998 mv.visitVarInsn(ASTORE, 3); 999 Label l3 = new Label(); 1000 mv.visitJumpInsn(GOTO, l3); 1001 Label l4 = new Label(); 1002 mv.visitLabel(l4); 1003 mv.visitVarInsn(ALOAD, 3); 1004 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;"); 1005 mv.visitTypeInsn(CHECKCAST, "java/util/Map"); 1006 mv.visitVarInsn(ASTORE, 2); 1007 Label l5 = new Label(); 1008 mv.visitLabel(l5); 1009 mv.visitLineNumber(20, l5); 1010 mv.visitVarInsn(ILOAD, 1); 1011 mv.visitInsn(ICONST_5); 1012 Label l6 = new Label(); 1013 mv.visitJumpInsn(IF_ICMPGE, l6); 1014 Label l7 = new Label(); 1015 mv.visitLabel(l7); 1016 mv.visitLineNumber(21, l7); 1017 mv.visitVarInsn(ALOAD, 0); 1018 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "map2", "Ljava/util/Map;"); 1019 mv.visitLdcInsn(""); 1020 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); 1021 mv.visitTypeInsn(CHECKCAST, "java/util/ArrayList"); 1022 mv.visitTypeInsn(NEW, "java/util/ArrayList"); 1023 mv.visitInsn(DUP); 1024 mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V"); 1025 mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "indexOf", "(Ljava/lang/Object;)I"); 1026 mv.visitVarInsn(ISTORE, 1); 1027 Label l8 = new Label(); 1028 mv.visitJumpInsn(GOTO, l8); 1029 mv.visitLabel(l6); 1030 mv.visitLineNumber(23, l6); 1031 mv.visitVarInsn(ALOAD, 0); 1032 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "i", "Ljava/lang/Integer;"); 1033 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I"); 1034 mv.visitInsn(ICONST_5); 1035 mv.visitInsn(IADD); 1036 mv.visitVarInsn(ISTORE, 1); 1037 mv.visitLabel(l8); 1038 mv.visitLineNumber(25, l8); 1039 mv.visitIincInsn(1, 1); 1040 mv.visitLabel(l3); 1041 mv.visitLineNumber(19, l3); 1042 mv.visitVarInsn(ALOAD, 3); 1043 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z"); 1044 mv.visitJumpInsn(IFNE, l4); 1045 Label l9 = new Label(); 1046 mv.visitLabel(l9); 1047 mv.visitLineNumber(27, l9); 1048 mv.visitInsn(RETURN); 1049 Label l10 = new Label(); 1050 mv.visitLabel(l10); 1051 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l10, 0); 1052 mv.visitLocalVariable("k", "I", null, l2, l10, 1); 1053 mv.visitLocalVariable("e", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;", l5, l9, 2); 1054 mv.visitMaxs(3, 4); 1055 mv.visitEnd(); 1056 } 1057 { 1058 mv = cw.visitMethod(ACC_PUBLIC, "someMethod", "()V", null, null); 1059 { 1060 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1061 xav0.visit("value", "bad"); 1062 xav0.visitXTargetType(new Integer(8)); 1063 xav0.visitXStartPc(new Integer(8)); 1064 xav0.visitXLength(new Integer(26)); 1065 xav0.visitXIndex(new Integer(1)); 1066 xav0.visitEnd(); 1067 } 1068 { 1069 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 1070 xav0.visit("fieldA", new Integer(0)); 1071 xav0.visit("fieldB", "String"); 1072 xav0.visitXTargetType(new Integer(9)); 1073 xav0.visitXStartPc(new Integer(8)); 1074 xav0.visitXLength(new Integer(26)); 1075 xav0.visitXIndex(new Integer(1)); 1076 xav0.visitXLocationLength(new Integer(1)); 1077 xav0.visitXLocation(new Integer(0)); 1078 xav0.visitEnd(); 1079 } 1080 mv.visitCode(); 1081 Label l0 = new Label(); 1082 mv.visitLabel(l0); 1083 mv.visitLineNumber(30, l0); 1084 mv.visitTypeInsn(NEW, "java/util/HashSet"); 1085 mv.visitInsn(DUP); 1086 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V"); 1087 mv.visitVarInsn(ASTORE, 1); 1088 Label l1 = new Label(); 1089 mv.visitLabel(l1); 1090 mv.visitLineNumber(31, l1); 1091 mv.visitVarInsn(ALOAD, 1); 1092 mv.visitTypeInsn(NEW, "java/lang/String"); 1093 mv.visitInsn(DUP); 1094 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "()V"); 1095 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z"); 1096 mv.visitInsn(POP); 1097 Label l2 = new Label(); 1098 mv.visitLabel(l2); 1099 mv.visitLineNumber(32, l2); 1100 mv.visitVarInsn(ALOAD, 1); 1101 mv.visitVarInsn(ALOAD, 1); 1102 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;"); 1103 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z"); 1104 mv.visitInsn(POP); 1105 Label l3 = new Label(); 1106 mv.visitLabel(l3); 1107 mv.visitLineNumber(33, l3); 1108 mv.visitInsn(RETURN); 1109 Label l4 = new Label(); 1110 mv.visitLabel(l4); 1111 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l4, 0); 1112 mv.visitLocalVariable("s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", l1, l4, 1); 1113 mv.visitMaxs(3, 2); 1114 mv.visitEnd(); 1115 } 1116 { 1117 mv = cw.visitMethod(ACC_PRIVATE, "someMethod2", "(I)I", null, null); 1118 { 1119 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 1120 xav0.visit("fieldA", new Integer(0)); 1121 xav0.visit("fieldB", "Boolean"); 1122 xav0.visitXTargetType(new Integer(8)); 1123 xav0.visitXStartPc(new Integer(8)); 1124 xav0.visitXLength(new Integer(66)); 1125 xav0.visitXIndex(new Integer(2)); 1126 xav0.visitEnd(); 1127 } 1128 { 1129 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1130 xav0.visitXTargetType(new Integer(9)); 1131 xav0.visitXStartPc(new Integer(8)); 1132 xav0.visitXLength(new Integer(66)); 1133 xav0.visitXIndex(new Integer(2)); 1134 xav0.visitXLocationLength(new Integer(1)); 1135 xav0.visitXLocation(new Integer(0)); 1136 xav0.visitEnd(); 1137 } 1138 { 1139 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1140 xav0.visitXTargetType(new Integer(8)); 1141 xav0.visitXStartPc(new Integer(16)); 1142 xav0.visitXLength(new Integer(58)); 1143 xav0.visitXIndex(new Integer(3)); 1144 xav0.visitEnd(); 1145 } 1146 { 1147 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1148 xav0.visit("value", "inner-type"); 1149 xav0.visitXTargetType(new Integer(9)); 1150 xav0.visitXStartPc(new Integer(16)); 1151 xav0.visitXLength(new Integer(58)); 1152 xav0.visitXIndex(new Integer(3)); 1153 xav0.visitXLocationLength(new Integer(1)); 1154 xav0.visitXLocation(new Integer(0)); 1155 xav0.visitEnd(); 1156 } 1157 mv.visitCode(); 1158 Label l0 = new Label(); 1159 mv.visitLabel(l0); 1160 mv.visitLineNumber(36, l0); 1161 mv.visitTypeInsn(NEW, "java/util/HashSet"); 1162 mv.visitInsn(DUP); 1163 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V"); 1164 mv.visitVarInsn(ASTORE, 2); 1165 Label l1 = new Label(); 1166 mv.visitLabel(l1); 1167 mv.visitLineNumber(37, l1); 1168 mv.visitTypeInsn(NEW, "java/util/HashSet"); 1169 mv.visitInsn(DUP); 1170 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V"); 1171 mv.visitVarInsn(ASTORE, 3); 1172 Label l2 = new Label(); 1173 mv.visitLabel(l2); 1174 mv.visitLineNumber(38, l2); 1175 mv.visitVarInsn(ALOAD, 0); 1176 mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "someMethod3", "()Z"); 1177 mv.visitVarInsn(ISTORE, 4); 1178 Label l3 = new Label(); 1179 mv.visitLabel(l3); 1180 mv.visitLineNumber(39, l3); 1181 mv.visitVarInsn(ALOAD, 2); 1182 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;"); 1183 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;"); 1184 mv.visitTypeInsn(CHECKCAST, "java/lang/Boolean"); 1185 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z"); 1186 mv.visitVarInsn(ILOAD, 4); 1187 mv.visitInsn(IAND); 1188 Label l4 = new Label(); 1189 mv.visitJumpInsn(IFEQ, l4); 1190 Label l5 = new Label(); 1191 mv.visitLabel(l5); 1192 mv.visitLineNumber(40, l5); 1193 mv.visitVarInsn(ILOAD, 4); 1194 Label l6 = new Label(); 1195 mv.visitJumpInsn(IFEQ, l6); 1196 mv.visitVarInsn(ILOAD, 1); 1197 Label l7 = new Label(); 1198 mv.visitJumpInsn(GOTO, l7); 1199 mv.visitLabel(l6); 1200 mv.visitVarInsn(ALOAD, 3); 1201 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;"); 1202 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;"); 1203 mv.visitTypeInsn(CHECKCAST, "java/lang/Integer"); 1204 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I"); 1205 mv.visitLabel(l7); 1206 mv.visitInsn(IRETURN); 1207 mv.visitLabel(l4); 1208 mv.visitLineNumber(42, l4); 1209 mv.visitVarInsn(ILOAD, 1); 1210 mv.visitInsn(IRETURN); 1211 Label l8 = new Label(); 1212 mv.visitLabel(l8); 1213 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l8, 0); 1214 mv.visitLocalVariable("i", "I", null, l0, l8, 1); 1215 mv.visitLocalVariable("s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/Boolean;>;", l1, l8, 2); 1216 mv.visitLocalVariable("ints", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/Integer;>;", l2, l8, 3); 1217 mv.visitLocalVariable("b", "Z", null, l3, l8, 4); 1218 mv.visitMaxs(2, 5); 1219 mv.visitEnd(); 1220 } 1221 { 1222 mv = cw.visitMethod(ACC_PRIVATE, "someMethod3", "()Z", null, null); 1223 { 1224 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1225 xav0.visit("value", "t"); 1226 xav0.visitXTargetType(new Integer(8)); 1227 xav0.visitXStartPc(new Integer(8)); 1228 xav0.visitXLength(new Integer(70)); 1229 xav0.visitXIndex(new Integer(1)); 1230 xav0.visitEnd(); 1231 } 1232 { 1233 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1234 xav0.visit("value", "map key string"); 1235 xav0.visitXTargetType(new Integer(9)); 1236 xav0.visitXStartPc(new Integer(8)); 1237 xav0.visitXLength(new Integer(70)); 1238 xav0.visitXIndex(new Integer(1)); 1239 xav0.visitXLocationLength(new Integer(1)); 1240 xav0.visitXLocation(new Integer(0)); 1241 xav0.visitEnd(); 1242 } 1243 { 1244 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1245 xav0.visit("value", "map value set"); 1246 xav0.visitXTargetType(new Integer(9)); 1247 xav0.visitXStartPc(new Integer(8)); 1248 xav0.visitXLength(new Integer(70)); 1249 xav0.visitXIndex(new Integer(1)); 1250 xav0.visitXLocationLength(new Integer(1)); 1251 xav0.visitXLocation(new Integer(1)); 1252 xav0.visitEnd(); 1253 } 1254 { 1255 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1256 xav0.visitXTargetType(new Integer(9)); 1257 xav0.visitXStartPc(new Integer(8)); 1258 xav0.visitXLength(new Integer(70)); 1259 xav0.visitXIndex(new Integer(1)); 1260 xav0.visitXLocationLength(new Integer(2)); 1261 xav0.visitXLocation(new Integer(1)); 1262 xav0.visitXLocation(new Integer(0)); 1263 xav0.visitEnd(); 1264 } 1265 { 1266 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1267 xav0.visitXTargetType(new Integer(9)); 1268 xav0.visitXStartPc(new Integer(10)); 1269 xav0.visitXLength(new Integer(68)); 1270 xav0.visitXIndex(new Integer(2)); 1271 xav0.visitXLocationLength(new Integer(1)); 1272 xav0.visitXLocation(new Integer(0)); 1273 xav0.visitEnd(); 1274 } 1275 { 1276 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 1277 xav0.visit("fieldA", new Integer(1)); 1278 xav0.visit("fieldB", "set of maps"); 1279 xav0.visitXTargetType(new Integer(9)); 1280 xav0.visitXStartPc(new Integer(10)); 1281 xav0.visitXLength(new Integer(68)); 1282 xav0.visitXIndex(new Integer(2)); 1283 xav0.visitXLocationLength(new Integer(1)); 1284 xav0.visitXLocation(new Integer(1)); 1285 xav0.visitEnd(); 1286 } 1287 { 1288 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1289 xav0.visit("value", "maps"); 1290 xav0.visitXTargetType(new Integer(9)); 1291 xav0.visitXStartPc(new Integer(10)); 1292 xav0.visitXLength(new Integer(68)); 1293 xav0.visitXIndex(new Integer(2)); 1294 xav0.visitXLocationLength(new Integer(2)); 1295 xav0.visitXLocation(new Integer(1)); 1296 xav0.visitXLocation(new Integer(0)); 1297 xav0.visitEnd(); 1298 } 1299 { 1300 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1301 xav0.visit("value", "map key is integer"); 1302 xav0.visitXTargetType(new Integer(9)); 1303 xav0.visitXStartPc(new Integer(10)); 1304 xav0.visitXLength(new Integer(68)); 1305 xav0.visitXIndex(new Integer(2)); 1306 xav0.visitXLocationLength(new Integer(3)); 1307 xav0.visitXLocation(new Integer(1)); 1308 xav0.visitXLocation(new Integer(0)); 1309 xav0.visitXLocation(new Integer(0)); 1310 xav0.visitEnd(); 1311 } 1312 { 1313 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1314 xav0.visit("value", "map value is 2-d array"); 1315 xav0.visitXTargetType(new Integer(9)); 1316 xav0.visitXStartPc(new Integer(10)); 1317 xav0.visitXLength(new Integer(68)); 1318 xav0.visitXIndex(new Integer(2)); 1319 xav0.visitXLocationLength(new Integer(3)); 1320 xav0.visitXLocation(new Integer(1)); 1321 xav0.visitXLocation(new Integer(0)); 1322 xav0.visitXLocation(new Integer(1)); 1323 xav0.visitEnd(); 1324 } 1325 { 1326 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1327 xav0.visit("value", "first dimension"); 1328 xav0.visitXTargetType(new Integer(9)); 1329 xav0.visitXStartPc(new Integer(10)); 1330 xav0.visitXLength(new Integer(68)); 1331 xav0.visitXIndex(new Integer(2)); 1332 xav0.visitXLocationLength(new Integer(4)); 1333 xav0.visitXLocation(new Integer(1)); 1334 xav0.visitXLocation(new Integer(0)); 1335 xav0.visitXLocation(new Integer(1)); 1336 xav0.visitXLocation(new Integer(0)); 1337 xav0.visitEnd(); 1338 } 1339 { 1340 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1341 xav0.visit("value", "second dimension"); 1342 xav0.visitXTargetType(new Integer(9)); 1343 xav0.visitXStartPc(new Integer(10)); 1344 xav0.visitXLength(new Integer(68)); 1345 xav0.visitXIndex(new Integer(2)); 1346 xav0.visitXLocationLength(new Integer(4)); 1347 xav0.visitXLocation(new Integer(1)); 1348 xav0.visitXLocation(new Integer(0)); 1349 xav0.visitXLocation(new Integer(1)); 1350 xav0.visitXLocation(new Integer(1)); 1351 xav0.visitEnd(); 1352 } 1353 mv.visitCode(); 1354 Label l0 = new Label(); 1355 mv.visitLabel(l0); 1356 mv.visitLineNumber(46, l0); 1357 mv.visitTypeInsn(NEW, "java/util/HashMap"); 1358 mv.visitInsn(DUP); 1359 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V"); 1360 mv.visitVarInsn(ASTORE, 1); 1361 Label l1 = new Label(); 1362 mv.visitLabel(l1); 1363 mv.visitLineNumber(47, l1); 1364 mv.visitInsn(ACONST_NULL); 1365 mv.visitVarInsn(ASTORE, 2); 1366 Label l2 = new Label(); 1367 mv.visitLabel(l2); 1368 mv.visitLineNumber(49, l2); 1369 mv.visitVarInsn(ALOAD, 2); 1370 mv.visitLdcInsn("3"); 1371 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); 1372 mv.visitTypeInsn(CHECKCAST, "java/util/Set"); 1373 mv.visitTypeInsn(NEW, "java/util/HashMap"); 1374 mv.visitInsn(DUP); 1375 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V"); 1376 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "add", "(Ljava/lang/Object;)Z"); 1377 mv.visitInsn(POP); 1378 Label l3 = new Label(); 1379 mv.visitLabel(l3); 1380 mv.visitLineNumber(51, l3); 1381 mv.visitVarInsn(ALOAD, 2); 1382 mv.visitLdcInsn("4"); 1383 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); 1384 mv.visitTypeInsn(CHECKCAST, "java/util/Set"); 1385 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;"); 1386 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;"); 1387 mv.visitTypeInsn(CHECKCAST, "java/util/Map"); 1388 mv.visitInsn(ICONST_3); 1389 mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;"); 1390 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); 1391 mv.visitTypeInsn(CHECKCAST, "[[Ljava/lang/String;"); 1392 mv.visitInsn(ICONST_2); 1393 mv.visitInsn(AALOAD); 1394 mv.visitInsn(ICONST_4); 1395 mv.visitLdcInsn("Hello"); 1396 mv.visitInsn(AASTORE); 1397 Label l4 = new Label(); 1398 mv.visitLabel(l4); 1399 mv.visitLineNumber(53, l4); 1400 mv.visitInsn(ICONST_1); 1401 mv.visitInsn(IRETURN); 1402 Label l5 = new Label(); 1403 mv.visitLabel(l5); 1404 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l5, 0); 1405 mv.visitLocalVariable("t", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;", l1, l5, 1); 1406 mv.visitLocalVariable("s", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/util/Map<Ljava/lang/Integer;[[Ljava/lang/String;>;>;>;", l2, l5, 2); 1407 mv.visitMaxs(3, 3); 1408 mv.visitEnd(); 1409 } 1410 { 1411 mv = cw.visitMethod(ACC_PROTECTED, "someMethod4", "()V", null, null); 1412 { 1413 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1414 xav0.visitXTargetType(new Integer(9)); 1415 xav0.visitXStartPc(new Integer(8)); 1416 xav0.visitXLength(new Integer(10)); 1417 xav0.visitXIndex(new Integer(1)); 1418 xav0.visitXLocationLength(new Integer(1)); 1419 xav0.visitXLocation(new Integer(0)); 1420 xav0.visitEnd(); 1421 } 1422 mv.visitCode(); 1423 Label l0 = new Label(); 1424 Label l1 = new Label(); 1425 mv.visitTryCatchBlock(l0, l1, l1, "java/lang/Exception"); 1426 mv.visitLabel(l0); 1427 mv.visitLineNumber(58, l0); 1428 mv.visitTypeInsn(NEW, "java/util/HashSet"); 1429 mv.visitInsn(DUP); 1430 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V"); 1431 mv.visitVarInsn(ASTORE, 1); 1432 Label l2 = new Label(); 1433 mv.visitLabel(l2); 1434 mv.visitLineNumber(60, l2); 1435 mv.visitTypeInsn(NEW, "java/lang/RuntimeException"); 1436 mv.visitInsn(DUP); 1437 mv.visitLdcInsn("Hello"); 1438 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V"); 1439 mv.visitInsn(ATHROW); 1440 mv.visitLabel(l1); 1441 mv.visitLineNumber(61, l1); 1442 mv.visitVarInsn(ASTORE, 1); 1443 Label l3 = new Label(); 1444 mv.visitLabel(l3); 1445 mv.visitLineNumber(62, l3); 1446 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 1447 mv.visitVarInsn(ALOAD, 0); 1448 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestLocalVariableGenericArray", "i", "Ljava/lang/Integer;"); 1449 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V"); 1450 Label l4 = new Label(); 1451 mv.visitLabel(l4); 1452 mv.visitLineNumber(64, l4); 1453 mv.visitInsn(RETURN); 1454 Label l5 = new Label(); 1455 mv.visitLabel(l5); 1456 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestLocalVariableGenericArray;", null, l0, l5, 0); 1457 mv.visitLocalVariable("s", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", l2, l1, 1); 1458 mv.visitLocalVariable("e", "Ljava/lang/Exception;", null, l3, l4, 1); 1459 mv.visitMaxs(3, 2); 1460 mv.visitEnd(); 1461 } 1462 cw.visitEnd(); 1463 1464 return cw.toByteArray(); 1465 } 1466 public static byte[] dumpMethodReceiver () throws Exception { 1467 1468 ClassWriter cw = new ClassWriter(false); 1469 FieldVisitor fv; 1470 MethodVisitor mv; 1471 AnnotationVisitor av0; 1472 TypeAnnotationVisitor xav0; 1473 1474 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestMethodReceiver", null, "java/lang/Object", null); 1475 1476 cw.visitSource("TestMethodReceiver.java", null); 1477 1478 { 1479 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 1480 mv.visitCode(); 1481 Label l0 = new Label(); 1482 mv.visitLabel(l0); 1483 mv.visitLineNumber(9, l0); 1484 mv.visitVarInsn(ALOAD, 0); 1485 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 1486 mv.visitInsn(RETURN); 1487 Label l1 = new Label(); 1488 mv.visitLabel(l1); 1489 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l1, 0); 1490 mv.visitMaxs(1, 1); 1491 mv.visitEnd(); 1492 } 1493 { 1494 mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null); 1495 { 1496 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1497 xav0.visitXTargetType(new Integer(6)); 1498 xav0.visitEnd(); 1499 } 1500 { 1501 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1502 xav0.visit("value", "first method"); 1503 xav0.visitXTargetType(new Integer(6)); 1504 xav0.visitEnd(); 1505 } 1506 mv.visitCode(); 1507 Label l0 = new Label(); 1508 mv.visitLabel(l0); 1509 mv.visitLineNumber(12, l0); 1510 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 1511 mv.visitLdcInsn("test()"); 1512 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); 1513 Label l1 = new Label(); 1514 mv.visitLabel(l1); 1515 mv.visitLineNumber(13, l1); 1516 mv.visitInsn(RETURN); 1517 Label l2 = new Label(); 1518 mv.visitLabel(l2); 1519 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0); 1520 mv.visitMaxs(2, 1); 1521 mv.visitEnd(); 1522 } 1523 { 1524 mv = cw.visitMethod(ACC_PRIVATE, "test2", "()V", null, null); 1525 { 1526 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 1527 xav0.visit("fieldA", new Integer(2)); 1528 xav0.visit("fieldB", "rec"); 1529 xav0.visitXTargetType(new Integer(6)); 1530 xav0.visitEnd(); 1531 } 1532 mv.visitCode(); 1533 Label l0 = new Label(); 1534 mv.visitLabel(l0); 1535 mv.visitLineNumber(16, l0); 1536 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 1537 mv.visitLdcInsn("test2()"); 1538 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); 1539 Label l1 = new Label(); 1540 mv.visitLabel(l1); 1541 mv.visitLineNumber(17, l1); 1542 mv.visitInsn(RETURN); 1543 Label l2 = new Label(); 1544 mv.visitLabel(l2); 1545 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0); 1546 mv.visitMaxs(2, 1); 1547 mv.visitEnd(); 1548 } 1549 { 1550 mv = cw.visitMethod(ACC_PROTECTED, "test3", "()V", null, null); 1551 { 1552 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1553 xav0.visitXTargetType(new Integer(6)); 1554 xav0.visitEnd(); 1555 } 1556 mv.visitCode(); 1557 Label l0 = new Label(); 1558 mv.visitLabel(l0); 1559 mv.visitLineNumber(20, l0); 1560 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 1561 mv.visitLdcInsn("test3()"); 1562 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); 1563 Label l1 = new Label(); 1564 mv.visitLabel(l1); 1565 mv.visitLineNumber(21, l1); 1566 mv.visitInsn(RETURN); 1567 Label l2 = new Label(); 1568 mv.visitLabel(l2); 1569 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0); 1570 mv.visitMaxs(2, 1); 1571 mv.visitEnd(); 1572 } 1573 { 1574 mv = cw.visitMethod(0, "test4", "()V", null, null); 1575 { 1576 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1577 xav0.visit("value", "last method"); 1578 xav0.visitXTargetType(new Integer(6)); 1579 xav0.visitEnd(); 1580 } 1581 mv.visitCode(); 1582 Label l0 = new Label(); 1583 mv.visitLabel(l0); 1584 mv.visitLineNumber(24, l0); 1585 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 1586 mv.visitLdcInsn("test4()"); 1587 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); 1588 Label l1 = new Label(); 1589 mv.visitLabel(l1); 1590 mv.visitLineNumber(25, l1); 1591 mv.visitInsn(RETURN); 1592 Label l2 = new Label(); 1593 mv.visitLabel(l2); 1594 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReceiver;", null, l0, l2, 0); 1595 mv.visitMaxs(2, 1); 1596 mv.visitEnd(); 1597 } 1598 cw.visitEnd(); 1599 1600 return cw.toByteArray(); 1601 } 1602 1603 public static byte[] dumpMethodReturnTypeGenericArray () throws Exception { 1604 1605 ClassWriter cw = new ClassWriter(false); 1606 FieldVisitor fv; 1607 MethodVisitor mv; 1608 AnnotationVisitor av0; 1609 TypeAnnotationVisitor xav0; 1610 1611 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestMethodReturnTypeGenericArray", null, "java/lang/Object", null); 1612 1613 cw.visitSource("TestMethodReturnTypeGenericArray.java", null); 1614 1615 { 1616 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 1617 mv.visitCode(); 1618 Label l0 = new Label(); 1619 mv.visitLabel(l0); 1620 mv.visitLineNumber(7, l0); 1621 mv.visitVarInsn(ALOAD, 0); 1622 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 1623 mv.visitInsn(RETURN); 1624 Label l1 = new Label(); 1625 mv.visitLabel(l1); 1626 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0); 1627 mv.visitMaxs(1, 1); 1628 mv.visitEnd(); 1629 } 1630 { 1631 mv = cw.visitMethod(ACC_PUBLIC, "test", "()Ljava/util/List;", null, null); 1632 { 1633 av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 1634 av0.visitEnd(); 1635 } 1636 mv.visitCode(); 1637 Label l0 = new Label(); 1638 mv.visitLabel(l0); 1639 mv.visitLineNumber(10, l0); 1640 mv.visitInsn(ACONST_NULL); 1641 mv.visitInsn(ARETURN); 1642 Label l1 = new Label(); 1643 mv.visitLabel(l1); 1644 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0); 1645 mv.visitMaxs(1, 1); 1646 mv.visitEnd(); 1647 } 1648 { 1649 mv = cw.visitMethod(ACC_PUBLIC, "test2", "()Ljava/util/List;", "()Ljava/util/List<Ljava/lang/String;>;", null); 1650 { 1651 av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/B;", true); 1652 av0.visit("value", "single-depth"); 1653 av0.visitEnd(); 1654 } 1655 { 1656 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1657 xav0.visitXTargetType(new Integer(11)); 1658 xav0.visitXLocationLength(new Integer(1)); 1659 xav0.visitXLocation(new Integer(0)); 1660 xav0.visitEnd(); 1661 } 1662 mv.visitCode(); 1663 Label l0 = new Label(); 1664 mv.visitLabel(l0); 1665 mv.visitLineNumber(14, l0); 1666 mv.visitInsn(ACONST_NULL); 1667 mv.visitInsn(ARETURN); 1668 Label l1 = new Label(); 1669 mv.visitLabel(l1); 1670 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0); 1671 mv.visitMaxs(1, 1); 1672 mv.visitEnd(); 1673 } 1674 { 1675 mv = cw.visitMethod(ACC_PUBLIC, "test3", "()[Ljava/lang/String;", null, null); 1676 { 1677 av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 1678 av0.visitEnd(); 1679 } 1680 { 1681 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1682 xav0.visit("value", "on array element"); 1683 xav0.visitXTargetType(new Integer(11)); 1684 xav0.visitXLocationLength(new Integer(1)); 1685 xav0.visitXLocation(new Integer(0)); 1686 xav0.visitEnd(); 1687 } 1688 mv.visitCode(); 1689 Label l0 = new Label(); 1690 mv.visitLabel(l0); 1691 mv.visitLineNumber(18, l0); 1692 mv.visitInsn(ACONST_NULL); 1693 mv.visitInsn(ARETURN); 1694 Label l1 = new Label(); 1695 mv.visitLabel(l1); 1696 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0); 1697 mv.visitMaxs(1, 1); 1698 mv.visitEnd(); 1699 } 1700 { 1701 mv = cw.visitMethod(ACC_PUBLIC, "test4", "()[[Ljava/lang/String;", null, null); 1702 { 1703 av0 = mv.visitAnnotation("Lannotations/tests/classfile/foo/A;", true); 1704 av0.visitEnd(); 1705 } 1706 { 1707 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1708 xav0.visit("value", "on"); 1709 xav0.visitXTargetType(new Integer(11)); 1710 xav0.visitXLocationLength(new Integer(1)); 1711 xav0.visitXLocation(new Integer(0)); 1712 xav0.visitEnd(); 1713 } 1714 { 1715 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1716 xav0.visit("value", "in"); 1717 xav0.visitXTargetType(new Integer(11)); 1718 xav0.visitXLocationLength(new Integer(1)); 1719 xav0.visitXLocation(new Integer(1)); 1720 xav0.visitEnd(); 1721 } 1722 mv.visitCode(); 1723 Label l0 = new Label(); 1724 mv.visitLabel(l0); 1725 mv.visitLineNumber(22, l0); 1726 mv.visitInsn(ACONST_NULL); 1727 mv.visitInsn(ARETURN); 1728 Label l1 = new Label(); 1729 mv.visitLabel(l1); 1730 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0); 1731 mv.visitMaxs(1, 1); 1732 mv.visitEnd(); 1733 } 1734 { 1735 mv = cw.visitMethod(ACC_PUBLIC, "test5", "()Ljava/util/Set;", "()Ljava/util/Set<[Ljava/lang/String;>;", null); 1736 { 1737 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1738 xav0.visitXTargetType(new Integer(11)); 1739 xav0.visitXLocationLength(new Integer(1)); 1740 xav0.visitXLocation(new Integer(0)); 1741 xav0.visitEnd(); 1742 } 1743 { 1744 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1745 xav0.visit("value", "two-deep"); 1746 xav0.visitXTargetType(new Integer(11)); 1747 xav0.visitXLocationLength(new Integer(2)); 1748 xav0.visitXLocation(new Integer(0)); 1749 xav0.visitXLocation(new Integer(0)); 1750 xav0.visitEnd(); 1751 } 1752 mv.visitCode(); 1753 Label l0 = new Label(); 1754 mv.visitLabel(l0); 1755 mv.visitLineNumber(26, l0); 1756 mv.visitInsn(ACONST_NULL); 1757 mv.visitInsn(ARETURN); 1758 Label l1 = new Label(); 1759 mv.visitLabel(l1); 1760 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0); 1761 mv.visitMaxs(1, 1); 1762 mv.visitEnd(); 1763 } 1764 { 1765 mv = cw.visitMethod(ACC_PUBLIC, "test6", "()Ljava/util/Map;", "()Ljava/util/Map<Ljava/util/Map<[Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;Ljava/util/Set<[Ljava/lang/String;>;>;", null); 1766 { 1767 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1768 xav0.visit("value", "map as key"); 1769 xav0.visitXTargetType(new Integer(11)); 1770 xav0.visitXLocationLength(new Integer(1)); 1771 xav0.visitXLocation(new Integer(0)); 1772 xav0.visitEnd(); 1773 } 1774 { 1775 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1776 xav0.visit("value", "array of value"); 1777 xav0.visitXTargetType(new Integer(11)); 1778 xav0.visitXLocationLength(new Integer(2)); 1779 xav0.visitXLocation(new Integer(1)); 1780 xav0.visitXLocation(new Integer(0)); 1781 xav0.visitEnd(); 1782 } 1783 { 1784 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1785 xav0.visit("value", "inner-most value"); 1786 xav0.visitXTargetType(new Integer(11)); 1787 xav0.visitXLocationLength(new Integer(3)); 1788 xav0.visitXLocation(new Integer(1)); 1789 xav0.visitXLocation(new Integer(0)); 1790 xav0.visitXLocation(new Integer(0)); 1791 xav0.visitEnd(); 1792 } 1793 { 1794 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1795 xav0.visit("value", "set as value"); 1796 xav0.visitXTargetType(new Integer(11)); 1797 xav0.visitXLocationLength(new Integer(1)); 1798 xav0.visitXLocation(new Integer(1)); 1799 xav0.visitEnd(); 1800 } 1801 { 1802 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1803 xav0.visit("value", "innermost key or key"); 1804 xav0.visitXTargetType(new Integer(11)); 1805 xav0.visitXLocationLength(new Integer(3)); 1806 xav0.visitXLocation(new Integer(0)); 1807 xav0.visitXLocation(new Integer(0)); 1808 xav0.visitXLocation(new Integer(0)); 1809 xav0.visitEnd(); 1810 } 1811 { 1812 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1813 xav0.visitXTargetType(new Integer(11)); 1814 xav0.visitXLocationLength(new Integer(2)); 1815 xav0.visitXLocation(new Integer(0)); 1816 xav0.visitXLocation(new Integer(0)); 1817 xav0.visitEnd(); 1818 } 1819 { 1820 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 1821 xav0.visit("fieldA", new Integer(1)); 1822 xav0.visit("fieldB", "value of key"); 1823 xav0.visitXTargetType(new Integer(11)); 1824 xav0.visitXLocationLength(new Integer(2)); 1825 xav0.visitXLocation(new Integer(0)); 1826 xav0.visitXLocation(new Integer(1)); 1827 xav0.visitEnd(); 1828 } 1829 { 1830 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1831 xav0.visitXTargetType(new Integer(11)); 1832 xav0.visitXLocationLength(new Integer(3)); 1833 xav0.visitXLocation(new Integer(0)); 1834 xav0.visitXLocation(new Integer(1)); 1835 xav0.visitXLocation(new Integer(0)); 1836 xav0.visitEnd(); 1837 } 1838 mv.visitCode(); 1839 Label l0 = new Label(); 1840 mv.visitLabel(l0); 1841 mv.visitLineNumber(30, l0); 1842 mv.visitInsn(ACONST_NULL); 1843 mv.visitInsn(ARETURN); 1844 Label l1 = new Label(); 1845 mv.visitLabel(l1); 1846 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestMethodReturnTypeGenericArray;", null, l0, l1, 0); 1847 mv.visitMaxs(1, 1); 1848 mv.visitEnd(); 1849 } 1850 cw.visitEnd(); 1851 1852 return cw.toByteArray(); 1853 } 1854 1855 public static byte[] dumpObjectCreation () throws Exception { 1856 1857 ClassWriter cw = new ClassWriter(false); 1858 FieldVisitor fv; 1859 MethodVisitor mv; 1860 AnnotationVisitor av0; 1861 TypeAnnotationVisitor xav0; 1862 1863 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestObjectCreation", null, "java/lang/Object", null); 1864 1865 cw.visitSource("TestObjectCreation.java", null); 1866 1867 { 1868 fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null); 1869 fv.visitEnd(); 1870 } 1871 { 1872 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 1873 mv.visitCode(); 1874 Label l0 = new Label(); 1875 mv.visitLabel(l0); 1876 mv.visitLineNumber(7, l0); 1877 mv.visitVarInsn(ALOAD, 0); 1878 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 1879 mv.visitInsn(RETURN); 1880 Label l1 = new Label(); 1881 mv.visitLabel(l1); 1882 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l1, 0); 1883 mv.visitMaxs(1, 1); 1884 mv.visitEnd(); 1885 } 1886 { 1887 mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null); 1888 { 1889 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1890 xav0.visit("value", "first new"); 1891 xav0.visitXTargetType(new Integer(4)); 1892 xav0.visitXOffset(new Integer(1)); 1893 xav0.visitEnd(); 1894 } 1895 { 1896 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1897 xav0.visit("value", "a string"); 1898 xav0.visitXTargetType(new Integer(4)); 1899 xav0.visitXOffset(new Integer(12)); 1900 xav0.visitEnd(); 1901 } 1902 { 1903 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1904 xav0.visitXTargetType(new Integer(4)); 1905 xav0.visitXOffset(new Integer(23)); 1906 xav0.visitEnd(); 1907 } 1908 mv.visitCode(); 1909 Label l0 = new Label(); 1910 mv.visitLabel(l0); 1911 mv.visitLineNumber(11, l0); 1912 mv.visitVarInsn(ALOAD, 0); 1913 mv.visitTypeInsn(NEW, "java/lang/Object"); 1914 mv.visitInsn(DUP); 1915 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 1916 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 1917 Label l1 = new Label(); 1918 mv.visitLabel(l1); 1919 mv.visitLineNumber(12, l1); 1920 mv.visitVarInsn(ALOAD, 0); 1921 mv.visitTypeInsn(NEW, "java/lang/String"); 1922 mv.visitInsn(DUP); 1923 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "()V"); 1924 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 1925 Label l2 = new Label(); 1926 mv.visitLabel(l2); 1927 mv.visitLineNumber(13, l2); 1928 mv.visitVarInsn(ALOAD, 0); 1929 mv.visitTypeInsn(NEW, "java/lang/String"); 1930 mv.visitInsn(DUP); 1931 mv.visitLdcInsn(""); 1932 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "(Ljava/lang/String;)V"); 1933 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 1934 Label l3 = new Label(); 1935 mv.visitLabel(l3); 1936 mv.visitLineNumber(14, l3); 1937 mv.visitInsn(RETURN); 1938 Label l4 = new Label(); 1939 mv.visitLabel(l4); 1940 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l4, 0); 1941 mv.visitMaxs(4, 1); 1942 mv.visitEnd(); 1943 } 1944 { 1945 mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null); 1946 { 1947 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1948 xav0.visitXTargetType(new Integer(4)); 1949 xav0.visitXOffset(new Integer(7)); 1950 xav0.visitEnd(); 1951 } 1952 { 1953 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1954 xav0.visitXTargetType(new Integer(4)); 1955 xav0.visitXOffset(new Integer(14)); 1956 xav0.visitEnd(); 1957 } 1958 mv.visitCode(); 1959 Label l0 = new Label(); 1960 mv.visitLabel(l0); 1961 mv.visitLineNumber(17, l0); 1962 mv.visitVarInsn(ALOAD, 0); 1963 mv.visitLdcInsn("str"); 1964 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 1965 Label l1 = new Label(); 1966 mv.visitLabel(l1); 1967 mv.visitLineNumber(18, l1); 1968 mv.visitVarInsn(ALOAD, 0); 1969 mv.visitTypeInsn(NEW, "java/util/ArrayList"); 1970 mv.visitInsn(DUP); 1971 mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V"); 1972 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 1973 Label l2 = new Label(); 1974 mv.visitLabel(l2); 1975 mv.visitLineNumber(19, l2); 1976 mv.visitInsn(RETURN); 1977 Label l3 = new Label(); 1978 mv.visitLabel(l3); 1979 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l3, 0); 1980 mv.visitMaxs(3, 1); 1981 mv.visitEnd(); 1982 } 1983 { 1984 mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null); 1985 { 1986 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 1987 xav0.visit("value", "new"); 1988 xav0.visitXTargetType(new Integer(4)); 1989 xav0.visitXOffset(new Integer(1)); 1990 xav0.visitEnd(); 1991 } 1992 { 1993 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 1994 xav0.visitXTargetType(new Integer(4)); 1995 xav0.visitXOffset(new Integer(12)); 1996 xav0.visitEnd(); 1997 } 1998 mv.visitCode(); 1999 Label l0 = new Label(); 2000 mv.visitLabel(l0); 2001 mv.visitLineNumber(22, l0); 2002 mv.visitVarInsn(ALOAD, 0); 2003 mv.visitTypeInsn(NEW, "java/util/HashSet"); 2004 mv.visitInsn(DUP); 2005 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V"); 2006 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 2007 Label l1 = new Label(); 2008 mv.visitLabel(l1); 2009 mv.visitLineNumber(23, l1); 2010 mv.visitVarInsn(ALOAD, 0); 2011 mv.visitTypeInsn(NEW, "java/util/HashMap"); 2012 mv.visitInsn(DUP); 2013 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V"); 2014 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 2015 Label l2 = new Label(); 2016 mv.visitLabel(l2); 2017 mv.visitLineNumber(24, l2); 2018 mv.visitInsn(RETURN); 2019 Label l3 = new Label(); 2020 mv.visitLabel(l3); 2021 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l3, 0); 2022 mv.visitMaxs(3, 1); 2023 mv.visitEnd(); 2024 } 2025 { 2026 mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null); 2027 { 2028 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2029 xav0.visitXTargetType(new Integer(4)); 2030 xav0.visitXOffset(new Integer(1)); 2031 xav0.visitEnd(); 2032 } 2033 { 2034 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2035 xav0.visit("value", "self test"); 2036 xav0.visitXTargetType(new Integer(4)); 2037 xav0.visitXOffset(new Integer(13)); 2038 xav0.visitEnd(); 2039 } 2040 mv.visitCode(); 2041 Label l0 = new Label(); 2042 mv.visitLabel(l0); 2043 mv.visitLineNumber(27, l0); 2044 mv.visitVarInsn(ALOAD, 0); 2045 mv.visitTypeInsn(NEW, "java/lang/Integer"); 2046 mv.visitInsn(DUP); 2047 mv.visitInsn(ICONST_2); 2048 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Integer", "<init>", "(I)V"); 2049 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 2050 Label l1 = new Label(); 2051 mv.visitLabel(l1); 2052 mv.visitLineNumber(28, l1); 2053 mv.visitVarInsn(ALOAD, 0); 2054 mv.visitTypeInsn(NEW, "annotations/tests/classfile/cases/TestObjectCreation"); 2055 mv.visitInsn(DUP); 2056 mv.visitMethodInsn(INVOKESPECIAL, "annotations/tests/classfile/cases/TestObjectCreation", "<init>", "()V"); 2057 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreation", "o", "Ljava/lang/Object;"); 2058 Label l2 = new Label(); 2059 mv.visitLabel(l2); 2060 mv.visitLineNumber(29, l2); 2061 mv.visitInsn(RETURN); 2062 Label l3 = new Label(); 2063 mv.visitLabel(l3); 2064 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreation;", null, l0, l3, 0); 2065 mv.visitMaxs(4, 1); 2066 mv.visitEnd(); 2067 } 2068 cw.visitEnd(); 2069 2070 return cw.toByteArray(); 2071 } 2072 2073 public static byte[] dumpObjectCreationGenericArray () throws Exception { 2074 2075 ClassWriter cw = new ClassWriter(false); 2076 FieldVisitor fv; 2077 MethodVisitor mv; 2078 AnnotationVisitor av0; 2079 TypeAnnotationVisitor xav0; 2080 2081 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", null, "java/lang/Object", null); 2082 2083 cw.visitSource("TestObjectCreationGenericArray.java", null); 2084 2085 { 2086 fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null); 2087 fv.visitEnd(); 2088 } 2089 { 2090 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 2091 mv.visitCode(); 2092 Label l0 = new Label(); 2093 mv.visitLabel(l0); 2094 mv.visitLineNumber(9, l0); 2095 mv.visitVarInsn(ALOAD, 0); 2096 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 2097 mv.visitInsn(RETURN); 2098 Label l1 = new Label(); 2099 mv.visitLabel(l1); 2100 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l1, 0); 2101 mv.visitMaxs(1, 1); 2102 mv.visitEnd(); 2103 } 2104 { 2105 mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null); 2106 { 2107 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2108 xav0.visit("value", "first new"); 2109 xav0.visitXTargetType(new Integer(4)); 2110 xav0.visitXOffset(new Integer(3)); 2111 xav0.visitEnd(); 2112 } 2113 { 2114 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2115 xav0.visitXTargetType(new Integer(5)); 2116 xav0.visitXOffset(new Integer(3)); 2117 xav0.visitXLocationLength(new Integer(1)); 2118 xav0.visitXLocation(new Integer(0)); 2119 xav0.visitEnd(); 2120 } 2121 mv.visitCode(); 2122 Label l0 = new Label(); 2123 mv.visitLabel(l0); 2124 mv.visitLineNumber(13, l0); 2125 mv.visitVarInsn(ALOAD, 0); 2126 mv.visitIntInsn(BIPUSH, 10); 2127 mv.visitIntInsn(NEWARRAY, T_INT); 2128 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;"); 2129 Label l1 = new Label(); 2130 mv.visitLabel(l1); 2131 mv.visitLineNumber(14, l1); 2132 mv.visitInsn(RETURN); 2133 Label l2 = new Label(); 2134 mv.visitLabel(l2); 2135 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l2, 0); 2136 mv.visitMaxs(2, 1); 2137 mv.visitEnd(); 2138 } 2139 { 2140 mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null); 2141 { 2142 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2143 xav0.visitXTargetType(new Integer(4)); 2144 xav0.visitXOffset(new Integer(23)); 2145 xav0.visitEnd(); 2146 } 2147 { 2148 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2149 xav0.visit("value", "str"); 2150 xav0.visitXTargetType(new Integer(5)); 2151 xav0.visitXOffset(new Integer(23)); 2152 xav0.visitXLocationLength(new Integer(1)); 2153 xav0.visitXLocation(new Integer(0)); 2154 xav0.visitEnd(); 2155 } 2156 mv.visitCode(); 2157 Label l0 = new Label(); 2158 mv.visitLabel(l0); 2159 mv.visitLineNumber(17, l0); 2160 mv.visitVarInsn(ALOAD, 0); 2161 mv.visitLdcInsn("str"); 2162 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;"); 2163 Label l1 = new Label(); 2164 mv.visitLabel(l1); 2165 mv.visitLineNumber(18, l1); 2166 mv.visitVarInsn(ALOAD, 0); 2167 mv.visitTypeInsn(NEW, "java/util/ArrayList"); 2168 mv.visitInsn(DUP); 2169 mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V"); 2170 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;"); 2171 Label l2 = new Label(); 2172 mv.visitLabel(l2); 2173 mv.visitLineNumber(19, l2); 2174 mv.visitInsn(RETURN); 2175 Label l3 = new Label(); 2176 mv.visitLabel(l3); 2177 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l3, 0); 2178 mv.visitMaxs(3, 1); 2179 mv.visitEnd(); 2180 } 2181 { 2182 mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null); 2183 { 2184 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2185 xav0.visit("value", "new"); 2186 xav0.visitXTargetType(new Integer(4)); 2187 xav0.visitXOffset(new Integer(1)); 2188 xav0.visitEnd(); 2189 } 2190 { 2191 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2192 xav0.visit("value", "map"); 2193 xav0.visitXTargetType(new Integer(5)); 2194 xav0.visitXOffset(new Integer(1)); 2195 xav0.visitXLocationLength(new Integer(1)); 2196 xav0.visitXLocation(new Integer(0)); 2197 xav0.visitEnd(); 2198 } 2199 { 2200 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2201 xav0.visitXTargetType(new Integer(5)); 2202 xav0.visitXOffset(new Integer(1)); 2203 xav0.visitXLocationLength(new Integer(2)); 2204 xav0.visitXLocation(new Integer(0)); 2205 xav0.visitXLocation(new Integer(0)); 2206 xav0.visitEnd(); 2207 } 2208 { 2209 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2210 xav0.visit("value", "map key string"); 2211 xav0.visitXTargetType(new Integer(5)); 2212 xav0.visitXOffset(new Integer(1)); 2213 xav0.visitXLocationLength(new Integer(2)); 2214 xav0.visitXLocation(new Integer(0)); 2215 xav0.visitXLocation(new Integer(1)); 2216 xav0.visitEnd(); 2217 } 2218 { 2219 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2220 xav0.visitXTargetType(new Integer(4)); 2221 xav0.visitXOffset(new Integer(12)); 2222 xav0.visitEnd(); 2223 } 2224 { 2225 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2226 xav0.visit("value", "first level"); 2227 xav0.visitXTargetType(new Integer(5)); 2228 xav0.visitXOffset(new Integer(12)); 2229 xav0.visitXLocationLength(new Integer(1)); 2230 xav0.visitXLocation(new Integer(0)); 2231 xav0.visitEnd(); 2232 } 2233 { 2234 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2235 xav0.visit("value", "value"); 2236 xav0.visitXTargetType(new Integer(5)); 2237 xav0.visitXOffset(new Integer(12)); 2238 xav0.visitXLocationLength(new Integer(1)); 2239 xav0.visitXLocation(new Integer(1)); 2240 xav0.visitEnd(); 2241 } 2242 { 2243 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2244 xav0.visit("value", "on the array"); 2245 xav0.visitXTargetType(new Integer(5)); 2246 xav0.visitXOffset(new Integer(12)); 2247 xav0.visitXLocationLength(new Integer(2)); 2248 xav0.visitXLocation(new Integer(1)); 2249 xav0.visitXLocation(new Integer(0)); 2250 xav0.visitEnd(); 2251 } 2252 { 2253 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2254 xav0.visit("value", "on array elements"); 2255 xav0.visitXTargetType(new Integer(5)); 2256 xav0.visitXOffset(new Integer(12)); 2257 xav0.visitXLocationLength(new Integer(3)); 2258 xav0.visitXLocation(new Integer(1)); 2259 xav0.visitXLocation(new Integer(0)); 2260 xav0.visitXLocation(new Integer(0)); 2261 xav0.visitEnd(); 2262 } 2263 mv.visitCode(); 2264 Label l0 = new Label(); 2265 mv.visitLabel(l0); 2266 mv.visitLineNumber(22, l0); 2267 mv.visitVarInsn(ALOAD, 0); 2268 mv.visitTypeInsn(NEW, "java/util/HashSet"); 2269 mv.visitInsn(DUP); 2270 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashSet", "<init>", "()V"); 2271 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;"); 2272 Label l1 = new Label(); 2273 mv.visitLabel(l1); 2274 mv.visitLineNumber(23, l1); 2275 mv.visitVarInsn(ALOAD, 0); 2276 mv.visitTypeInsn(NEW, "java/util/HashMap"); 2277 mv.visitInsn(DUP); 2278 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V"); 2279 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;"); 2280 Label l2 = new Label(); 2281 mv.visitLabel(l2); 2282 mv.visitLineNumber(24, l2); 2283 mv.visitInsn(RETURN); 2284 Label l3 = new Label(); 2285 mv.visitLabel(l3); 2286 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l3, 0); 2287 mv.visitMaxs(3, 1); 2288 mv.visitEnd(); 2289 } 2290 { 2291 mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null); 2292 { 2293 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2294 xav0.visitXTargetType(new Integer(4)); 2295 xav0.visitXOffset(new Integer(1)); 2296 xav0.visitEnd(); 2297 } 2298 { 2299 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2300 xav0.visit("value", "key"); 2301 xav0.visitXTargetType(new Integer(5)); 2302 xav0.visitXOffset(new Integer(1)); 2303 xav0.visitXLocationLength(new Integer(1)); 2304 xav0.visitXLocation(new Integer(0)); 2305 xav0.visitEnd(); 2306 } 2307 { 2308 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2309 xav0.visit("value", "value"); 2310 xav0.visitXTargetType(new Integer(5)); 2311 xav0.visitXOffset(new Integer(1)); 2312 xav0.visitXLocationLength(new Integer(1)); 2313 xav0.visitXLocation(new Integer(1)); 2314 xav0.visitEnd(); 2315 } 2316 { 2317 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2318 xav0.visit("value", "key element"); 2319 xav0.visitXTargetType(new Integer(5)); 2320 xav0.visitXOffset(new Integer(1)); 2321 xav0.visitXLocationLength(new Integer(2)); 2322 xav0.visitXLocation(new Integer(0)); 2323 xav0.visitXLocation(new Integer(0)); 2324 xav0.visitEnd(); 2325 } 2326 { 2327 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2328 xav0.visit("value", "value array"); 2329 xav0.visitXTargetType(new Integer(5)); 2330 xav0.visitXOffset(new Integer(1)); 2331 xav0.visitXLocationLength(new Integer(2)); 2332 xav0.visitXLocation(new Integer(1)); 2333 xav0.visitXLocation(new Integer(0)); 2334 xav0.visitEnd(); 2335 } 2336 { 2337 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2338 xav0.visit("value", "value array element"); 2339 xav0.visitXTargetType(new Integer(5)); 2340 xav0.visitXOffset(new Integer(1)); 2341 xav0.visitXLocationLength(new Integer(3)); 2342 xav0.visitXLocation(new Integer(1)); 2343 xav0.visitXLocation(new Integer(0)); 2344 xav0.visitXLocation(new Integer(0)); 2345 xav0.visitEnd(); 2346 } 2347 mv.visitCode(); 2348 Label l0 = new Label(); 2349 mv.visitLabel(l0); 2350 mv.visitLineNumber(27, l0); 2351 mv.visitVarInsn(ALOAD, 0); 2352 mv.visitTypeInsn(NEW, "java/util/HashMap"); 2353 mv.visitInsn(DUP); 2354 mv.visitMethodInsn(INVOKESPECIAL, "java/util/HashMap", "<init>", "()V"); 2355 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestObjectCreationGenericArray", "o", "Ljava/lang/Object;"); 2356 Label l1 = new Label(); 2357 mv.visitLabel(l1); 2358 mv.visitLineNumber(28, l1); 2359 mv.visitInsn(RETURN); 2360 Label l2 = new Label(); 2361 mv.visitLabel(l2); 2362 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestObjectCreationGenericArray;", null, l0, l2, 0); 2363 mv.visitMaxs(3, 1); 2364 mv.visitEnd(); 2365 } 2366 cw.visitEnd(); 2367 2368 return cw.toByteArray(); 2369 } 2370 2371 public static byte[] dumpTypecast () throws Exception { 2372 2373 ClassWriter cw = new ClassWriter(false); 2374 FieldVisitor fv; 2375 MethodVisitor mv; 2376 AnnotationVisitor av0; 2377 TypeAnnotationVisitor xav0; 2378 2379 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestTypecast", null, "java/lang/Object", null); 2380 2381 cw.visitSource("TestTypecast.java", null); 2382 2383 { 2384 fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null); 2385 fv.visitEnd(); 2386 } 2387 { 2388 fv = cw.visitField(ACC_PUBLIC, "s", "Ljava/lang/String;", null, null); 2389 fv.visitEnd(); 2390 } 2391 { 2392 fv = cw.visitField(ACC_PUBLIC, "i", "Ljava/lang/Integer;", null, null); 2393 fv.visitEnd(); 2394 } 2395 { 2396 fv = cw.visitField(ACC_PUBLIC, "b", "Ljava/lang/Boolean;", null, null); 2397 fv.visitEnd(); 2398 } 2399 { 2400 fv = cw.visitField(ACC_PUBLIC, "set", "Ljava/util/Set;", null, null); 2401 fv.visitEnd(); 2402 } 2403 { 2404 fv = cw.visitField(ACC_PUBLIC, "hset", "Ljava/util/HashSet;", null, null); 2405 fv.visitEnd(); 2406 } 2407 { 2408 fv = cw.visitField(ACC_PUBLIC, "map", "Ljava/util/Map;", null, null); 2409 fv.visitEnd(); 2410 } 2411 { 2412 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 2413 mv.visitCode(); 2414 Label l0 = new Label(); 2415 mv.visitLabel(l0); 2416 mv.visitLineNumber(7, l0); 2417 mv.visitVarInsn(ALOAD, 0); 2418 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 2419 mv.visitInsn(RETURN); 2420 Label l1 = new Label(); 2421 mv.visitLabel(l1); 2422 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecast;", null, l0, l1, 0); 2423 mv.visitMaxs(1, 1); 2424 mv.visitEnd(); 2425 } 2426 { 2427 mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null); 2428 { 2429 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2430 xav0.visitXTargetType(new Integer(0)); 2431 xav0.visitXOffset(new Integer(21)); 2432 xav0.visitEnd(); 2433 } 2434 { 2435 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2436 xav0.visit("value", "second cast"); 2437 xav0.visitXTargetType(new Integer(0)); 2438 xav0.visitXOffset(new Integer(32)); 2439 xav0.visitEnd(); 2440 } 2441 { 2442 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 2443 xav0.visit("fieldA", new Integer(3)); 2444 xav0.visit("fieldB", "cast"); 2445 xav0.visitXTargetType(new Integer(0)); 2446 xav0.visitXOffset(new Integer(59)); 2447 xav0.visitEnd(); 2448 } 2449 { 2450 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 2451 xav0.visit("fieldA", new Integer(4)); 2452 xav0.visit("fieldB", "cast"); 2453 xav0.visitXTargetType(new Integer(0)); 2454 xav0.visitXOffset(new Integer(70)); 2455 xav0.visitEnd(); 2456 } 2457 mv.visitCode(); 2458 Label l0 = new Label(); 2459 mv.visitLabel(l0); 2460 mv.visitLineNumber(17, l0); 2461 mv.visitVarInsn(ALOAD, 0); 2462 mv.visitVarInsn(ALOAD, 0); 2463 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;"); 2464 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;"); 2465 Label l1 = new Label(); 2466 mv.visitLabel(l1); 2467 mv.visitLineNumber(18, l1); 2468 mv.visitVarInsn(ALOAD, 0); 2469 mv.visitVarInsn(ALOAD, 0); 2470 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "s", "Ljava/lang/String;"); 2471 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;"); 2472 Label l2 = new Label(); 2473 mv.visitLabel(l2); 2474 mv.visitLineNumber(19, l2); 2475 mv.visitVarInsn(ALOAD, 0); 2476 mv.visitVarInsn(ALOAD, 0); 2477 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;"); 2478 mv.visitTypeInsn(CHECKCAST, "java/lang/String"); 2479 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "s", "Ljava/lang/String;"); 2480 Label l3 = new Label(); 2481 mv.visitLabel(l3); 2482 mv.visitLineNumber(20, l3); 2483 mv.visitVarInsn(ALOAD, 0); 2484 mv.visitVarInsn(ALOAD, 0); 2485 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;"); 2486 mv.visitTypeInsn(CHECKCAST, "java/lang/Integer"); 2487 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "i", "Ljava/lang/Integer;"); 2488 Label l4 = new Label(); 2489 mv.visitLabel(l4); 2490 mv.visitLineNumber(21, l4); 2491 mv.visitVarInsn(ALOAD, 0); 2492 mv.visitVarInsn(ALOAD, 0); 2493 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "b", "Ljava/lang/Boolean;"); 2494 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "b", "Ljava/lang/Boolean;"); 2495 Label l5 = new Label(); 2496 mv.visitLabel(l5); 2497 mv.visitLineNumber(22, l5); 2498 mv.visitVarInsn(ALOAD, 0); 2499 mv.visitVarInsn(ALOAD, 0); 2500 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "hset", "Ljava/util/HashSet;"); 2501 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "set", "Ljava/util/Set;"); 2502 Label l6 = new Label(); 2503 mv.visitLabel(l6); 2504 mv.visitLineNumber(23, l6); 2505 mv.visitVarInsn(ALOAD, 0); 2506 mv.visitVarInsn(ALOAD, 0); 2507 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "set", "Ljava/util/Set;"); 2508 mv.visitTypeInsn(CHECKCAST, "java/util/HashSet"); 2509 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "hset", "Ljava/util/HashSet;"); 2510 Label l7 = new Label(); 2511 mv.visitLabel(l7); 2512 mv.visitLineNumber(24, l7); 2513 mv.visitVarInsn(ALOAD, 0); 2514 mv.visitVarInsn(ALOAD, 0); 2515 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecast", "hset", "Ljava/util/HashSet;"); 2516 mv.visitTypeInsn(CHECKCAST, "java/util/Map"); 2517 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "map", "Ljava/util/Map;"); 2518 Label l8 = new Label(); 2519 mv.visitLabel(l8); 2520 mv.visitLineNumber(25, l8); 2521 mv.visitInsn(ICONST_0); 2522 mv.visitVarInsn(ISTORE, 1); 2523 Label l9 = new Label(); 2524 mv.visitLabel(l9); 2525 mv.visitLineNumber(26, l9); 2526 mv.visitVarInsn(ALOAD, 0); 2527 mv.visitVarInsn(ILOAD, 1); 2528 mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;"); 2529 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "i", "Ljava/lang/Integer;"); 2530 Label l10 = new Label(); 2531 mv.visitLabel(l10); 2532 mv.visitLineNumber(27, l10); 2533 mv.visitVarInsn(ALOAD, 0); 2534 mv.visitVarInsn(ILOAD, 1); 2535 mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;"); 2536 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecast", "o", "Ljava/lang/Object;"); 2537 Label l11 = new Label(); 2538 mv.visitLabel(l11); 2539 mv.visitLineNumber(28, l11); 2540 mv.visitInsn(RETURN); 2541 Label l12 = new Label(); 2542 mv.visitLabel(l12); 2543 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecast;", null, l0, l12, 0); 2544 mv.visitLocalVariable("pi", "I", null, l9, l12, 1); 2545 mv.visitMaxs(2, 2); 2546 mv.visitEnd(); 2547 } 2548 cw.visitEnd(); 2549 2550 return cw.toByteArray(); 2551 } 2552 public static byte[] dumpTypecastGenericArray () throws Exception { 2553 2554 ClassWriter cw = new ClassWriter(false); 2555 FieldVisitor fv; 2556 MethodVisitor mv; 2557 AnnotationVisitor av0; 2558 TypeAnnotationVisitor xav0; 2559 2560 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestTypecastGenericArray", null, "java/lang/Object", null); 2561 2562 cw.visitSource("TestTypecastGenericArray.java", null); 2563 2564 { 2565 fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null); 2566 fv.visitEnd(); 2567 } 2568 { 2569 fv = cw.visitField(ACC_PUBLIC, "s", "Ljava/lang/String;", null, null); 2570 fv.visitEnd(); 2571 } 2572 { 2573 fv = cw.visitField(ACC_PUBLIC, "i", "Ljava/lang/Integer;", null, null); 2574 fv.visitEnd(); 2575 } 2576 { 2577 fv = cw.visitField(ACC_PUBLIC, "b", "Ljava/lang/Boolean;", null, null); 2578 fv.visitEnd(); 2579 } 2580 { 2581 fv = cw.visitField(ACC_PUBLIC, "set", "Ljava/util/Set;", "Ljava/util/Set<Ljava/lang/String;>;", null); 2582 fv.visitEnd(); 2583 } 2584 { 2585 fv = cw.visitField(ACC_PUBLIC, "hset", "Ljava/util/HashSet;", "Ljava/util/HashSet<Ljava/util/Set<Ljava/lang/String;>;>;", null); 2586 fv.visitEnd(); 2587 } 2588 { 2589 fv = cw.visitField(ACC_PUBLIC, "map", "Ljava/util/Map;", "Ljava/util/Map<Ljava/util/Set<Ljava/lang/String;>;Ljava/util/Set<Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;>;>;", null); 2590 fv.visitEnd(); 2591 } 2592 { 2593 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 2594 mv.visitCode(); 2595 Label l0 = new Label(); 2596 mv.visitLabel(l0); 2597 mv.visitLineNumber(8, l0); 2598 mv.visitVarInsn(ALOAD, 0); 2599 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 2600 mv.visitInsn(RETURN); 2601 Label l1 = new Label(); 2602 mv.visitLabel(l1); 2603 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l1, 0); 2604 mv.visitMaxs(1, 1); 2605 mv.visitEnd(); 2606 } 2607 { 2608 mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null); 2609 { 2610 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2611 xav0.visitXTargetType(new Integer(0)); 2612 xav0.visitXOffset(new Integer(21)); 2613 xav0.visitEnd(); 2614 } 2615 { 2616 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2617 xav0.visit("value", "second"); 2618 xav0.visitXTargetType(new Integer(0)); 2619 xav0.visitXOffset(new Integer(32)); 2620 xav0.visitEnd(); 2621 } 2622 mv.visitCode(); 2623 Label l0 = new Label(); 2624 mv.visitLabel(l0); 2625 mv.visitLineNumber(18, l0); 2626 mv.visitVarInsn(ALOAD, 0); 2627 mv.visitVarInsn(ALOAD, 0); 2628 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2629 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2630 Label l1 = new Label(); 2631 mv.visitLabel(l1); 2632 mv.visitLineNumber(19, l1); 2633 mv.visitVarInsn(ALOAD, 0); 2634 mv.visitVarInsn(ALOAD, 0); 2635 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "s", "Ljava/lang/String;"); 2636 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2637 Label l2 = new Label(); 2638 mv.visitLabel(l2); 2639 mv.visitLineNumber(20, l2); 2640 mv.visitVarInsn(ALOAD, 0); 2641 mv.visitVarInsn(ALOAD, 0); 2642 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2643 mv.visitTypeInsn(CHECKCAST, "java/lang/String"); 2644 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "s", "Ljava/lang/String;"); 2645 Label l3 = new Label(); 2646 mv.visitLabel(l3); 2647 mv.visitLineNumber(21, l3); 2648 mv.visitVarInsn(ALOAD, 0); 2649 mv.visitVarInsn(ALOAD, 0); 2650 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2651 mv.visitTypeInsn(CHECKCAST, "java/lang/Integer"); 2652 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "i", "Ljava/lang/Integer;"); 2653 Label l4 = new Label(); 2654 mv.visitLabel(l4); 2655 mv.visitLineNumber(22, l4); 2656 mv.visitVarInsn(ALOAD, 0); 2657 mv.visitVarInsn(ALOAD, 0); 2658 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "b", "Ljava/lang/Boolean;"); 2659 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "b", "Ljava/lang/Boolean;"); 2660 Label l5 = new Label(); 2661 mv.visitLabel(l5); 2662 mv.visitLineNumber(23, l5); 2663 mv.visitInsn(RETURN); 2664 Label l6 = new Label(); 2665 mv.visitLabel(l6); 2666 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l6, 0); 2667 mv.visitMaxs(2, 1); 2668 mv.visitEnd(); 2669 } 2670 { 2671 mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null); 2672 { 2673 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2674 xav0.visitXTargetType(new Integer(1)); 2675 xav0.visitXOffset(new Integer(5)); 2676 xav0.visitXLocationLength(new Integer(1)); 2677 xav0.visitXLocation(new Integer(0)); 2678 xav0.visitEnd(); 2679 } 2680 { 2681 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2682 xav0.visit("value", "B"); 2683 xav0.visitXTargetType(new Integer(0)); 2684 xav0.visitXOffset(new Integer(16)); 2685 xav0.visitEnd(); 2686 } 2687 { 2688 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/C;", true); 2689 xav0.visit("fieldA", new Integer(2)); 2690 xav0.visit("fieldB", ""); 2691 xav0.visitXTargetType(new Integer(1)); 2692 xav0.visitXOffset(new Integer(16)); 2693 xav0.visitXLocationLength(new Integer(1)); 2694 xav0.visitXLocation(new Integer(0)); 2695 xav0.visitEnd(); 2696 } 2697 mv.visitCode(); 2698 Label l0 = new Label(); 2699 mv.visitLabel(l0); 2700 mv.visitLineNumber(27, l0); 2701 mv.visitVarInsn(ALOAD, 0); 2702 mv.visitVarInsn(ALOAD, 0); 2703 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2704 mv.visitTypeInsn(CHECKCAST, "java/util/HashSet"); 2705 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;"); 2706 Label l1 = new Label(); 2707 mv.visitLabel(l1); 2708 mv.visitLineNumber(28, l1); 2709 mv.visitVarInsn(ALOAD, 0); 2710 mv.visitVarInsn(ALOAD, 0); 2711 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2712 mv.visitTypeInsn(CHECKCAST, "java/util/Set"); 2713 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;"); 2714 Label l2 = new Label(); 2715 mv.visitLabel(l2); 2716 mv.visitLineNumber(29, l2); 2717 mv.visitInsn(RETURN); 2718 Label l3 = new Label(); 2719 mv.visitLabel(l3); 2720 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l3, 0); 2721 mv.visitMaxs(2, 1); 2722 mv.visitEnd(); 2723 } 2724 { 2725 mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null); 2726 { 2727 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2728 xav0.visitXTargetType(new Integer(1)); 2729 xav0.visitXOffset(new Integer(20)); 2730 xav0.visitXLocationLength(new Integer(1)); 2731 xav0.visitXLocation(new Integer(0)); 2732 xav0.visitEnd(); 2733 } 2734 { 2735 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2736 xav0.visit("value", "v"); 2737 xav0.visitXTargetType(new Integer(1)); 2738 xav0.visitXOffset(new Integer(23)); 2739 xav0.visitXLocationLength(new Integer(1)); 2740 xav0.visitXLocation(new Integer(0)); 2741 xav0.visitEnd(); 2742 } 2743 mv.visitCode(); 2744 Label l0 = new Label(); 2745 mv.visitLabel(l0); 2746 mv.visitLineNumber(33, l0); 2747 mv.visitVarInsn(ALOAD, 0); 2748 mv.visitVarInsn(ALOAD, 0); 2749 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "map", "Ljava/util/Map;"); 2750 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "keySet", "()Ljava/util/Set;"); 2751 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;"); 2752 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;"); 2753 mv.visitTypeInsn(CHECKCAST, "java/util/HashSet"); 2754 mv.visitTypeInsn(CHECKCAST, "java/util/HashSet"); 2755 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;"); 2756 Label l1 = new Label(); 2757 mv.visitLabel(l1); 2758 mv.visitLineNumber(34, l1); 2759 mv.visitVarInsn(ALOAD, 0); 2760 mv.visitVarInsn(ALOAD, 0); 2761 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2762 mv.visitTypeInsn(CHECKCAST, "java/util/HashSet"); 2763 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "hset", "Ljava/util/HashSet;"); 2764 Label l2 = new Label(); 2765 mv.visitLabel(l2); 2766 mv.visitLineNumber(35, l2); 2767 mv.visitInsn(RETURN); 2768 Label l3 = new Label(); 2769 mv.visitLabel(l3); 2770 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l3, 0); 2771 mv.visitMaxs(2, 1); 2772 mv.visitEnd(); 2773 } 2774 { 2775 mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null); 2776 { 2777 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2778 xav0.visitXTargetType(new Integer(1)); 2779 xav0.visitXOffset(new Integer(5)); 2780 xav0.visitXLocationLength(new Integer(1)); 2781 xav0.visitXLocation(new Integer(0)); 2782 xav0.visitEnd(); 2783 } 2784 { 2785 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2786 xav0.visit("value", "second"); 2787 xav0.visitXTargetType(new Integer(1)); 2788 xav0.visitXOffset(new Integer(5)); 2789 xav0.visitXLocationLength(new Integer(1)); 2790 xav0.visitXLocation(new Integer(1)); 2791 xav0.visitEnd(); 2792 } 2793 { 2794 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2795 xav0.visitXTargetType(new Integer(0)); 2796 xav0.visitXOffset(new Integer(15)); 2797 xav0.visitEnd(); 2798 } 2799 { 2800 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2801 xav0.visitXTargetType(new Integer(1)); 2802 xav0.visitXOffset(new Integer(15)); 2803 xav0.visitXLocationLength(new Integer(1)); 2804 xav0.visitXLocation(new Integer(0)); 2805 xav0.visitEnd(); 2806 } 2807 { 2808 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2809 xav0.visit("value", "set"); 2810 xav0.visitXTargetType(new Integer(0)); 2811 xav0.visitXOffset(new Integer(30)); 2812 xav0.visitEnd(); 2813 } 2814 { 2815 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 2816 xav0.visitXTargetType(new Integer(1)); 2817 xav0.visitXOffset(new Integer(43)); 2818 xav0.visitXLocationLength(new Integer(1)); 2819 xav0.visitXLocation(new Integer(1)); 2820 xav0.visitEnd(); 2821 } 2822 { 2823 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2824 xav0.visit("value", "on the set"); 2825 xav0.visitXTargetType(new Integer(0)); 2826 xav0.visitXOffset(new Integer(53)); 2827 xav0.visitEnd(); 2828 } 2829 { 2830 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2831 xav0.visit("value", "on value"); 2832 xav0.visitXTargetType(new Integer(1)); 2833 xav0.visitXOffset(new Integer(53)); 2834 xav0.visitXLocationLength(new Integer(1)); 2835 xav0.visitXLocation(new Integer(0)); 2836 xav0.visitEnd(); 2837 } 2838 mv.visitCode(); 2839 Label l0 = new Label(); 2840 mv.visitLabel(l0); 2841 mv.visitLineNumber(39, l0); 2842 mv.visitVarInsn(ALOAD, 0); 2843 mv.visitVarInsn(ALOAD, 0); 2844 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2845 mv.visitTypeInsn(CHECKCAST, "java/util/Map"); 2846 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "map", "Ljava/util/Map;"); 2847 Label l1 = new Label(); 2848 mv.visitLabel(l1); 2849 mv.visitLineNumber(40, l1); 2850 mv.visitVarInsn(ALOAD, 0); 2851 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2852 mv.visitTypeInsn(CHECKCAST, "java/util/Set"); 2853 mv.visitVarInsn(ASTORE, 1); 2854 Label l2 = new Label(); 2855 mv.visitLabel(l2); 2856 mv.visitLineNumber(41, l2); 2857 mv.visitVarInsn(ALOAD, 0); 2858 mv.visitVarInsn(ALOAD, 0); 2859 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "map", "Ljava/util/Map;"); 2860 mv.visitInsn(ACONST_NULL); 2861 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); 2862 mv.visitTypeInsn(CHECKCAST, "java/util/Set"); 2863 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "iterator", "()Ljava/util/Iterator;"); 2864 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;"); 2865 mv.visitTypeInsn(CHECKCAST, "java/util/Map"); 2866 mv.visitLdcInsn(""); 2867 mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Map", "get", "(Ljava/lang/Object;)Ljava/lang/Object;"); 2868 mv.visitTypeInsn(CHECKCAST, "java/util/Set"); 2869 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "set", "Ljava/util/Set;"); 2870 Label l3 = new Label(); 2871 mv.visitLabel(l3); 2872 mv.visitLineNumber(42, l3); 2873 mv.visitInsn(RETURN); 2874 Label l4 = new Label(); 2875 mv.visitLabel(l4); 2876 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l4, 0); 2877 mv.visitLocalVariable("t", "Ljava/util/Set;", "Ljava/util/Set<Ljava/util/Map<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;>;", l2, l4, 1); 2878 mv.visitMaxs(3, 2); 2879 mv.visitEnd(); 2880 } 2881 { 2882 mv = cw.visitMethod(ACC_PUBLIC, "test5", "()V", null, null); 2883 { 2884 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2885 xav0.visit("value", "string is key"); 2886 xav0.visitXTargetType(new Integer(1)); 2887 xav0.visitXOffset(new Integer(4)); 2888 xav0.visitXLocationLength(new Integer(1)); 2889 xav0.visitXLocation(new Integer(0)); 2890 xav0.visitEnd(); 2891 } 2892 { 2893 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2894 xav0.visit("value", "2d-array is value"); 2895 xav0.visitXTargetType(new Integer(1)); 2896 xav0.visitXOffset(new Integer(4)); 2897 xav0.visitXLocationLength(new Integer(1)); 2898 xav0.visitXLocation(new Integer(1)); 2899 xav0.visitEnd(); 2900 } 2901 { 2902 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2903 xav0.visit("value", "first dimension"); 2904 xav0.visitXTargetType(new Integer(1)); 2905 xav0.visitXOffset(new Integer(4)); 2906 xav0.visitXLocationLength(new Integer(2)); 2907 xav0.visitXLocation(new Integer(1)); 2908 xav0.visitXLocation(new Integer(0)); 2909 xav0.visitEnd(); 2910 } 2911 { 2912 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 2913 xav0.visit("value", "second dimension"); 2914 xav0.visitXTargetType(new Integer(1)); 2915 xav0.visitXOffset(new Integer(4)); 2916 xav0.visitXLocationLength(new Integer(2)); 2917 xav0.visitXLocation(new Integer(1)); 2918 xav0.visitXLocation(new Integer(1)); 2919 xav0.visitEnd(); 2920 } 2921 mv.visitCode(); 2922 Label l0 = new Label(); 2923 mv.visitLabel(l0); 2924 mv.visitLineNumber(47, l0); 2925 mv.visitVarInsn(ALOAD, 0); 2926 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypecastGenericArray", "o", "Ljava/lang/Object;"); 2927 mv.visitTypeInsn(CHECKCAST, "java/util/Map"); 2928 mv.visitVarInsn(ASTORE, 1); 2929 Label l1 = new Label(); 2930 mv.visitLabel(l1); 2931 mv.visitLineNumber(48, l1); 2932 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 2933 mv.visitVarInsn(ALOAD, 1); 2934 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V"); 2935 Label l2 = new Label(); 2936 mv.visitLabel(l2); 2937 mv.visitLineNumber(49, l2); 2938 mv.visitInsn(RETURN); 2939 Label l3 = new Label(); 2940 mv.visitLabel(l3); 2941 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypecastGenericArray;", null, l0, l3, 0); 2942 mv.visitLocalVariable("m", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;[[Ljava/lang/String;>;", l1, l3, 1); 2943 mv.visitMaxs(2, 2); 2944 mv.visitEnd(); 2945 } 2946 cw.visitEnd(); 2947 2948 return cw.toByteArray(); 2949 } 2950 2951 public static byte[] dumpTypeTest () throws Exception { 2952 2953 ClassWriter cw = new ClassWriter(false); 2954 FieldVisitor fv; 2955 MethodVisitor mv; 2956 AnnotationVisitor av0; 2957 TypeAnnotationVisitor xav0; 2958 2959 cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "annotations/tests/classfile/cases/TestTypeTest", null, "java/lang/Object", null); 2960 2961 cw.visitSource("TestTypeTest.java", null); 2962 2963 { 2964 fv = cw.visitField(ACC_PUBLIC, "o", "Ljava/lang/Object;", null, null); 2965 fv.visitEnd(); 2966 } 2967 { 2968 fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$0", "Ljava/lang/Class;", null, null); 2969 fv.visitEnd(); 2970 } 2971 { 2972 fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$1", "Ljava/lang/Class;", null, null); 2973 fv.visitEnd(); 2974 } 2975 { 2976 fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$2", "Ljava/lang/Class;", null, null); 2977 fv.visitEnd(); 2978 } 2979 { 2980 fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$3", "Ljava/lang/Class;", null, null); 2981 fv.visitEnd(); 2982 } 2983 { 2984 fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$4", "Ljava/lang/Class;", null, null); 2985 fv.visitEnd(); 2986 } 2987 { 2988 fv = cw.visitField(ACC_STATIC + ACC_SYNTHETIC, "class$5", "Ljava/lang/Class;", null, null); 2989 fv.visitEnd(); 2990 } 2991 { 2992 mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); 2993 mv.visitCode(); 2994 Label l0 = new Label(); 2995 mv.visitLabel(l0); 2996 mv.visitLineNumber(8, l0); 2997 mv.visitVarInsn(ALOAD, 0); 2998 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 2999 mv.visitInsn(RETURN); 3000 Label l1 = new Label(); 3001 mv.visitLabel(l1); 3002 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l1, 0); 3003 mv.visitMaxs(1, 1); 3004 mv.visitEnd(); 3005 } 3006 { 3007 mv = cw.visitMethod(ACC_PUBLIC, "test", "()V", null, null); 3008 { 3009 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 3010 xav0.visit("value", "ismap"); 3011 xav0.visitXTargetType(new Integer(2)); 3012 xav0.visitXOffset(new Integer(4)); 3013 xav0.visitEnd(); 3014 } 3015 { 3016 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 3017 xav0.visitXTargetType(new Integer(2)); 3018 xav0.visitXOffset(new Integer(14)); 3019 xav0.visitEnd(); 3020 } 3021 { 3022 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 3023 xav0.visit("value", "islist"); 3024 xav0.visitXTargetType(new Integer(2)); 3025 xav0.visitXOffset(new Integer(24)); 3026 xav0.visitEnd(); 3027 } 3028 mv.visitCode(); 3029 Label l0 = new Label(); 3030 mv.visitLabel(l0); 3031 mv.visitLineNumber(12, l0); 3032 mv.visitVarInsn(ALOAD, 0); 3033 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3034 mv.visitTypeInsn(INSTANCEOF, "java/util/Map"); 3035 Label l1 = new Label(); 3036 mv.visitJumpInsn(IFEQ, l1); 3037 Label l2 = new Label(); 3038 mv.visitLabel(l2); 3039 mv.visitLineNumber(13, l2); 3040 mv.visitVarInsn(ALOAD, 0); 3041 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3042 mv.visitTypeInsn(INSTANCEOF, "java/util/Set"); 3043 mv.visitJumpInsn(IFEQ, l1); 3044 Label l3 = new Label(); 3045 mv.visitLabel(l3); 3046 mv.visitLineNumber(14, l3); 3047 mv.visitVarInsn(ALOAD, 0); 3048 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3049 mv.visitTypeInsn(INSTANCEOF, "java/util/List"); 3050 mv.visitJumpInsn(IFEQ, l1); 3051 Label l4 = new Label(); 3052 mv.visitLabel(l4); 3053 mv.visitLineNumber(15, l4); 3054 mv.visitVarInsn(ALOAD, 0); 3055 mv.visitTypeInsn(NEW, "java/lang/Object"); 3056 mv.visitInsn(DUP); 3057 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 3058 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3059 mv.visitLabel(l1); 3060 mv.visitLineNumber(19, l1); 3061 mv.visitInsn(RETURN); 3062 Label l5 = new Label(); 3063 mv.visitLabel(l5); 3064 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l5, 0); 3065 mv.visitMaxs(3, 1); 3066 mv.visitEnd(); 3067 } 3068 { 3069 mv = cw.visitMethod(ACC_PUBLIC, "test2", "()V", null, null); 3070 { 3071 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 3072 xav0.visitXTargetType(new Integer(2)); 3073 xav0.visitXOffset(new Integer(4)); 3074 xav0.visitEnd(); 3075 } 3076 { 3077 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 3078 xav0.visitXTargetType(new Integer(2)); 3079 xav0.visitXOffset(new Integer(14)); 3080 xav0.visitEnd(); 3081 } 3082 mv.visitCode(); 3083 Label l0 = new Label(); 3084 mv.visitLabel(l0); 3085 mv.visitLineNumber(22, l0); 3086 mv.visitVarInsn(ALOAD, 0); 3087 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3088 mv.visitTypeInsn(INSTANCEOF, "java/util/List"); 3089 Label l1 = new Label(); 3090 mv.visitJumpInsn(IFEQ, l1); 3091 Label l2 = new Label(); 3092 mv.visitLabel(l2); 3093 mv.visitLineNumber(23, l2); 3094 mv.visitVarInsn(ALOAD, 0); 3095 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3096 mv.visitTypeInsn(INSTANCEOF, "java/util/ArrayList"); 3097 mv.visitJumpInsn(IFEQ, l1); 3098 Label l3 = new Label(); 3099 mv.visitLabel(l3); 3100 mv.visitLineNumber(24, l3); 3101 mv.visitVarInsn(ALOAD, 0); 3102 mv.visitTypeInsn(NEW, "java/lang/Object"); 3103 mv.visitInsn(DUP); 3104 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 3105 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3106 mv.visitLabel(l1); 3107 mv.visitLineNumber(27, l1); 3108 mv.visitInsn(RETURN); 3109 Label l4 = new Label(); 3110 mv.visitLabel(l4); 3111 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l4, 0); 3112 mv.visitMaxs(3, 1); 3113 mv.visitEnd(); 3114 } 3115 { 3116 mv = cw.visitMethod(ACC_PUBLIC, "test3", "()V", null, null); 3117 { 3118 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 3119 xav0.visit("value", "instanceof object"); 3120 xav0.visitXTargetType(new Integer(2)); 3121 xav0.visitXOffset(new Integer(4)); 3122 xav0.visitEnd(); 3123 } 3124 mv.visitCode(); 3125 Label l0 = new Label(); 3126 mv.visitLabel(l0); 3127 mv.visitLineNumber(30, l0); 3128 mv.visitVarInsn(ALOAD, 0); 3129 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3130 mv.visitTypeInsn(INSTANCEOF, "java/lang/Object"); 3131 Label l1 = new Label(); 3132 mv.visitJumpInsn(IFNE, l1); 3133 Label l2 = new Label(); 3134 mv.visitLabel(l2); 3135 mv.visitLineNumber(31, l2); 3136 mv.visitVarInsn(ALOAD, 0); 3137 mv.visitTypeInsn(NEW, "java/lang/Object"); 3138 mv.visitInsn(DUP); 3139 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 3140 mv.visitFieldInsn(PUTFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3141 mv.visitLabel(l1); 3142 mv.visitLineNumber(33, l1); 3143 mv.visitInsn(RETURN); 3144 Label l3 = new Label(); 3145 mv.visitLabel(l3); 3146 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l3, 0); 3147 mv.visitMaxs(3, 1); 3148 mv.visitEnd(); 3149 } 3150 { 3151 mv = cw.visitMethod(ACC_PUBLIC, "test4", "()V", null, null); 3152 { 3153 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 3154 xav0.visitXTargetType(new Integer(2)); 3155 xav0.visitXOffset(new Integer(12)); 3156 xav0.visitEnd(); 3157 } 3158 { 3159 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 3160 xav0.visit("value", "second"); 3161 xav0.visitXTargetType(new Integer(2)); 3162 xav0.visitXOffset(new Integer(28)); 3163 xav0.visitEnd(); 3164 } 3165 { 3166 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 3167 xav0.visitXTargetType(new Integer(2)); 3168 xav0.visitXOffset(new Integer(44)); 3169 xav0.visitEnd(); 3170 } 3171 { 3172 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/B;", true); 3173 xav0.visit("value", "fourth"); 3174 xav0.visitXTargetType(new Integer(2)); 3175 xav0.visitXOffset(new Integer(60)); 3176 xav0.visitEnd(); 3177 } 3178 { 3179 xav0 = mv.visitTypeAnnotation("Lannotations/tests/classfile/foo/A;", true); 3180 xav0.visitXTargetType(new Integer(2)); 3181 xav0.visitXOffset(new Integer(76)); 3182 xav0.visitEnd(); 3183 } 3184 mv.visitCode(); 3185 Label l0 = new Label(); 3186 mv.visitLabel(l0); 3187 mv.visitLineNumber(36, l0); 3188 mv.visitVarInsn(ALOAD, 0); 3189 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3190 mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;"); 3191 mv.visitVarInsn(ASTORE, 1); 3192 Label l1 = new Label(); 3193 mv.visitLabel(l1); 3194 mv.visitLineNumber(37, l1); 3195 mv.visitVarInsn(ALOAD, 0); 3196 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3197 mv.visitTypeInsn(INSTANCEOF, "java/lang/Boolean"); 3198 Label l2 = new Label(); 3199 mv.visitJumpInsn(IFEQ, l2); 3200 Label l3 = new Label(); 3201 mv.visitLabel(l3); 3202 mv.visitLineNumber(38, l3); 3203 mv.visitLdcInsn(Type.getType("Ljava/lang/Boolean;")); 3204 mv.visitVarInsn(ASTORE, 1); 3205 Label l4 = new Label(); 3206 mv.visitJumpInsn(GOTO, l4); 3207 mv.visitLabel(l2); 3208 mv.visitLineNumber(39, l2); 3209 mv.visitVarInsn(ALOAD, 0); 3210 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3211 mv.visitTypeInsn(INSTANCEOF, "java/lang/Integer"); 3212 Label l5 = new Label(); 3213 mv.visitJumpInsn(IFEQ, l5); 3214 Label l6 = new Label(); 3215 mv.visitLabel(l6); 3216 mv.visitLineNumber(40, l6); 3217 mv.visitLdcInsn(Type.getType("Ljava/lang/Integer;")); 3218 mv.visitVarInsn(ASTORE, 1); 3219 mv.visitJumpInsn(GOTO, l4); 3220 mv.visitLabel(l5); 3221 mv.visitLineNumber(41, l5); 3222 mv.visitVarInsn(ALOAD, 0); 3223 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3224 mv.visitTypeInsn(INSTANCEOF, "java/lang/Character"); 3225 Label l7 = new Label(); 3226 mv.visitJumpInsn(IFEQ, l7); 3227 Label l8 = new Label(); 3228 mv.visitLabel(l8); 3229 mv.visitLineNumber(42, l8); 3230 mv.visitLdcInsn(Type.getType("Ljava/lang/Character;")); 3231 mv.visitVarInsn(ASTORE, 1); 3232 mv.visitJumpInsn(GOTO, l4); 3233 mv.visitLabel(l7); 3234 mv.visitLineNumber(43, l7); 3235 mv.visitVarInsn(ALOAD, 0); 3236 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3237 mv.visitTypeInsn(INSTANCEOF, "java/lang/String"); 3238 Label l9 = new Label(); 3239 mv.visitJumpInsn(IFEQ, l9); 3240 Label l10 = new Label(); 3241 mv.visitLabel(l10); 3242 mv.visitLineNumber(44, l10); 3243 mv.visitLdcInsn(Type.getType("Ljava/lang/String;")); 3244 mv.visitVarInsn(ASTORE, 1); 3245 mv.visitJumpInsn(GOTO, l4); 3246 mv.visitLabel(l9); 3247 mv.visitLineNumber(45, l9); 3248 mv.visitVarInsn(ALOAD, 0); 3249 mv.visitFieldInsn(GETFIELD, "annotations/tests/classfile/cases/TestTypeTest", "o", "Ljava/lang/Object;"); 3250 mv.visitTypeInsn(INSTANCEOF, "java/util/List"); 3251 Label l11 = new Label(); 3252 mv.visitJumpInsn(IFEQ, l11); 3253 Label l12 = new Label(); 3254 mv.visitLabel(l12); 3255 mv.visitLineNumber(46, l12); 3256 mv.visitLdcInsn(Type.getType("Ljava/util/List;")); 3257 mv.visitVarInsn(ASTORE, 1); 3258 mv.visitJumpInsn(GOTO, l4); 3259 mv.visitLabel(l11); 3260 mv.visitLineNumber(48, l11); 3261 mv.visitFieldInsn(GETSTATIC, "java/lang/Integer", "TYPE", "Ljava/lang/Class;"); 3262 mv.visitVarInsn(ASTORE, 1); 3263 mv.visitLabel(l4); 3264 mv.visitLineNumber(50, l4); 3265 mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); 3266 mv.visitVarInsn(ALOAD, 1); 3267 mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V"); 3268 Label l13 = new Label(); 3269 mv.visitLabel(l13); 3270 mv.visitLineNumber(51, l13); 3271 mv.visitInsn(RETURN); 3272 Label l14 = new Label(); 3273 mv.visitLabel(l14); 3274 mv.visitLocalVariable("this", "Lannotations/tests/classfile/cases/TestTypeTest;", null, l0, l14, 0); 3275 mv.visitLocalVariable("c", "Ljava/lang/Class;", null, l1, l14, 1); 3276 mv.visitMaxs(2, 2); 3277 mv.visitEnd(); 3278 } 3279 cw.visitEnd(); 3280 3281 return cw.toByteArray(); 3282 } 3283 } 3284