Fix P/Invoke call and method {pro,epi}logs in RyuJIT/x86.
The contract for methods that contain P/Invokes differs between 64- and
32-bit targets.
In the former case, the JIT must:
- In the method prolog, initialize the P/Invoke frame with a call to
CORINFO_HELP_INIT_PINVOKE_FRAME and push the frame on to the current
thread's frame list if the method is an IL stub.
- Before/after each call, if the method is *not* an IL stub, push/pop
the frame (respectively).
- In the method epilog, if the method is an IL stub, pop the P/Invoke
frame.
In the latter case, CORINFO_HELP_INIT_PINVOKE_FRAME pushes the P/Invoke
frame on to the current thread's frame list, and the frame need only
be popped in the method epilog.
This change adjusts P/Invoke lowering s.t. the 64-bit discipline is
only followed for 64-bit targets.