diff options
author | 2018-02-01 19:09:59 +0300 | |
---|---|---|
committer | 2018-03-13 17:01:21 +0300 | |
commit | be4c2bd892bd167a50b4dfa7133e70a809197698 (patch) | |
tree | 150898533382fb98c160e265a5f31f66ded754f0 /runtime/art_method.cc | |
parent | bfce631960ae2ab381180beb55cf34ab3b445aaa (diff) |
Fix dangling SingleImplementations left after class unloading
Test: make test-art-host, manual using sample code
bug: 73143991
Change-Id: I4d56b39c69d4ed60266a8b90b9e9d18fba7b8227
Diffstat (limited to 'runtime/art_method.cc')
-rw-r--r-- | runtime/art_method.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/runtime/art_method.cc b/runtime/art_method.cc index bbc60072b6..f3c495957f 100644 --- a/runtime/art_method.cc +++ b/runtime/art_method.cc @@ -88,13 +88,18 @@ ArtMethod* ArtMethod::GetNonObsoleteMethod() { } } +template <ReadBarrierOption kReadBarrierOption> ArtMethod* ArtMethod::GetSingleImplementation(PointerSize pointer_size) { - if (!IsAbstract()) { + if (!IsAbstract<kReadBarrierOption>()) { // A non-abstract's single implementation is itself. return this; } return reinterpret_cast<ArtMethod*>(GetDataPtrSize(pointer_size)); } +template ArtMethod* ArtMethod::GetSingleImplementation<ReadBarrierOption::kWithReadBarrier>( + PointerSize pointer_size); +template ArtMethod* ArtMethod::GetSingleImplementation<ReadBarrierOption::kWithoutReadBarrier>( + PointerSize pointer_size); ArtMethod* ArtMethod::FromReflectedMethod(const ScopedObjectAccessAlreadyRunnable& soa, jobject jlr_method) { |