gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/as_function.cpp server/a...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_function.cpp server/a...
Date: Wed, 12 Sep 2007 15:21:43 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/09/12 15:21:43

Modified files:
        .              : ChangeLog 
        server         : as_function.cpp as_function.h 
                         sprite_instance.cpp 

Log message:
                * server/as_function.{cpp,h}: make 'prototype' a proper 
property,
                  change getPrototype() to return by intrusive_ptr.
                * server/sprite_instance.cpp: update call to getPrototype().

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4293&r2=1.4294
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_function.cpp?cvsroot=gnash&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_function.h?cvsroot=gnash&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.335&r2=1.336

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4293
retrieving revision 1.4294
diff -u -b -r1.4293 -r1.4294
--- ChangeLog   12 Sep 2007 14:51:10 -0000      1.4293
+++ ChangeLog   12 Sep 2007 15:21:42 -0000      1.4294
@@ -1,3 +1,9 @@
+2007-09-12 Sandro Santilli <address@hidden>
+
+       * server/as_function.{cpp,h}: make 'prototype' a proper property,
+         change getPrototype() to return by intrusive_ptr.
+       * server/sprite_instance.cpp: update call to getPrototype().
+
 2007-09-12 Bastiaan Jacques <address@hidden>
 
        * backend/render_handler_ogl.cpp: Make sure we don't try to use

Index: server/as_function.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_function.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- server/as_function.cpp      31 Aug 2007 21:53:31 -0000      1.38
+++ server/as_function.cpp      12 Sep 2007 15:21:43 -0000      1.39
@@ -102,38 +102,37 @@
 as_function::as_function(as_object* iface)
        :
        // all functions inherit from global Function class
-       as_object(getFunctionPrototype()),
-       _properties(iface)
+       as_object(getFunctionPrototype())
 {
        /// TODO: create properties lazily, on getPrototype() call
-       if ( ! _properties )
+       if ( ! iface )
        {
-               _properties = new as_object(getObjectInterface());
+               iface = new as_object(getObjectInterface());
        }
-       _properties->init_member("constructor", this); 
-       init_member("prototype", as_value(_properties.get()));
+       iface->init_member("constructor", this); 
+       init_member("prototype", as_value(iface));
 }
 
 void
 as_function::setPrototype(as_object* proto)
 {
-       _properties = proto;
-       init_member("prototype", as_value(_properties.get()));
+       //_properties = proto;
+       init_member("prototype", as_value(proto));
 }
 
 void
 as_function::extends(as_function& superclass)
 {
-       _properties = new as_object(superclass.getPrototype());
-       _properties->init_member("__proto__", superclass.getPrototype());
+       as_object* newproto = new as_object(superclass.getPrototype().get());
+       newproto->init_member("__proto__", superclass.getPrototype().get());
        if ( VM::get().getSWFVersion() > 5 )
        {
-               _properties->init_member("__constructor__", &superclass); 
+               newproto->init_member("__constructor__", &superclass); 
        }
-       init_member("prototype", as_value(_properties.get()));
+       init_member("prototype", as_value(newproto));
 }
 
-as_object*
+boost::intrusive_ptr<as_object>
 as_function::getPrototype()
 {
        // TODO: create if not available ?
@@ -142,15 +141,7 @@
        //               prototype, not the old !!
        as_value proto;
        get_member("prototype", &proto);
-       if ( proto.to_object() != _properties.get() )
-       {
-               log_debug(_("Exported interface of function %p "
-                               "has been overwritten (from %p to %p)"),
-                               (void*)this, (void*)_properties.get(),
-                               (void*)proto.to_object().get());
-               _properties = proto.to_object();
-       }
-       return _properties.get();
+       return proto.to_object();
 }
 
 /* static public */

Index: server/as_function.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_function.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- server/as_function.h        1 Jul 2007 10:54:20 -0000       1.17
+++ server/as_function.h        12 Sep 2007 15:21:43 -0000      1.18
@@ -103,11 +103,8 @@
                        unsigned nargs, unsigned first_arg_index);
 
        /// Get this function's "prototype" member (exported interface).
-       //
-       /// This is never NULL, and created on purpose if not provided
-       /// at construction time. 
        ///
-       as_object* getPrototype();
+       boost::intrusive_ptr<as_object> getPrototype();
 
        /// Make this function a subclass of the given as_function
        void extends(as_function& superclass);
@@ -152,7 +149,7 @@
        ///
        void markAsFunctionReachable() const
        {
-               _properties->setReachable();
+               //_properties->setReachable();
 
                markAsObjectReachable();
        }
@@ -178,7 +175,7 @@
        /// to be inherited by instances of this
        /// "Function" (class)
        ///
-       boost::intrusive_ptr<as_object> _properties;
+       //boost::intrusive_ptr<as_object>       _properties;
 
 private:
 

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.335
retrieving revision 1.336
diff -u -b -r1.335 -r1.336
--- server/sprite_instance.cpp  12 Sep 2007 06:44:51 -0000      1.335
+++ server/sprite_instance.cpp  12 Sep 2007 15:21:43 -0000      1.336
@@ -3356,7 +3356,7 @@
        if ( ctor && ! ctor->isBuiltin() )
        {
                // Set the new prototype *after* the constructor was called
-               as_object* proto = ctor->getPrototype();
+               boost::intrusive_ptr<as_object> proto = ctor->getPrototype();
                set_prototype(proto);
 
                //log_msg(_("Calling the user-defined constructor against this 
sprite_instance"));




reply via email to

[Prev in Thread] Current Thread [Next in Thread]