public RecursionDepthOverflowException(JintCallStack currentStack, string currentExpressionReference) : base("The recursion is forbidden by script host.") { CallExpressionReference = currentExpressionReference; CallChain = currentStack.ToString(); }
internal DebugCallStack(Engine engine, Location location, JintCallStack callStack, JsValue returnValue) { _stack = new List <CallFrame>(callStack.Count + 1); var executionContext = engine.ExecutionContext; foreach (var element in callStack.Stack) { _stack.Add(new CallFrame(element, executionContext, location, returnValue)); location = element.Location; returnValue = null; executionContext = element.CallingExecutionContext; } // Add root location _stack.Add(new CallFrame(null, executionContext, location, returnValue: null)); }
public Engine Execute(Program program, JintCallStack callStack) { JintCallStack oldCallStack = null; if (callStack != null) { oldCallStack = CallStack; CallStack = callStack; } try { using (new StrictModeScope(Options._IsStrict || program.Strict)) { DeclarationBindingInstantiation(DeclarationBindingType.GlobalCode, program.FunctionDeclarations, program.VariableDeclarations, null, null); var result = _statements.ExecuteProgram(program); if (result.Type == Completion.Throw) { throw result.Exception ?? new JavaScriptException(result.GetValueOrDefault()) .SetCallstack(this, result.Location); } _completionValue = result.GetValueOrDefault(); } } finally { if (oldCallStack != null) { CallStack = oldCallStack; } } return(this); }
public static void ThrowRecursionDepthOverflowException(JintCallStack currentStack, string currentExpressionReference) { throw new RecursionDepthOverflowException(currentStack, currentExpressionReference); }
public JavaScriptException(JsValue error, JintCallStack callStack) : base(GetErrorMessage(error)) { _errorObject = error; CallStack = callStack; }