diff src/pt-unop.cc @ 10614:d1194069e58c

optimize code handling ++,--
author Jaroslav Hajek <highegg@gmail.com>
date Sat, 08 May 2010 15:15:22 +0200
parents 57a59eae83cc
children fd0a3ac60b0e
line wrap: on
line diff
--- a/src/pt-unop.cc	Fri May 07 15:58:51 2010 -0400
+++ b/src/pt-unop.cc	Sat May 08 15:15:22 2010 +0200
@@ -69,18 +69,14 @@
     {
       if (etype == octave_value::op_incr || etype == octave_value::op_decr)
         {
-          op->rvalue1 ();
+          octave_lvalue ref = op->lvalue ();
 
           if (! error_state)
             {
-              octave_lvalue ref = op->lvalue ();
+              ref.do_unary_op (etype);
 
-              if (! error_state && ref.is_defined ())
-                {
-                  ref.do_unary_op (etype);
-
-                  retval = ref.value ();
-                }
+              if (! error_state)
+                retval = ref.value ();
             }
         }
       else
@@ -152,18 +148,13 @@
     {
       if (etype == octave_value::op_incr || etype == octave_value::op_decr)
         {
-          op->rvalue1 ();
+          octave_lvalue ref = op->lvalue ();
 
           if (! error_state)
             {
-              octave_lvalue ref = op->lvalue ();
+              retval = ref.value ();
 
-              if (! error_state && ref.is_defined ())
-                {
-                  retval = ref.value ();
-
-                  ref.do_unary_op (etype);
-                }
+              ref.do_unary_op (etype);
             }
         }
       else