memoize hb in writes
[c11tester.git] / action.h
index c7703094d99ffe12213ec59a44b8c9ef0fdcc7a3..5e8b1b1c7691c75e212bdbaa0daed6b00723b32e 100644 (file)
--- a/action.h
+++ b/action.h
@@ -103,13 +103,13 @@ public:
        uint64_t get_reads_from_value() const;
        uint64_t get_write_value() const;
        uint64_t get_return_value() const;
-       const ModelAction * get_reads_from() const { return reads_from; }
+       ModelAction * get_reads_from() const { return reads_from; }
        cdsc::mutex * get_mutex() const;
 
        Node * get_node() const;
        void set_node(Node *n) { node = n; }
 
-       void set_read_from(const ModelAction *act);
+       void set_read_from(ModelAction *act);
 
        /** Store the most recent fence-release from the same thread
         *  @param fence The fence-release that occured prior to this */
@@ -156,6 +156,8 @@ public:
        Thread * get_thread_operand() const;
        void create_cv(const ModelAction *parent = NULL);
        ClockVector * get_cv() const { return cv; }
+       ClockVector * get_rfcv() const { return rf_cv; }
+       void set_rfcv(ClockVector * rfcv) { rf_cv = rfcv; }
        bool synchronize_with(const ModelAction *act);
 
        bool has_synchronized_with(const ModelAction *act) const;
@@ -194,7 +196,7 @@ private:
                 *
                 * Only valid for reads
                 */
-               const ModelAction *reads_from;
+               ModelAction *reads_from;
                int size;
        };
 
@@ -217,6 +219,7 @@ private:
         * vectors for all operations.
         */
        ClockVector *cv;
+       ClockVector *rf_cv;
 
        /** @brief The value written (for write or RMW; undefined for read) */
        uint64_t value;