/// <summary>Evaluates script in the given stack frame.</summary> /// <remarks>Evaluates script in the given stack frame.</remarks> private static string Do_eval(Context cx, Dim.StackFrame frame, string expr) { string resultString; Rhino.Debug.Debugger saved_debugger = cx.GetDebugger(); object saved_data = cx.GetDebuggerContextData(); int saved_level = cx.GetOptimizationLevel(); cx.SetDebugger(null, null); cx.SetOptimizationLevel(-1); cx.SetGeneratingDebug(false); try { Callable script = (Callable)cx.CompileString(expr, string.Empty, 0, null); object result = script.Call(cx, frame.scope, frame.thisObj, ScriptRuntime.emptyArgs); if (result == Undefined.instance) { resultString = string.Empty; } else { resultString = ScriptRuntime.ToString(result); } } catch (Exception exc) { resultString = exc.Message; } finally { cx.SetGeneratingDebug(true); cx.SetOptimizationLevel(saved_level); cx.SetDebugger(saved_debugger, saved_data); } if (resultString == null) { resultString = "null"; } return resultString; }