Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Commit

Permalink
Collapse common primitive marshalling cases together.
Browse files Browse the repository at this point in the history
  • Loading branch information
jkoritzinsky committed Aug 16, 2019
1 parent 3972294 commit e73b78a
Showing 1 changed file with 5 additions and 59 deletions.
64 changes: 5 additions & 59 deletions src/vm/mlinfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1815,6 +1815,7 @@ MarshalInfo::MarshalInfo(Module* pModule,
break;

case ELEMENT_TYPE_I1:
case ELEMENT_TYPE_U1:
if (!(nativeType == NATIVE_TYPE_I1 || nativeType == NATIVE_TYPE_U1 || nativeType == NATIVE_TYPE_DEFAULT))
{
m_resID = IDS_EE_BADMARSHAL_I1;
Expand All @@ -1823,16 +1824,8 @@ MarshalInfo::MarshalInfo(Module* pModule,
m_type = MARSHAL_TYPE_GENERIC_1;
break;

case ELEMENT_TYPE_U1:
if (!(nativeType == NATIVE_TYPE_U1 || nativeType == NATIVE_TYPE_I1 || nativeType == NATIVE_TYPE_DEFAULT))
{
m_resID = IDS_EE_BADMARSHAL_I1;
IfFailGoto(E_FAIL, lFail);
}
m_type = MARSHAL_TYPE_GENERIC_U1;
break;

case ELEMENT_TYPE_I2:
case ELEMENT_TYPE_U2:
if (!(nativeType == NATIVE_TYPE_I2 || nativeType == NATIVE_TYPE_U2 || nativeType == NATIVE_TYPE_DEFAULT))
{
m_resID = IDS_EE_BADMARSHAL_I2;
Expand All @@ -1841,16 +1834,8 @@ MarshalInfo::MarshalInfo(Module* pModule,
m_type = MARSHAL_TYPE_GENERIC_2;
break;

case ELEMENT_TYPE_U2:
if (!(nativeType == NATIVE_TYPE_U2 || nativeType == NATIVE_TYPE_I2 || nativeType == NATIVE_TYPE_DEFAULT))
{
m_resID = IDS_EE_BADMARSHAL_I2;
IfFailGoto(E_FAIL, lFail);
}
m_type = MARSHAL_TYPE_GENERIC_U2;
break;

case ELEMENT_TYPE_I4:
case ELEMENT_TYPE_U4:
switch (nativeType)
{
case NATIVE_TYPE_I4:
Expand All @@ -1871,38 +1856,9 @@ MarshalInfo::MarshalInfo(Module* pModule,
m_type = MARSHAL_TYPE_GENERIC_4;
break;

case ELEMENT_TYPE_U4:
switch (nativeType)
{
case NATIVE_TYPE_I4:
case NATIVE_TYPE_U4:
case NATIVE_TYPE_DEFAULT:
break;

#ifdef FEATURE_COMINTEROP
case NATIVE_TYPE_ERROR:
m_fErrorNativeType = TRUE;
break;
#endif // FEATURE_COMINTEROP

default:
m_resID = IDS_EE_BADMARSHAL_I4;
IfFailGoto(E_FAIL, lFail);
}
m_type = MARSHAL_TYPE_GENERIC_4;
break;

case ELEMENT_TYPE_I8:
if (!(nativeType == NATIVE_TYPE_I8 || nativeType == NATIVE_TYPE_U8 || nativeType == NATIVE_TYPE_DEFAULT))
{
m_resID = IDS_EE_BADMARSHAL_I8;
IfFailGoto(E_FAIL, lFail);
}
m_type = MARSHAL_TYPE_GENERIC_8;
break;

case ELEMENT_TYPE_U8:
if (!(nativeType == NATIVE_TYPE_U8 || nativeType == NATIVE_TYPE_I8 || nativeType == NATIVE_TYPE_DEFAULT))
if (!(nativeType == NATIVE_TYPE_I8 || nativeType == NATIVE_TYPE_U8 || nativeType == NATIVE_TYPE_DEFAULT))
{
m_resID = IDS_EE_BADMARSHAL_I8;
IfFailGoto(E_FAIL, lFail);
Expand All @@ -1911,6 +1867,7 @@ MarshalInfo::MarshalInfo(Module* pModule,
break;

case ELEMENT_TYPE_I:
case ELEMENT_TYPE_U:
// Technically the "native int" and "native uint" types aren't supported in the WinRT scenario,
// but we need to not block ourselves from using them to enable accurate managed->native marshalling of
// projected types such as NotifyCollectionChangedEventArgs and NotifyPropertyChangedEventArgs.
Expand All @@ -1923,17 +1880,6 @@ MarshalInfo::MarshalInfo(Module* pModule,
m_type = (sizeof(LPVOID) == 4 ? MARSHAL_TYPE_GENERIC_4 : MARSHAL_TYPE_GENERIC_8);
break;

case ELEMENT_TYPE_U:

if (!(nativeType == NATIVE_TYPE_UINT || nativeType == NATIVE_TYPE_INT || nativeType == NATIVE_TYPE_DEFAULT))
{
m_resID = IDS_EE_BADMARSHAL_I;
IfFailGoto(E_FAIL, lFail);
}
m_type = (sizeof(LPVOID) == 4 ? MARSHAL_TYPE_GENERIC_4 : MARSHAL_TYPE_GENERIC_8);
break;


case ELEMENT_TYPE_R4:
if (!(nativeType == NATIVE_TYPE_R4 || nativeType == NATIVE_TYPE_DEFAULT))
{
Expand Down

0 comments on commit e73b78a

Please sign in to comment.