Merge branch 'branch-weiyu' into new_fuzzer
authorBrian Demsky <bdemsky@uci.edu>
Wed, 19 Jun 2019 20:59:56 +0000 (13:59 -0700)
committerBrian Demsky <bdemsky@uci.edu>
Wed, 19 Jun 2019 20:59:56 +0000 (13:59 -0700)
1  2 
action.cc

diff --combined action.cc
index cfdb6e67469d67baa14f02cca00cc49c65e809f0,df44af19953e334e47ba65d56a249e9cd47840a2..b3db1f16280f58e234fcd9484c11b7e204671126
+++ b/action.cc
@@@ -31,8 -31,8 +31,8 @@@
   * @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),
        reads_from(NULL),
        last_fence_release(NULL),
@@@ -45,7 -45,7 +45,7 @@@
        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();
@@@ -65,7 -65,7 +65,7 @@@
   * (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),
        reads_from(NULL),
        last_fence_release(NULL),
        this->tid = t->get_id();
  }
  
+ /**
+  * @brief Construct a new ModelAction with source line number (requires llvm support)
+  *
+  * @param type The type of action
+  * @param position The source line number of this atomic operation
+  * @param order The memory order of this action. A "don't care" for non-ATOMIC
+  * actions (e.g., THREAD_* or MODEL_* actions).
+  * @param loc The location that this action acts upon
+  * @param value (optional) A value associated with the action (e.g., the value
+  * read or written). Defaults to a given macro constant, for debugging purposes.
+  * @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) :
+       location(loc),
+       position(position),
+       reads_from(NULL),
+       last_fence_release(NULL),
+       node(NULL),
+       cv(NULL),
+       value(value),
+       type(type),
+       order(order),
+       original_order(order),
+       seq_number(ACTION_INITIAL_CLOCK)
+ {
+       /* References to NULL atomic variables can end up here */
+       ASSERT(loc || type == ATOMIC_FENCE);
+       Thread *t = thread ? thread : thread_current();
+       this->tid = t->get_id();
+       // model_print("position: %s\n", position);
+ }
  /** @brief ModelAction destructor */
  ModelAction::~ModelAction()
  {
@@@ -465,7 -502,6 +502,7 @@@ uint64_t ModelAction::get_reads_from_va
        ASSERT(is_read());
        if (reads_from)
                return reads_from->get_write_value();
 +
        return VALUE_NONE;      // Only for new actions with no reads-from
  }