model: improve ModelChecker::get_last_conflict() search
authorBrian Norris <banorris@uci.edu>
Thu, 12 Jul 2012 22:38:10 +0000 (15:38 -0700)
committerBrian Norris <banorris@uci.edu>
Thu, 12 Jul 2012 22:38:10 +0000 (15:38 -0700)
Use the recently-added 'obj_map' to isolate a list of actions on only the
current object (memory location). That way, we don't have to iterate through as
much noise in our lists.

model.cc

index 85e1f849cc7a42f7c10139321b360414b818b102..aef7cb98f54b394cdfe1ac3ce8e2a104c6d2fe2d 100644 (file)
--- a/model.cc
+++ b/model.cc
@@ -177,8 +177,9 @@ ModelAction * ModelChecker::get_last_conflict(ModelAction *act)
                        return NULL;
        }
        /* linear search: from most recent to oldest */
+       action_list_t *list = &(*obj_map)[act->get_location()];
        action_list_t::reverse_iterator rit;
-       for (rit = action_trace->rbegin(); rit != action_trace->rend(); rit++) {
+       for (rit = list->rbegin(); rit != list->rend(); rit++) {
                ModelAction *prev = *rit;
                if (act->is_synchronizing(prev))
                        return prev;