From 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 7 May 2012 11:21:11 +0200 Subject: Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286) --- Source/JavaScriptCore/API/JSCallbackFunction.cpp | 38 ++++-------------------- 1 file changed, 5 insertions(+), 33 deletions(-) (limited to 'Source/JavaScriptCore/API/JSCallbackFunction.cpp') diff --git a/Source/JavaScriptCore/API/JSCallbackFunction.cpp b/Source/JavaScriptCore/API/JSCallbackFunction.cpp index 3fbc00470..d287ab778 100644 --- a/Source/JavaScriptCore/API/JSCallbackFunction.cpp +++ b/Source/JavaScriptCore/API/JSCallbackFunction.cpp @@ -30,7 +30,6 @@ #include "APICast.h" #include "CodeBlock.h" #include "ExceptionHelpers.h" -#include "JSCallbackObject.h" #include "JSFunction.h" #include "FunctionPrototype.h" #include @@ -71,11 +70,15 @@ EncodedJSValue JSCallbackFunction::call(ExecState* exec) JSValueRef result; { APICallbackShim callbackShim(exec); - result = static_cast(toJS(functionRef))->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception); + result = jsCast(toJS(functionRef))->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception); } if (exception) throwError(exec, toJS(exec, exception)); + // result must be a valid JSValue. + if (!result) + return JSValue::encode(jsUndefined()); + return JSValue::encode(toJS(exec, result)); } @@ -85,35 +88,4 @@ CallType JSCallbackFunction::getCallData(JSCell*, CallData& callData) return CallTypeHost; } -JSValueRef JSCallbackFunction::toStringCallback(JSContextRef ctx, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef* exception) -{ - JSObject* object = toJS(thisObject); - if (object->inherits(&JSCallbackObject::s_info)) { - for (JSClassRef jsClass = jsCast*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeString, exception); - } else if (object->inherits(&JSCallbackObject::s_info)) { - for (JSClassRef jsClass = jsCast*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeString, exception); - } - return 0; -} - -JSValueRef JSCallbackFunction::valueOfCallback(JSContextRef ctx, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef* exception) -{ - JSObject* object = toJS(thisObject); - if (object->inherits(&JSCallbackObject::s_info)) { - for (JSClassRef jsClass = jsCast*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeNumber, exception); - } else if (object->inherits(&JSCallbackObject::s_info)) { - for (JSClassRef jsClass = jsCast*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeNumber, exception); - } - return 0; -} - - } // namespace JSC -- cgit v1.2.1