+ if (f == nil)
+ return (frp);
+ /*
+ * Starting at the current stack frame,
+ * walk backwards looking for a symbol
+ * match. Beware of local blocks which
+ * have a back pointer but no stack frame.
+ */
+ p = whatblock(frp->save_pc);
+ while (p != f) {
+ if (p == program) {
+ frp = nil;
+ break;
+ }
+ if (isinline(p)) {
+ p = container(p);
+ continue;
+ }
+ frp = nextframe(frp);
+ if (frp == nil)
+ break;
+ p = whatblock(frp->save_pc);