diff options
author | Jeff Greene <hippiehunterenator@gmail.com> | 2017-09-15 00:54:14 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2017-09-15 00:54:14 +0300 |
commit | aa725e1db92d239db22b5c2f16698dfb08d75a4b (patch) | |
tree | 3b0ce0736013734ab4eaead4621f89f5ca77ddc3 /src/ILCompiler.CppCodeGen | |
parent | d6d36fc42fc2c7cc1333b757abd4e36a75d82530 (diff) |
replaced reverse pinvoke hack for CppCodeGen (#4499)
Diffstat (limited to 'src/ILCompiler.CppCodeGen')
-rw-r--r-- | src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs | 18 |
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) |