예제 #1
0
        protected StackFrameFunction(StackFrameFunction that)
        {
            _pc = that._pc;
#if DEBUG
            _metaFunctionCalledTimes = that._metaFunctionCalledTimes;
#endif
        }
예제 #2
0
        /// <summary>
        /// 调用下一个函数(必须也是 StackFrameFunction),并步进 PC
        /// </summary>
        /// <param name="func">调用的参数</param>
        /// <returns></returns>
        protected FuncInstructionBase CallStackFunc(StackFrameFunction func)
        {
            ++_pc;
#if DEBUG
            CheckMetaFunctionCalledTimes();
#endif
            return(new CallFuncInstruction(func));
        }
예제 #3
0
        /// <summary>
        /// 在虚拟机上运行函数,并返回结果。此操作将清空当前的调用栈。
        /// </summary>
        /// <param name="func"></param>
        /// <returns></returns>
        public object Run(StackFrameFunction func)
        {
            _callingStack.Clear();
            _callingStack.Push(func);

            StartStepping();

            return(((StackFrameResult)_callingStack.Pop()).Result);
        }
예제 #4
0
 private void PushStack(StackFrameFunction func)
 {
     _callingStack.Push(func);
 }