projects
/
model-checker.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix snapshot code
[model-checker.git]
/
action.cc
diff --git
a/action.cc
b/action.cc
index 3d38e81c93d1111bf8828448fd5a52718c17eea6..d4c6253caf20c23411c60ba350a91760c386e6fc 100644
(file)
--- a/
action.cc
+++ b/
action.cc
@@
-9,6
+9,7
@@
#include "common.h"
#include "threads-model.h"
#include "nodestack.h"
#include "common.h"
#include "threads-model.h"
#include "nodestack.h"
+#include "wildcard.h"
#define ACTION_INITIAL_CLOCK 0
#define ACTION_INITIAL_CLOCK 0
@@
-34,6
+35,7
@@
ModelAction::ModelAction(action_type_t type, memory_order order, void *loc,
uint64_t value, Thread *thread) :
type(type),
order(order),
uint64_t value, Thread *thread) :
type(type),
order(order),
+ original_order(order),
location(loc),
value(value),
reads_from(NULL),
location(loc),
value(value),
reads_from(NULL),
@@
-192,6
+194,11
@@
bool ModelAction::is_initialization() const
return type == ATOMIC_INIT;
}
return type == ATOMIC_INIT;
}
+bool ModelAction::is_annotation() const
+{
+ return type == ATOMIC_ANNOTATION;
+}
+
bool ModelAction::is_relaxed() const
{
return order == std::memory_order_relaxed;
bool ModelAction::is_relaxed() const
{
return order == std::memory_order_relaxed;
@@
-323,7
+330,7
@@
bool ModelAction::could_synchronize_with(const ModelAction *act) const
return false;
// Different locations commute
return false;
// Different locations commute
- if (!same_var(act))
+ if (!same_var(act)
&& !is_fence() && !act->is_fence()
)
return false;
// Explore interleavings of seqcst writes/fences to guarantee total
return false;
// Explore interleavings of seqcst writes/fences to guarantee total
@@
-547,7
+554,8
@@
const char * ModelAction::get_type_str() const
case ATOMIC_TRYLOCK: return "trylock";
case ATOMIC_WAIT: return "wait";
case ATOMIC_NOTIFY_ONE: return "notify one";
case ATOMIC_TRYLOCK: return "trylock";
case ATOMIC_WAIT: return "wait";
case ATOMIC_NOTIFY_ONE: return "notify one";
- case ATOMIC_NOTIFY_ALL: return "notify all";
+ case ATOMIC_NOTIFY_ALL: return "notify all";
+ case ATOMIC_ANNOTATION: return "annotation";
default: return "unknown type";
};
}
default: return "unknown type";
};
}