static void HandleFn(Vm vm)
{
var instruction = vm.CurrentInstruction ();
var args = (int[])instruction.Arguments;
var arity = args[1];
var hasCollectParameters = arity >= Callable.CollectParamsArityModifier;
if (hasCollectParameters)
{
arity -= Callable.CollectParamsArityModifier;
}
var callable = new Callable () {
ProgramCounter = args[0],
Arity = arity,
HasCollectParams = hasCollectParameters,
Environment = vm.currentEnvironment
};
vm.stack.Push (Value.Make (callable));
vm.IncrementCells (5);
vm.programCounter++;
}