]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - runtime/CallData.cpp
JavaScriptCore-7600.1.4.9.tar.gz
[apple/javascriptcore.git] / runtime / CallData.cpp
index ff71fa0cbb6d52211195b084887e3d3453956757..6d00109c3ddba5f13facd496f1027a0c2e37da8c 100644 (file)
 #include "Executable.h"
 #include "Interpreter.h"
 #include "JSFunction.h"
 #include "Executable.h"
 #include "Interpreter.h"
 #include "JSFunction.h"
+#include "JSCInlines.h"
 
 namespace JSC {
 
 JSValue call(ExecState* exec, JSValue functionObject, CallType callType, const CallData& callData, JSValue thisValue, const ArgList& args)
 {
     ASSERT(callType == CallTypeJS || callType == CallTypeHost);
 
 namespace JSC {
 
 JSValue call(ExecState* exec, JSValue functionObject, CallType callType, const CallData& callData, JSValue thisValue, const ArgList& args)
 {
     ASSERT(callType == CallTypeJS || callType == CallTypeHost);
-    ASSERT(isValidThisObject(thisValue, exec));
     return exec->interpreter()->executeCall(exec, asObject(functionObject), callType, callData, thisValue, args);
 }
 
     return exec->interpreter()->executeCall(exec, asObject(functionObject), callType, callData, thisValue, args);
 }
 
+JSValue call(ExecState* exec, JSValue functionObject, CallType callType, const CallData& callData, JSValue thisValue, const ArgList& args, JSValue* exception)
+{
+    JSValue result = call(exec, functionObject, callType, callData, thisValue, args);
+    if (exec->hadException()) {
+        if (exception)
+            *exception = exec->exception();
+        exec->clearException();
+        return jsUndefined();
+    }
+    RELEASE_ASSERT(result);
+    return result;
+}
+
 } // namespace JSC
 } // namespace JSC