ARM64: Fix WriteBarrier
authorKyungwoo Lee <kyulee@microsoft.com>
Wed, 15 Jun 2016 22:57:19 +0000 (15:57 -0700)
committerKyungwoo Lee <kyulee@microsoft.com>
Thu, 16 Jun 2016 17:57:22 +0000 (10:57 -0700)
commit49c2eec8568b4471f1dcbc0e0f4016ff62c7c989
treef9f58a246c35100c42148b57aff90144de7f9226
parentaaf5e7d6a1fa53576bbaa057eb7b7147281284cf
ARM64: Fix WriteBarrier

I think this finally fixes most of long outstanding GC issues that appear in different
forms so far that include #4877, #4879, #4890 and more.

The issues was WriteBarrier implementation.
When we update card table, the address has been already incremented by 8.

With this fix, all corefx tests seem to run on xunit framework without crashing.
I verified this with an out-of-date build locally, so there are not found
assembly errors like System.Runtime.Extensions with different versions, though.
These are what I tested so far that safely finished all runs with very high percentage of pass.
System.Collections.Tests
System.Dynamic.Runtime.Tests
System.Linq.Expressions.Tests
System.Linq.Parallel.Tests

Potentially more coreclr tests will pass. I will update them as tests go.
src/vm/arm64/asmhelpers.asm
tests/arm64/Tests.lst