public void BeginAssign()
            {
                if (IsReadOnly)
                {
                    throw new InvalidOperationException("This value is read-only.");
                }

                if (_members.Count == 0)
                {
                    _variable.BeginAssign();
                    _delayedInstructions.Push(_variable.EndAssign);
                }
                else
                {
                    _variable.Load(LoadOptions.ValueAsAddress);

                    for (int i = 0; i < _members.Count - 1; ++i)
                    {
                        LoadMember(_members[i], LoadOptions.ValueAsAddress);
                    }
                    //var count = _owner._delayedInstructions.Count;
                    _owner.BeginAssign(_members[_members.Count - 1]);
                    //Debug.Assert(count < _owner._delayedInstructions.Count, "MethodGenerator.BeginAssign did not push any instructions onto _delayInstructions as expected");
                    //var endInstruction = _owner._delayedInstructions.Pop();
                    _delayedInstructions.Push(_owner.EndAssign);
                }
            }
Example #2
0
 private void BeginAssign(IVariable variable)
 {
     ArgumentAssert.IsNotNull(variable, "variable");
     variable.BeginAssign();
     _delayedInstructions.Push(variable.EndAssign);
 }
 public void BeginAssign()
 {
     _innerParameter.BeginAssign();
 }
 public void BeginAssign()
 {
     _innerVariable.BeginAssign();
 }