JS_EvaluateInStackFrame(JSContext *cx, JSStackFrame *fp, const char *bytes, uintN length, const char *filename, uintN lineno, jsval *rval) { jschar *chars; JSBool ok; chars = js_InflateString(cx, bytes, length); if (!chars) return JS_FALSE; ok = JS_EvaluateUCInStackFrame(cx, fp, chars, length, filename, lineno, rval); JS_free(cx, chars); return ok; }
JSBool jsd_EvaluateUCScriptInStackFrame(JSDContext* jsdc, JSDThreadState* jsdthreadstate, JSDStackFrameInfo* jsdframe, const jschar *bytes, uintN length, const char *filename, uintN lineno, JSBool eatExceptions, jsval *rval) { JSBool retval; JSBool valid; JSExceptionState* exceptionState = NULL; 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); if (eatExceptions) exceptionState = JS_SaveExceptionState(cx); JS_ClearPendingException(cx); jsd_StartingEvalUsingFilename(jsdc, filename); retval = JS_EvaluateUCInStackFrame(cx, jsdframe->fp, bytes, length, filename, lineno, rval); jsd_FinishedEvalUsingFilename(jsdc, filename); if (eatExceptions) JS_RestoreExceptionState(cx, exceptionState); return retval; }