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