Use handle in one case that spans a gc-point.

Bug: 16689428
Change-Id: Ib209d2ca1e7024bffb2bc17c5b5899e231c0e2ca
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index d52992c..db42146 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -4191,9 +4191,9 @@
         klass->GetSuperClass()->GetVTableLength();
     size_t actual_count = klass->GetSuperClass()->GetVTableLength();
     CHECK_LE(actual_count, max_count);
-    StackHandleScope<3> hs(self);
+    StackHandleScope<4> hs(self);
+    Handle<mirror::Class> super_class(hs.NewHandle(klass->GetSuperClass()));
     Handle<mirror::ObjectArray<mirror::ArtMethod>> vtable;
-    mirror::Class* super_class = klass->GetSuperClass();
     if (super_class->ShouldHaveEmbeddedImtAndVTable()) {
       vtable = hs.NewHandle(AllocArtMethodArray(self, max_count));
       if (UNLIKELY(vtable.Get() == nullptr)) {
@@ -4205,7 +4205,7 @@
         vtable->Set<false>(i, super_class->GetVTableEntry(i));
       }
     } else {
-      CHECK(super_class->GetVTable() != nullptr) << PrettyClass(super_class);
+      CHECK(super_class->GetVTable() != nullptr) << PrettyClass(super_class.Get());
       vtable = hs.NewHandle(super_class->GetVTable()->CopyOf(self, max_count));
       if (UNLIKELY(vtable.Get() == nullptr)) {
         CHECK(self->IsExceptionPending());  // OOME.