private void SetByRefParam(InternalParameter param, Expression right, bool leaveValueOnStack)
{
LocalBuilder temp = null;
IType tempType = null;
if (leaveValueOnStack)
{
Visit(right);
tempType = PopType();
temp = StoreTempLocal(tempType);
}
LoadParam(param);
if (temp != null)
{
LoadLocal(temp, tempType);
PopType();
}
else
LoadExpressionWithType(param.Type, right);
var storecode = GetStoreRefParamCode(param.Type);
if (IsStobj(storecode)) //passing struct/decimal byref
_il.Emit(storecode, GetSystemType(param.Type));
else
_il.Emit(storecode);
if (null != temp)
LoadLocal(temp, tempType);
}