-
Enhancement
-
Resolution: Unresolved
-
P4
-
6
-
Fix Understood
-
generic
-
generic
The amount of code per method is limited to 64K bytes by the sizes of the indices
in the exception_table of the Code attribute, in the LineNumberTable attribute,
in the LocalVariableTable attribute, and in the StackMapTable attribute (JVMS 2nd
edition 4.10).
After inlining subroutine code (4640034), some applications with extreme styles
such as deeply nested finally blocks, or huge amount of exiting paths in try or
synchronized blocks, would fail to compile because code size exceeds limit.
It was temporarily fixed in JDK 1.4.2 by introducing a command-line flag to
control how much inlining happens for finally blocks (4739388). After jsr/ret
instructions are eliminated in JDK 6, the above workaround will no longer work.
in the exception_table of the Code attribute, in the LineNumberTable attribute,
in the LocalVariableTable attribute, and in the StackMapTable attribute (JVMS 2nd
edition 4.10).
After inlining subroutine code (4640034), some applications with extreme styles
such as deeply nested finally blocks, or huge amount of exiting paths in try or
synchronized blocks, would fail to compile because code size exceeds limit.
It was temporarily fixed in JDK 1.4.2 by introducing a command-line flag to
control how much inlining happens for finally blocks (4739388). After jsr/ret
instructions are eliminated in JDK 6, the above workaround will no longer work.
- relates to
-
JDK-4739388 regression: javac generates too much bytecode for deply nested try-finally
- Resolved
-
JDK-6464451 javac in 5.0ux can not compile try-catch block which has a lot of "return"
- Closed