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()); } }
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); }