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