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