Exemple #1
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        protected override void OnEmitLoad(ILGenerator il)
        {
            var dontLeaveValueOnStack = (m_Operator as IDontLeaveValueOnStack);

            if (ShouldLeaveValueOnStack)
            {
                EnsureOperandLeavesValueOnStack(m_Operand as IExpressionOperand);

                if (dontLeaveValueOnStack != null)
                {
                    dontLeaveValueOnStack.ForceLeaveFalueOnStack();
                }
            }

            m_Operator.Emit(il, (IOperand <TOperand>)m_Operand);

            if (!ShouldLeaveValueOnStack && dontLeaveValueOnStack == null)
            {
                il.Emit(OpCodes.Pop);
            }
        }