Mercurial > hg > jgplsrc
view dc.c @ 0:e0bbaa717f41 draft default tip
lol J
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Mon, 25 Nov 2013 11:56:30 -0500 |
parents | |
children |
line wrap: on
line source
/* Copyright 1990-2011, Jsoftware Inc. All rights reserved. */ /* License in license.txt. */ /* */ /* Debug: Function Call Information */ #include "j.h" #include "d.h" static F1(jtdfrep){RZ(w); R NOUN&AT(w)?w:lrep(w);} static SYMWALK(jtdloc,A,BOX,5,2,1,{RZ(*zv++=sfn(0,d->name)); RZ(*zv++=dfrep(d->val));}) static B jtdrow(J jt,DC si,DC s0,A*zv){A fs,q,*qv,y;C c; fs=si->dcf; GA(q,BOX,si->dcx&&si->dcy?2:1,1,0); qv=AAV(q); if(si->dcx)*qv++=dfrep(si->dcx); if(si->dcy)*qv++=dfrep(si->dcy); *zv++=sfn(0,si->dca); /* 0 name */ *zv++=sc(si->dcj); /* 1 error number */ *zv++=sc(lnumsi(si)); /* 2 line number */ *zv++=num[ADV&AT(fs)?1:CONJ&AT(fs)?2:3]; /* 3 name class */ *zv++=lrep(fs); /* 4 linear rep. */ *zv++=0; /* 5 script name */ *zv++=q; /* 6 argument list */ if(si->dcloc){RZ(y=dloc(si->dcloc)); RZ(*zv++=grade2(y,ope(irs1(y,0L,1L,jthead))));} else RZ(*zv++=iota(v2(0L,2L))); /* 7 locals */ c=si->dcsusp||s0&&DCPARSE==s0->dctype&&s0->dcsusp?'*':' '; RZ(*zv++=scc(c)); /* 8 * if begins a suspension */ R 1; } /* construct one row of function call matrix */ F1(jtdbcall){A y,*yv,z,*zv;DC si,s0=0;I c=9,m=0,*s; ASSERTMTV(w); si=jt->sitop; while(si){if(DCCALL==si->dctype)++m; si=si->dclnk;} GA(z,BOX,m*c,2,0); s=AS(z); s[0]=m; s[1]=c; si=jt->sitop; zv=AAV(z); while(si){if(DCCALL==si->dctype){RZ(drow(si,s0,zv)); zv+=c;} s0=si; si=si->dclnk;} RZ(y=from(scind(irs1(z,0L,1L,jthead)),over(snl(mtv),ace))); yv=AAV(y); zv=5+AAV(z); DO(m, *zv=*yv++; zv+=c;); R z; } /* 13!:13 function call matrix */