Remove Marshaling MDA (#22579)
[platform/upstream/coreclr.git] / src / vm / mdaassistants.cpp
index a416fec..c3e1375 100644 (file)
@@ -1365,239 +1365,6 @@ void MdaMarshalCleanupError::ReportErrorCustomMarshalerCleanup(TypeHandle typeCu
 }
 
 //
-// MdaMarshaling
-//
-void MdaMarshaling::Initialize(MdaXmlElement* pXmlInput)
-{
-    CONTRACTL
-    {
-        THROWS;
-        GC_TRIGGERS;
-        MODE_ANY;
-    }
-    CONTRACTL_END;
-    
-    m_pMethodFilter = new MdaQuery::CompiledQueries();
-    m_pFieldFilter = new MdaQuery::CompiledQueries();
-
-    MdaXmlElement* pXmlMethodFilter = pXmlInput->GetChild(MdaElemDecl(MethodFilter));
-    if (pXmlMethodFilter)
-        MdaQuery::Compile(pXmlMethodFilter, m_pMethodFilter);
-
-    MdaXmlElement* pXmlFieldFilter = pXmlInput->GetChild(MdaElemDecl(FieldFilter));
-    if (pXmlFieldFilter)
-        MdaQuery::Compile(pXmlFieldFilter, m_pFieldFilter);
-}
-
-void MdaMarshaling::ReportFieldMarshal(FieldMarshaler* pFM)
-{
-    CONTRACTL
-    {
-        THROWS;
-        GC_TRIGGERS;
-        MODE_ANY;
-        PRECONDITION(CheckPointer(pFM));
-    }
-    CONTRACTL_END;
-
-    FieldDesc* pFD = pFM->GetFieldDesc();
-
-    if (!pFD || !m_pFieldFilter->Test(pFD))
-        return;
-
-    MdaXmlElement* pXml;
-    MdaXmlMessage msg(this->AsMdaAssistant(), FALSE, &pXml);
-    
-    MdaXmlElement* pField = pXml->AddChild(MdaElemDecl(MarshalingField));
-    AsMdaAssistant()->OutputFieldDesc(pFD, pField);
-
-    StackSString sszField;
-    SString managed;
-    SString unmanaged;
-        
-    GetManagedSideForField(managed, pFD);
-    GetUnmanagedSideForField(unmanaged, pFM);
-
-    msg.SendMessagef(MDARC_MARSHALING_FIELD, AsMdaAssistant()->ToString(sszField, pFD).GetUnicode(), managed.GetUnicode(), unmanaged.GetUnicode());
-}
-
-
-void MdaMarshaling::GetManagedSideForField(SString& strManagedMarshalType, FieldDesc* pFD)
-{
-    CONTRACTL
-    {
-        THROWS;
-        GC_TRIGGERS;
-        MODE_ANY;
-    }
-    CONTRACTL_END;
-
-    if (!CheckForPrimitiveType(pFD->GetFieldType(), strManagedMarshalType))
-    {
-        // The following workaround is added to avoid a recursion caused by calling GetTypeHandle on
-        // the m_value field of the UIntPtr class.
-        LPCUTF8 szNamespace, szClassName;
-        IfFailThrow(pFD->GetMDImport()->GetNameOfTypeDef(pFD->GetApproxEnclosingMethodTable()->GetCl(), &szClassName, &szNamespace));
-        
-        if (strcmp(szNamespace, "System") == 0 && strcmp(szClassName, "UIntPtr") == 0)
-        {
-            static LPWSTR strRetVal = W("Void*");
-            strManagedMarshalType.Set(strRetVal);
-        }
-        else
-        {
-            MetaSig fSig(pFD);
-            fSig.NextArgNormalized();
-            TypeHandle th = fSig.GetLastTypeHandleNT();
-            if (th.IsNull())
-            {
-                static const WCHAR strErrorMsg[] = W("<error>");
-                strManagedMarshalType.Set(strErrorMsg);
-            }
-            else
-            {
-                SigFormat sigFmt;
-                sigFmt.AddType(th);
-                UINT iManagedTypeLen = (UINT)strlen(sigFmt.GetCString()) + 1;
-
-                WCHAR* buffer = strManagedMarshalType.OpenUnicodeBuffer(iManagedTypeLen);
-                MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, sigFmt.GetCString(), -1, buffer, iManagedTypeLen);
-                strManagedMarshalType.CloseBuffer();
-            }
-        }
-    }
-}
-
-void MdaMarshaling::GetUnmanagedSideForField(SString& strUnmanagedMarshalType, FieldMarshaler* pFM)
-{
-    CONTRACTL
-    {
-        THROWS;
-        GC_NOTRIGGER;
-        MODE_ANY;
-    }
-    CONTRACTL_END;
-
-    NStructFieldTypeToString(pFM, strUnmanagedMarshalType);
-}
-
-
-void MdaMarshaling::GetManagedSideForMethod(SString& strManagedMarshalType, Module* pModule, SigPointer sig, CorElementType elemType)
-{
-    CONTRACTL
-    {
-        THROWS;
-        GC_TRIGGERS;
-        MODE_ANY;
-    }
-    CONTRACTL_END;
-
-    if (!CheckForPrimitiveType(elemType, strManagedMarshalType))
-    {        
-        // an empty type context is sufficient: all methods should be non-generic
-        SigTypeContext emptyTypeContext;
-
-        TypeHandle th = sig.GetTypeHandleNT(pModule, &emptyTypeContext);
-        if (th.IsNull())
-        {
-            strManagedMarshalType.Set(W("<error>"));
-        }
-        else
-        {
-            SigFormat sigfmt;
-            sigfmt.AddType(th);
-            UINT iManagedMarshalTypeLength = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, sigfmt.GetCString(), -1, NULL, 0);
-                
-            WCHAR* str = strManagedMarshalType.OpenUnicodeBuffer(iManagedMarshalTypeLength);
-            MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, sigfmt.GetCString(), -1, str, iManagedMarshalTypeLength);
-            strManagedMarshalType.CloseBuffer();
-        }
-    }  
-}
-
-
-void MdaMarshaling::GetUnmanagedSideForMethod(SString& strNativeMarshalType, MarshalInfo* mi, BOOL fSizeIsSpecified)
-{
-    CONTRACTL
-    {
-        THROWS;
-        GC_TRIGGERS;
-        MODE_ANY;
-    }
-    CONTRACTL_END;
-    
-    mi->MarshalTypeToString(strNativeMarshalType, fSizeIsSpecified);    
-}
-
-BOOL MdaMarshaling::CheckForPrimitiveType(CorElementType elemType, SString& strPrimitiveType)
-{
-    CONTRACTL
-    {
-        THROWS;
-        GC_NOTRIGGER;
-        MODE_ANY;
-        INJECT_FAULT(COMPlusThrowOM());
-    }
-    CONTRACTL_END;
-    
-    LPWSTR  strRetVal;
-
-    switch (elemType)
-    {
-        case ELEMENT_TYPE_VOID:
-            strRetVal = W("Void");
-            break;
-        case ELEMENT_TYPE_BOOLEAN:
-            strRetVal = W("Boolean");
-            break;
-        case ELEMENT_TYPE_I1:
-            strRetVal = W("SByte");
-            break;
-        case ELEMENT_TYPE_U1:
-            strRetVal = W("Byte");
-            break;
-        case ELEMENT_TYPE_I2:
-            strRetVal = W("Int16");
-            break;
-        case ELEMENT_TYPE_U2:
-            strRetVal = W("UInt16");
-            break;
-        case ELEMENT_TYPE_CHAR:
-            strRetVal = W("Char");
-            break;
-        case ELEMENT_TYPE_I:
-            strRetVal = W("IntPtr");
-            break;
-        case ELEMENT_TYPE_U:
-            strRetVal = W("UIntPtr");
-            break;
-        case ELEMENT_TYPE_I4:
-            strRetVal = W("Int32"); 
-            break;
-        case ELEMENT_TYPE_U4:       
-            strRetVal = W("UInt32"); 
-            break;
-        case ELEMENT_TYPE_I8:       
-            strRetVal = W("Int64"); 
-            break;
-        case ELEMENT_TYPE_U8:       
-            strRetVal = W("UInt64"); 
-            break;
-        case ELEMENT_TYPE_R4:       
-            strRetVal = W("Single"); 
-            break;
-        case ELEMENT_TYPE_R8:       
-            strRetVal = W("Double"); 
-            break;
-        default:
-            return FALSE;
-    }
-
-    strPrimitiveType.Set(strRetVal);
-    return TRUE;
-}
-
-//
 // MdaLoaderLock
 //
 void MdaLoaderLock::ReportViolation(HINSTANCE hInst)