[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