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/class_linker.cc b/runtime/class_linker.cc
index f3f7afd..0563f38 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -969,6 +969,11 @@
CHECK(class_root != nullptr);
SetClassRoot(ClassRoot::kJavaLangInvokeFieldVarHandle, class_root);
+ // Create java.lang.invoke.StaticFieldVarHandle.class root
+ class_root = FindSystemClass(self, "Ljava/lang/invoke/StaticFieldVarHandle;");
+ CHECK(class_root != nullptr);
+ SetClassRoot(ClassRoot::kJavaLangInvokeStaticFieldVarHandle, class_root);
+
// Create java.lang.invoke.ArrayElementVarHandle.class root
class_root = FindSystemClass(self, "Ljava/lang/invoke/ArrayElementVarHandle;");
CHECK(class_root != nullptr);