summaryrefslogtreecommitdiff
path: root/runtime/art_method.cc
diff options
context:
space:
mode:
author Alexey Grebenkin <a.grebenkin@samsung.com> 2018-02-01 19:09:59 +0300
committer Artem Udovichenko <artem.u@samsung.com> 2018-03-13 17:01:21 +0300
commitbe4c2bd892bd167a50b4dfa7133e70a809197698 (patch)
tree150898533382fb98c160e265a5f31f66ded754f0 /runtime/art_method.cc
parentbfce631960ae2ab381180beb55cf34ab3b445aaa (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.cc7
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) {