harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gregory Shimansky <gshiman...@apache.org>
Subject Re: [drlvm][jit][jet][x86_64] Lazy resolution for JET
Date Fri, 25 Jan 2008 19:51:53 GMT
On 25 January 2008 Mikhail Fursov wrote:
> > > Another problem here: in lazy resolution mode we need to 'vpark' all
> > > registers for CCONV_HELPERS calls too.
> >
> > Hmm... I am not yet experienced with JIT well enough to understand this.
> >  I have seen vpark calls in many places but I don't know what it does
> > and why it is inserted. Could you please explain in a few words? BTW
> > vpark is done at the beginning of the gen_invoke for the CallSig of the
> > method.
>
> vpark(AR) moves data from AR to memory. Doing this for CCONV_MANAGED we
> ensure that all registers that are required by calling convention to
> perform a managed call do not contain any information. But in lazy mode we
> perform not only managed method call, but also a helper call to resolve the
> address of the method. So, CCONV_HELPERS registers are also must be freed.
> The crash can be reproduced only when calling conventions of these methods
> use different sets of registers.

I see. I added vpark() before helper calls in the patch yesterday. I hope it 
was placed in the right places (this is one thing I doubt about).

I vaguely remember that there were some tests on lazy resolution in some test 
suite. Could you please give me a pointer? So far I found only one bug when 
rth_checkcast_withresolve is called from managed code with corrupted object 
argument. I am working on it. But I would also like to run any other possible 
tests on lazy resolution before I can say that it seems to work.

-- 
Gregory

Mime
View raw message