diff options
| author | 2016-06-02 11:48:30 -0700 | |
|---|---|---|
| committer | 2016-06-02 18:03:41 -0700 | |
| commit | f284d448e3edd428b6ade473d0993028638b2064 (patch) | |
| tree | e24f57f952f4e6c850ec910de3361aef6340727a /runtime/class_table-inl.h | |
| parent | 3f432d5a7c184b7580bd5aba27158c1455c328ff (diff) | |
Hold dex caches live in class table
Prevents temporary dex caches being unloaded for the same dex file.
Usually this is OK, but if someone resolved a string in that dex
cache, it could leave stale pointers in BSS. Also it can use extra
memory in linear alloc if we allocate dex cache arrays multiple
times.
Bug: 29083330
Change-Id: Ia44668f013ceef1f5eb80f653a48d0f8004548c9
Diffstat (limited to 'runtime/class_table-inl.h')
| -rw-r--r-- | runtime/class_table-inl.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/runtime/class_table-inl.h b/runtime/class_table-inl.h index 42e320ae71..d52365df6d 100644 --- a/runtime/class_table-inl.h +++ b/runtime/class_table-inl.h @@ -29,7 +29,7 @@ void ClassTable::VisitRoots(Visitor& visitor) { visitor.VisitRoot(root.AddressWithoutBarrier()); } } - for (GcRoot<mirror::Object>& root : dex_files_) { + for (GcRoot<mirror::Object>& root : strong_roots_) { visitor.VisitRoot(root.AddressWithoutBarrier()); } } @@ -42,7 +42,7 @@ void ClassTable::VisitRoots(const Visitor& visitor) { visitor.VisitRoot(root.AddressWithoutBarrier()); } } - for (GcRoot<mirror::Object>& root : dex_files_) { + for (GcRoot<mirror::Object>& root : strong_roots_) { visitor.VisitRoot(root.AddressWithoutBarrier()); } } |