On Jan 24, 2008 6:05 PM, Gregory Shimansky <[EMAIL PROTECTED]> wrote:

>
> Can you also take a look at my changes in gen_args? Are they correct too?
>

The changes in gen_args  with 'args[0]' replaced with 'args[i]' are correct.
Original code has a bug.


> > 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.


-- 
Mikhail Fursov

Reply via email to