* Opt COM methods out of the new Windows instance-method handling.
* Remove calls to run the MarshalStructReturn tests since we're rolling back the calling convention support change.
BOOL fMarshalReturnValueFirst = FALSE;
BOOL fReverseWithReturnBufferArg = FALSE;
- bool isInstanceMethod = fStubNeedsCOM || fThisCall;
+ // Only consider ThisCall methods to be instance methods.
+ // Techinically COM methods are also instance methods, but we don't want to change the behavior of the built-in
+ // COM abi work because there are many users that rely on the current behavior (for example WPF).
+ bool isInstanceMethod = fThisCall;
// We can only change fMarshalReturnValueFirst to true when we are NOT doing HRESULT-swapping!
// When we are HRESULT-swapping, the managed return type is actually the type of the last parameter and not the return type.
bool byrefNativeReturn = false;
CorElementType typ = ELEMENT_TYPE_VOID;
UINT32 nativeSize = 0;
- bool nativeMethodIsMemberFunction = (m_pslNDirect->TargetHasThis() && IsCLRToNative(m_dwMarshalFlags))
- || (m_pslNDirect->HasThis() && !IsCLRToNative(m_dwMarshalFlags))
- || ((CorInfoCallConv)m_pslNDirect->GetStubTargetCallingConv() == CORINFO_CALLCONV_THISCALL);
+ bool nativeMethodIsMemberFunction = (CorInfoCallConv)m_pslNDirect->GetStubTargetCallingConv() == CORINFO_CALLCONV_THISCALL;
// we need to convert value type return types to primitives as
// JIT does not inline P/Invoke calls that return structures
this.Marshal_Float(a / 100f, b / 100f);
this.Marshal_Double(a / 100.0, b / 100.0);
this.Marshal_ManyInts();
- this.Marshal_Struct_Return();
}
static private bool EqualByBound(float expected, float actual)
MarshalFloat(numericTesting, (float)a / 100.f, (float)b / 100.f);
MarshalDouble(numericTesting, (double)a / 100.0, (double)b / 100.0);
MarshalManyInts(numericTesting);
- MarshalStructReturn(numericTesting);
}