{
ASSERT(thrd_read_map.size() > tid);
read_map_t * read_map = thrd_read_map[tid];
-
+/*
- ModelList<void *>::iterator it;
- for (it = read_locations.begin();it != read_locations.end();it++) {
- if ( !read_map->contains(*it) )
+ mllnode<void *> * it;
+ for (it = read_locations.begin();it != NULL;it=it->getNext()) {
+ if ( !read_map->contains(it->getVal()) )
break;
- uint64_t read_val = read_map->get(*it);
- model_print("last read of thread %d at %p: 0x%x\n", tid, *it, read_val);
+ uint64_t read_val = read_map->get(it->getVal());
+ model_print("last read of thread %d at %p: 0x%x\n", tid, it->getVal(), read_val);
}
+*/
}
/* Store the values read by atomic read actions per memory location for each thread */
ModelVector<read_map_t *> thrd_read_map;
- ModelList<void *> read_locations;
+
};
- #endif /* __FUNCNODE_H__ */
+ #endif /* __FUNCNODE_H__ */
func_inst_list_mt * entry_insts = func_node->get_entry_insts();
model_print("function %s has entry actions\n", func_node->get_func_name());
- func_inst_list_mt::iterator it;
- for (it = entry_insts->begin();it != entry_insts->end();it++) {
- FuncInst *inst = *it;
+ mllnode<FuncInst*>* it;
+ for (it = entry_insts->begin();it != NULL;it=it->getNext()) {
+ FuncInst *inst = it->getVal();
model_print("type: %d, at: %s\n", inst->get_type(), inst->get_position());
}
-
/*
func_inst_list_mt * inst_list = funcNode->get_inst_list();
ModelVector<const char *> func_map_rev;
ModelVector<FuncNode *> func_nodes;
+
HashTable<void *, write_set_t *, uintptr_t, 4, model_malloc, model_calloc, model_free> write_history;
+ HashSet<void *, uintptr_t, 4, model_malloc, model_calloc, model_free> write_locations;
};
- #endif /* __HISTORY_H__ */
+ #endif /* __HISTORY_H__ */
} token_t;
/* If token is EQUALITY, then the predicate asserts whether
- * this load should read the same value as the last value
+ * this load should read the same value as the last value
* read at memory location specified in predicate_expr.
*/
-struct predicate_expr {
+struct pred_expr {
token_t token;
void * location;
bool value;