Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Greene <hippiehunterenator@gmail.com>2017-09-15 00:54:14 +0300
committerJan Kotas <jkotas@microsoft.com>2017-09-15 00:54:14 +0300
commitaa725e1db92d239db22b5c2f16698dfb08d75a4b (patch)
tree3b0ce0736013734ab4eaead4621f89f5ca77ddc3 /src/ILCompiler.CppCodeGen
parentd6d36fc42fc2c7cc1333b757abd4e36a75d82530 (diff)
replaced reverse pinvoke hack for CppCodeGen (#4499)
Diffstat (limited to 'src/ILCompiler.CppCodeGen')
-rw-r--r--src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs b/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs
index 990ec5cc0..2ee5e142d 100644
--- a/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs
+++ b/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs
@@ -523,6 +523,17 @@ namespace Internal.IL
Append("{");
Indent();
+
+ if (_method.IsNativeCallable)
+ {
+ AppendLine();
+ Append("ReversePInvokeFrame __frame");
+ AppendSemicolon();
+ AppendLine();
+ Append("__reverse_pinvoke(&__frame)");
+ AppendSemicolon();
+ }
+
bool initLocals = _methodIL.IsInitLocals;
for (int i = 0; i < _locals.Length; i++)
{
@@ -1339,6 +1350,13 @@ namespace Internal.IL
private void ImportReturn()
{
+ if (_method.IsNativeCallable)
+ {
+ AppendLine();
+ Append("__reverse_pinvoke_return(&__frame)");
+ AppendSemicolon();
+ }
+
var returnType = _methodSignature.ReturnType;
AppendLine();
if (returnType.IsVoid)