1. 01 Jun, 2020 2 commits
  2. 30 May, 2020 2 commits
    • Rémi Bernon's avatar
      ntdll: Use the free ranges in find_reserved_free_area. · 1f25c6ed
      Rémi Bernon authored
      Instead of the view rbtree.
      
      Testing shows a 20% FPS increase in We Happy Few, from 80-100fps to
      100-120fps right after starting a new game.
      Signed-off-by: 's avatarRémi Bernon <rbernon@codeweavers.com>
      Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
      1f25c6ed
    • Rémi Bernon's avatar
      ntdll: Introduce free_ranges indexing sequence. · eb716839
      Rémi Bernon authored
      This is an ordered range sequence used to keep track of free address
      ranges.
      
      The sequence contains an entry for every free address range, with base
      pointing to the first free address and end pointing to the next first
      used address. It is initialized to [0, ~0] for convenience, so that
      there's always a range before or after a view.
      
      In the worst case scenario, where memory is entirely fragmented, there's
      going to be one more range than allocated views, but in general there's
      much less. In any case, because of cache locality, iterating in the
      contiguous sequence is much faster than traversing the view rbtree.
      
      In theory there can be a performance hit when allocating or deleting a
      view, as we may have to move the end of the sequence when a range is
      split or merged. But in practice and given the usually low number of
      ranges, this is not an issue.
      
      The default and maximum sequence size can hold up to 65536 ranges, which
      is much more than enough in general, and performance is probably going
      to be bad before reaching the limit anyway. The code currently asserts
      when reaching the limit, although we could possibly grow the sequence.
      Signed-off-by: 's avatarRémi Bernon <rbernon@codeweavers.com>
      Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
      eb716839
  3. 29 May, 2020 36 commits