Boo.Lang.Compiler.Steps.EmitAssembly.SetByRefParam C# (CSharp) Метод

SetByRefParam() приватный Метод

private SetByRefParam ( InternalParameter param, Expression right, bool leaveValueOnStack ) : void
param InternalParameter
right Expression
leaveValueOnStack bool
Результат void
        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);
        }
EmitAssembly