source: webkit/trunk/JavaScriptCore/kjs/Arguments.h@ 37068

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

JavaScriptCore:

2008-09-22 Sam Weinig <[email protected]>

Reviewed by Darin Adler.

Patch for https://bugs.webkit.org/show_bug.cgi?id=20982
Speed up the apply method of functions by special-casing array and 'arguments' objects

1% speedup on v8-raytrace.

Test: fast/js/function-apply.html

  • kjs/Arguments.cpp: (JSC::Arguments::fillArgList):
  • kjs/Arguments.h:
  • kjs/FunctionPrototype.cpp: (JSC::functionProtoFuncApply):
  • kjs/JSArray.cpp: (JSC::JSArray::fillArgList):
  • kjs/JSArray.h:

LayoutTests:

2008-09-22 Sam Weinig <[email protected]>

Reviewed by Darin Adler.

Test for https://bugs.webkit.org/show_bug.cgi?id=20982

  • fast/js/function-apply-expected.txt: Added.
  • fast/js/function-apply.html: Added.
  • fast/js/resources/function-apply.js: Added.
  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1/*
2 * Copyright (C) 1999-2000 Harri Porten ([email protected])
3 * Copyright (C) 2003, 2006, 2007, 2008 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Cameron Zwarich ([email protected])
5 * Copyright (C) 2007 Maks Orlovich
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
21 *
22 */
23
24#ifndef Arguments_h
25#define Arguments_h
26
27#include "JSObject.h"
28
29namespace JSC {
30
31 class JSActivation;
32 class JSFunction;
33 class Register;
34
35 struct ArgumentsData;
36
37 class Arguments : public JSObject {
38 public:
39 Arguments(ExecState*, JSFunction*, JSActivation*, int firstArgumentIndex, Register* argv, int argc);
40 virtual ~Arguments();
41
42 static const ClassInfo info;
43
44 virtual void mark();
45
46 void fillArgList(ExecState*, ArgList&);
47
48 private:
49 virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&);
50 virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&);
51 virtual void put(ExecState*, const Identifier& propertyName, JSValue*, PutPropertySlot&);
52 virtual void put(ExecState*, unsigned propertyName, JSValue*, PutPropertySlot&);
53 virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
54 virtual bool deleteProperty(ExecState*, unsigned propertyName);
55
56 virtual const ClassInfo* classInfo() const { return &info; }
57
58 OwnPtr<ArgumentsData> d;
59 };
60
61} // namespace JSC
62
63#endif // Arguments_h
Note: See TracBrowser for help on using the repository browser.