diff options
| author | Shenghou Ma <minux.ma@gmail.com> | 2012-01-31 10:59:34 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2012-01-31 10:59:34 -0500 |
| commit | 2d64bab1ded3c17d1e73ee1dcacf1aafae223317 (patch) | |
| tree | 10547bbe90838e53ac2f83530f54a834be39f911 /src/cmd/5l | |
| parent | 94b796133b3a236530f933362a3feb90af1fcbf2 (diff) | |
| download | go-2d64bab1ded3c17d1e73ee1dcacf1aafae223317.tar.xz | |
5l: optimize the common case in patch()
If p->to.sym->text is non-nil, then no need to search for sym->value.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5601046
Diffstat (limited to 'src/cmd/5l')
| -rw-r--r-- | src/cmd/5l/pass.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/cmd/5l/pass.c b/src/cmd/5l/pass.c index c430494597..0f2afbd850 100644 --- a/src/cmd/5l/pass.c +++ b/src/cmd/5l/pass.c @@ -213,6 +213,8 @@ patch(void) if((a == ABL || a == ABX || a == AB || a == ARET) && p->to.type != D_BRANCH && p->to.sym != S) { s = p->to.sym; + if(s->text == nil) + continue; switch(s->type) { default: diag("undefined: %s", s->name); @@ -222,7 +224,8 @@ patch(void) case STEXT: p->to.offset = s->value; p->to.type = D_BRANCH; - break; + p->cond = s->text; + continue; } } if(p->to.type != D_BRANCH) |
