]> gcc.gnu.org Git - gcc.git/commitdiff
re PR java/28352 (gcj -C fails to generate line number info for method)
authorBryce McKinlay <mckinlay@redhat.com>
Wed, 12 Jul 2006 13:56:25 +0000 (13:56 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Wed, 12 Jul 2006 13:56:25 +0000 (14:56 +0100)
2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>

PR libgcj/28352
* stacktrace.cc (getLineNumberForFrame): Roll back PC by 1 when
looking up line number for interpreted frame.

From-SVN: r115370

libjava/ChangeLog
libjava/stacktrace.cc

index 86c0842008304485a401858c4cc2f31d9d671590..88ca1d86f47e29d16780be455dc891814a8a2d3f 100644 (file)
@@ -1,3 +1,9 @@
+2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>
+
+       PR libgcj/28352
+       * stacktrace.cc (getLineNumberForFrame): Roll back PC by 1 when
+       looking up line number for interpreted frame.
+
 2006-07-07  Bryce McKinlay  <mckinlay@redhat.com>
            Geoffrey Keating <geoffk@apple.com>
 
index 2ace9abc232e7212a5c4c6be51eaa8b48ec13a98..ed0700bd629adaa6157de63ce5808b72ad770312 100644 (file)
@@ -182,7 +182,9 @@ _Jv_StackTrace::getLineNumberForFrame(_Jv_StackFrame *frame, NameFinder *finder,
       _Jv_InterpClass *interp_class = 
         (_Jv_InterpClass *) interp_meth->defining_class->aux_info;
       *sourceFileName = interp_class->source_file_name;
-      *lineNum = interp_meth->get_source_line(frame->interp.pc);
+      // The interpreter advances the PC before executing an instruction,
+      // so roll-back 1 byte to ensure the line number is accurate.
+      *lineNum = interp_meth->get_source_line(frame->interp.pc - 1);
       return;
     }
 #endif
This page took 0.064808 seconds and 5 git commands to generate.