public FrameDebugInfo(InstructionEnumerator instructions, FunctionSignature signature, ExecutionScope scope = null) { _instructions = instructions; FunctionSignature = signature; Scope = scope; }
public void EndScope() { if (CurrentScope.Parent == null) { throw new SprakInternalRuntimeException("Cannot end root scope"); } CurrentScope = CurrentScope.Parent; FrameDebugInfo.Peek().Scope = CurrentScope; }
public void Reset() { Values.Clear(); Frames.Clear(); FrameDebugInfo.Clear(); CurrentScope = new ExecutionScope(); MainFrame.Scope = CurrentScope; FrameDebugInfo.Push(MainFrame); }
public void BeginFrame(int index, FunctionSignature debugSignature) { Memory.FrameDebugInfo.Peek().FixLocation(); ExecutionScope debugScope = Memory.CurrentScope; FrameDebugInfo debugInfo = new FrameDebugInfo(Instructions, debugSignature, debugScope); Memory.Frames.Push(Instructions.Index + 1); Instructions.Jump(index); Memory.FrameDebugInfo.Push(debugInfo); }
public ExecutionScope(ExecutionScope parent, bool inherit) { Parent = parent; Global = parent.Global; _inherit = inherit; }
public ExecutionScope() { Parent = null; Global = this; _inherit = false; }
public void BeginScope(bool inherit) { CurrentScope = new ExecutionScope(CurrentScope, inherit); FrameDebugInfo.Peek().Scope = CurrentScope; }