Thank you very much for the tips.

On Wed, Jul 6, 2011 at 2:25 PM, Vyacheslav Egorov <vego...@chromium.org>wrote:

> > In this line, the object at 0x7fe8125aa911 is not shown. I assume it is
> placed in "data section".
>
> Well. There is not data section. The object itself lives in the heap.
> If you look at relocation information you can see that object
> 0x7fe8125aa911 is a two element FixedArray.
>
> You can extend Code::Disassemble to print all referenced objects
> recursively but that would produce quite a large output with cycles.
>
> Alternatively you can just put a breakpoint into
> CodeGenerator::PrintCode, wait until V8 compiles and prints
> interesting function and then expect heap state, print objects that
> are interesting to you etc.
>
> > In these two lines, the callees are not shown, I suppose CEntry and
> StackCheck are both built-in functions of v8.
>
> They will be printed if you pass --print-code-stubs to V8 (your shell
> should be compiled with snapshot=off).
>
> > Basically, my goal is to catch runtime instructions trace (this is the
> easy part) and relate it back to javascript
> > source code.
>
> --code-comment will help you to do that.
>
> > Will --gdbjit-dump help? Is this option only available in debug build?
>
> GDBJIT interface produces object that contain debugging information
> (like pc to line mapping) but no code. So I  don't think --gdbjit-dump
> will help you.
>
> --
> Vyacheslav Egorov
>
>
> On Wed, Jul 6, 2011 at 8:03 PM, Zhaoshi Zheng <wingle...@gmail.com> wrote:
> > 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 <vego...@chromium.org>
> > 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 <wingle...@gmail.com> 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
> >> > v8-users@googlegroups.com
> >> > http://groups.google.com/group/v8-users
> >> >
> >>
> >> --
> >> v8-users mailing list
> >> v8-users@googlegroups.com
> >> http://groups.google.com/group/v8-users
> >
> > --
> > v8-users mailing list
> > v8-users@googlegroups.com
> > http://groups.google.com/group/v8-users
>
> --
> v8-users mailing list
> v8-users@googlegroups.com
> http://groups.google.com/group/v8-users
>

-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users

Reply via email to