Clear inline caches if a ProfilingInfo gets revived.
This avoids stalled class references.
Bug: 27398183
Bug: 23128949
Bug: 26846185
Change-Id: I9539215241708e26fef887e02201ce1feabc2d1a
diff --git a/runtime/jit/profiling_info.h b/runtime/jit/profiling_info.h
index d54f3df..a8c056c 100644
--- a/runtime/jit/profiling_info.h
+++ b/runtime/jit/profiling_info.h
@@ -134,13 +134,17 @@
return saved_entry_point_;
}
+ void ClearInlineCaches() {
+ memset(&cache_, 0, number_of_inline_caches_ * sizeof(InlineCache));
+ }
+
private:
ProfilingInfo(ArtMethod* method, const std::vector<uint32_t>& entries)
: number_of_inline_caches_(entries.size()),
method_(method),
is_method_being_compiled_(false),
saved_entry_point_(nullptr) {
- memset(&cache_, 0, number_of_inline_caches_ * sizeof(InlineCache));
+ ClearInlineCaches();
for (size_t i = 0; i < number_of_inline_caches_; ++i) {
cache_[i].dex_pc_ = entries[i];
}