fixes sc_core_adapter wrt refactored memory hierarchy
This commit is contained in:
@@ -22,15 +22,18 @@ void memory_hierarchy::append(memory_elem& e) {
|
||||
void memory_hierarchy::insert_before(memory_elem&) {}
|
||||
void memory_hierarchy::insert_after(memory_elem&) {}
|
||||
void memory_hierarchy::replace_last(memory_elem& e) {
|
||||
auto old = hierarchy.back();
|
||||
auto it = std::find_if(std::begin(owned_elems), std::end(owned_elems), [old](std::unique_ptr<memory_elem> const& p) {return p.get()==old;});
|
||||
hierarchy.pop_back();
|
||||
if(it!=std::end(owned_elems))
|
||||
owned_elems.erase(it);
|
||||
hierarchy.push_back(&e);
|
||||
update_chain();
|
||||
}
|
||||
void memory_hierarchy::update_chain() {
|
||||
bool tail = false;
|
||||
for(size_t i = 0; i < hierarchy.size(); ++i) {
|
||||
hierarchy[i]->register_csrs();
|
||||
if(i)
|
||||
hierarchy[i - 1]->set_next(hierarchy[i]->get_mem_if());
|
||||
for(size_t i = 1; i < hierarchy.size(); ++i) {
|
||||
hierarchy[i - 1]->set_next(hierarchy[i]->get_mem_if());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,11 +58,7 @@ void memory_hierarchy::insert_after(std::unique_ptr<memory_elem>&& p) {
|
||||
}
|
||||
|
||||
void memory_hierarchy::replace_last(std::unique_ptr<memory_elem>&& p) {
|
||||
auto e = hierarchy.back();
|
||||
replace_last(*p);
|
||||
auto it = std::find_if(std::begin(owned_elems), std::end(owned_elems), [e](std::unique_ptr<memory_elem> const& p) {return p.get()==e;});
|
||||
if(it!=std::end(owned_elems))
|
||||
owned_elems.erase(it);
|
||||
owned_elems.push_back(std::move(p));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user