diff options
author | Jeremy Koritzinsky <jkoritzinsky@gmail.com> | 2019-04-05 12:52:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-05 12:52:00 -0700 |
commit | 04f97c9923156b0c695f5fe441ffd14624de8076 (patch) | |
tree | 39dabb413ee77c1fc50b6b5f22f392a9f7d0e362 /src/vm/comtoclrcall.cpp | |
parent | 8d51f4253996baf64fca1c57c421fb42ac5762cd (diff) | |
download | coreclr-04f97c9923156b0c695f5fe441ffd14624de8076.tar.gz coreclr-04f97c9923156b0c695f5fe441ffd14624de8076.tar.bz2 coreclr-04f97c9923156b0c695f5fe441ffd14624de8076.zip |
Enable return buffers on Windows ARM64 for struct-returning member functions (#23625)
* Enable return buffers on Windows ARM64 for struct-returning member functions. Fixes #23577.
* Update comment to match new condition.
* Enable byref return on all Windows (excluding arm64 HFA. Add more test cases for ThisCall.
* On x86, if we have a normalized return value in an instance method, get back the actual type so that we correctly marshal it via a return buffer.
* Fix param ordering.
* Clean up based on PR feedback.
* Fix accidental variable shadowing.
Diffstat (limited to 'src/vm/comtoclrcall.cpp')
-rw-r--r-- | src/vm/comtoclrcall.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/vm/comtoclrcall.cpp b/src/vm/comtoclrcall.cpp index 98391b9883..89ef5893cf 100644 --- a/src/vm/comtoclrcall.cpp +++ b/src/vm/comtoclrcall.cpp @@ -1149,7 +1149,7 @@ void ComCallMethodDesc::InitNativeInfo() MarshalInfo info(fsig.GetModule(), fsig.GetArgProps(), fsig.GetSigTypeContext(), pFD->GetMemberDef(), MarshalInfo::MARSHAL_SCENARIO_COMINTEROP, (CorNativeLinkType)0, (CorNativeLinkFlags)0, - FALSE, 0, fsig.NumFixedArgs(), BestFit, ThrowOnUnmappableChar, FALSE, NULL, FALSE + FALSE, 0, fsig.NumFixedArgs(), BestFit, ThrowOnUnmappableChar, FALSE, TRUE, NULL, FALSE #ifdef _DEBUG , szDebugName, szDebugClassName, 0 #endif @@ -1255,7 +1255,7 @@ void ComCallMethodDesc::InitNativeInfo() MarshalInfo info(msig.GetModule(), msig.GetArgProps(), msig.GetSigTypeContext(), params[iArg], WinRTType ? MarshalInfo::MARSHAL_SCENARIO_WINRT : MarshalInfo::MARSHAL_SCENARIO_COMINTEROP, (CorNativeLinkType)0, (CorNativeLinkFlags)0, - TRUE, iArg, numArgs, BestFit, ThrowOnUnmappableChar, FALSE, pMD, FALSE + TRUE, iArg, numArgs, BestFit, ThrowOnUnmappableChar, FALSE, TRUE, pMD, FALSE #ifdef _DEBUG , szDebugName, szDebugClassName, iArg #endif @@ -1317,7 +1317,7 @@ void ComCallMethodDesc::InitNativeInfo() MarshalInfo info(msig.GetModule(), msig.GetReturnProps(), msig.GetSigTypeContext(), params[0], WinRTType ? MarshalInfo::MARSHAL_SCENARIO_WINRT : MarshalInfo::MARSHAL_SCENARIO_COMINTEROP, (CorNativeLinkType)0, (CorNativeLinkFlags)0, - FALSE, 0, numArgs, BestFit, ThrowOnUnmappableChar, FALSE, pMD, FALSE + FALSE, 0, numArgs, BestFit, ThrowOnUnmappableChar, FALSE, TRUE, pMD, FALSE #ifdef _DEBUG ,szDebugName, szDebugClassName, 0 #endif |