Prevent ArtMethod clearing race

There was race condition where the GC would be visiting the methods
of a class while the class linker overwrote the contents with 0xFE
when copying to a new array.

Since the GC is holding the class table lock at this time, we can
use this lock in the class linker to prevent the race.

Bug: 28699001

(cherry picked from commit 10c5f56423feaf3eadb3d4c09c61d2b998404162)

Change-Id: I5ddca93106cb8e48962cf44e5ce434c45e05cd0c
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index e7a560b..94872ba 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -6968,6 +6968,7 @@
     }
     // Put some random garbage in old methods to help find stale pointers.
     if (methods != old_methods && old_methods != nullptr) {
+      WriterMutexLock mu(self, ClassTableForClassLoader(klass->GetClassLoader())->GetLock());
       memset(old_methods, 0xFEu, old_size);
     }
   } else {