diff options
author | Pat Gavlin <pagavlin@microsoft.com> | 2016-01-20 13:44:43 -0800 |
---|---|---|
committer | Pat Gavlin <pagavlin@microsoft.com> | 2016-01-22 16:24:23 -0800 |
commit | 626e050f03bff854793798d7abc496621c05ce02 (patch) | |
tree | d670dbd840822dfc36cf69a3e7f6ec21ad6ebf64 /src/inc/jithelpers.h | |
parent | 0f14640db10489f70f522436a764c4788db904ae (diff) | |
download | coreclr-626e050f03bff854793798d7abc496621c05ce02.tar.gz coreclr-626e050f03bff854793798d7abc496621c05ce02.tar.bz2 coreclr-626e050f03bff854793798d7abc496621c05ce02.zip |
Generate P/Invoke transitions for CoreRT.
This change adds support for CoreRT-style P/Invoke transitions
to RyuJIT. Instead of the usual inlined transition code, these
transitions are made up of calls to two new JIT helpers:
PInvokeTransitionFrame frame; // opaque local
CORINFO_HELP_INIT_PINVOKE_FRAME(&frame);
...
CORINFO_HELP_JIT_PINVOKE_BEGIN(&frame);
target(...);
CORINFO_HELP_JIT_PINVOKE_END(&frame);
...
The preemptive mode constraints apply between calls to
JIT_PINVOKE_BEGIN and JIT_PINVOKE_END: no managed references
may be live only in registers and managed references may not
be manipulated.
Diffstat (limited to 'src/inc/jithelpers.h')
-rw-r--r-- | src/inc/jithelpers.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/inc/jithelpers.h b/src/inc/jithelpers.h index bd3ad544fb..eac9c45151 100644 --- a/src/inc/jithelpers.h +++ b/src/inc/jithelpers.h @@ -403,6 +403,9 @@ #endif // COR_JIT_EE_VERSION + JITHELPER1(CORINFO_HELP_JIT_PINVOKE_BEGIN, NULL, CORINFO_HELP_SIG_UNDEF, MDIL_HELP_UNDEF) + JITHELPER1(CORINFO_HELP_JIT_PINVOKE_END, NULL, CORINFO_HELP_SIG_UNDEF, MDIL_HELP_UNDEF) + #undef JITHELPER1 #undef DYNAMICJITHELPER1 #undef JITHELPER |