Kornél Pál | 10 Oct 22:50

How to create a JIT trampoline?

Hi,

Currently mono_image_fixup_vtable actually compiles methods that causes 
type loads as well and requires the assembly to be loaded.

Please help with letting me know how could I avoiding this by using JIT 
trampolines. I have no idea how to create them and late fixup their address.

Thanks.

Kornél
Paolo Molaro | 11 Oct 01:41

Re: How to create a JIT trampoline?

On 10/10/08 Kornél Pál wrote:
> Currently mono_image_fixup_vtable actually compiles methods that causes 
> type loads as well and requires the assembly to be loaded.
> 
> Please help with letting me know how could I avoiding this by using JIT 
> trampolines. I have no idea how to create them and late fixup their address.

You can use mono_runtime_create_jump_trampoline (), though it's not
really clear what domain you should use, I guess the root domain would
work in most cases. If this is to work for other domains as well, you
will need more work, I don't know the details of how the methods
exported this way are supposed to behave.
To optimize the calls after the first something like the current
jump_target_got_slot_hash hash may be used so the function address is
replaced with the compiled method's code instead of going through the
trampoline every time.

lupus

--

-- 
-----------------------------------------------------------------
lupus <at> debian.org                                     debian/rules
lupus <at> ximian.com                             Monkeys do it better

Gmane