浏览代码

Kernel: Remove old "region lookup cache" optimization

This optimization was added when region lookup was O(n), before we had
the O(log n) RedBlackTree. Let's remove it to simplify the code, as we
have no evidence that it remains valuable.
Andreas Kling 3 年之前
父节点
当前提交
4fa3c1bf2d
共有 2 个文件被更改,包括 0 次插入15 次删除
  1. 0 9
      Kernel/Memory/AddressSpace.cpp
  2. 0 6
      Kernel/Memory/AddressSpace.h

+ 0 - 9
Kernel/Memory/AddressSpace.cpp

@@ -203,10 +203,6 @@ void AddressSpace::deallocate_region(Region& region)
 NonnullOwnPtr<Region> AddressSpace::take_region(Region& region)
 {
     SpinlockLocker lock(m_lock);
-
-    if (m_region_lookup_cache.region.unsafe_ptr() == &region)
-        m_region_lookup_cache.region = nullptr;
-
     auto found_region = m_regions.unsafe_remove(region.vaddr().get());
     VERIFY(found_region.ptr() == &region);
     return found_region;
@@ -215,9 +211,6 @@ NonnullOwnPtr<Region> AddressSpace::take_region(Region& region)
 Region* AddressSpace::find_region_from_range(VirtualRange const& range)
 {
     SpinlockLocker lock(m_lock);
-    if (m_region_lookup_cache.range.has_value() && m_region_lookup_cache.range.value() == range && m_region_lookup_cache.region)
-        return m_region_lookup_cache.region.unsafe_ptr();
-
     auto* found_region = m_regions.find(range.base().get());
     if (!found_region)
         return nullptr;
@@ -225,8 +218,6 @@ Region* AddressSpace::find_region_from_range(VirtualRange const& range)
     auto rounded_range_size = page_round_up(range.size());
     if (rounded_range_size.is_error() || region->size() != rounded_range_size.value())
         return nullptr;
-    m_region_lookup_cache.range = range;
-    m_region_lookup_cache.region = *region;
     return region;
 }
 

+ 0 - 6
Kernel/Memory/AddressSpace.h

@@ -74,12 +74,6 @@ private:
 
     RedBlackTree<FlatPtr, NonnullOwnPtr<Region>> m_regions;
 
-    struct RegionLookupCache {
-        Optional<VirtualRange> range;
-        WeakPtr<Region> region;
-    };
-    RegionLookupCache m_region_lookup_cache;
-
     bool m_enforces_syscall_regions { false };
 };