static void HandleArgs(Vm vm)
{
var instruction = vm.CurrentInstruction ();
var argCount = (int)instruction.Arguments;
if (argCount > 0) {
Value? returnAddress = null;
if (vm.stack.Top ().Kind == Value.Kinds.ReturnAddress) {
returnAddress = vm.stack.PopTop ();
}
var values = vm.currentEnvironment.Frame.Values;
Array.Copy (
vm.stack.Storage, vm.stack.Count - argCount,
values, 0, argCount);
vm.stack.PopMany (argCount);
if (returnAddress.HasValue) {
vm.stack.Push (returnAddress.Value);
}
}
vm.programCounter++;
}