diff options
| author | 2016-04-28 14:56:54 -0700 | |
|---|---|---|
| committer | 2016-04-29 17:33:22 -0700 | |
| commit | 56fdd0e63812764bbeb8cc52e376d3fd1f270052 (patch) | |
| tree | 6988e995bf02f788066fb6e748cd3049fe87d31a /runtime/stack.cc | |
| parent | 9d05b59a8595cf7eeece1795eb65b6b8706aad45 (diff) | |
ART: Disambiguate access-checks mode from lock-counting
Lock-counting (when structural locking verification failed) is a
special sub-mode of access-checks and must be disambiguated, because
we currently use access-checks mode class-wide when at least one
method soft-fails, but do not stop the compiler/JIT to compile
the "working" methods. So we may end up in the access-checks
interpreter for a working method through deopt without knowing
which locks are already held.
Bug: 28351535
(cherry picked from commit f517e283d477dd2ae229ee3f054120c6953895db)
Change-Id: I083032f064d88df8f8f0611ad8b57d1b39cd09fb
Diffstat (limited to 'runtime/stack.cc')
| -rw-r--r-- | runtime/stack.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/runtime/stack.cc b/runtime/stack.cc index e56d35a91e..a5ca527aa2 100644 --- a/runtime/stack.cc +++ b/runtime/stack.cc @@ -950,7 +950,7 @@ int StackVisitor::GetVRegOffsetFromQuickCode(const DexFile::CodeItem* code_item, } } -void LockCountData::AddMonitorInternal(Thread* self, mirror::Object* obj) { +void LockCountData::AddMonitor(Thread* self, mirror::Object* obj) { if (obj == nullptr) { return; } @@ -967,7 +967,7 @@ void LockCountData::AddMonitorInternal(Thread* self, mirror::Object* obj) { monitors_->push_back(obj); } -void LockCountData::RemoveMonitorInternal(Thread* self, const mirror::Object* obj) { +void LockCountData::RemoveMonitorOrThrow(Thread* self, const mirror::Object* obj) { if (obj == nullptr) { return; } @@ -1000,7 +1000,7 @@ void MonitorExitHelper(Thread* self, mirror::Object* obj) NO_THREAD_SAFETY_ANALY obj->MonitorExit(self); } -bool LockCountData::CheckAllMonitorsReleasedInternal(Thread* self) { +bool LockCountData::CheckAllMonitorsReleasedOrThrow(Thread* self) { DCHECK(self != nullptr); if (monitors_ != nullptr) { if (!monitors_->empty()) { |