promise: add Promise::get_index function
authorBrian Norris <banorris@uci.edu>
Tue, 16 Apr 2013 00:53:11 +0000 (17:53 -0700)
committerBrian Norris <banorris@uci.edu>
Tue, 16 Apr 2013 00:54:03 +0000 (17:54 -0700)
action.cc
cyclegraph.cc
promise.cc
promise.h

index 76f18dd07fdf06ae6ac509c5e62bf55585e57c02..8384101a4d54581475600aa77fac2a94efa479b3 100644 (file)
--- a/action.cc
+++ b/action.cc
@@ -618,7 +618,7 @@ void ModelAction::print() const
                if (reads_from)
                        model_print("  Rf: %-3d", reads_from->get_seq_number());
                else if (reads_from_promise) {
-                       int idx = model->get_promise_number(reads_from_promise);
+                       int idx = reads_from_promise->get_index();
                        if (idx >= 0)
                                model_print("  Rf: P%-2d", idx);
                        else
@@ -648,7 +648,7 @@ unsigned int ModelAction::hash() const
               if (reads_from)
                       hash ^= reads_from->get_seq_number();
               else if (reads_from_promise)
-                      hash ^= model->get_promise_number(reads_from_promise);
+                      hash ^= reads_from_promise->get_index();
               hash ^= get_reads_from_value();
        }
        return hash;
index 77c0b68f13cfa86ef88ac0274b20435feec6c637..0ec95b057bec48bce7d914e316066c2c62de065c 100644 (file)
@@ -314,7 +314,7 @@ static void print_node(FILE *file, const CycleNode *node, int label)
 {
        if (node->is_promise()) {
                const Promise *promise = node->getPromise();
-               int idx = model->get_promise_number(promise);
+               int idx = promise->get_index();
                fprintf(file, "P%u", idx);
                if (label) {
                        int first = 1;
index 26a1095f4440a4b65d80dd67917da2f423ab28fe..29e261f04086dca1891d12934bb75596af03000a 100644 (file)
@@ -166,3 +166,9 @@ bool Promise::same_location(const ModelAction *act) const
 {
        return get_reader(0)->same_var(act);
 }
+
+/** @brief Get this Promise's index within the execution's promise array */
+int Promise::get_index() const
+{
+       return model->get_promise_number(this);
+}
index 90ec1d2050bc650b714eebe8f64f5aabde0de7e0..e8c233c61d8240d4820fc39ad7d735d0ffeff355 100644 (file)
--- a/promise.h
+++ b/promise.h
@@ -43,6 +43,8 @@ class Promise {
        uint64_t get_value() const { return fv.value; }
        struct future_value get_fv() const { return fv; }
 
+       int get_index() const;
+
        void print() const;
 
        bool equals(const Promise *x) const { return this == x; }