Release 1.3, patchlevel 2 (5/26/2000)
Summary
This release of CodeSurfer introduces some more major performance improvements,
and some new features. In some cases build times have been cut by as much as a
factor of four, the size of the dependence graph has been halved, and slice times
have been more than halved. The new features include the ability to compute control-flow
graphs and variable def/use sets. See below for details.
Performance
Removal of invalid local variables from `globals' This version introduces
an improvement in how global-formal and global-actual vertices are created. Previously
a local variable could appear as one of these vertices even if it could not possibly
be in scope. These are now removed, with the consequence that build times, slice
times and graph sizes are greatly reduced.
A second performance enhancement resulted from an internal data structure improvement
having to do with how variable names are managed.
This table summarizes the improvements for this version compared with
1.3p0. Note that two new benchmarks are shown here. The first is
the ijpeg benchmark from the SPEC collection. The second is ntpd
- the network time protocol daemon.
New Features
There are two major new features in this release
- The Control-flow graph for a program
can be computed at build time. Generation is controlled by the Control-Flow
edges build option.
- For each vertex in the system, the set of variables used,
killed or conditionally
killed can be computed at build time. Generation of these sets is
controlled by the Variable
Use/Def Sets build option.
Minor changes and bug fixes
- Bugs
- A problem with the interpretation of the results from the find command
in the Windows version has been fixed.
- Tab characters in the C source files are now displayed correctly in file
viewers.
- A bug that appeared when renaming projects with open call graphs has
been fixed.
- Several minor leaks in the Scheme code have been plugged.
- A segmentation fault that sometimes occurred after invoking find on the
Unix version has been fixed.
- A problem where the project was not always saved on exit has been fixed.
- The PageUp/PageDown keys now work correctly. Previously they would
scroll twice as much as requested.
- Other changes
- The section on Hyperlinks
has been broken up into sections, and a new section has been added describing
control-flow links.
- The documentation on the Scheme API
has been updated to describe new methods on PDG
vertices for accessing the control-flow
edges. Also, documentation on how to retrieve variable
use/def sets from either PDGs
or ABS_LOCs.