Relates :
|
Currently when marking an object array it is split up to avoid one worker doing all the work. The code iterates over a chunk of the array and then push the rest to the marking stack, the problem with this is that if the iteration it self don't find any new pointers to follow, the next thing to do is to handle the next chunk in the array. This make work-stealing problematic for this case and the performance far from optimal. There are many schemes that can be used to improve the situation and we might want to dig into this more at some point but an easy fix to push the rest of the array onto the mark stack before doing the iteration actually helps quite a bit, since the window when work stealing is possible increases a lot.