JavaScriptCore:
2008-08-12 Darin Adler <darin@apple.com>
Reviewed by Geoff.
- eliminate JSValue::type()
This will make it slightly easier to change the JSImmediate design without
having to touch so many call sites.
SunSpider says this change is a wash (looked like a slight speedup, but not
statistically significant).
* API/JSStringRef.cpp: Removed include of JSType.h.
* API/JSValueRef.cpp: Removed include of JSType.h.
(JSValueGetType): Replaced use of JSValue::type() with
JSValue::is functions.
* JavaScriptCore.exp: Updated.
* VM/JSPropertyNameIterator.cpp: Removed type() implementation.
(KJS::JSPropertyNameIterator::toPrimitive): Changed to take
PreferredPrimitiveType argument instead of JSType.
* VM/JSPropertyNameIterator.h: Ditto.
* VM/Machine.cpp:
(KJS::fastIsNumber): Updated for name change.
(KJS::fastToInt32): Ditto.
(KJS::fastToUInt32): Ditto.
(KJS::jsAddSlowCase): Updated toPrimitive caller for change from
JSType to PreferredPrimitiveType.
(KJS::jsAdd): Replaced calls to JSValue::type() with calls to
JSValue::isString().
(KJS::jsTypeStringForValue): Replaced calls to JSValue::type()
with multiple calls to JSValue::is -- we could make this a
virtual function instead if we want to have faster performance.
(KJS::Machine::privateExecute): Renamed JSImmediate::toTruncatedUInt32
to JSImmediate::getTruncatedUInt32 for consistency with other functions.
Changed two calls of JSValue::type() to JSValue::isString().
* kjs/GetterSetter.cpp:
(KJS::GetterSetter::toPrimitive): Changed to take
PreferredPrimitiveType argument instead of JSType.
(KJS::GetterSetter::isGetterSetter): Added.
* kjs/GetterSetter.h:
* kjs/JSCell.cpp:
(KJS::JSCell::isString): Added.
(KJS::JSCell::isGetterSetter): Added.
(KJS::JSCell::isObject): Added.
* kjs/JSCell.h: Eliminated type function. Added isGetterSetter.
Made isString and isObject virtual. Changed toPrimitive to take
PreferredPrimitiveType argument instead of JSType.
(KJS::JSCell::isNumber): Use Heap::isNumber for faster performance.
(KJS::JSValue::isGetterSetter): Added.
(KJS::JSValue::toPrimitive): Changed to take
PreferredPrimitiveType argument instead of JSType.
* kjs/JSImmediate.h: Removed JSValue::type() and replaced
JSValue::toTruncatedUInt32 with JSValue::getTruncatedUInt32.
(KJS::JSImmediate::isEitherImmediate): Added.
* kjs/JSNotAnObject.cpp:
(KJS::JSNotAnObject::toPrimitive): Changed to take
PreferredPrimitiveType argument instead of JSType.
* kjs/JSNotAnObject.h: Ditto.
* kjs/JSNumberCell.cpp:
(KJS::JSNumberCell::toPrimitive): Ditto.
* kjs/JSNumberCell.h:
(KJS::JSNumberCell::toInt32): Renamed from fastToInt32. There's no
other "slow" version of this once you have a JSNumberCell, so there's
no need for "fast" in the name. It's a feature that this hides the
base class toInt32, which does the same job less efficiently (and has
an additional ExecState argument).
(KJS::JSNumberCell::toUInt32): Ditto.
* kjs/JSObject.cpp:
(KJS::callDefaultValueFunction): Use isGetterSetter instead of type.
(KJS::JSObject::getPrimitiveNumber): Use PreferredPrimitiveType.
(KJS::JSObject::defaultValue): Ditto.
(KJS::JSObject::defineGetter): Use isGetterSetter.
(KJS::JSObject::defineSetter): Ditto.
(KJS::JSObject::lookupGetter): Ditto.
(KJS::JSObject::lookupSetter): Ditto.
(KJS::JSObject::toNumber): Use PreferredPrimitiveType.
(KJS::JSObject::toString): Ditto.
(KJS::JSObject::isObject): Added.
* kjs/JSObject.h:
(KJS::JSObject::inherits): Call the isObject from JSCell; it's now
hidden by our override of isObject.
(KJS::JSObject::getOwnPropertySlotForWrite): Use isGetterSetter
instead of type.
(KJS::JSObject::getOwnPropertySlot): Ditto.
(KJS::JSObject::toPrimitive): Use PreferredPrimitiveType.
* kjs/JSString.cpp:
(KJS::JSString::toPrimitive): Use PreferredPrimitiveType.
(KJS::JSString::isString): Added.
* kjs/JSString.h: Ditto.
* kjs/JSValue.h: Removed type(), added isGetterSetter(). Added
PreferredPrimitiveType enum and used it as the argument for the
toPrimitive function.
(KJS::JSValue::getBoolean): Simplified a bit an removed a branch.
* kjs/collector.cpp:
(KJS::typeName): Changed to use JSCell::is functions instead of
calling JSCell::type.
* kjs/collector.h:
(KJS::Heap::isNumber): Renamed from fastIsNumber.
* kjs/nodes.h: Added now-needed include of JSType, since the type
is used here to record types of values in the tree.
* kjs/operations.cpp:
(KJS::equal): Rewrote to no longer depend on type().
(KJS::strictEqual): Ditto.
JavaScriptGlue:
2008-08-12 Darin Adler <darin@apple.com>
Reviewed by Geoff.
- eliminate JSValue::type()
* JSUtils.cpp:
(KJSValueToCFTypeInternal): Replaced uses of JSValue::type() with
JSValue::is functions.
* UserObjectImp.cpp:
(UserObjectImp::getOwnPropertySlot): Ditto.
(UserObjectImp::toPrimitive): Take PreferredPrimitiveType argument
instead of JSType argument.
* UserObjectImp.h: Ditto.
WebCore:
2008-08-12 Darin Adler <darin@apple.com>
Reviewed by Geoff.
- eliminate JSValue::type()
* bridge/c/c_instance.cpp:
(KJS::Bindings::CInstance::defaultValue): Take PreferredPrimitiveType
argument instead of JSType argument. Removed unneeded code to handle
boolean, since that's never passed.
* bridge/c/c_instance.h: Ditto.
* bridge/c/c_utility.cpp:
(KJS::Bindings::convertValueToNPVariant): Use JSValue::is functions
instead of JSValue::type(). Removed unneeded code to handle
"unspecified".
* bridge/jni/jni_instance.cpp:
(JavaInstance::defaultValue): Take PreferredPrimitiveType argument
instead of JSType argument. Removed unneeded code to handle boolean.
* bridge/jni/jni_instance.h: Ditto.
* bridge/jni/jni_jsobject.mm:
(JavaJSObject::convertValueToJObject): Use JSValue::is functions
instead of JSValue::type().
* bridge/objc/objc_instance.h: Take PreferredPrimitiveType argument
instead of JSType argument. Removed unused argument.
* bridge/objc/objc_instance.mm:
(ObjcInstance::getValueOfUndefinedField): Removed unused argument.
(ObjcInstance::defaultValue): Take PreferredPrimitiveType argument
instead of JSType argument. Removed unneeded code to handle boolean
and another dead code path for unknown types.
* bridge/objc/objc_runtime.h: Take PreferredPrimitiveType argument
instead of JSType argument. Removed override of type() that caused
the fallback object to return "UndefinedType" when there is no
invokeUndefinedMethodFromWebScript:withArguments: method defined.
That didn't accomplish much, since most checks for undefined don't
ever call type().
* bridge/objc/objc_runtime.mm:
(ObjcFallbackObjectImp::defaultValue): Ditto.
* bridge/qt/qt_instance.cpp:
(KJS::Bindings::QtInstance::defaultValue): Take PreferredPrimitiveType
argument instead of JSType argument. Removed unneeded code to handle
boolean.
* bridge/qt/qt_instance.h: Ditto.
* bridge/runtime.h:
(KJS::Bindings::Instance::getValueOfUndefinedField): Removed
unsed argument.
* bridge/runtime_object.cpp:
(RuntimeObjectImp::defaultValue): Take PreferredPrimitiveType
argument instead of JSType argument.
* bridge/runtime_object.h: Ditto.
WebKit/mac:
2008-08-12 Darin Adler <darin@apple.com>
Reviewed by Geoff.
- eliminate JSValue::type()
* WebView/WebView.mm:
(aeDescFromJSValue): Rewrite to use the JSValue::is functions instead
of a switch on JSValue::type().
LayoutTests:
2008-08-12 Darin Adler <darin@apple.com>
Reviewed by Geoff.
- added a test since I had to rewrite the == and === operators
* fast/js/equality-expected.txt: Added.
* fast/js/equality.html: Added.
* fast/js/resources/equality.js: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@35830 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index b432bea..86ca85d 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,60 @@
+2008-08-12 Darin Adler <darin@apple.com>
+
+ Reviewed by Geoff.
+
+ - eliminate JSValue::type()
+
+ * bridge/c/c_instance.cpp:
+ (KJS::Bindings::CInstance::defaultValue): Take PreferredPrimitiveType
+ argument instead of JSType argument. Removed unneeded code to handle
+ boolean, since that's never passed.
+ * bridge/c/c_instance.h: Ditto.
+
+ * bridge/c/c_utility.cpp:
+ (KJS::Bindings::convertValueToNPVariant): Use JSValue::is functions
+ instead of JSValue::type(). Removed unneeded code to handle
+ "unspecified".
+
+ * bridge/jni/jni_instance.cpp:
+ (JavaInstance::defaultValue): Take PreferredPrimitiveType argument
+ instead of JSType argument. Removed unneeded code to handle boolean.
+ * bridge/jni/jni_instance.h: Ditto.
+
+ * bridge/jni/jni_jsobject.mm:
+ (JavaJSObject::convertValueToJObject): Use JSValue::is functions
+ instead of JSValue::type().
+
+ * bridge/objc/objc_instance.h: Take PreferredPrimitiveType argument
+ instead of JSType argument. Removed unused argument.
+ * bridge/objc/objc_instance.mm:
+ (ObjcInstance::getValueOfUndefinedField): Removed unused argument.
+ (ObjcInstance::defaultValue): Take PreferredPrimitiveType argument
+ instead of JSType argument. Removed unneeded code to handle boolean
+ and another dead code path for unknown types.
+
+ * bridge/objc/objc_runtime.h: Take PreferredPrimitiveType argument
+ instead of JSType argument. Removed override of type() that caused
+ the fallback object to return "UndefinedType" when there is no
+ invokeUndefinedMethodFromWebScript:withArguments: method defined.
+ That didn't accomplish much, since most checks for undefined don't
+ ever call type().
+ * bridge/objc/objc_runtime.mm:
+ (ObjcFallbackObjectImp::defaultValue): Ditto.
+
+ * bridge/qt/qt_instance.cpp:
+ (KJS::Bindings::QtInstance::defaultValue): Take PreferredPrimitiveType
+ argument instead of JSType argument. Removed unneeded code to handle
+ boolean.
+ * bridge/qt/qt_instance.h: Ditto.
+
+ * bridge/runtime.h:
+ (KJS::Bindings::Instance::getValueOfUndefinedField): Removed
+ unsed argument.
+ * bridge/runtime_object.cpp:
+ (RuntimeObjectImp::defaultValue): Take PreferredPrimitiveType
+ argument instead of JSType argument.
+ * bridge/runtime_object.h: Ditto.
+
2008-08-18 Maxime Britto <britto@apple.com>
Reviewed by Adele.