public void SetElement(EvaluatorStack evaluator, Type operand)
        {
            var value         = evaluator.Pop();
            var index         = evaluator.Pop();
            var array         = evaluator.Pop();
            var arrayVariable = new ArrayVariable(array, index);
            var assignment    = new Assignment
            {
                Left  = arrayVariable,
                Right = value
            };

            arrayVariable.FixedType = value.ComputedType();
            AddOperation(LocalOperation.Kinds.SetArrayItem, assignment);
        }
        public void ExtractNeededValuesFromStack(EvaluatorStack evaluatorStack)
        {
            var methodParams = Info.GetParameters();

            if (Info.IsConstructor)
            {
                Parameters.Insert(0, evaluatorStack.Pop());
                foreach (var t in methodParams)
                {
                    Parameters.Insert(1, evaluatorStack.Pop());
                }
                return;
            }
            foreach (var t in methodParams)
            {
                Parameters.Insert(0, evaluatorStack.Pop());
            }
            if (!Info.IsStatic)
            {
                Parameters.Insert(0, evaluatorStack.Pop());
            }
        }
Exemple #3
0
        public void CopyStackIntoArgument(int value)
        {
            var topVariable = _evaluator.Top;

            _evaluator.Pop();
            var newLocal   = _representation.Vars.Arguments[value];
            var assingment = new Assignment
            {
                AssignedTo = newLocal,
                Right      = topVariable
            };

            AddOperation(OperationKind.Assignment, assingment);
        }