Don't mark new non-moving objs in young GC

During a young GC, there is a small window during which we allowed
non-moving objects on the allocation stack to be pushed to marking
stack (and thereby setting the corresponding live-bit) while
done_scanning_ is still false. If a heapdump is taken after such a
GC cycle, it leads to visiting such objects twice.
This change fixes the problem by ensuring that objects on allocation
stack are not marked in a GC cycle, as expected.

Test: art/test/testrunner/testrunner.py --target
Test: Flash device, adb shell am dumpheap <gms|systemui|system_server>
Bug: 117426281
Change-Id: Icbcff2596241f1f87d9cebea859de3dd10041036
1 file changed