protected override DyObject BindOrRun(ExecutionContext ctx, DyObject arg) { if (Auto) { try { var size = GetMemoryCells(ctx); var locals = size == 0 ? Array.Empty <DyObject>() : new DyObject[size]; ctx.CallStack.Push(Caller.External); return(DyMachine.ExecuteWithData((DyNativeFunction)BindToInstance(ctx, arg), locals, ctx)); } catch (DyCodeException ex) { ctx.Error = ex.Error; return(Nil); } } return(BindToInstance(ctx, arg)); }
protected override DyObject CallWithMemoryLayout(ExecutionContext ctx, DyObject[] locals) { ctx.CallStack.Push(Caller.External); return(DyMachine.ExecuteWithData(this, locals, ctx)); }