diff options
Diffstat (limited to 'compiler/image_writer.cc')
| -rw-r--r-- | compiler/image_writer.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/compiler/image_writer.cc b/compiler/image_writer.cc index 4ff5dd2b8b..1c73dfab37 100644 --- a/compiler/image_writer.cc +++ b/compiler/image_writer.cc @@ -398,12 +398,18 @@ void ImageWriter::SetImageBinSlot(mirror::Object* object, BinSlot bin_slot) { // Before we stomp over the lock word, save the hash code for later. LockWord lw(object->GetLockWord(false)); switch (lw.GetState()) { - case LockWord::kFatLocked: { - LOG(FATAL) << "Fat locked object " << object << " found during object copy"; - break; - } + case LockWord::kFatLocked: + FALLTHROUGH_INTENDED; case LockWord::kThinLocked: { - LOG(FATAL) << "Thin locked object " << object << " found during object copy"; + std::ostringstream oss; + bool thin = (lw.GetState() == LockWord::kThinLocked); + oss << (thin ? "Thin" : "Fat") + << " locked object " << object << "(" << object->PrettyTypeOf() + << ") found during object copy"; + if (thin) { + oss << ". Lock owner:" << lw.ThinLockOwner(); + } + LOG(FATAL) << oss.str(); break; } case LockWord::kUnlocked: |