gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/debugger.cpp server/debu...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/debugger.cpp server/debu...
Date: Mon, 16 Apr 2007 07:37:09 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/04/16 07:37:08

Modified files:
        .              : ChangeLog 
        server         : debugger.cpp debugger.h 
        server/vm      : ASHandlers.cpp 

Log message:
                * server/debugger.{cpp,h}: (matchWatchPoint) const-corrected
                * server/vm/ASHandlers.cpp: (ActionCallFrame): properly handle 
unknown target;
                  more optimization of stack access and string copies.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2881&r2=1.2882
http://cvs.savannah.gnu.org/viewcvs/gnash/server/debugger.cpp?cvsroot=gnash&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/gnash/server/debugger.h?cvsroot=gnash&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.92&r2=1.93

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2881
retrieving revision 1.2882
diff -u -b -r1.2881 -r1.2882
--- ChangeLog   16 Apr 2007 07:10:44 -0000      1.2881
+++ ChangeLog   16 Apr 2007 07:37:08 -0000      1.2882
@@ -1,10 +1,11 @@
 2007-04-16 Sandro Santilli <address@hidden>
 
+       * server/debugger.{cpp,h}: (matchWatchPoint) const-corrected
        * server/vm/ASHandlers.cpp: always pass an as_environment pointer
          when converting as_value to a string, use to_string rather 
          then to_std_string() when a reference is enough; 
(ActionDuplicateClip): 
-         properly cleanup the stack on error; (ActionGotoFrameExpression):
-         properly handle unknown target.
+         properly cleanup the stack on error; (ActionGotoFrameExpression,
+         ActionCallFrame): properly handle unknown target.
        * testsuite/misc-ming.all/Makefile.am:
          Activated get_frame_number and frame_label_test.
 

Index: server/debugger.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/debugger.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- server/debugger.cpp 20 Mar 2007 15:01:20 -0000      1.14
+++ server/debugger.cpp 16 Apr 2007 07:37:08 -0000      1.15
@@ -505,7 +505,7 @@
 }
 
 bool
