| Index: runtime/vm/verifier.cc
|
| ===================================================================
|
| --- runtime/vm/verifier.cc (revision 45122)
|
| +++ runtime/vm/verifier.cc (working copy)
|
| @@ -22,21 +22,26 @@
|
|
|
| void VerifyObjectVisitor::VisitObject(RawObject* raw_obj) {
|
| if (raw_obj->IsHeapObject()) {
|
| - switch (mark_expectation_) {
|
| - case kForbidMarked:
|
| + uword raw_addr = RawObject::ToAddr(raw_obj);
|
| + if (raw_obj->IsFreeListElement()) {
|
| if (raw_obj->IsMarked()) {
|
| - uword raw_addr = RawObject::ToAddr(raw_obj);
|
| - FATAL1("Marked object encountered %#" Px "\n", raw_addr);
|
| + FATAL1("Marked free list element encountered %#" Px "\n", raw_addr);
|
| }
|
| - break;
|
| - case kAllowMarked:
|
| - break;
|
| - case kRequireMarked:
|
| - if (!raw_obj->IsMarked()) {
|
| - uword raw_addr = RawObject::ToAddr(raw_obj);
|
| - FATAL1("Unmarked object encountered %#" Px "\n", raw_addr);
|
| + } else {
|
| + switch (mark_expectation_) {
|
| + case kForbidMarked:
|
| + if (raw_obj->IsMarked()) {
|
| + FATAL1("Marked object encountered %#" Px "\n", raw_addr);
|
| + }
|
| + break;
|
| + case kAllowMarked:
|
| + break;
|
| + case kRequireMarked:
|
| + if (!raw_obj->IsMarked()) {
|
| + FATAL1("Unmarked object encountered %#" Px "\n", raw_addr);
|
| + }
|
| + break;
|
| }
|
| - break;
|
| }
|
| }
|
| allocated_set_->Add(raw_obj);
|
|
|