tracepoint: move "probe" test outside of loop
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 21 Mar 2013 02:41:42 +0000 (22:41 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 21 Mar 2013 02:43:58 +0000 (22:43 -0400)
This is a slow-path optimisation.

Reported-by: Sahara <keun-o.park@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust/tracepoint.c

index d7293dab31697d94164f785b0aace9f9824da898..62aaf418ee405437d02c7edc37c6ba7841045d20 100644 (file)
@@ -185,11 +185,14 @@ tracepoint_entry_remove_probe(struct tracepoint_entry *entry,
 
        debug_print_probes(entry);
        /* (N -> M), (N > 1, M >= 0) probes */
-       for (nr_probes = 0; old[nr_probes].func; nr_probes++) {
-               if (!probe ||
-                    (old[nr_probes].func == probe &&
-                    old[nr_probes].data == data))
-                       nr_del++;
+       if (probe) {
+               for (nr_probes = 0; old[nr_probes].func; nr_probes++) {
+                       if (old[nr_probes].func == probe &&
+                            old[nr_probes].data == data)
+                               nr_del++;
+               }
+       } else {
+               nr_del = nr_probes;
        }
 
        if (nr_probes - nr_del == 0) {
@@ -206,8 +209,7 @@ tracepoint_entry_remove_probe(struct tracepoint_entry *entry,
                if (new == NULL)
                        return ERR_PTR(-ENOMEM);
                for (i = 0; old[i].func; i++)
-                       if (probe &&
-                           (old[i].func != probe || old[i].data != data))
+                       if (old[i].func != probe || old[i].data != data)
                                new[j++] = old[i];
                new[nr_probes - nr_del].func = NULL;
                entry->refcount = nr_probes - nr_del;
This page took 0.026346 seconds and 4 git commands to generate.