Fix race in root marking.

There was a race which caused the class linker / intern table to not
become dirty after adding a root. We now guard the is dirty flag by
the corresponding locks to prevent this from occuring. This was
causing roots to be occasionally missed.

Also fixes the bug where we occasionally scan more cards than

Bug: 10626133

Change-Id: I0f6e72d92035ff463954d66988ef610ea0df61be
7 files changed