+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley. The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
#ifndef lint
- static char *sccsid = "@(#)arcs.c 1.14 (Berkeley) %G%";
-#endif lint
+static char sccsid[] = "@(#)arcs.c 5.5 (Berkeley) %G%";
+#endif /* not lint */
#include "gprof.h"
return (*npp1) -> toporder - (*npp2) -> toporder;
}
+nltype **
doarcs()
{
- nltype *parentp;
+ nltype *parentp, **timesortnlp;
arctype *arcp;
long index;
parentp -> cyclehead = parentp;
parentp -> cnext = 0;
if ( cflag ) {
- findcalls( parentp , parentp -> value , (parentp+1) -> value );
+ findcall( parentp , parentp -> value , (parentp+1) -> value );
}
}
/*
* propogate children times up to parents.
*/
dotime();
- printgprof();
+ /*
+ * Now, sort by propself + propchild.
+ * sorting both the regular function names
+ * and cycle headers.
+ */
+ timesortnlp = (nltype **) calloc( nname + ncycle , sizeof(nltype *) );
+ if ( timesortnlp == (nltype **) 0 ) {
+ fprintf( stderr , "%s: ran out of memory for sorting\n" , whoami );
+ }
+ for ( index = 0 ; index < nname ; index++ ) {
+ timesortnlp[index] = &nl[index];
+ }
+ for ( index = 1 ; index <= ncycle ; index++ ) {
+ timesortnlp[nname+index-1] = &cyclenl[index];
+ }
+ qsort( timesortnlp , nname + ncycle , sizeof(nltype *) , totalcmp );
+ for ( index = 0 ; index < nname + ncycle ; index++ ) {
+ timesortnlp[ index ] -> index = index + 1;
+ }
+ return( timesortnlp );
}
dotime()