Exemplo n.º 1
0
    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));
    }
Exemplo n.º 2
0
 protected override DyObject CallWithMemoryLayout(ExecutionContext ctx, DyObject[] locals)
 {
     ctx.CallStack.Push(Caller.External);
     return(DyMachine.ExecuteWithData(this, locals, ctx));
 }