Commit 49f74948 authored by Ken Thompson's avatar Ken Thompson

code optmization

drip init function if it doesnt do anything

R=r
OCL=28180
CL=28180
parent 1ed7f181
......@@ -1259,6 +1259,40 @@ mixed:
// return (8)
// }
int
anyinit(Node *n)
{
uint32 h;
Sym *s;
// are there any init statements
if(n != N)
return 1;
// is this main
if(strcmp(package, "main") == 0)
return 1;
// is there an explicit init function
snprint(namebuf, sizeof(namebuf), "init·%s", filename);
s = lookup(namebuf);
if(s->oname != N)
return 1;
// are there any imported init functions
for(h=0; h<NHASH; h++)
for(s = hash[h]; s != S; s = s->link) {
if(s->name[0] != 'I' || strncmp(s->name, "Init·", 6) != 0)
continue;
if(s->oname == N)
continue;
return 1;
}
// then none
return 0;
}
void
fninit(Node *n)
{
......@@ -1272,6 +1306,9 @@ fninit(Node *n)
return;
}
if(!anyinit(n))
return;
r = N;
// (1)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment