| Index: runtime/vm/stack_frame.cc
|
| diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
|
| index f54ee8afdb368cc8eb2e079c3b9132349f683c95..ebfe69ef7a39f9ecfccec78c91a2b7598bfc0eab 100644
|
| --- a/runtime/vm/stack_frame.cc
|
| +++ b/runtime/vm/stack_frame.cc
|
| @@ -28,6 +28,7 @@ bool StackFrame::IsStubFrame() const {
|
| NoSafepointScope no_safepoint;
|
| #endif
|
| RawCode* code = GetCodeObject();
|
| + ASSERT(code != Object::null());
|
| const intptr_t cid = code->ptr()->owner_->GetClassId();
|
| ASSERT(cid == kNullCid || cid == kClassCid || cid == kFunctionCid);
|
| return cid == kNullCid || cid == kClassCid;
|
| @@ -100,8 +101,7 @@ void StackFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) {
|
| Array maps;
|
| maps = Array::null();
|
| Stackmap map;
|
| - const uword entry = reinterpret_cast<uword>(code.instructions()->ptr()) +
|
| - Instructions::HeaderSize();
|
| + const uword entry = code.EntryPoint();
|
| map = code.GetStackmap(pc() - entry, &maps, &map);
|
| if (!map.IsNull()) {
|
| RawObject** first = reinterpret_cast<RawObject**>(sp());
|
| @@ -150,6 +150,8 @@ void StackFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) {
|
| visitor->VisitPointers(first, last);
|
| return;
|
| }
|
| +
|
| + // No stack map, fall through.
|
| }
|
| // For normal unoptimized Dart frames and Stub frames each slot
|
| // between the first and last included are tagged objects.
|
|
|