From: Russ Cox Date: Sat, 19 Sep 2009 00:08:18 +0000 (-0700) Subject: merge first pass into main loop in span calculation. X-Git-Tag: weekly.2009-11-06~531 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c64986f706936a6f1e2e23592275eb78f88d0ec6;p=gostls13.git merge first pass into main loop in span calculation. having one copy will cut nacl changes in half. R=ken OCL=34815 CL=34815 --- diff --git a/src/cmd/8l/span.c b/src/cmd/8l/span.c index 0b2d70e8e6..febfc9afdc 100644 --- a/src/cmd/8l/span.c +++ b/src/cmd/8l/span.c @@ -65,56 +65,37 @@ span(void) } } n = 0; - start: - if(debug['v']) - Bprint(&bso, "%5.2f span\n", cputime()); - Bflush(&bso); - c = INITTEXT; - for(p = firstp; p != P; p = p->link) { - if(p->as == ATEXT) - curtext = p; - if(p->to.type == D_BRANCH) - if(p->back) - p->pc = c; - asmins(p); - p->pc = c; - m = andptr-and; - p->mark = m; - c += m; - } - -loop: - n++; - if(debug['v']) - Bprint(&bso, "%5.2f span %d\n", cputime(), n); - Bflush(&bso); - if(n > 50) { - print("span must be looping\n"); - errorexit(); - } - again = 0; - c = INITTEXT; - for(p = firstp; p != P; p = p->link) { - if(p->as == ATEXT) - curtext = p; - if(p->to.type == D_BRANCH) { - if(p->back) - p->pc = c; - asmins(p); - m = andptr-and; - if(m != p->mark) { + do{ + again = 0; + if(debug['v']) + Bprint(&bso, "%5.2f span %d\n", cputime(), n); + Bflush(&bso); + if(n > 50) { + print("span must be looping\n"); + errorexit(); + } + c = INITTEXT; + for(p = firstp; p != P; p = p->link) { + if(p->as == ATEXT) + curtext = p; + if(p->to.type == D_BRANCH) + if(p->back) + p->pc = c; + if(n == 0 || p->to.type == D_BRANCH) { + asmins(p); + m = andptr-and; p->mark = m; - again++; } + if(c != p->pc) + again = 1; + p->pc = c; + c += p->mark; } - p->pc = c; - c += p->mark; - } - if(again) { textsize = c; - goto loop; - } + n++; + }while(again); + if(INITRND) { INITDAT = rnd(c, INITRND); if(INITDAT != idat) {