[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

code walkers or inverse who-calls



    Date: Fri, 18 Oct 1991 10:59 EDT
    From: dmitchell@trc.amoco.com (Donald H. Mitchell)

    Is there anyway to generate a call tree (graph) for a function?  I certainly
    realize that I could read through the source code and generate a database;
    however, the compiled code represents a ready database if only I could figure
    out how to access the compiled code to find all the functional objects.

On a Genera development system?  You can use SI:MAP-OVER-COMPILED-FUNCTION-CALLEES.

(si:map-over-compiled-function-callees
  #'sct:find-system-named
  #'(lambda (caller callee how-called)
       (format t "~&~S ~S ~S" (sys:function-name caller) callee how-called)))

==>

SCT:FIND-SYSTEM-NAMED SCT:SYSTEM :CONSTANT
SCT:FIND-SYSTEM-NAMED SI:TYPEP-FLAVOR :FUNCTION
SCT:FIND-SYSTEM-NAMED SCT:SUBSYSTEM :CONSTANT
SCT:FIND-SYSTEM-NAMED SCT:UNDEFINED-SYSTEM :CONSTANT
SCT:FIND-SYSTEM-NAMED SCT:CANONICALIZE-SYSTEM-NAME :FUNCTION
SCT:FIND-SYSTEM-NAMED SCT:*ALL-SYSTEMS-TABLE* :VARIABLE
SCT:FIND-SYSTEM-NAMED CLI::FAST-TABLE-GET :FUNCTION
SCT:FIND-SYSTEM-NAMED :NEWEST :CONSTANT
SCT:FIND-SYSTEM-NAMED SCT:LOAD-SYSTEM-DECLARATION-IF-NECESSARY :FUNCTION
SCT:FIND-SYSTEM-NAMED SCT:FIND-SYSTEM-NAMED :FUNCTION
SCT:FIND-SYSTEM-NAMED SCT:SYSTEM-NOT-FOUND :CONSTANT
SCT:FIND-SYSTEM-NAMED :SYSTEM-NAME :CONSTANT
SCT:FIND-SYSTEM-NAMED SIGNAL :FUNCTION

    I do realize the metering system generates a call tree as it meters a
    function; however, that requires invoking the function (which is not terrible
    but it would be nice to generate the tree without having to successfully
    execute down through all branches).

    I also realize that I could map over the functional symbols in a package, use
    the who calls database to see who calls them, and create an inverted database;
    however, that sounds like overkill for just showing the call tree for a
    specific function.

    Don Mitchell			dmitchell@trc.amoco.com
    Amoco Production Company	(918) 660-4270
    Tulsa Research Center
    P.O. Box 3385, Tulsa, OK 74102