View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.bcel.data;
19  
20  // Due to the way try finally is implemented in the standard java compiler
21  // from Oracle, this class generates a huge (>32767 code bytes) <init> method.
22  // Verified with javac versions 1.8.0_261, 11.0.10 and 17.0.1.
23  final class LargeMethod {
24      {
25          @SuppressWarnings("unused")
26          int a;
27          try {
28              a = 0;
29          } finally {
30              try {
31                  a = 0;
32              } finally {
33                  try {
34                      a = 0;
35                  } finally {
36                      try {
37                          a = 0;
38                      } finally {
39                          try {
40                              a = 0;
41                          } finally {
42                              try {
43                                  a = 0;
44                              } finally {
45                                  try {
46                                      a = 0;
47                                  } finally {
48                                      try {
49                                          a = 0;
50                                      } finally {
51                                          try {
52                                              a = 0;
53                                          } finally {
54                                              try {
55                                                  a = 0;
56                                              } finally {
57                                                  try {
58                                                      a = 0;
59                                                  } finally {
60                                                      try {
61                                                          a = 0;
62                                                      } finally {
63                                                          a = 0;
64                                                      }
65                                                  }
66                                              }
67                                          }
68                                      }
69                                  }
70                              }
71                          }
72                      }
73                  }
74              }
75          }
76      }
77  }