Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
In lmm_update_modified_set, don't visit variables twice.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Fri, 9 Dec 2011 15:45:13 +0000 (16:45 +0100)
committerNavarrop <Pierre.Navarro@imag.fr>
Fri, 6 Jan 2012 15:30:52 +0000 (16:30 +0100)
commit251e40dfd575845209e8b4191b87064fb68556a9
tree736412f7467a9a56bf8113e6e68a5664efa8056d
parent4bc4229f39e1d4ea65e2f840bb902cbef1e4d8b5
In lmm_update_modified_set, don't visit variables twice.

Note: the constraints may be ordered differently in
modified_constraint_set, and the timings may vary a bit.
If it is really important, the following patch fixes that:

--- a/src/surf/maxmin.c
+++ b/src/surf/maxmin.c
@@ -790,10 +790,8 @@ static void lmm_update_modified_set_rec(lmm_system_t sys,
     lmm_variable_t var = elem->variable;
     s_lmm_element_t *cnsts = var->cnsts;
     int i;
-    if (var->visited == sys->visited_counter)
-      continue;
-    var->visited = sys->visited_counter;
-    for (i = 0; i < var->cnsts_number; i++) {
+    for (i = 0; var->visited != sys->visited_counter
+                && i < var->cnsts_number ; i++) {
       if (cnsts[i].constraint != cnst
           && !xbt_swag_belongs(cnsts[i].constraint,
                                &sys->modified_constraint_set)) {
@@ -801,6 +799,7 @@ static void lmm_update_modified_set_rec(lmm_system_t sys,
         lmm_update_modified_set_rec(sys, cnsts[i].constraint);
       }
     }
+    var->visited = sys->visited_counter;
   }
 }
src/surf/maxmin.c
src/surf/maxmin_private.h