Home | History | Annotate | Download | only in error_handling

Lines Matching refs:frame

68 static void EHPrintFrame(sstream_t* ss, EHFrame* frame) {
73 ssprintf(ss, "\"frame_ptr\": %u,\n", frame->frame_ptr);
74 ssprintf(ss, "\"prog_ctr\": %u,\n", frame->prog_ctr);
78 start = frame->frame_ptr + 8;
80 start = frame->frame_ptr + 16;
83 for (i = start; i < frame->next_ptr && i - start < MAX_FRAME_CAP; i += 4) {
106 EHFrame* frame) {
110 frame->prog_ctr = portable_context->prog_ctr;
111 frame->frame_ptr = portable_context->frame_ptr;
112 frame->next_ptr = EHReadPointer(portable_context->frame_ptr);
117 int EHUnwindFrame(EHFrame* frame) {
121 // Verify the current frame
122 if (NULL == frame) return 0;
124 frame_ptr = frame->frame_ptr;
125 next = frame->next_ptr;
130 // Abort if frame is > 10K
133 // Unwind the frame
134 frame->frame_ptr = next;
135 frame->next_ptr = EHReadPointer(frame->frame_ptr);
137 frame->prog_ctr = EHReadPointer(frame_ptr + 8);
139 frame->prog_ctr = EHReadPointer(frame_ptr + 4);
157 EHFrame frame;
166 EHGetTopFrame(&ss, context, &frame);
172 EHPrintFrame(&ss, &frame);
174 } while (EHUnwindFrame(&frame));
176 /* End frame LIST and context DICT */