harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Pervov" <pmcfi...@gmail.com>
Subject Re: [general][jitrino] How does JIT deal with CALL inst when generating native code?
Date Tue, 04 Mar 2008 07:48:38 GMT
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

Mime
View raw message