Ejemplo n.º 1
0
        internal static void TForCall(Instruction i, ref LuaVM vm)
        {
            var(a, _, c) = i.ABC();
            a           += 1;

            PushFuncAndArgs(a, 3, ref vm);
            vm.Call(2, c);
            PopResults(a + 3, c + 1, ref vm);
        }
Ejemplo n.º 2
0
        // R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1))
        internal static void call(Instruction i, ref LuaVM vm)
        {
            var(a, b, c) = i.ABC();
            a           += 1;
            // println(":::"+ vm.StackToString())
            var nArgs = pushFuncAndArgs(a, b, ref vm);

            vm.Call(nArgs, c - 1);
            popResults(a, c, vm);
        }
Ejemplo n.º 3
0
        // return R(A)(R(A+1), ... ,R(A+B-1))
        internal static void TailCall(Instruction i, ref LuaVM vm)
        {
            var(a, b, _) = i.ABC();
            a           += 1;

            // todo: optimize tail call!
            var c     = 0;
            var nArgs = PushFuncAndArgs(a, b, ref vm);

            vm.Call(nArgs, c - 1);
            PopResults(a, c, ref vm);
        }
Ejemplo n.º 4
0
        // return R(A)(R(A+1), ... ,R(A+B-1))
        internal static void tailCall(Instruction i, ref LuaVM vm)
        {
            var ab_ = i.ABC();
            var a   = ab_.Item1 + 1;
            var b   = ab_.Item2;

            // todo: optimize tail call!
            var c     = 0;
            var nArgs = pushFuncAndArgs(a, b, ref vm);

            vm.Call(nArgs, c - 1);
            popResults(a, c, vm);
        }
Ejemplo n.º 5
0
        // R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1))
        internal static void call(Instruction i, ref LuaVM vm)
        {
            var abc = i.ABC();
            var a   = abc.Item1 + 1;
            var b   = abc.Item2;
            var c   = abc.Item3;

            // println(":::"+ vm.StackToString())
            var nArgs = _pushFuncAndArgs(a, b, ref vm);

            vm.Call(nArgs, c - 1);
            _popResults(a, c, ref vm);
        }