namespace simgrid::mc {
VisitedPair::VisitedPair(int pair_num, xbt_automaton_state_t prop_state,
- std::shared_ptr<const std::vector<int>> atomic_propositions, std::shared_ptr<State> app_state)
+ std::shared_ptr<const std::vector<int>> atomic_propositions, std::shared_ptr<State> app_state,
+ RemoteApp& remote_app)
: num(pair_num), prop_state_(prop_state)
{
this->app_state_ = std::move(app_state);
if (not this->app_state_->get_system_state())
- this->app_state_->set_system_state(std::make_shared<Snapshot>(pair_num));
- this->heap_bytes_used = mc_model_checker->get_remote_process().get_remote_heap_bytes();
+ this->app_state_->set_system_state(std::make_shared<Snapshot>(pair_num, remote_app.get_page_store()));
+ this->heap_bytes_used = mc_model_checker->get_remote_process_memory().get_remote_heap_bytes();
this->actor_count_ = app_state_->get_actor_count();
this->other_num = -1;
this->atomic_propositions = std::move(atomic_propositions);
std::shared_ptr<VisitedPair> LivenessChecker::insert_acceptance_pair(simgrid::mc::Pair* pair)
{
- auto new_pair =
- std::make_shared<VisitedPair>(pair->num, pair->prop_state_, pair->atomic_propositions, pair->app_state_);
+ auto new_pair = std::make_shared<VisitedPair>(pair->num, pair->prop_state_, pair->atomic_propositions,
+ pair->app_state_, get_remote_app());
auto [res_begin,
res_end] = boost::range::equal_range(acceptance_pairs_, new_pair.get(), [](auto const& a, auto const& b) {
if (_sg_mc_checkpoint > 0) {
const Pair* pair = exploration_stack_.back().get();
if (const auto* system_state = pair->app_state_->get_system_state()) {
- system_state->restore(&get_remote_app().get_remote_process());
+ system_state->restore(&get_remote_app().get_remote_process_memory());
return;
}
}
return -1;
if (visited_pair == nullptr)
- visited_pair =
- std::make_shared<VisitedPair>(pair->num, pair->prop_state_, pair->atomic_propositions, pair->app_state_);
+ visited_pair = std::make_shared<VisitedPair>(pair->num, pair->prop_state_, pair->atomic_propositions,
+ pair->app_state_, get_remote_app());
auto [range_begin,
range_end] = boost::range::equal_range(visited_pairs_, visited_pair.get(), [](auto const& a, auto const& b) {
const xbt_automaton_transition* transition = xbt_dynar_get_as(dynar, index, xbt_automaton_transition_t);
return transition->dst;
}
-void LivenessChecker::automaton_register_symbol(RemoteProcess const& remote_process, const char* name,
+void LivenessChecker::automaton_register_symbol(RemoteProcessMemory const& remote_process, const char* name,
RemotePtr<int> address)
{
if (property_automaton_ == nullptr)