source: webkit/trunk/JavaScriptCore/kjs/operations.cpp@ 34578

Last change on this file since 34578 was 34578, checked in by Darin Adler, 17 years ago

JavaScriptCore:

2008-06-15 Darin Adler <Darin Adler>

Rubber stamped by Sam.

  • use JS prefix and simpler names for basic JavaScriptCore types, to complement JSValue and JSObject
  • JavaScriptCore.exp:
  • VM/Machine.cpp: (KJS::jsLess): (KJS::jsLessEq): (KJS::jsAdd): (KJS::callEval): (KJS::Machine::execute): (KJS::Machine::retrieveArguments): (KJS::Machine::retrieveCaller): (KJS::Machine::getCallFrame): (KJS::Machine::getFunctionAndArguments):
  • VM/Machine.h:
  • VM/Register.h:
  • kjs/DebuggerCallFrame.cpp: (KJS::DebuggerCallFrame::functionName):
  • kjs/ExecState.h:
  • kjs/JSActivation.cpp: (KJS::JSActivation::createArgumentsObject):
  • kjs/array_instance.cpp: (KJS::): (KJS::JSArray::checkConsistency): (KJS::JSArray::JSArray): (KJS::JSArray::~JSArray): (KJS::JSArray::getItem): (KJS::JSArray::lengthGetter): (KJS::JSArray::inlineGetOwnPropertySlot): (KJS::JSArray::getOwnPropertySlot): (KJS::JSArray::put): (KJS::JSArray::deleteProperty): (KJS::JSArray::getPropertyNames): (KJS::JSArray::increaseVectorLength): (KJS::JSArray::setLength): (KJS::JSArray::mark): (KJS::JSArray::sort): (KJS::JSArray::compactForSorting): (KJS::JSArray::lazyCreationData): (KJS::JSArray::setLazyCreationData):
  • kjs/array_instance.h:
  • kjs/array_object.cpp: (KJS::): (KJS::ArrayPrototype::ArrayPrototype): (KJS::ArrayPrototype::getOwnPropertySlot): (KJS::arrayProtoFuncToString): (KJS::arrayProtoFuncToLocaleString): (KJS::arrayProtoFuncConcat): (KJS::arrayProtoFuncSort): (KJS::ArrayObjectImp::construct):
  • kjs/array_object.h:
  • kjs/completion.h:
  • kjs/function.cpp: (KJS::): (KJS::JSFunction::JSFunction): (KJS::JSFunction::mark): (KJS::JSFunction::getCallData): (KJS::JSFunction::callAsFunction): (KJS::JSFunction::argumentsGetter): (KJS::JSFunction::callerGetter): (KJS::JSFunction::lengthGetter): (KJS::JSFunction::getOwnPropertySlot): (KJS::JSFunction::put): (KJS::JSFunction::deleteProperty): (KJS::JSFunction::getParameterName): (KJS::JSFunction::getConstructData): (KJS::JSFunction::construct): (KJS::IndexToNameMap::IndexToNameMap): (KJS::Arguments::Arguments):
  • kjs/function.h:
  • kjs/function_object.cpp: (KJS::functionProtoFuncToString): (KJS::functionProtoFuncApply): (KJS::FunctionObjectImp::construct):
  • kjs/internal.cpp: (KJS::JSString::toPrimitive): (KJS::JSString::getPrimitiveNumber): (KJS::JSString::toBoolean): (KJS::JSString::toNumber): (KJS::JSString::toString): (KJS::StringInstance::create): (KJS::JSString::toObject): (KJS::JSString::toThisObject): (KJS::JSString::lengthGetter): (KJS::JSString::indexGetter): (KJS::JSString::indexNumericPropertyGetter): (KJS::JSString::getOwnPropertySlot): (KJS::JSNumberCell::type): (KJS::JSNumberCell::toPrimitive): (KJS::JSNumberCell::getPrimitiveNumber): (KJS::JSNumberCell::toBoolean): (KJS::JSNumberCell::toNumber): (KJS::JSNumberCell::toString): (KJS::JSNumberCell::toObject): (KJS::JSNumberCell::toThisObject): (KJS::JSNumberCell::getUInt32): (KJS::JSNumberCell::getTruncatedInt32): (KJS::JSNumberCell::getTruncatedUInt32): (KJS::GetterSetter::mark): (KJS::GetterSetter::toPrimitive): (KJS::GetterSetter::getPrimitiveNumber): (KJS::GetterSetter::toBoolean): (KJS::GetterSetter::toNumber): (KJS::GetterSetter::toString): (KJS::GetterSetter::toObject): (KJS::GetterSetter::getOwnPropertySlot): (KJS::GetterSetter::put): (KJS::GetterSetter::toThisObject):
  • kjs/internal.h: (KJS::JSString::JSString): (KJS::JSString::getStringPropertySlot):
  • kjs/nodes.cpp: (KJS::FuncDeclNode::makeFunction): (KJS::FuncExprNode::makeFunction):
  • kjs/nodes.h:
  • kjs/object.cpp: (KJS::JSObject::put): (KJS::JSObject::deleteProperty): (KJS::JSObject::defineGetter): (KJS::JSObject::defineSetter): (KJS::JSObject::lookupGetter): (KJS::JSObject::lookupSetter): (KJS::JSObject::fillGetterPropertySlot):
  • kjs/object.h: (KJS::): (KJS::GetterSetter::GetterSetter):
  • kjs/operations.cpp: (KJS::equal): (KJS::strictEqual):
  • kjs/property_map.cpp: (KJS::PropertyMap::containsGettersOrSetters):
  • kjs/regexp_object.cpp: (KJS::RegExpMatchesArray::getOwnPropertySlot): (KJS::RegExpMatchesArray::put): (KJS::RegExpMatchesArray::deleteProperty): (KJS::RegExpMatchesArray::getPropertyNames): (KJS::RegExpMatchesArray::RegExpMatchesArray): (KJS::RegExpMatchesArray::fillArrayInstance):
  • kjs/string_object.cpp: (KJS::StringInstance::StringInstance): (KJS::replace): (KJS::stringProtoFuncReplace): (KJS::stringProtoFuncToLowerCase): (KJS::stringProtoFuncToUpperCase): (KJS::stringProtoFuncToLocaleLowerCase): (KJS::stringProtoFuncToLocaleUpperCase):
  • kjs/string_object.h: (KJS::StringInstance::internalValue):
  • kjs/value.cpp: (KJS::JSCell::getNumber): (KJS::JSCell::getString): (KJS::JSCell::getObject): (KJS::jsString): (KJS::jsOwnedString):
  • kjs/value.h: (KJS::JSNumberCell::JSNumberCell): (KJS::jsNumberCell): (KJS::JSValue::uncheckedGetNumber):
  • profiler/Profiler.cpp: (KJS::createCallIdentifier): (KJS::createCallIdentifierFromFunctionImp):

