]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Helgrind's event-map garbage collector hammers VG_(OSetGen_Next).
authorJulian Seward <jseward@acm.org>
Thu, 20 Nov 2008 23:33:05 +0000 (23:33 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 20 Nov 2008 23:33:05 +0000 (23:33 +0000)
Import an optimisation from the analogous function in m_wordfm.c.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8795

coregrind/m_oset.c

index 980d054fdabff1ee7fd0bfbd5cb413311853a217..b213597faf281eb29bdd10222de3bbfef7210b67 100644 (file)
@@ -751,15 +751,17 @@ void* VG_(OSetGen_Next)(AvlTree* t)
    // keeping this loop in this simpler form.
    while (stackPop(t, &n, &i)) {
       switch (i) {
-      case 1: 
+      case 1: case_1:
          stackPush(t, n, 2);
-         if (n->left)  stackPush(t, n->left, 1);
+         /* if (n->left)  stackPush(t, n->left, 1); */
+         if (n->left) { n = n->left; goto case_1; }
          break;
       case 2: 
          stackPush(t, n, 3);
          return elem_of_node(n);
       case 3:
-         if (n->right) stackPush(t, n->right, 1);
+         /* if (n->right) stackPush(t, n->right, 1); */
+         if (n->right) { n = n->right; goto case_1; }
          break;
       }
    }