summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_driver.cc
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2015-07-23 16:01:26 -0700
committer Mathieu Chartier <mathieuc@google.com> 2015-07-24 11:50:43 -0700
commitda7c650022a974be10e2f00fa07d5109e3d8826f (patch)
treeeb713496fee4a6885a3c240309e5efc78c6774cf /compiler/driver/compiler_driver.cc
parent2a7ea34cda9bf776339dfc7f4a22ab01f9525f2d (diff)
Visit class native roots from VisitReferences
Visit class roots when we call Class::VisitReferences instead of in the class linker. This makes it easier to implement class unloading since unmarked classes won't have their roots visited by the class linker. Bug: 22181835 Change-Id: I63f31e5ebef7b2a0b764b3ba3cb038b3f561b379
Diffstat (limited to 'compiler/driver/compiler_driver.cc')
-rw-r--r--compiler/driver/compiler_driver.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc
index 05705a2d31..a35f306612 100644
--- a/compiler/driver/compiler_driver.cc
+++ b/compiler/driver/compiler_driver.cc
@@ -883,8 +883,13 @@ class ClinitImageUpdate {
}
// java.lang.Reference visitor for VisitReferences.
- void operator()(mirror::Class* /* klass */, mirror::Reference* /* ref */) const {
- }
+ void operator()(mirror::Class* klass ATTRIBUTE_UNUSED, mirror::Reference* ref ATTRIBUTE_UNUSED)
+ const {}
+
+ // Ignore class native roots.
+ void VisitRootIfNonNull(mirror::CompressedReference<mirror::Object>* root ATTRIBUTE_UNUSED)
+ const {}
+ void VisitRoot(mirror::CompressedReference<mirror::Object>* root ATTRIBUTE_UNUSED) const {}
void Walk() SHARED_REQUIRES(Locks::mutator_lock_) {
// Use the initial classes as roots for a search.