FCode (p4_dot_chain)
{
register const p4char* nfa;
register Link* link = (void*) FX_POP;
if (! link->next) { p4_outs ("Empty" ); return; }
FX (p4_cr);
FX (p4_start_Q_cr);
while ((link = link->next))
{
# if defined PFE_CALL_THREADING
{
nfa = p4_dladdr (link->exec, 0);
if (! nfa) { p4_outf ("%8p: %08p (???)" , link, link->exec); }
else { p4_outf ("%8p: %08p %s" , link, link->exec, nfa); }
}
# else
if ((void*)(link->exec) == (void*) (&(link->exec) + 1))
{
nfa = p4_dladdr (link->exec, 0);
if (! nfa) { p4_outf ("%8p: %08p (???)" , link, link->exec); }
else { p4_outf ("%8p: %08p %s" , link, link->exec, nfa); }
}else{
nfa = p4_addr_to_name ((void*) link->exec);
if (! nfa) { p4_outf ("%8p: %08p (???)" , link, link->exec); }
else
{
register p4xt xt = p4_name_from (nfa);
if (xt == link->exec)
p4_outf ("%8p: %08p %.*s" , link, link->exec,
NFACNT(*nfa), nfa+1);
else
p4_outf ("%8p, %08p %.*s [%+i]" , link, link->exec,
NFACNT(*nfa), nfa+1, xt - link->exec);
}
}
# endif
if (p4_Q_cr ())
break;
}
} |