WebCore:

2008-06-15 Darin Adler <Darin Adler>

Rubber stamped by Sam.

  • use JS prefix and simpler names for basic JavaScriptCore types, to complement JSValue and JSObject
  • bindings/js/JSNavigatorCustom.cpp: (WebCore::needsYouTubeQuirk):
  • bindings/js/kjs_events.cpp: (WebCore::JSLazyEventListener::parseCode):
  • bridge/jni/jni_utility.cpp: (KJS::Bindings::convertArrayInstanceToJavaArray): (KJS::Bindings::convertValueToJValue):
  • bridge/qt/qt_runtime.cpp: (KJS::Bindings::valueRealType): (KJS::Bindings::convertValueToQVariant): (KJS::Bindings::QtConnectionObject::execute):
  • bridge/runtime_array.cpp:

WebKit/mac:

2008-06-15 Darin Adler <Darin Adler>

Rubber stamped by Sam.

  • use JS prefix and simpler names for basic JavaScriptCore types, to complement JSValue and JSObject
  • WebView/WebView.mm: (aeDescFromJSValue):

WebKit/win:

2008-06-15 Darin Adler <Darin Adler>

Rubber stamped by Sam.

  • use JS prefix and simpler names for basic JavaScriptCore types, to complement JSValue and JSObject
  • WebScriptCallFrame.cpp: (WebScriptCallFrame::functionName):

