Improve nursery pining performance by making sure scan starts are filled.
authorRodrigo Kumpera <kumpera@gmail.com>
Sat, 10 Dec 2011 16:16:52 +0000 (14:16 -0200)
committerRodrigo Kumpera <kumpera@gmail.com>
Sat, 10 Dec 2011 16:24:35 +0000 (14:24 -0200)
commit1283f5d5e2489e9195451a8f9da1de0ced4da371
tree0493d101e48a00fa606339a7597543aa6a7e7385
parent2b9972b797bdf91db8fb57412c3ffc0d8e1b533d
Improve nursery pining performance by making sure scan starts are filled.

* sgen-gc.c (set_nursery_scan_start): Only set scan start if the
new value is smaller than the previous one. This check is racy, but
it's a benign one.

* sgen-gc.c (mono_gc_try_alloc_obj_nolock): Try harder filling
scan starts. With this change we go from a 3-20% fill rate to
over 90% on average.

Pinning performance increased 6x on an extreme benchmark.
mono/metadata/sgen-gc.c