* @param thread (optional) The Thread in which this action occurred. If NULL
* (default), then a Thread is assigned according to the scheduler.
*/
-ModelAction::ModelAction(action_type_t type, memory_order order, void *loc,
- uint64_t value, Thread *thread) :
+ModelAction::ModelAction(action_type_t type, memory_order order, void *loc,
+ uint64_t value, Thread *thread) :
location(loc),
+ position(NULL),
reads_from(NULL),
last_fence_release(NULL),
node(NULL),
seq_number(ACTION_INITIAL_CLOCK)
{
/* References to NULL atomic variables can end up here */
- ASSERT(loc || type == ATOMIC_FENCE);
+ ASSERT(loc || type == ATOMIC_FENCE || type == NOOP);
Thread *t = thread ? thread : thread_current();
this->tid = t->get_id();
* (default), then a Thread is assigned according to the scheduler.
*/
ModelAction::ModelAction(action_type_t type, memory_order order, void *loc,
- uint64_t value, int size) :
+ uint64_t value, int size) :
location(loc),
+ position(NULL),
reads_from(NULL),
last_fence_release(NULL),
node(NULL),
* @param thread (optional) The Thread in which this action occurred. If NULL
* (default), then a Thread is assigned according to the scheduler.
*/
-ModelAction::ModelAction(action_type_t type, const char * position, memory_order order,
- void *loc, uint64_t value, Thread *thread) :
+ModelAction::ModelAction(action_type_t type, const char * position, memory_order order,
+ void *loc, uint64_t value, Thread *thread) :
location(loc),
position(position),
reads_from(NULL),
Thread *t = thread ? thread : thread_current();
this->tid = t->get_id();
- model_print("position: %s\n", position);
+ // model_print("position: %s\n", position);
}
ASSERT(is_read());
if (reads_from)
return reads_from->get_write_value();
+
return VALUE_NONE; // Only for new actions with no reads-from
}