public void Execute(VM vm) { List<IValue> args = new List<IValue>(); for (int i = 0; i < mArgCount; i++) { args.Add(vm.Pop()); } args.Reverse(); IValue receiver = vm.Pop(); receiver.Send(mSelector, args, vm, mInfo); }
public void Execute(VM vm) { List<IValue> args = new List<IValue>(); for (int i = 0; i < mArgCount; i++) { args.Add(vm.Pop()); } args.Reverse(); IValue value = vm.Pop(); IValueFunc func = value as IValueFunc; if (func == null) { throw new RheaException( string.Format("function required, but got {0}", value), mInfo ); } func.Call(args, vm, mInfo); }