1. Print only 16 bytes per line
2. Print the address of each line
3. Put an extra space halfway (i.e. after the 8th byte) for readability

It looks like this:

        TRACE: jvm/ObjectCreationAndManipulationTest.main([Ljava/lang/String;)V
        Length: 52
        Code:
        [ 0000 ] b8 00 61 b8 00 63 b8 00  65 b8 00 67 b8 00 69 b8
        [ 0016 ] 00 6b b8 00 6d b8 00 6f  b8 00 71 b8 00 73 b8 00
        [ 0032 ] 75 b8 00 77 b8 00 79 b8  00 7b b8 00 7d b8 00 7f
        [ 0048 ] b8 00 81 b1

Signed-off-by: Vegard Nossum <vegard.nos...@gmail.com>
---
 jit/trace-jit.c |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/jit/trace-jit.c b/jit/trace-jit.c
index 3e649a6..b0c21c8 100644
--- a/jit/trace-jit.c
+++ b/jit/trace-jit.c
@@ -51,17 +51,37 @@ void trace_method(struct compilation_unit *cu)
 {
        struct vm_method *method = cu->method;
        unsigned char *p;
-       unsigned int i;
+       unsigned int i, j;
 
        printf("\nTRACE: %s.%s%s\n",
                method->class->name, method->name, method->type);
 
        printf("Length: %d\n", method->code_attribute.code_length);
-       printf("Code: ");
+       printf("Code:\n");
        p = method->code_attribute.code;
-       for (i = 0; i < method->code_attribute.code_length; i++) {
-               printf("%02x ", p[i]);
+
+       unsigned int n = method->code_attribute.code_length;
+       unsigned int rows = n / 16;
+       unsigned int cols = 16;
+
+       for (i = 0; i <= rows; ++i) {
+               if (i == rows) {
+                       cols = n % 16;
+                       if (!cols)
+                               break;
+               }
+
+               printf("[ %04u ] ", i * 16);
+
+               for (j = 0; j < cols; ++j) {
+                       printf("%02x%s",
+                               p[i * 16 + j],
+                               j == 7 ? "  " : " ");
+               }
+
+               printf("\n");
        }
+
        printf("\n\n");
 }
 
-- 
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