diff options
author | 2016-02-01 10:34:47 -0800 | |
---|---|---|
committer | 2016-02-01 19:58:25 -0800 | |
commit | 1aa8ec2ccdd7bedb6d30d91c89f1e94ab23c4439 (patch) | |
tree | 7b2079631ed5d8350c63c7ed3f6d0393e951ce8c /runtime/class_table.cc | |
parent | c3cf1d2e35a45bd2e2c60fbc9c2a1a6a56dfc529 (diff) |
Fix up dex cache strings stored in classes
Previously we left the image pointer instead of fixing up the pointer
to the one in the BSS. This only showed up because JIT does the same
as boot image, bypassing null check.
Fixed a bug where oat files without embedded dex cache arrays would
get their dex cache arrays corrupted.
Added a non virtual class visitor for performance.
Bug: 26846419
Bug: 22858531
Change-Id: I8cd0d61e440f753b4628ddb8c932eb23a0a81027
Diffstat (limited to 'runtime/class_table.cc')
-rw-r--r-- | runtime/class_table.cc | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/runtime/class_table.cc b/runtime/class_table.cc index 2a4f0e01af..afb0556e1e 100644 --- a/runtime/class_table.cc +++ b/runtime/class_table.cc @@ -73,17 +73,6 @@ mirror::Class* ClassTable::UpdateClass(const char* descriptor, mirror::Class* kl return existing; } -bool ClassTable::Visit(ClassVisitor* visitor) { - for (ClassSet& class_set : classes_) { - for (GcRoot<mirror::Class>& root : class_set) { - if (!visitor->Visit(root.Read())) { - return false; - } - } - } - return true; -} - size_t ClassTable::NumZygoteClasses() const { size_t sum = 0; for (size_t i = 0; i < classes_.size() - 1; ++i) { @@ -183,12 +172,4 @@ size_t ClassTable::ReadFromMemory(uint8_t* ptr) { return read_count; } -void ClassTable::SetClassLoader(mirror::ClassLoader* class_loader) { - for (const ClassSet& class_set : classes_) { - for (const GcRoot<mirror::Class>& root : class_set) { - root.Read()->SetClassLoader(class_loader); - } - } -} - } // namespace art |