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: ...@@ -1259,6 +1259,40 @@ mixed:
// return (8) // 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 void
fninit(Node *n) fninit(Node *n)
{ {
...@@ -1272,6 +1306,9 @@ fninit(Node *n) ...@@ -1272,6 +1306,9 @@ fninit(Node *n)
return; return;
} }
if(!anyinit(n))
return;
r = N; r = N;
// (1) // (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