Missing LineNumberTable entries with JDK8?
Joel Borggren-Franck
joel.franck at oracle.com
Mon Aug 19 03:39:51 PDT 2013
Great :)
On 2013-08-19, Vicente-Arturo Romero-Zaldivar wrote:
> Hi,
>
> This bug has already been solved by Jan Lahoda.
>
> Changeset: http://hg.openjdk.java.net/jdk8/tl/langtools/rev/8c4b2987edac
> original bug id: http://bugs.sun.com/view_bug.do?bug_id=8020689
>
> Thanks,
> Vicente
>
> On 19/08/13 09:50, Joel Borggren-Franck wrote:
> >Hi Marc,
> >
> >Thanks for the report. Bug id 8023214.
> >
> >Should show up here: http://bugs.sun.com/view_bug.do?bug_id=8023214
> >
> >cheers
> >/Joel
> >
> >In-Reply-To: <51E3B136.4030800 at mountainminds.com>
> >
> >On 2013-07-15, Marc R. Hoffmann wrote:
> >>Hi,
> >>
> >>I'm currently working on a Java 8 version of the code coverage tool
> >>JaCoCo. This tool relies on line number information within class
> >>files. Some of our integration tests fail with JDK8, probably due to
> >>incomplete line number information.
> >>
> >>STEPS TO REPRODUCE
> >>
> >>Compile the source file attached with the lates JDK8 build
> >>(1.8.0-ea-b97). Compiled class is also attached.
> >>
> >>EXPECTED
> >>
> >>The compiled class files has a LineNumberTable entry for the method
> >>invocation b() in line 10.
> >>
> >>ACTUAL
> >>
> >>There is no separate LineNumberTable entry for the invocation of
> >>b(). So b() appears to be invoked in line 8 instead of 10. See javap
> >>output below.
> >>
> >>The problem seems to be specific to static methods. Line numbers are
> >>reported correctly if method b() is an instance method.
> >>
> >>Best regards,
> >>-marc
> >>
> >>
> >> static void m(boolean);
> >> descriptor: (Z)V
> >> flags: ACC_STATIC
> >> Code:
> >> stack=1, locals=1, args_size=1
> >> 0: iload_0
> >> 1: ifeq 10
> >> 4: invokestatic #2 // Method a:()V
> >> 7: goto 13
> >> 10: invokestatic #3 // Method b:()V
> >> 13: return
> >> LineNumberTable:
> >> line 7: 0
> >> line 8: 4
> >> line 12: 13
> >> StackMapTable: number_of_entries = 2
> >> frame_type = 10 /* same */
> >> frame_type = 2 /* same */
> >>
> >>/**
> >> * Reproducer for Java 8 compiler issue where wrong line numbers are reported..
> >> */
> >>public class Target01 {
> >>
> >> static void m(boolean flag) {
> >> if (flag) {
> >> a();
> >> } else {
> >> b(); // Wrong line number for this invocation (8 instead of 10)
> >> }
> >> }
> >>
> >> static void a() {
> >> }
> >>
> >> static void b() {
> >> }
> >>
> >>}
> >
>
More information about the compiler-dev
mailing list