VarHandle: add StaticFieldVarHandle class

Add StaticFieldVarHandle class to keep a live reference to the
declaring class for the target field of VarHandle's targeting static
fields.

Bug: 191980149
Test: art/test.py --host -r -g
Change-Id: I3a1cada6591d146b8f9fc9066105e3b617290185
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index 4676ded..21e9c31 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -4507,6 +4507,8 @@
       down_cast<mirror::Field*>(ref)->VisitTarget(visit);
     } else if (art::GetClassRoot<art::mirror::MethodHandle>()->IsAssignableFrom(klass)) {
       down_cast<mirror::MethodHandle*>(ref)->VisitTarget(visit);
+    } else if (art::GetClassRoot<art::mirror::StaticFieldVarHandle>()->IsAssignableFrom(klass)) {
+      down_cast<mirror::StaticFieldVarHandle*>(ref)->VisitTarget(visit);
     } else if (art::GetClassRoot<art::mirror::FieldVarHandle>()->IsAssignableFrom(klass)) {
       down_cast<mirror::FieldVarHandle*>(ref)->VisitTarget(visit);
     } else if (art::GetClassRoot<art::mirror::DexCache>()->IsAssignableFrom(klass)) {