Cc: Tomek Grabiec <tgrab...@gmail.com>
Signed-off-by: Vegard Nossum <vegard.nos...@gmail.com>
---
 arch/x86/backtrace.c |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/arch/x86/backtrace.c b/arch/x86/backtrace.c
index 6b2dde4..1651aa3 100644
--- a/arch/x86/backtrace.c
+++ b/arch/x86/backtrace.c
@@ -24,7 +24,12 @@
  * Please refer to the file LICENSE for details.
  */
 
+#include "jit/bc-offset-mapping.h"
+#include "jit/compilation-unit.h"
+#include "jit/cu-mapping.h"
 #include "vm/backtrace.h"
+#include "vm/class.h"
+#include "vm/method.h"
 
 #include <bfd.h>
 #include <execinfo.h>
@@ -121,10 +126,40 @@ failed:
        goto out;
 }
 
+static bool show_jit_function(void *addr)
+{
+       struct compilation_unit *cu;
+       long bytecode_offset;
+       struct vm_method *vmm;
+       struct vm_class *vmc;
+       int line_number;
+
+       cu = jit_lookup_cu((unsigned long) addr);
+       if (!cu)
+               return false;
+
+       bytecode_offset = native_ptr_to_bytecode_offset(cu, addr);
+
+       vmm = cu->method;
+       vmc = vmm->class;
+
+       line_number = bytecode_offset_to_line_no(vmm, bytecode_offset);
+
+       printf(" [<%08lx> %s.%s%s+%lx %s:%d]\n", (unsigned long) addr,
+               vmc->name, vmm->name, vmm->type,
+               vm_method_is_native(vmm)
+                       ? 0 : native_ptr_to_bytecode_offset(cu, addr),
+               vmc->source_file_name, line_number >= 1
+                       ? line_number : 0);
+       return true;
+}
+
 static void show_function(void *addr)
 {
        if (show_exe_function(addr))
                return;
+       if (show_jit_function(addr))
+               return;
 
        printf(" [<%08lx> <unknown>]\n", (unsigned long) addr);
 }
-- 
1.6.0.6


------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to