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

code walkers or inverse who-calls

    Date: Fri, 18 Oct 1991 10:49 CDT
    From: SWM@SAPSUCKER.SCRC.Symbolics.COM (Scott McKay)

	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.

      #'(lambda (caller callee how-called)
	   (format t "~&~S ~S ~S" (sys:function-name caller) callee how-called))  
      :external-references t) 

Isn't it true that this is blind to the bodies of certain macro calls
that generate internal continuations?  Two examples that come to mind
are the bodies of GRAPHICS:With... and STATICE:With-Transaction.  While
it is true that the continuation doesn't get directly called by the
parent function that generated it (it's being passed as an arg), it
seems desirable to make that assumption.
si:map-over-compiled-function-callees doesn't seem to do that.