gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/array.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/array.cpp
Date: Wed, 19 Dec 2007 01:21:18 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/12/19 01:21:18

Modified files:
        .              : ChangeLog 
        server         : array.cpp 

Log message:
        slightly reduced string_table::find calls.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5213&r2=1.5214
http://cvs.savannah.gnu.org/viewcvs/gnash/server/array.cpp?cvsroot=gnash&r1=1.86&r2=1.87

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5213
retrieving revision 1.5214
diff -u -b -r1.5213 -r1.5214
--- ChangeLog   19 Dec 2007 00:10:05 -0000      1.5213
+++ ChangeLog   19 Dec 2007 01:21:17 -0000      1.5214
@@ -1,5 +1,6 @@
 2007-12-18 Sandro Santilli <address@hidden>
 
+       * server/array.cpp: slightly reduced string_table::find calls.
        * server/as_object.{h,cpp}: rename visitProperties to
          visitPropertyValues, use it from copyProperties.
 

Index: server/array.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/array.cpp,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -b -r1.86 -r1.87
--- server/array.cpp    12 Dec 2007 10:07:00 -0000      1.86
+++ server/array.cpp    19 Dec 2007 01:21:18 -0000      1.87
@@ -385,10 +385,10 @@
 {
 public:
        as_cmp_fn _comp;
-       const std::string& _prop;
+       string_table::key _prop;
        
        // Note: cmpfn must implement a strict weak ordering
-       as_value_prop(const std::string& name, 
+       as_value_prop(string_table::key name, 
                as_cmp_fn cmpfn)
                :
                _comp(cmpfn),
@@ -399,12 +399,13 @@
        bool operator() (const as_value& a, const as_value& b)
        {
                as_value av, bv;
-               string_table& st = VM::get().getStringTable();
+
+               // why do we cast ao/bo to objects here ?
                boost::intrusive_ptr<as_object> ao = a.to_object();
                boost::intrusive_ptr<as_object> bo = b.to_object();
                
-               ao->get_member(st.find(_prop), &av);
-               bo->get_member(st.find(_prop), &bv);
+               ao->get_member(_prop, &av);
+               bo->get_member(_prop, &bv);
                return _comp(av, bv);
        }
 };
@@ -413,11 +414,14 @@
 class as_value_multiprop
 {
 public:
-       std::deque<as_cmp_fn>& _cmps;
-       std::deque<std::string>& _prps;
+       typedef std::deque<as_cmp_fn> Comps;
+       Comps& _cmps;
+
+       typedef std::deque<string_table::key> Props;
+       Props& _prps;
 
        // Note: all as_cmp_fns in *cmps must implement strict weak ordering
-       as_value_multiprop(std::deque<std::string>& prps, 
+       as_value_multiprop(std::deque<string_table::key>& prps, 
                std::deque<as_cmp_fn>& cmps)
                :
                _cmps(cmps),
@@ -428,16 +432,18 @@
        bool operator() (const as_value& a, const as_value& b)
        {
                std::deque<as_cmp_fn>::iterator cmp = _cmps.begin();
-               std::deque<std::string>::iterator pit;
-               string_table& st = VM::get().getStringTable();
+               Props::iterator pit;
+
+               // why do we cast ao/bo to objects here ?
+               boost::intrusive_ptr<as_object> ao = a.to_object();
+               boost::intrusive_ptr<as_object> bo = b.to_object();
                
                for (pit = _prps.begin(); pit != _prps.end(); ++pit, ++cmp)
                {
                        as_value av, bv;
-                       boost::intrusive_ptr<as_object> ao = a.to_object();
-                       boost::intrusive_ptr<as_object> bo = b.to_object();
-                       ao->get_member(st.find(*pit), &av);
-                       bo->get_member(st.find(*pit), &bv);
+
+                       ao->get_member(*pit, &av);
+                       bo->get_member(*pit, &bv);
 
                        if ( (*cmp)(av, bv) ) return true;
                        if ( (*cmp)(bv, av) ) return false;
@@ -453,7 +459,7 @@
 class as_value_multiprop_eq : public as_value_multiprop
 {
 public:
-       as_value_multiprop_eq(std::deque<std::string>& prps, 
+       as_value_multiprop_eq(std::deque<string_table::key>& prps, 
                std::deque<as_cmp_fn>& cmps)
                : as_value_multiprop(prps, cmps)
        {
@@ -461,17 +467,18 @@
 
        bool operator() (const as_value& a, const as_value& b)
        {
-               std::deque<as_cmp_fn>::iterator cmp = _cmps.begin();
-               std::deque<std::string>::iterator pit;
-               string_table& st = VM::get().getStringTable();
+               Comps::iterator cmp = _cmps.begin();
+               Props::iterator pit;
+
+               // why do we cast ao/bo to objects here ?
+               boost::intrusive_ptr<as_object> ao = a.to_object();
+               boost::intrusive_ptr<as_object> bo = b.to_object();
 
                for (pit = _prps.begin(); pit != _prps.end(); ++pit, ++cmp)
                {
                        as_value av, bv;
-                       boost::intrusive_ptr<as_object> ao = a.to_object();
-                       boost::intrusive_ptr<as_object> bo = b.to_object();
-                       ao->get_member(st.find(*pit), &av);
-                       bo->get_member(st.find(*pit), &bv);
+                       ao->get_member(*pit, &av);
+                       bo->get_member(*pit, &bv);
 
                        if ( !(*cmp)(av, bv) ) return false;
                }
@@ -1011,13 +1018,15 @@
        as_environment& env = fn.env();
        bool do_unique = false, do_index = false;
        boost::uint8_t flags = 0;
-       int sv = VM::get().getSWFVersion();
+
+       VM& vm = VM::get();
+       int sv = vm.getSWFVersion();
+       string_table& st = vm.getStringTable();
 
        // cases: sortOn("prop) and sortOn("prop", Array.FLAG)
        if ( fn.nargs > 0 && fn.arg(0).is_string() )
        {
-               std::string propField = 
-                       PROPNAME(fn.arg(0).to_string_versioned(sv));
+               string_table::key propField = 
st.find(PROPNAME(fn.arg(0).to_string_versioned(sv)));
 
                if ( fn.nargs > 1 && fn.arg(1).is_number() )
                {
@@ -1045,7 +1054,7 @@
        {
                boost::intrusive_ptr<as_array_object> props = 
                        ensureType<as_array_object>(fn.arg(0).to_object());
-               std::deque<std::string> prp;
+               std::deque<string_table::key> prp;
                unsigned int optnum = props->size();
                std::deque<as_cmp_fn> cmp;
                std::deque<as_cmp_fn> eq;
@@ -1053,8 +1062,7 @@
                for (std::deque<as_value>::const_iterator it = props->begin();
                        it != props->end(); ++it)
                {
-                       std::string s = 
-                               PROPNAME((*it).to_string_versioned(sv));
+                       string_table::key s = 
st.find(PROPNAME((*it).to_string_versioned(sv)));
                        prp.push_back(s);
                }
                
@@ -1405,8 +1413,9 @@
                // Create an empty array with the given number of undefined 
elements.
                //
                as_value index_number, undef_value;
-               int sv = VM::get().getSWFVersion();
-               string_table& st = VM::get().getStringTable();
+               VM& vm = VM::get();
+               int sv = vm.getSWFVersion();
+               string_table& st = vm.getStringTable();
 
                undef_value.set_undefined();
                for (int i = 0; i < int(fn.arg(0).to_number()); i++)




reply via email to

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