Vyacheslav,

Thanks for your reply. Take this function for example, Benchmark in base.js
of V8 benchmark suite:

0x7fe7ed6c2a07     7  49ba11a95a12e87f0000 REX.W movq r10,0x7fe8125aa911
;; object: 0x7fe8125aa911 <FixedArray[2]>

In this line, the object at 0x7fe8125aa911 is not shown. I assume it is
placed in "data section".

0x7fe7ed6c2a23    35  e8d8d8fdff     call 0x7fe7ed6a0300     ;; debug:
statement 0
                                                             ;; code: STUB,
CEntry, minor: 0

0x7fe7ed6c2a2e    46  e80d23feff     call 0x7fe7ed6a4d40     ;; code: STUB,
StackCheck, minor: 0

In these two lines, the callees are not shown, I suppose CEntry and
StackCheck are both built-in functions of v8.

Basically, my goal is to catch runtime instructions trace (this is the easy
part) and relate it back to javascript source code. Will --gdbjit-dump help?
Is this option only available in debug build?

--- Raw source ---
// A benchmark has a name (string) and a function that will be run to
// do the performance measurement. The optional setup and tearDown
// arguments are functions that will be invoked before and after
// running the benchmark, but the running time of these functions will
// not be accounted for in the benchmark score.
function Benchmark(name, run, setup, tearDown) {
  this.name = name;
  this.run = run;
  this.Setup = setup ? setup : function() { };
  this.TearDown = tearDown ? tearDown : function() { };
}



--- Code ---
kind = FUNCTION
Instructions (size = 72)
0x7fe7ed6c2a00     0  55             push rbp
0x7fe7ed6c2a01     1  4889e5         REX.W movq rbp,rsp
0x7fe7ed6c2a04     4  56             push rsi
0x7fe7ed6c2a05     5  57             push rdi
0x7fe7ed6c2a06     6  56             push rsi
0x7fe7ed6c2a07     7  49ba11a95a12e87f0000 REX.W movq r10,0x7fe8125aa911
;; object: 0x7fe8125aa911 <FixedArray[2]>
0x7fe7ed6c2a11    17  4152           push r10
0x7fe7ed6c2a13    19  6a00           push 0x0
0x7fe7ed6c2a15    21  6a00           push 0x0
0x7fe7ed6c2a17    23  b804000000     movl rax,0x4
0x7fe7ed6c2a1c    28  498d9da0d792fe REX.W leaq rbx,[r13-0x16d2860]
0x7fe7ed6c2a23    35  e8d8d8fdff     call 0x7fe7ed6a0300     ;; debug:
statement 0
                                                             ;; code: STUB,
CEntry, minor: 0
0x7fe7ed6c2a28    40  493b6508       REX.W cmpq rsp,[r13+0x8]
0x7fe7ed6c2a2c    44  7305           jnc 51  (0x7fe7ed6c2a33)
0x7fe7ed6c2a2e    46  e80d23feff     call 0x7fe7ed6a4d40     ;; code: STUB,
StackCheck, minor: 0
0x7fe7ed6c2a33    51  498b4598       REX.W movq rax,[r13-0x68]
0x7fe7ed6c2a37    55  488be5         REX.W movq rsp,rbp      ;; debug:
statement 513
                                                             ;; js return
0x7fe7ed6c2a3a    58  5d             pop rbp
0x7fe7ed6c2a3b    59  c20800         ret 0x8
0x7fe7ed6c2a3e    62  cc             int3
0x7fe7ed6c2a3f    63  cc             int3
0x7fe7ed6c2a40    64  cc             int3
0x7fe7ed6c2a41    65  cc             int3
0x7fe7ed6c2a42    66  cc             int3
0x7fe7ed6c2a43    67  cc             int3

Deoptimization Output Data (deopt points = 0)

Stack checks (size = 0)
ast_id  pc_offset

RelocInfo (size = 14)
0x7fe7ed6c2a09  embedded object  (0x7fe8125aa911 <FixedArray[2]>)
0x7fe7ed6c2a23  statement position  (0)
0x7fe7ed6c2a24  code target (STUB)  (0x7fe7ed6a0300)
0x7fe7ed6c2a2f  code target (STUB)  (0x7fe7ed6a4d40)
0x7fe7ed6c2a37  statement position  (513)
0x7fe7ed6c2a37  js return


On Wed, Jul 6, 2011 at 1:15 PM, Vyacheslav Egorov <[email protected]>wrote:

> Hi Albert,
>
> Can you clarify?
>
> What kind of information in your opinion is missing from the
> --print-code output?
>
> You can use --code-comments to make assembly more human readable.
>
> Strictly speaking there is not such thing as a translated JS program as
> whole.
>
> V8 compiles different functions separately as application runs. It
> might compile the same function several times with different
> compilers.
>
> --
> Vyacheslav Egorov
>
>
> On Wed, Jul 6, 2011 at 7:09 PM, Albert <[email protected]> wrote:
> > Hi,
> >
> > I'm studying hardware performance of JS programs. I tried with --print-
> > code switch with shell sample but the problem is I only got assembly
> > code. What I would like to have is something like objdump result of C/C
> > ++ program. Is there a way of doing this?
> >
> > Thanks,
> >
> > --
> > v8-users mailing list
> > [email protected]
> > http://groups.google.com/group/v8-users
> >
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
>

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to