-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
Concurrent sweep #1681
Commits on Apr 2, 2015
-
Configuration menu - View commit details
-
Copy full SHA for 1fbaf72 - Browse repository at this point
Copy the full SHA 1fbaf72View commit details -
Configuration menu - View commit details
-
Copy full SHA for 207f2a7 - Browse repository at this point
Copy the full SHA 207f2a7View commit details -
[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.
Configuration menu - View commit details
-
Copy full SHA for 788b784 - Browse repository at this point
Copy the full SHA 788b784View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0caf65b - Browse repository at this point
Copy the full SHA 0caf65bView commit details -
Configuration menu - View commit details
-
Copy full SHA for e6699ba - Browse repository at this point
Copy the full SHA e6699baView commit details -
Configuration menu - View commit details
-
Copy full SHA for bfdfbe1 - Browse repository at this point
Copy the full SHA bfdfbe1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8e8efe3 - Browse repository at this point
Copy the full SHA 8e8efe3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7412b44 - Browse repository at this point
Copy the full SHA 7412b44View commit details -
Configuration menu - View commit details
-
Copy full SHA for fdfaade - Browse repository at this point
Copy the full SHA fdfaadeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3b1059b - Browse repository at this point
Copy the full SHA 3b1059bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 60078ae - Browse repository at this point
Copy the full SHA 60078aeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9cabf9a - Browse repository at this point
Copy the full SHA 9cabf9aView commit details -
[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.
Configuration menu - View commit details
-
Copy full SHA for 86eb54d - Browse repository at this point
Copy the full SHA 86eb54dView commit details -
Configuration menu - View commit details
-
Copy full SHA for b5682e3 - Browse repository at this point
Copy the full SHA b5682e3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 079804f - Browse repository at this point
Copy the full SHA 079804fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 24262e0 - Browse repository at this point
Copy the full SHA 24262e0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 440ca36 - Browse repository at this point
Copy the full SHA 440ca36View commit details -
[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.
Configuration menu - View commit details
-
Copy full SHA for 7627baa - Browse repository at this point
Copy the full SHA 7627baaView commit details -
Configuration menu - View commit details
-
Copy full SHA for fcdb3a9 - Browse repository at this point
Copy the full SHA fcdb3a9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0a4d98c - Browse repository at this point
Copy the full SHA 0a4d98cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 37068c1 - Browse repository at this point
Copy the full SHA 37068c1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 98d93ad - Browse repository at this point
Copy the full SHA 98d93adView commit details -
[sgen]
num_major_sections
must be updated atomically.It's updated from nursery collections and from the sweep thread concurrently.
Configuration menu - View commit details
-
Copy full SHA for 216713e - Browse repository at this point
Copy the full SHA 216713eView commit details -
1
Configuration menu - View commit details
-
Copy full SHA for f38b8ae - Browse repository at this point
Copy the full SHA f38b8aeView commit details -
[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.
Configuration menu - View commit details
-
Copy full SHA for b36a81c - Browse repository at this point
Copy the full SHA b36a81cView commit details -
[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.
Configuration menu - View commit details
-
Copy full SHA for dc9f7f0 - Browse repository at this point
Copy the full SHA dc9f7f0View commit details -
Configuration menu - View commit details
-
Copy full SHA for b5b493d - Browse repository at this point
Copy the full SHA b5b493dView commit details -
Configuration menu - View commit details
-
Copy full SHA for c24e166 - Browse repository at this point
Copy the full SHA c24e166View commit details -
Configuration menu - View commit details
-
Copy full SHA for 578e66c - Browse repository at this point
Copy the full SHA 578e66cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 68ba43a - Browse repository at this point
Copy the full SHA 68ba43aView commit details -
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.
Configuration menu - View commit details
-
Copy full SHA for f5f2d2f - Browse repository at this point
Copy the full SHA f5f2d2fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 14626e1 - Browse repository at this point
Copy the full SHA 14626e1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 75cfa06 - Browse repository at this point
Copy the full SHA 75cfa06View commit details -
Configuration menu - View commit details
-
Copy full SHA for c4b9b5c - Browse repository at this point
Copy the full SHA c4b9b5cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1639bef - Browse repository at this point
Copy the full SHA 1639befView commit details -
Configuration menu - View commit details
-
Copy full SHA for ec2572d - Browse repository at this point
Copy the full SHA ec2572dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 55a2ff8 - Browse repository at this point
Copy the full SHA 55a2ff8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8333c2f - Browse repository at this point
Copy the full SHA 8333c2fView commit details -
[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.
Configuration menu - View commit details
-
Copy full SHA for 6fb229a - Browse repository at this point
Copy the full SHA 6fb229aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 183dc29 - Browse repository at this point
Copy the full SHA 183dc29View commit details -
[sgen] Workers use thread pool.
So we only have one worker thread that's used both for marking and, later, for sweeping, too.
Configuration menu - View commit details
-
Copy full SHA for 83dfb12 - Browse repository at this point
Copy the full SHA 83dfb12View commit details -
Configuration menu - View commit details
-
Copy full SHA for 01930f5 - Browse repository at this point
Copy the full SHA 01930f5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9bcdbf2 - Browse repository at this point
Copy the full SHA 9bcdbf2View commit details -
Configuration menu - View commit details
-
Copy full SHA for c1385d2 - Browse repository at this point
Copy the full SHA c1385d2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 74065cb - Browse repository at this point
Copy the full SHA 74065cbView commit details -
Configuration menu - View commit details
-
Copy full SHA for d62f8e2 - Browse repository at this point
Copy the full SHA d62f8e2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8278dd3 - Browse repository at this point
Copy the full SHA 8278dd3View commit details
Commits on Apr 3, 2015
-
Configuration menu - View commit details
-
Copy full SHA for a4e8ad3 - Browse repository at this point
Copy the full SHA a4e8ad3View commit details -
Configuration menu - View commit details
-
Copy full SHA for ae4c1ef - Browse repository at this point
Copy the full SHA ae4c1efView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1a43231 - Browse repository at this point
Copy the full SHA 1a43231View commit details