private int PrepareFunctionCall(int position, ushort nbParams, Stack <double> valueStack, Stack <int> returnStack) { var functionNameHash = NanTags.DecodeVariableRef(valueStack.Pop()); var param = ReadParams(position, nbParams, valueStack); // Evaluate function. var evalResult = EvaluateFunctionCall(ref position, functionNameHash, nbParams, param, returnStack, valueStack); // Add result on stack as a value. if (NanTags.TypeOf(evalResult) != DataType.NoValue) { valueStack.Push(evalResult); } else if (NanTags.DecodeNonValue(evalResult) == NonValueType.Unit) { valueStack.Push(evalResult); } return(position); }