forked from ShuriZma/suyu
Merge pull request #4388 from lioncash/written
buffer_cache: Eliminate redundant map lookup in MarkRegionAsWritten()
This commit is contained in:
commit
d488cb843e
|
@ -524,11 +524,8 @@ private:
|
||||||
void MarkRegionAsWritten(VAddr start, VAddr end) {
|
void MarkRegionAsWritten(VAddr start, VAddr end) {
|
||||||
const u64 page_end = end >> WRITE_PAGE_BIT;
|
const u64 page_end = end >> WRITE_PAGE_BIT;
|
||||||
for (u64 page_start = start >> WRITE_PAGE_BIT; page_start <= page_end; ++page_start) {
|
for (u64 page_start = start >> WRITE_PAGE_BIT; page_start <= page_end; ++page_start) {
|
||||||
auto it = written_pages.find(page_start);
|
if (const auto [it, inserted] = written_pages.emplace(page_start, 1); !inserted) {
|
||||||
if (it != written_pages.end()) {
|
++it->second;
|
||||||
it->second = it->second + 1;
|
|
||||||
} else {
|
|
||||||
written_pages.insert_or_assign(page_start, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -539,7 +536,7 @@ private:
|
||||||
auto it = written_pages.find(page_start);
|
auto it = written_pages.find(page_start);
|
||||||
if (it != written_pages.end()) {
|
if (it != written_pages.end()) {
|
||||||
if (it->second > 1) {
|
if (it->second > 1) {
|
||||||
it->second = it->second - 1;
|
--it->second;
|
||||||
} else {
|
} else {
|
||||||
written_pages.erase(it);
|
written_pages.erase(it);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue