Release 1.3, patchlevel 0 (4/18/2000)
This release is the first version of CodeSurfer to run on both the Windows/x86
and the Solaris/sparc platforms. This release introduces some important
performance enhancements, some fairly minor new features and some bug fixes.
Performance
- Partitioning of non-local variables. The most significant
improvement in this release concerns how non-local variables are modeled at
procedure call sites and at procedure entry points. Until now,
every single non-local variable that was used/modified by a procedure was
represented by a global-formal-in/out vertex. Now however, a global-formal-in/out
vertex can represent multiple non-local variables. This set of variables
is known as a partition. This improvement in efficiency does not lead
to any decrease in accuracy. This table shows the improvements
for some standard benchmarks. Note that the improvement is much more
significant for large programs than for small. Note also that the slicing
time is greatly reduced for large programs.
A few parts of the user interface have modified to reflect this change.
The API function pdg-vertex-parameter-symbol has been replaced
with pdg-vertex-parameter-symbols,
which returns the list of variables in the partition for that vertex.
- Project Viewer display. The display of long lists of items
in the project viewer has been made more efficient.
New Features
- License management. CodeSurfer now uses FLEXlm version 7.0
- Preferences. The user
preferences mechanism has been changed to make it more consistent.
All preferences are now persistent, even if NOT changed through the preferences
dialog. A new preferences dialog box has been introduced to allow access
to all preferences at once.
- Functions menu. The Functions menu in the file viewer no longer
overflows the screen. It is now truncated after a fixed number of functions
and an entry at the end allows the user to bring up a dialog box showing all
functions in a scrollable window.
- New APIs. Some new functions have been added to the CodeSurfer
Scheme API: pdg-retrieve-vertex,pdg-vertex-id
and pdg-call-actuals-in-as-list.
- CFGs file format. An optional field has been added to the
.cfgs file format.
- Filters. The user interface to the filters
mechanism has changed.
Bugs
- Scheme garbage collection. A bug in the STk garbage collector
on x86 platforms was causing STk runtime background errors. This has
been corrected.
- Summary edges. A bug in the computation of summary edges has
been corrected.
- Hash tables. Two problems with the implementation of hash
tables have been fixed. First, the implementation of hash functions
for the lifted STk types has been improved. This means that using these
types as keys to hash tables is now much more efficient. Second, a bug
in how hash comparision functions were invoked that could lead to items being
non-retrievable has been fixed.