@@ -212,7 +212,7 @@ void StackFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) {
212
212
// helper functions to the raw object interface.
213
213
NoSafepointScope no_safepoint;
214
214
Code code;
215
-
215
+ OS::Print ( " pc 0x% " Pp " fp 0x% " Pp " sp 0x% " Pp " \n " , pc_, fp_, sp_);
216
216
CompressedStackMaps::RawPayloadHandle maps;
217
217
CompressedStackMaps::RawPayloadHandle global_table;
218
218
@@ -303,7 +303,6 @@ void StackFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) {
303
303
// to an osr function. In each of these cases, all stack slots contain
304
304
// tagged pointers, so fall through.
305
305
#if defined(DEBUG)
306
- OS::Print (" pc 0x%" Pp " fp 0x%" Pp " sp 0x%" Pp " \n " , pc_, fp_, sp_);
307
306
if (FLAG_precompiled_mode) {
308
307
ASSERT (IsStubFrame ());
309
308
} else {
@@ -626,22 +625,26 @@ void StackFrameIterator::FrameSetIterator::Unpoison() {
626
625
StackFrame* StackFrameIterator::FrameSetIterator::NextFrame (bool validate) {
627
626
StackFrame* frame;
628
627
ASSERT (HasNext ());
628
+ if (StubCode::InCoroutineStub (stack_frame_.pc_ )) {
629
+ frame = &stack_frame_;
630
+ frame->sp_ = sp_;
631
+ frame->fp_ = fp_;
632
+ frame->pc_ = pc_;
633
+ OS::Print (" Coroutine stub frame\n " );
634
+ OS::Print (" pc 0x%" Pp " fp 0x%" Pp " sp 0x%" Pp " \n " , pc_, fp_, sp_);
635
+ sp_ = frame->GetCallerSp ();
636
+ fp_ = frame->GetCallerFp ();
637
+ pc_ = frame->GetCallerPc ();
638
+ Unpoison ();
639
+ return NextFrame (validate);
640
+ }
629
641
frame = &stack_frame_;
630
642
frame->sp_ = sp_;
631
643
frame->fp_ = fp_;
632
644
frame->pc_ = pc_;
633
645
sp_ = frame->GetCallerSp ();
634
646
fp_ = frame->GetCallerFp ();
635
647
pc_ = frame->GetCallerPc ();
636
- OS::Print (" pc 0x%" Pp " fp 0x%" Pp " sp 0x%" Pp " \n " , pc_, fp_, sp_);
637
- StackFrame nframe{frame->thread ()};
638
- nframe.fp_ = fp_;
639
- nframe.pc_ = pc_;
640
- nframe.sp_ = sp_;
641
- uword nsp_ = nframe.GetCallerSp ();
642
- uword nfp_ = nframe.GetCallerFp ();
643
- uword npc_ = nframe.GetCallerPc ();
644
- OS::Print (" pc 0x%" Pp " fp 0x%" Pp " sp 0x%" Pp " \n " , npc_, nfp_, nsp_);
645
648
Unpoison ();
646
649
ASSERT (!validate || frame->IsValid ());
647
650
return frame;
0 commit comments