Skip to content
Snippets Groups Projects
Commit bd14b56f authored by Fredrik Hübinette (Hubbe)'s avatar Fredrik Hübinette (Hubbe)
Browse files

bugfixes

Rev: bin/mkpeep.pike:1.9
parent 3ce484ab
No related branches found
No related tags found
No related merge requests found
#!/usr/local/bin/pike #!/usr/local/bin/pike
/* $Id: mkpeep.pike,v 1.8 1998/04/27 09:53:47 hubbe Exp $ */ /* $Id: mkpeep.pike,v 1.9 1998/05/13 07:35:45 hubbe Exp $ */
import Simulate; import Simulate;
...@@ -113,6 +113,30 @@ mixed split(string s) ...@@ -113,6 +113,30 @@ mixed split(string s)
if(a[e][0]=='F') if(a[e][0]=='F')
opcodes++; opcodes++;
#if 0
/* It was a good idea, but it doesn't work */
mixed qqqq=copy_value(b);
i=0;
while(sizeof(b))
{
if(b[0] != a[i])
break;
if(sizeof(b)>1 && b[1][0]!='F')
{
if(b[1] != sprintf("($%da)",i+1))
break;
b=b[2..];
}else{
b=b[1..];
}
i++;
opcodes--;
}
if(i)
werror("----------------------\n%d\n%O\n%O\n%O\n",opcodes,a,b,qqqq);
#endif
i=0; i=0;
for(e=0;e<sizeof(a);e++) for(e=0;e<sizeof(a);e++)
{ {
...@@ -138,17 +162,14 @@ mixed split(string s) ...@@ -138,17 +162,14 @@ mixed split(string s)
{ {
if(a[e]=="!") if(a[e]=="!")
{ {
a[e+1]=replace(a[e+1],"==","!="); sscanf(a[e+1],"%s==%s",string op, string arg);
a[e+1]=sprintf("%s != %s && %s !=-1",op,arg,arg);
a=a[..e-1]+a[e+1..]; a=a[..e-1]+a[e+1..];
e--; e--;
} }
} }
#ifdef DEBUG return ({a,b,opcodes, line,a});
werror(sprintf("%O\n",({a,b})));
#endif
return ({a,b,opcodes, line});
} }
/* Replace $[0-9]+(o|a) with something a C compiler can understand */ /* Replace $[0-9]+(o|a) with something a C compiler can understand */
...@@ -181,7 +202,6 @@ void dump2(mixed *data,int ind) ...@@ -181,7 +202,6 @@ void dump2(mixed *data,int ind)
int e,i,max,maxe; int e,i,max,maxe;
mixed a,b,d,tmp; mixed a,b,d,tmp;
string test; string test;
int wrote_switch;
mapping foo; mapping foo;
mixed cons, var; mixed cons, var;
...@@ -228,7 +248,6 @@ void dump2(mixed *data,int ind) ...@@ -228,7 +248,6 @@ void dump2(mixed *data,int ind)
test=m_indices(foo)[maxe]; test=m_indices(foo)[maxe];
wrote_switch++;
write(sprintf("%*nswitch(%s)\n",ind,treat(test))); write(sprintf("%*nswitch(%s)\n",ind,treat(test)));
write(sprintf("%*n{\n",ind)); write(sprintf("%*n{\n",ind));
...@@ -260,9 +279,7 @@ void dump2(mixed *data,int ind) ...@@ -260,9 +279,7 @@ void dump2(mixed *data,int ind)
write("\n"); write("\n");
} }
if(sizeof(data)) write(sprintf("%*n}\n",ind));
write(sprintf("%*ndefault:\n",ind));
ind+=2;
} }
/* Take care of whatever is left */ /* Take care of whatever is left */
...@@ -283,55 +300,6 @@ void dump2(mixed *data,int ind) ...@@ -283,55 +300,6 @@ void dump2(mixed *data,int ind)
} }
write(sprintf("%*n{\n",ind)); write(sprintf("%*n{\n",ind));
ind+=2; ind+=2;
#if 0
if(sizeof(d[1]))
{
write(sprintf("%*nstruct pike_string *cf;\n",ind));
write(sprintf("%*nINT32 cl=instr(0)->line;\n",ind));
}
for(i=0;i<sizeof(d[1]);i++)
{
if(i+1<sizeof(d[1]) && d[1][i+1][0]=='(')
{
string tmp=d[1][i+1];
tmp=treat(tmp[1..strlen(tmp)-2]);
write(sprintf("%*nINT32 arg%d=%s;\n",ind,i,tmp));
i++;
}
}
if(sizeof(d[1]))
{
write(sprintf("%*ncopy_shared_string(cf,instr(0)->file);\n",ind));
}
write(sprintf("%*npop_n_opcodes(%d);\n",ind,d[2]));
int q;
for(i=0;i<sizeof(d[1]);i++)
{
if(i+1<sizeof(d[1]) && d[1][i+1][0]=='(')
{
write(sprintf("%*ninsopt(%s,arg%d,cl,cf);\n",ind,d[1][i],i));
i++;
}else{
write(sprintf("%*ninsopt2(%s,cl,cf);\n",ind,d[1][i]));
}
q++;
}
if(sizeof(d[1]))
{
if(q)
write(sprintf("%*nfifo_len+=%d;\n",ind,q));
write(sprintf("%*nfree_string(cf);\n",ind));
write(sprintf("%*ndebug();\n",ind));
}
write(sprintf("%*nfifo_len+=%d;\n",ind,q+JUMPBACK));
#else
write("%*ndo_optimization(%d,\n",ind,d[2]); write("%*ndo_optimization(%d,\n",ind,d[2]);
for(i=0;i<sizeof(d[1]);i++) for(i=0;i<sizeof(d[1]);i++)
...@@ -347,18 +315,11 @@ void dump2(mixed *data,int ind) ...@@ -347,18 +315,11 @@ void dump2(mixed *data,int ind)
} }
write("%*n 0);\n",ind); write("%*n 0);\n",ind);
#endif
write(sprintf("%*ncontinue;\n",ind)); write(sprintf("%*ncontinue;\n",ind));
ind-=2; ind-=2;
write(sprintf("%*n}\n",ind,test)); write(sprintf("%*n}\n",ind,test));
} }
} }
while(wrote_switch--)
{
ind-=2;
write(sprintf("%*n}\n",ind));
}
} }
...@@ -394,7 +355,7 @@ int main(int argc, string *argv) ...@@ -394,7 +355,7 @@ int main(int argc, string *argv)
write(" instrbuf.s.str=0;\n"); write(" instrbuf.s.str=0;\n");
write(" fifo_len=0;\n"); write(" fifo_len=0;\n");
write(" init_bytecode();\n\n"); write(" init_bytecode();\n\n");
write(" for(eye=0;eye<len;)\n {\n"); write(" for(eye=0;eye<len || fifo_len;)\n {\n");
write(" INT32 current_line;\n"); write(" INT32 current_line;\n");
write(" struct pike_string *current_file;\n"); write(" struct pike_string *current_file;\n");
write("\n"); write("\n");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment