Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Concurrent sweep #1681

Merged
merged 50 commits into from
Apr 9, 2015
Merged

Concurrent sweep #1681

merged 50 commits into from
Apr 9, 2015

Commits on Apr 2, 2015

  1. Configuration menu
    Copy the full SHA
    1fbaf72 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    207f2a7 View commit details
    Browse the repository at this point in the history
  3. [sgen] Guard allocated block array with a mutex.

    Both the concurrent sweep thread as well as the nursery collector will
    need access to the block array.  Until we've made that lock-free,
    we're simply using a lock.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    788b784 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    0caf65b View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    e6699ba View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    bfdfbe1 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    8e8efe3 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    7412b44 View commit details
    Browse the repository at this point in the history
  9. [sgen] Concurrent sweep

    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    fdfaade View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    3b1059b View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    60078ae View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    9cabf9a View commit details
    Browse the repository at this point in the history
  13. [sgen] Traverse block array from high to low in sweep thread.

    The nursery collector requires that sweeping has finished, and instead
    of waiting it will cooperate with the sweep thread to finish more
    quickly.  The sweep thread will traverse the block array from high
    indexes to low ones while the nursery collector will go from low to
    high.  They will contend only very briefly when they meet somewhere in
    the middle.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    86eb54d View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    b5682e3 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    079804f View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    24262e0 View commit details
    Browse the repository at this point in the history
  17. [sgen] Comments.

    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    440ca36 View commit details
    Browse the repository at this point in the history
  18. [sgen] Fix initial block state.

    New blocks need to be swept if they're allocated during a non-concurrent major
    collection or while a concurrent major collection is running.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    7627baa View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    fcdb3a9 View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    0a4d98c View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    37068c1 View commit details
    Browse the repository at this point in the history
  22. Configuration menu
    Copy the full SHA
    98d93ad View commit details
    Browse the repository at this point in the history
  23. [sgen] num_major_sections must be updated atomically.

    It's updated from nursery collections and from the sweep thread concurrently.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    216713e View commit details
    Browse the repository at this point in the history
  24. 1 Configuration menu
    Copy the full SHA
    f38b8ae View commit details
    Browse the repository at this point in the history
  25. [sgen] Simplify allowance logic.

    Don't use the difference to the last collection, but just calculate the maximum heap
    size and trigger a collection when it's reached.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    b36a81c View commit details
    Browse the repository at this point in the history
  26. [sgen] Whenever we wait for sweep, help the sweeping thread.

    And since we always wait for the sweep now we can do iterations over
    the blocks without taking the lock.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    dc9f7f0 View commit details
    Browse the repository at this point in the history
  27. Configuration menu
    Copy the full SHA
    b5b493d View commit details
    Browse the repository at this point in the history
  28. [sgen] Remove dead macros.

    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    c24e166 View commit details
    Browse the repository at this point in the history
  29. Configuration menu
    Copy the full SHA
    578e66c View commit details
    Browse the repository at this point in the history
  30. [sgen] Clean up FIXMEs.

    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    68ba43a View commit details
    Browse the repository at this point in the history
  31. [sgen] Lock-free block array.

    We tag pointers to blocks that are currently being processed.  Those
    must not even be dereferenced by other threads because the sweep
    thread might free them at any point.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    f5f2d2f View commit details
    Browse the repository at this point in the history
  32. Configuration menu
    Copy the full SHA
    14626e1 View commit details
    Browse the repository at this point in the history
  33. Configuration menu
    Copy the full SHA
    75cfa06 View commit details
    Browse the repository at this point in the history
  34. Configuration menu
    Copy the full SHA
    c4b9b5c View commit details
    Browse the repository at this point in the history
  35. [sgen] Comments.

    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    1639bef View commit details
    Browse the repository at this point in the history
  36. Configuration menu
    Copy the full SHA
    ec2572d View commit details
    Browse the repository at this point in the history
  37. Configuration menu
    Copy the full SHA
    55a2ff8 View commit details
    Browse the repository at this point in the history
  38. [sgen] Fix a comment.

    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    8333c2f View commit details
    Browse the repository at this point in the history
  39. [sgen] Implement a simple thread pool and do concurrent sweep with it.

    We cannot start threads during stop-the-world pauses (some thread APIs,
    including pthreads, can deadlock), and we want to do marking and sweeping
    with the same threads.  This new thread pool facility will allow that.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    6fb229a View commit details
    Browse the repository at this point in the history
  40. Configuration menu
    Copy the full SHA
    183dc29 View commit details
    Browse the repository at this point in the history
  41. [sgen] Workers use thread pool.

    So we only have one worker thread that's used both for marking and,
    later, for sweeping, too.
    schani committed Apr 2, 2015
    Configuration menu
    Copy the full SHA
    83dfb12 View commit details
    Browse the repository at this point in the history
  42. Configuration menu
    Copy the full SHA
    01930f5 View commit details
    Browse the repository at this point in the history
  43. Configuration menu
    Copy the full SHA
    9bcdbf2 View commit details
    Browse the repository at this point in the history
  44. Configuration menu
    Copy the full SHA
    c1385d2 View commit details
    Browse the repository at this point in the history
  45. Configuration menu
    Copy the full SHA
    74065cb View commit details
    Browse the repository at this point in the history
  46. Configuration menu
    Copy the full SHA
    d62f8e2 View commit details
    Browse the repository at this point in the history
  47. Configuration menu
    Copy the full SHA
    8278dd3 View commit details
    Browse the repository at this point in the history

Commits on Apr 3, 2015

  1. [sgen] Remove a debug printf.

    schani committed Apr 3, 2015
    Configuration menu
    Copy the full SHA
    a4e8ad3 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ae4c1ef View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1a43231 View commit details
    Browse the repository at this point in the history