annotate test/runtime/classFileParserBug/emptynumbootstrapmethods2.jcod @ 20218:828056cf311f

8040792: G1: Memory usage calculation uses sizeof(this) instead of sizeof(classname) Summary: A few locations in the code use sizeof(this) which returns the size of the pointer instead of sizeof(classname) which returns the size of the sum of its members. This change fixes these errors and adds a few tests. Reviewed-by: mgerdin, brutisso
author tschatzl
date Mon, 21 Jul 2014 09:40:19 +0200
parents 366c198c896d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17934
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
1 /*
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
4 *
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
7 * published by the Free Software Foundation.
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
8 *
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
13 * accompanied this code).
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
14 *
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
18 *
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
21 * questions.
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
22 */
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
23
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
24 /*
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
25 * This test contains a BootstrapMethods attribute with an empty
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
26 * bootstrap_methods table. This yields a BootstrapMethods
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
27 * attribute length of 2 and should not cause a
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
28 * java.lang.ClassFormatError to be thrown. To ensure that an empty
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
29 * bootstrap_methods table is parsed correctly, another attribute,
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
30 * AnnotationDefault, follows the BootstrapMethods attribute in
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
31 * the attribute table.
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
32 */
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
33
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
34 class emptynumbootstrapmethods2 {
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
35 0xCAFEBABE;
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
36 0; // minor version
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
37 51; // version
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
38 [14] { // Constant Pool
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
39 ; // first element is empty
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
40 class #2; // #1 at 0x0A
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
41 Utf8 "emptynumbootstrapmethods2"; // #2 at 0x0D
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
42 class #4; // #3 at 0x1F
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
43 Utf8 "java/lang/Object"; // #4 at 0x22
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
44 MethodHandle 5b #9; // #5 at 0x35
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
45 NameAndType #7 #8; // #6 at 0x39
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
46 Utf8 "equals"; // #7 at 0x3E
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
47 Utf8 "(Ljava/lang/Object;)Z"; // #8 at 0x47
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
48 Method #3 #6; // #9 at 0x5F
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
49 Utf8 "equalsx"; // #10 at 0x3E
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
50 Utf8 "BootstrapMethods"; // #11 at 0x69
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
51 Utf8 "AnnotationDefault"; // #12
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
52 Utf8 "LAnnotationDefaultI;"; // #13
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
53 } // Constant Pool
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
54
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
55 0x0001; // access
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
56 #1;// this_cpx
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
57 #3;// super_cpx
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
58
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
59 [0] { // Interfaces
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
60 } // Interfaces
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
61
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
62 [0] { // fields
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
63 } // fields
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
64
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
65 [0] { // methods
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
66 } // methods
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
67
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
68 [2] { // Attributes
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
69 Attr(#11, 2) { // BootstrapMethods at 0x8A
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
70 [0] { // bootstrap_methods
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
71 }
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
72 } // end BootstrapMethods
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
73 ;
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
74 Attr(#12) { // AnnotationDefault
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
75 [] { // type annotations
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
76 { // type annotation
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
77 0x00; // target_type
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
78 0x00; // type_parameter_index
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
79 []b { // type_path
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
80 }
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
81
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
82 #13; // type_index
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
83 [] { // element_value_pairs
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
84 } // element_value_pairs
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
85 } // type annotation
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
86 } // type annotations
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
87 } // end AnnotationDefault
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
88 } // Attributes
366c198c896d 8041918: BootstrapMethods attribute cannot be empty.
lfoltan
parents:
diff changeset
89 } // end class atrbsm00101m10p