-Debugger::matchWatchPoint(std::string &var, watch_state_e state)
+Debugger::matchWatchPoint(const std::string &var, watch_state_e state)
 {
 //    GNASH_REPORT_FUNCTION;
     std::map<std::string, watch_state_e>::const_iterator it;

Index: server/debugger.h
===================================================================
RCS file: /sources/gnash/gnash/server/debugger.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/debugger.h   15 Mar 2007 22:39:53 -0000      1.9
+++ server/debugger.h   16 Apr 2007 07:37:08 -0000      1.10
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: debugger.h,v 1.9 2007/03/15 22:39:53 strk Exp $ */
+/* $Id: debugger.h,v 1.10 2007/04/16 07:37:08 strk Exp $ */
 
 #ifndef __DEBUGGER_H__
 #define __DEBUGGER_H__
@@ -102,7 +102,7 @@
     /// Are there any watchpoints set ?
     int anyWatchPoints() { return _watchpoints.size(); };
     /// Does the variable name match any watchpoints ?
-    bool matchWatchPoint(std::string &var, watch_state_e state);
+    bool matchWatchPoint(const std::string &var, watch_state_e state);
     
     /// Are there any breakpoints set ?
     int anyBreakPoints() { return _breakpoints.size(); };

Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -b -r1.92 -r1.93
--- server/vm/ASHandlers.cpp    16 Apr 2007 07:10:45 -0000      1.92
+++ server/vm/ASHandlers.cpp    16 Apr 2007 07:37:08 -0000      1.93
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: ASHandlers.cpp,v 1.92 2007/04/16 07:10:45 strk Exp $ */
+/* $Id: ASHandlers.cpp,v 1.93 2007/04/16 07:37:08 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -994,8 +994,7 @@
        // stack must be contain at least two items
        thread.ensureStack(2); 
 
-       assert(env.top(1).to_string(&env).c_str());
-        string name = env.top(1).to_string(&env);
+        const string& name = env.top(1).to_string(&env);
        thread.setVariable(name, env.top(0));
 
         IF_VERBOSE_ACTION (
@@ -1020,14 +1019,11 @@
 
        thread.ensureStack(1);  // target name
 
-       //Vitaly: env.drop(1) remove object on which refers const char * 
target_name
-       //strk: shouldn't we use env.pop() instead ? No (see above comment)
-       //const char * target_name = env.top(0).to_string(&env);
-       assert(env.top(0).to_string(&env).c_str());
-       string target_name = env.top(0).to_string(&env);
-       env.drop(1); // pop the target name off the stack
+       const string& target_name = env.top(0).to_string(&env);
 
        CommonSetTarget(env, target_name);
+
+       env.drop(1); // pop the target name off the stack
 }
 
 void
@@ -1995,11 +1991,11 @@
 
        thread.ensureStack(1); // frame spec
 
-       string target_frame = env.top(0).to_string(&env);
+       const string& target_frame = env.top(0).to_string(&env);
        string target_path;
        string frame_var;
        
-       character * target;
+       character * target = NULL;
        if( env.parse_path(target_frame, target_path, frame_var) )
        {
                target = env.find_target(target_path);
@@ -2010,7 +2006,7 @@
                target = env.get_target();
        }
        
-       sprite_instance *target_sprite = target->to_movie();
+       sprite_instance *target_sprite = target ? target->to_movie() : NULL;
        if(target_sprite)
        {
                target_sprite->call_frame_actions(frame_var);
@@ -2117,12 +2113,8 @@
                return;
        }
 
-       as_value var = env.pop();
-
-       bool ret = thread.delVariable(var.to_string(&env));
-       env.push(as_value(ret));
-
-       return;
+       // What's the difference between this and ActionDelete2 ??
+       env.top(0) = thread.delVariable(env.top(0).to_string(&env));
 }
 
 void
@@ -2147,13 +2139,15 @@
     as_environment& env = thread.env;
     thread.ensureStack(2); // value, var
 
-    as_value value = env.pop();
-    as_value varname = env.pop();
+    as_value& value = env.top(0);
+    as_value& varname = env.top(1);
     thread.setLocalVariable(varname.to_string(&env), value);
 
     IF_VERBOSE_ACTION (
     log_action("-- set local var: %s = %s", varname.to_string(&env).c_str(), 
value.to_debug_string().c_str());
     );
+
+    env.drop(2);
 }
 
 void
@@ -2169,7 +2163,7 @@
        //env.dump_stack();
 
        // Let's consider it a as a string and lookup the function.
-       as_value function = thread.getVariable(env.top(0).to_std_string(&env));
+       as_value function = thread.getVariable(env.top(0).to_string(&env));
        if ( ! function.is_object() ) 
        {
                log_aserror("ActionCallFunction: %s is not an object", 
env.top(0).to_string(&env).c_str());
@@ -2277,7 +2271,7 @@
        thread.ensureStack(2); // classname, nargs
 
        as_value val = env.pop();
-       string classname = val.to_string(&env);;
+       const string& classname = val.to_string(&env);
 
        IF_VERBOSE_ACTION (
                log_action("---new object: %s",
@@ -2397,16 +2391,17 @@
     
     int nmembers = (int) env.pop().to_number(&env);
 
-    thread.ensureStack(nmembers); // members
+    thread.ensureStack(nmembers*2); // name, value for each member
     
     boost::intrusive_ptr<as_object> 
new_obj_ptr(init_object_instance().release()); 
     
     // Set provided members
     for (int i=0; i<nmembers; ++i) {
-        as_value member_value = env.pop();
-       string member_name = env.pop().to_string(&env);
+        as_value member_value = env.top(0);
+       string member_name = env.top(1).to_string(&env);
         //new_obj_ptr->set_member(member_name, member_value);
        thread.setObjectMember(*new_obj_ptr, member_name, member_value);
+       env.drop(2);
     }
     
     // @@ TODO




reply via email to

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