a method that has not yet been compiled know where to get the IL code for compilation?
I wrote a small test program. Using the GetFunctionPonter() method, I got a function pointer, but since the function has not yet been compiled, it points to a JIT stub, but for all methods, even with a different signature, the stub points to the same address. Clarify please.
Edited: I have not been able to find a solution, I have a guess how it works.
A method stub is invoked with the call instruction, which pushes the address of the next instruction onto the stack, and with this, the JIT determines which method is invoked.
Maybe this will help https://blog.birost.com/a?ID=00850-5f61fb02-9d52-44d0-8301-d58a762f13aa
Thanks, but this is not what I was looking for. I want to understand how the method stub determines where to get the IL code for further compilation to machine code. (The screenshots show that the method is called during disassembly, I think that this is the JIT stub, but this stub is identical for all other methods, then how does the stub know which method calls it) Edited: I have not been able to find a solution, I have a guess how it works. A method stub is invoked with the call instruction, which pushes the address of the next instruction onto the stack, and with this, the JIT determines which method is invoked.
those addresses, separated by 8 bytes, doesn't leave much room (only 3 bytes) for extra data between the CALLs though. So maybe just the address itself is the key to another table somewhere else.
note that these don't call to the same unique method stub
? how it is? all these 4 calls point to the same address
Обсуждают сегодня