Shovel.Vm.Vm.HandleCallImpl C# (CSharp) Метод

HandleCallImpl() статический приватный Метод

static private HandleCallImpl ( Vm vm, int numArgs, bool saveReturnAddress, bool inApply = false ) : void
vm Vm
numArgs int
saveReturnAddress bool
inApply bool
Результат void
        static void HandleCallImpl(Vm vm, int numArgs, bool saveReturnAddress, bool inApply = false)
        {
            var maybeCallable = vm.stack.Top ();
            if (maybeCallable.Kind != Value.Kinds.Callable) {
                vm.RaiseShovelError (String.Format (
                    "Object [{0}] is not callable.", Prim0.ShovelStringRepresentation (vm.api, maybeCallable))
                );
            }
            var callable = maybeCallable.CallableValue;
            if (callable.ProgramCounter.HasValue) {
                vm.stack.Pop ();
                CallFunction (callable, vm, numArgs, saveReturnAddress, inApply);
                if (saveReturnAddress) {
                    vm.IncrementCells (1);
                }
            } else {
                CallPrimitive (callable, vm, numArgs, saveReturnAddress, inApply);
            }
        }
Vm