harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eugene Ostrovsky" <eugene.s.ostrov...@gmail.com>
Subject Re: [drlvm][jvmti] Profiling support - Compiled Method Load event
Date Fri, 15 Dec 2006 11:19:02 GMT
I experimented with sun and bea vms.
None of them report inlined methods.

Thus we need to make a decision by ourselves.


On 14 Dec 2006 16:14:49 +0600, Egor Pasko <egor.pasko@gmail.com> wrote:
>
> On the 0x23F day of Apache Harmony Eugene Ostrovsky wrote:
> > I'll try to make test to investigate RI behavior.
>
> thank you thank you thank you
>
> > On 13 Dec 2006 16:34:46 +0600, Egor Pasko <egor.pasko@gmail.com> wrote:
> > >
> > > On the 0x23E day of Apache Harmony George Timoshenko wrote:
> > > > Egor,
> > > >
> > > > thanks for clear scheme.
> > > >
> > > > In your terms I'd do something like this:
> > > >
> > > > * firstly - raise event for X:
> > > >      CompiledMethodLoad(start=X.1.start,
> > > >                         method_size=X.1.size + X.2.size,
> > > >                         addr_loc_map=
> > > >                         [X.1.start -> bcoff1,
> > > >                          X.2.start -> bcoff2])
> > > >    * secondly - raise event for Y:
> > > >      CompiledMethodLoad(start=Y.1.start,
> > > >                         method_size=Y.1.size,
> > > >                         addr_loc_map=
> > > >                         [Y.1.start -> bcoff_Y])
> > >
> > > good question!
> > >
> > > IMHO, code_addr and code_size outlines a region where method code is
> > > contained. In that case VM can quickly tell which method the IP
> > > (instruction pointer) belongs to. So, I intentionally suggested
> > > code_size=(X.1.size + Y.1.size + X.2.size) instead of (X.1.size +
> > > X.2.size).
> > >
> > > BTW, Eugene, do you have some important observations of the RI
> > > behaviour for us?
> > >
> > > >  >   For example, we have
> > > >  >   some chinks of methods X and Y intermixed like this:
> > > >  >   "X.1,Y.1,X.2". To overcome we may:
> > > >  >   * raise a single event for X:
> > > >  >     CompiledMethodLoad(start=X.1.start,
> > > >  >                        method_size=X.1.size + Y.1.size + X.2.size
> ,
> > > >  >                        addr_loc_map=
> > > >  >                        [X.1.start -> bcoff1,
> > > >  >                         Y.1.start -> 0,
> > > >  >                         X.2.start -> bcoff2])
> > > >  >   * raise 2 events for X:
> > > >  >     CompiledMethodLoad(start=X.1.start,
> > > >  >                        method_size=X.1.size,
> > > >  >                        addr_loc_map=
> > > >  >                        [X.1.start -> bcoff1])
> > > >  >     CompiledMethodLoad(start=X.2.start,
> > > >  >                        method_size=X.2.size,
> > > >  >                        addr_loc_map=
> > > >  >                        [X.2.start -> bcoff2])
> > > >  >
> > > >  > I would highly appreciate if some JVMTI guru steps down from
> Olymp
> > > and
> > > >  > tells which of two is the best, or at least says what RI does in
> that
> > > >  > case (or, maybe, RI does not generate non-contigous blocks?)
> > > >  >
> > > >  > I like the second approach (raise 2 events)
> > > >  >
> > > >
> > > >
> > > >
> > >
> > > --
> > > Egor Pasko
> > >
> > >
>
> --
> Egor Pasko
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message