Annotation of researchv10no/cmd/dag/gprof2dag.awk, revision 1.1

1.1     ! root        1: BEGIN                  {
        !             2:        total = -1.0;
        !             3:        maxcolor = .65
        !             4:        minsaturation = .3;
        !             5: 
        !             6:        print ".GS";
        !             7:        print ".PS";
        !             8:        print"/ShadedEllipse {";
        !             9:        print"    /height exch def";
        !            10:        print"    /width exch def";
        !            11:        print"    /nodename exch def";
        !            12:        print"    currentpoint            % save for label";
        !            13:        print"    % distort user space";
        !            14:        print"    gsave";
        !            15:        print"        currentpoint translate";
        !            16:        print"        0 0 moveto";
        !            17:        print"        width height div 1 scale    % scale in x";
        !            18:        print"        height 2 div 0 rmoveto";
        !            19:        print"        0 0 height 2 div 0 360 arc closepath";
        !            20:        print"        gsave";
        !            21:        print"            fill";
        !            22:        print"        grestore";
        !            23:        print"        0 setgray stroke";
        !            24:        print"    grestore";
        !            25:        print"    moveto";
        !            26:        print"    gsave";
        !            27:        print"        0 setgray";
        !            28:        print"        nodename width .9 mul height .9 mul daglabel";
        !            29:        print"    grestore";
        !            30:        print"} def";
        !            31:        print"/ShadedEllipse_clip {Ellipse_clip} bind def";
        !            32:        print".PE";
        !            33:        printf ("draw nodes as ShadedEllipse color \"[%.2f %.2f 1]\";\n",maxcolor,minsaturation);
        !            34: 
        !            35: }
        !            36: 
        !            37: $1 ~ /\[/ && $0 !~ "as a"              {
        !            38:                                        if ($5 == "start") total = $3 + $4;
        !            39:                                        else {if (total <= 0.0) exit;}
        !            40:                                        if (NF == 6) {
        !            41:                                                tail = $5
        !            42:                                                source = 1
        !            43:                                        }
        !            44:                                        else {
        !            45:                                                tail = $6
        !            46:                                                source = 0
        !            47:                                        }
        !            48:                                        first = 1
        !            49: 
        !            50:                                        while (getline) {
        !            51:                                                if (NF == 0) {
        !            52:                                                        if (first == 1) {
        !            53:                                                                if (source == 1)
        !            54:                                                                        print "node " tail ";"
        !            55:                                                        }
        !            56:                                                        else
        !            57:                                                                print ";"
        !            58:                                                        break
        !            59:                                                }
        !            60:                                                if ( $2 ~ /\./ ) {
        !            61:                                                        color = maxcolor * (1.0 - ($1 + $2)/total)
        !            62: 
        !            63:                                                        if (first == 1) {
        !            64:                                                                first = 0
        !            65:                                                                printf ("edge from %s to %s color \"[%.2f 1 1]\"", tail, $4, color)
        !            66:                                                        }
        !            67:                                                        else  {
        !            68:                                                                printf (",\n\tto %s color \"[%.2f 1 1]\"", $4, color)
        !            69:                                                        }
        !            70:                                                        Indegree[$4] += 1;
        !            71:                                                }
        !            72:                                                else {          # Recursive call
        !            73:                                                        if (first == 1) {
        !            74:                                                                first = 0
        !            75:                                                                printf ("edge from %s to %s ", tail, $2)
        !            76:                                                        }
        !            77:                                                        else {
        !            78:                                                                printf (",\n\tto %s", $2)
        !            79:                                                        }
        !            80:                                                }
        !            81:                                        }
        !            82:                                }
        !            83: 
        !            84: $1 == "flat" {
        !            85:        while ($1 != "granularity:") getline;
        !            86:        getline;
        !            87:        getline;
        !            88:        getline;
        !            89:        getline;
        !            90:        while (Indegree[$(NF - 1)] <= 0) getline;
        !            91:        scale = $1;
        !            92:        while (NF > 0) {
        !            93:                if ($1 == "") exit;
        !            94:                if ($(NF - 2) == "<cycle") func_name = $(NF - 3);
        !            95:                else func_name = $(NF - 1);
        !            96:                if (Indegree[func_name] > 0) {
        !            97:                        color = maxcolor * (1.0 - $1/scale);
        !            98:                        saturation = minsaturation + ((1.0 - minsaturation) * $1/scale);
        !            99:                        printf("draw %s color \"[%.2f %.2f 1]\";\n",func_name,color,saturation);
        !           100:                }
        !           101:                getline;
        !           102:        }
        !           103:        exit;
        !           104: }
        !           105: 
        !           106: END                            { print ".GE" }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.