harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Chow" <simon.harm...@gmail.com>
Subject Re: [general][jitrino] How does JIT deal with CALL inst when generating native code?
Date Tue, 04 Mar 2008 08:14:29 GMT
Pavel,

Thank you for the explanation.
So the compilation unit in JIT is always a single method, is that true?
And what is the compilation result of "calling B()", is it a native
instruction or a stub?


On 04/03/2008, Pavel Pervov <pmcfirst@gmail.com> wrote:
>
> Simon,
>
> Why recursively?
>
> First, A() gets compiled and executed, then, as soon as execution runs
> to calling B(), B() is compiled and executed.
>
> The trick is A() is not "called" first time after it gets compiled
> (from "compile-me" stub), execution jumps to an entry point of A()
> leaving correct return address on the stack. All subsequent calls land
> directly into A(). It is achieved through patching "call site" for A()
> - the place in JITted code, where A() is called from.
>
>
> Pavel.
>
> On 3/4/08, Simon Chow <simon.harmony@gmail.com> wrote:
> > Pavel,
> > Does this mean that the "compile_me" will be call recursively when
> callee's
> > callee hasn't been compiled yet.
> >
> > For instance,
> > void A() {
> >   B();
> > }
> > where A and B are both not compiled.
> > Does the calling of A() invoke the "compile_me" for both A() and B()?
> >
> > Thank!
> >
> >
> > On 04/03/2008, Pavel Pervov <pmcfirst@gmail.com> wrote:
> > >
> > > Simon,
> > >
> > > Each time JIT plans to call a method, it does the following:
> > > 1) if method is not resolved, JIT inserts a call to resolution stub;
> > > 2) if method is available, JIT asks for
> > > MethodDesc::getCodeBlockAddress(0) on this method. If method is not
> > > compiled yet, VM has generated special "compile_me" for this method on
> > > class preparation, and its address will be returned in a call to
> > > getCodeBlockAddress.
> > >
> > > WBR,
> > >     Pavel.
> > >
> > >
> > > On 3/4/08, Simon Chow <simon.harmony@gmail.com> wrote:
> > > > Att.
> > > > If the callee is not compiled, how does JIT prepare the entry
> location
> > > of
> > > > callee?
> > > >
> > > > --
> > > > From : Simon.Chow@Software School of Fudan University
> > > >
> > >
> > >
> > >
> > > --
> > > Pavel Pervov,
> > > Intel Enterprise Solutions Software Division
> > >
> >
> >
> >
> > --
> > From : Simon.Chow@Software School of Fudan University
> >
>
>
>
> --
>
> Pavel Pervov,
> Intel Enterprise Solutions Software Division
>



-- 
>From : Simon.Chow@Software School of Fudan University

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