[webkit-changes] cvs commit: JavaScriptCore/kjs object_object.cpp
object_object.h
Anders
andersca at opensource.apple.com
Sun Dec 18 05:27:01 PST 2005
andersca 05/12/18 05:27:01
Modified: . ChangeLog
kjs object_object.cpp object_object.h
Log:
2005-12-18 Anders Carlsson <andersca at mac.com>
Reviewed by Darin and Geoffrey.
- fix for <http://bugzilla.opendarwin.org/show_bug.cgi?id=4000>
Object.prototype is missing isPrototypeOf
* kjs/object_object.cpp:
(ObjectPrototype::ObjectPrototype):
Add isPrototypeOf to object prototype.
(ObjectProtoFunc::callAsFunction):
Implement isPrototypeOf
* kjs/object_object.h:
(KJS::ObjectProtoFunc::):
Add id for isPrototypeOf.
Revision Changes Path
1.909 +18 -0 JavaScriptCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/JavaScriptCore/ChangeLog,v
retrieving revision 1.908
retrieving revision 1.909
diff -u -r1.908 -r1.909
--- ChangeLog 18 Dec 2005 09:20:20 -0000 1.908
+++ ChangeLog 18 Dec 2005 13:26:58 -0000 1.909
@@ -1,3 +1,21 @@
+2005-12-18 Anders Carlsson <andersca at mac.com>
+
+ Reviewed by Darin and Geoffrey.
+
+ - fix for <http://bugzilla.opendarwin.org/show_bug.cgi?id=4000>
+ Object.prototype is missing isPrototypeOf
+
+ * kjs/object_object.cpp:
+ (ObjectPrototype::ObjectPrototype):
+ Add isPrototypeOf to object prototype.
+
+ (ObjectProtoFunc::callAsFunction):
+ Implement isPrototypeOf
+
+ * kjs/object_object.h:
+ (KJS::ObjectProtoFunc::):
+ Add id for isPrototypeOf.
+
2005-12-17 Geoffrey Garen <ggaren at apple.com>
Reviewed by Darin.
1.20 +17 -0 JavaScriptCore/kjs/object_object.cpp
Index: object_object.cpp
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/object_object.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- object_object.cpp 13 Dec 2005 21:24:52 -0000 1.19
+++ object_object.cpp 18 Dec 2005 13:27:00 -0000 1.20
@@ -43,6 +43,7 @@
putDirect(valueOfPropertyName, new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ValueOf, 0), DontEnum);
putDirect("hasOwnProperty", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::HasOwnProperty, 1), DontEnum);
putDirect("propertyIsEnumerable", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::PropertyIsEnumerable, 1), DontEnum);
+ putDirect("isPrototypeOf", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::IsPrototypeOf, 1), DontEnum);
// Mozilla extensions
putDirect("__defineGetter__", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::DefineGetter, 2), DontEnum);
putDirect("__defineSetter__", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::DefineSetter, 2), DontEnum);
@@ -78,6 +79,22 @@
PropertySlot slot;
return jsBoolean(thisObj->getOwnPropertySlot(exec, Identifier(args[0]->toString(exec)), slot));
}
+ case IsPrototypeOf: {
+ if (!args[0]->isObject())
+ return jsBoolean(false);
+
+ JSValue *v = static_cast<JSObject *>(args[0])->prototype();
+
+ while (true) {
+ if (!v->isObject())
+ return jsBoolean(false);
+
+ if (thisObj == static_cast<JSObject *>(v))
+ return jsBoolean(true);
+
+ v = static_cast<JSObject *>(v)->prototype();
+ }
+ }
case DefineGetter:
case DefineSetter: {
if (!args[1]->isObject() ||
1.13 +1 -1 JavaScriptCore/kjs/object_object.h
Index: object_object.h
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/object_object.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- object_object.h 13 Dec 2005 21:24:52 -0000 1.12
+++ object_object.h 18 Dec 2005 13:27:00 -0000 1.13
@@ -52,7 +52,7 @@
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *, JSObject *, const List &args);
- enum { ToString, ToLocaleString, ValueOf, HasOwnProperty, PropertyIsEnumerable,
+ enum { ToString, ToLocaleString, ValueOf, HasOwnProperty, IsPrototypeOf, PropertyIsEnumerable,
DefineGetter, DefineSetter, LookupGetter, LookupSetter };
private:
int id;
More information about the webkit-changes
mailing list