diff options
Diffstat (limited to 'sys/src/cmd/5l/obj.c')
| -rw-r--r-- | sys/src/cmd/5l/obj.c | 44 |
1 files changed, 6 insertions, 38 deletions
diff --git a/sys/src/cmd/5l/obj.c b/sys/src/cmd/5l/obj.c index 9aabb6d7e..4d520b7a2 100644 --- a/sys/src/cmd/5l/obj.c +++ b/sys/src/cmd/5l/obj.c @@ -484,23 +484,13 @@ zaddr(uchar *p, Adr *a, Sym *h[]) break; case D_SCONST: - while(nhunk < NSNAME) - gethunk(); - a->sval = (char*)hunk; - nhunk -= NSNAME; - hunk += NSNAME; - + a->sval = malloc(NSNAME); memmove(a->sval, p+4, NSNAME); c += NSNAME; break; case D_FCONST: - while(nhunk < sizeof(Ieee)) - gethunk(); - a->ieee = (Ieee*)hunk; - nhunk -= NSNAME; - hunk += NSNAME; - + a->ieee = malloc(sizeof(Ieee)); a->ieee->l = p[4] | (p[5]<<8) | (p[6]<<16) | (p[7]<<24); a->ieee->h = p[8] | (p[9]<<8) | @@ -524,12 +514,7 @@ zaddr(uchar *p, Adr *a, Sym *h[]) return c; } - while(nhunk < sizeof(Auto)) - gethunk(); - u = (Auto*)hunk; - nhunk -= sizeof(Auto); - hunk += sizeof(Auto); - + u = malloc(sizeof(Auto)); u->link = curauto; curauto = u; u->asym = s; @@ -814,12 +799,7 @@ loop: goto loop; } - if(nhunk < sizeof(Prog)) - gethunk(); - p = (Prog*)hunk; - nhunk -= sizeof(Prog); - hunk += sizeof(Prog); - + p = malloc(sizeof(Prog)); p->as = o; p->scond = bloc[1]; p->reg = bloc[2]; @@ -1101,12 +1081,7 @@ lookup(char *symb, int v) if(memcmp(s->name, symb, l) == 0) return s; - while(nhunk < sizeof(Sym)) - gethunk(); - s = (Sym*)hunk; - nhunk -= sizeof(Sym); - hunk += sizeof(Sym); - + s = malloc(sizeof(Sym)); s->name = malloc(l); memmove(s->name, symb, l); @@ -1123,14 +1098,7 @@ lookup(char *symb, int v) Prog* prg(void) { - Prog *p; - - while(nhunk < sizeof(Prog)) - gethunk(); - p = (Prog*)hunk; - nhunk -= sizeof(Prog); - hunk += sizeof(Prog); - + Prog *p = malloc(sizeof(Prog)); *p = zprg; return p; } |
