JS_RestoreExceptionState(cx, exceptionState);
if (eatExceptions) JS_RestoreExceptionState(cx, exceptionState);
jsd_EvaluateUCScriptInStackFrame(JSDContext* jsdc,                                  JSDThreadState* jsdthreadstate,                                 JSDStackFrameInfo* jsdframe,                                 const jschar *bytes, uintN length,                                 const char *filename, uintN lineno, jsval *rval){    JSBool retval;    JSBool valid;    JSExceptionState* exceptionState;    JSContext* cx;    JS_ASSERT(JSD_CURRENT_THREAD() == jsdthreadstate->thread);    JSD_LOCK_THREADSTATES(jsdc);    valid = jsd_IsValidFrameInThreadState(jsdc, jsdthreadstate, jsdframe);    JSD_UNLOCK_THREADSTATES(jsdc);    if( ! valid )        return JS_FALSE;    cx = jsdthreadstate->context;    JS_ASSERT(cx);    exceptionState = JS_SaveExceptionState(cx);    jsd_StartingEvalUsingFilename(jsdc, filename);    retval = JS_EvaluateUCInStackFrame(cx, jsdframe->fp, bytes, length,                                        filename, lineno, rval);    jsd_FinishedEvalUsingFilename(jsdc, filename);    JS_RestoreExceptionState(cx, exceptionState);    return retval;}