I'm trying to understand the details of how the Prestub and the
JIT backpatch work.
On x86, the PrestubFrame looks like:
+... stack-based args for real method
+12 return address
+8 m_Datum (MethodDesc*)
+4 m_Next
ESI--->+0 the frame vptr
+... negative space stuff
I can see that the call to the Prestub from _CallDescWorkerInternal
(asm) pushes the return address, then the Prestub prolog pushes
m_Next and the frame vptr.
But I can't see where the MethodDesc* is pushed into ESI+8. But then
PreStubWorker() can get the MethodDesc* from the PrestubMethodFrame
object (previous ESI) just fine. What am I missing here?
Thanks,
Nam