source: webkit/trunk/JavaScriptCore/API/JSCallbackFunction.cpp@ 35478

Last change on this file since 35478 was 35478, checked in by [email protected], 17 years ago

Rubber-stamped by Maciej.

Eliminate JSLock (it was already disabled, removing the stub implementaion and all
call sites now).

  • Property svn:eol-style set to native
File size: 2.9 KB
Line 
1// -*- mode: c++; c-basic-offset: 4 -*-
2/*
3 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#include "config.h"
28#include <wtf/Platform.h>
29#include "JSCallbackFunction.h"
30
31#include "APICast.h"
32#include "JSFunction.h"
33#include "FunctionPrototype.h"
34#include <kjs/JSGlobalObject.h>
35#include <wtf/Vector.h>
36
37namespace KJS {
38
39const ClassInfo JSCallbackFunction::info = { "CallbackFunction", &InternalFunction::info, 0, 0 };
40
41JSCallbackFunction::JSCallbackFunction(ExecState* exec, JSObjectCallAsFunctionCallback callback, const Identifier& name)
42 : InternalFunction(exec->lexicalGlobalObject()->functionPrototype(), name)
43 , m_callback(callback)
44{
45}
46
47// InternalFunction mish-mashes constructor and function behavior -- we should
48// refactor the code so this override isn't necessary
49bool JSCallbackFunction::implementsHasInstance() const
50{
51 return false;
52}
53
54JSValue* JSCallbackFunction::call(ExecState* exec, JSObject* functionObject, JSValue* thisValue, const ArgList& args)
55{
56 JSContextRef execRef = toRef(exec);
57 JSObjectRef functionRef = toRef(functionObject);
58 JSObjectRef thisObjRef = toRef(thisValue->toThisObject(exec));
59
60 int argumentCount = static_cast<int>(args.size());
61 Vector<JSValueRef, 16> arguments(argumentCount);
62 for (int i = 0; i < argumentCount; i++)
63 arguments[i] = toRef(args.at(exec, i));
64
65 return toJS(static_cast<JSCallbackFunction*>(functionObject)->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), toRef(exec->exceptionSlot())));
66}
67
68CallType JSCallbackFunction::getCallData(CallData& callData)
69{
70 callData.native.function = call;
71 return CallTypeHost;
72}
73
74} // namespace KJS
Note: See TracBrowser for help on using the repository browser.