summaryrefslogtreecommitdiff
path: root/runtime/class_linker.cc
diff options
context:
space:
mode:
author Orion Hodson <oth@google.com> 2021-06-25 08:55:22 +0100
committer Vladimir Marko <vmarko@google.com> 2021-07-06 13:58:08 +0000
commitdd411969bb486c36081926d61dbcc0bfbc8066a5 (patch)
treeaa0601299b351d41c349e64ed468cb2c9b95e6f4 /runtime/class_linker.cc
parentf040914a122be86e280efe5e31af1168f2b7c72e (diff)
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
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r--runtime/class_linker.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index f3f7afdc3e..0563f3830b 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -969,6 +969,11 @@ bool ClassLinker::InitWithoutImage(std::vector<std::unique_ptr<const DexFile>> b
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);