Indeed v4.9.4 adds dotted lines in the dependency graph. The meaning of the lines is:
- solid line from A to B: procedure A contains a call to procedure B - dotted line from A to B: procedure A contains a read or write of variable B
Sometimes there will be both a solid and dotted line from A to B. This happens often when speculative inlining is done (to respect R5RS semantics). For example:
(define (f x) (sin x))
will be compiled as:
(define f (lambda (x) (if (and ('#<procedure #2 ##eq?> sin '#<procedure #3 sin>) ('#<procedure #4 ##flonum?> x)) ('#<procedure #5 ##flsin> x) (sin x))))
Procedure f contains a call to sin and a variable reference of sin, so there will be a solid and dotted line between f and sin in the dependency graph:
Moreover, sin is in black to indicate that the file does not contain a definition of sin. It can help identify undefined procedures/variables, or procedures that should be imported from other modules.
Marc
On Jan 4, 2022, at 10:15 AM, Sven Hartrumpf hartrumpf@gmx.net wrote:
Investigating the original .dg files showed that the format was extended so that my (not too clever) postprocessor missed some pieces of information. For example, some dependency arcs are now annotated with "[style = dotted]".
After fixing this in my postprocessor, the reachability analyses are identical when using Gambit 4.9.3 and 4.9.4.
Ciao Sven
Gambit-list mailing list Gambit-list@iro.umontreal.ca https://mailman.iro.umontreal.ca/cgi-bin/mailman/listinfo/gambit-list