WebKitTools:

2008-06-15 Darin Adler <Darin Adler>

  • Scripts/do-webcore-rename: Updated for the latest round of renaming.
  • Property svn:eol-style set to native
File size: 3.6 KB
Line 
1// -*- c-basic-offset: 2 -*-
2/*
3 * This file is part of the KDE libraries
4 * Copyright (C) 1999-2000 Harri Porten ([email protected])
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
20 *
21 */
22
23#include "config.h"
24#include "operations.h"
25
26#include "internal.h"
27#include "object.h"
28#include <math.h>
29#include <stdio.h>
30#include <wtf/MathExtras.h>
31
32#if HAVE(FLOAT_H)
33#include <float.h>
34#endif
35
36namespace KJS {
37
38// ECMA 11.9.3
39bool equal(ExecState *exec, JSValue *v1, JSValue *v2)
40{
41 JSType t1 = v1->type();
42 JSType t2 = v2->type();
43
44 if (t1 != t2) {
45 if (t1 == UndefinedType)
46 t1 = NullType;
47 if (t2 == UndefinedType)
48 t2 = NullType;
49
50 if (t1 == BooleanType)
51 t1 = NumberType;
52 if (t2 == BooleanType)
53 t2 = NumberType;
54
55 if (t1 == NumberType && t2 == StringType) {
56 // use toNumber
57 } else if (t1 == StringType && t2 == NumberType)
58 t1 = NumberType;
59 // use toNumber
60 else {
61 if ((t1 == StringType || t1 == NumberType) && t2 == ObjectType) {
62 v2 = v2->toPrimitive(exec);
63 if (exec->hadException())
64 return false;
65 return equal(exec, v1, v2);
66 }
67 if (t1 == NullType && t2 == ObjectType)
68 return static_cast<JSObject *>(v2)->masqueradeAsUndefined();
69 if (t1 == ObjectType && (t2 == StringType || t2 == NumberType)) {
70 v1 = v1->toPrimitive(exec);
71 if (exec->hadException())
72 return false;
73 return equal(exec, v1, v2);
74 }
75 if (t1 == ObjectType && t2 == NullType)
76 return static_cast<JSObject *>(v1)->masqueradeAsUndefined();
77 if (t1 != t2)
78 return false;
79 }
80 }
81
82 if (t1 == UndefinedType || t1 == NullType)
83 return true;
84
85 if (t1 == NumberType) {
86 double d1 = v1->toNumber(exec);
87 double d2 = v2->toNumber(exec);
88 return d1 == d2;
89 }
90
91 if (t1 == StringType)
92 return static_cast<JSString*>(v1)->value() == static_cast<JSString*>(v2)->value();
93
94 if (t1 == BooleanType)
95 return v1->toBoolean(exec) == v2->toBoolean(exec);
96
97 // types are Object
98 return v1 == v2;
99}
100
101bool strictEqual(JSValue* v1, JSValue* v2)
102{
103 JSType t1 = v1->type();
104 JSType t2 = v2->type();
105
106 if (t1 != t2)
107 return false;
108
109 if (t1 == NumberType)
110 return v1->getNumber() == v2->getNumber();
111
112 if (t1 == StringType)
113 return static_cast<JSString*>(v1)->value() == static_cast<JSString*>(v2)->value();
114
115 return v1 == v2; // covers object, boolean, null, and undefined types
116}
117
118JSValue* throwOutOfMemoryError(ExecState* exec)
119{
120 JSObject* error = Error::create(exec, GeneralError, "Out of memory");
121 exec->setException(error);
122 return error;
123}
124
125}
Note: See TracBrowser for help on using the repository browser.