aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/5l
diff options
context:
space:
mode:
authorShenghou Ma <minux.ma@gmail.com>2012-01-31 10:59:34 -0500
committerRuss Cox <rsc@golang.org>2012-01-31 10:59:34 -0500
commit2d64bab1ded3c17d1e73ee1dcacf1aafae223317 (patch)
tree10547bbe90838e53ac2f83530f54a834be39f911 /src/cmd/5l
parent94b796133b3a236530f933362a3feb90af1fcbf2 (diff)
downloadgo-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.c5
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)