Fix build.

Build broken due to a rare lock checking violation happening during
oat generation. Added a new lock level for the mark stack lock since
it may be acquired with the globals/pins lock.

Change-Id: I944ae0700c66ad050fe3d23aba2f2c377c5df799
diff --git a/runtime/gc/collector/mark_sweep.cc b/runtime/gc/collector/mark_sweep.cc
index 30c295b..2f68f8e 100644
--- a/runtime/gc/collector/mark_sweep.cc
+++ b/runtime/gc/collector/mark_sweep.cc
@@ -144,7 +144,7 @@
       cleared_reference_list_(NULL),
       gc_barrier_(new Barrier(0)),
       large_object_lock_("mark sweep large object lock", kMarkSweepLargeObjectLock),
-      mark_stack_lock_("mark sweep mark stack lock"),
+      mark_stack_lock_("mark sweep mark stack lock", kMarkSweepMarkStackLock),
       is_concurrent_(is_concurrent),
       clear_soft_references_(false) {
 }
diff --git a/runtime/gc/collector/mark_sweep.h b/runtime/gc/collector/mark_sweep.h
index d5f4042..fdd0c86 100644
--- a/runtime/gc/collector/mark_sweep.h
+++ b/runtime/gc/collector/mark_sweep.h
@@ -446,7 +446,7 @@
 
   UniquePtr<Barrier> gc_barrier_;
   Mutex large_object_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
-  Mutex mark_stack_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
+  Mutex mark_stack_lock_ ACQUIRED_AFTER(Locks::classlinker_classes_lock_);
 
   const bool is_concurrent_;
 
diff --git a/runtime/locks.h b/runtime/locks.h
index 88d05db..f63e2b1 100644
--- a/runtime/locks.h
+++ b/runtime/locks.h
@@ -38,6 +38,7 @@
   kAbortLock,
   kJdwpSocketLock,
   kAllocSpaceLock,
+  kMarkSweepMarkStackLock,
   kDefaultMutexLevel,
   kMarkSweepLargeObjectLock,
   kPinTableLock,