Release 1.1, patchlevel 0 (9/24/99)

Performance

Build Time and Space.  The following table shows statistics on the performance improvements since version 1.0 for three benchmarks.  These measurements were taken on a Pentium II/450 running Linux.  All three benchmarks were built without models for the C or math libraries.  Times are in seconds.

Benchmark #Lines #Procedures #Vertices #Edges 1.0 Build time 1.1 Build time 1.0 Build space 1.1 Build space
compress 1,937 27 2,200 8,095 0.81 0.74 6.86 Mb 6.89 Mb
Berkeley yacc 6,627 217 22,916 83,026 6.98 5.19 12.16 Mb 10.27 Mb
go 29,246 384 349,387 1,938,967 302.98 94.98 117.63 Mb 55.22 Mb

New Features

  1. Displayed Sets.  The previous notions of query-points, query-results, chop-sources, and chop-targets have been generalized to displayed sets with associated styles.  Commands and menus have been reorganized to reflect the general displayed-sets concept, e.g., there are now uniform commands to add or remove a selected point from a displayed set.
  2. Interest Sets.  Sets of program points can be saved in interest sets, which persist from run to run.
  3. Set Calculator.  There is now a "pocket calculator" for sets of program points.  The usual Boolean set operations are supported (e.g., union, intersection, difference, and symmetric difference).  The queries (e.g., slice and chop) are also supported as set-calculator operations.  Possible operands include the displayed sets, interest sets, and various language-specific operands (e.g., the set of all function entry points).  Users can easily define new operations and new kinds of language-specific operands.
  4. Styles.  The presentation attributes available for displayed sets (e.g., query-results) have been greatly expanded: foreground color, background color, font, relief, relief borderwidth, underline, and overstrike.
  5. External File Formats.  Sets of program points can be exported to the file system.  Sets of program points can be created by importing from various kinds of files (e.g., PureCoverage export format).
  6. Statistics.  Performance statistics (time and space) of the builder and the query subsystem are now collected.

Minor Feature Changes

  1. GUI:
    • Visual Feedback:
      • Each phase of the builder is now logged in the status bar of the project viewer so when one of the phases is time consuming, you can see what is happening.
      • The cursor now changes to a watch during (possibly) time consuming commands.
    • Project Viewer:
      • Some entries under the incoming and outgoing variables category used to be printed as Anonymous non-local variable. These now display the correct name.
      • Show "Calls to " or "Calls to undefined" instead of "Calls to Indirect call to" in the project viewer.
    • Commands, Menus, and Dialog Boxes:
      • Commands Add Query Points, Remove Query Points, Add Chop Sources, Add Chop Targets, Remove Chop Sources, and Remove Chop Targets have been replaced by Queries/Add Points, Queries/Remove Points, and Queries/Remove Enclosed Points, which treat all displayed sets uniformly.
      • Commands Chop and Truncated Chop are now on the Queries menu, and the Chop menu no longer exists.
      • The Queries popup menu now uses popup menu font, not menu-bar font.
      • A number of commands that used to create a new dialog box on each invocation now just raise an existing dialog box if there is one.
      • Call Graph has been added to the File menu in the file viewer.
      • Command Display Results Only has been moved from the Queries menu of file viewers to the Edit menu.
    • User Preferences:
      • In the General tab: new preference Properties Confirmation Threshold allows the user to specify the number of program points automatically put into a property sheet. Any more than this requires user confirmation.
      • In the Call Graph tab: new preference Confirm Save Before Close.
      • In the Build tab: "Pre-Include Directories" has been moved here from the General tab and has been split into two fields: a radio button CodeSurfer Pre-Include Directories, and a text field User Pre-Include Directories.
    • Property Sheets:
      • Clicking to the right of a selected item de-selects the item.
    • Filters:
      • A check button has been added for Hide CodeSurfer Initialization Points.  This allows the user to control the visibility of PDGs generated by CodeSurfer for technical purposes.
  2. Scheme API:
    • General:
      • The ability to query and choose the internal implementation of sets has been lifted to scheme.  This allows the user to choose a representation best suited to the application.
    • New procedures:
    • Changed procedures:
      • An optional parameter to pdg-vertex-set-create allows specification of the internal implementation of the set.
      • The return type of each slice command is now just a PDG_VERTEX_SET.
      • Procedure pdg-vertices has been reimplemented so that it is now an O(1)-time operation, rather than O(size of set^2) operation.
    • The STk source files have been reorganized.
    • Sample Projects:
      • The information flow example used in the manual to illustrate the Chop and Truncated Chop operations has been expanded to illustrate tracking information flow through pointers references.

Features Removed

  1. Build option Dependence Graph Granularity has been removed.
  2. API procedure s-slice-extend has been removed.

Bug fixes

  1. Compiler Models and Command Line Processing:
    • The gcc compiler model has been changed to compute -D and -I flags more accurately.
    • Fixed bug where adding a new file to an unbuilt project would change the build status to Inconsistent (even though the project remains unbuilt).
  2. Preprocessor and Parser
    • A bug where the presence of a #line directive in a source file could break the mapping between internal program points and source file positions has been fixed.
    • Bug number #120, where newly introduced enumeration symbols were disallowed later in the same type definition has been fixed.
    • A pair of bugs (#134, #135) where use of a variable of an incompletely specified struct type would give front end errors have been fixed.
  3. Builder:
    • A bug (#141) in which it was possible to run out of file descriptors because certain files were not being closed has been fixed.
    • A problem where adding a new file to an unbuilt project would change the build status to Inconsistent (even though the project remains unbuilt) has been corrected.
  4. GUI:
    • File Viewers:
      • Changed the priority of query-results to take precedence over the cpp-display style.
    • Call Graph Viewer:
      • A a bug whereby indirect call-sites to undefined functions were not being listed in edge popups has been fixed.
      • A problem involving indirect calls through function pointers with empty points-to sets has been corrected.
      • Bug #127, where dragging a node beyond the edge of the window could cause a problem with subsequent selections has been corrected.
      • A bug (#148) where two or more callgraph windows could cause a crash has been fixed.
      • Bug #117 has been fixed.  Call paths between mutually recursive functions no longer crash CodeSurfer.
      • Some keybinding problems were resolved.
      • A bug that caused CodeSurfer to always asks you whether you want to save the callgraph - even if it is already saved has been fixed (bug 126).
      • A problem where the add-to-last-callgraph preference was ignored has been fixed.
    • Commands, Menus, Dialog Boxes, and Keybindings:
      • Bugs #47 and #163 have been fixed.  Iconified windows did not appear in the Windows menu.
      • A bug where the use of function key F10 led to anomalous behavior has been fixed.
      • A bug whereby opening another project retained information on undefined functions from the original project.
    • Log:
      • A bug where the message to the log window on Open Project was not written early enough has been fixed.
    • User Preferences:
      • Perform project-save just after creating a new project. Perform project-save before performing a project-reopen from preferences.  Fix major bug in Preferences: was using original Project instance even when user had switched projects.  Fix by deleting Preferences window when a project is closed.
    • Emacs Mode:
      • CodeSurfer/Emacs communications have been improved to make them faster and more robust.
      • The Emacs user is notified if communication with CodeSurfer cannot be initiated.
  5. Miscellaneous crashing bugs.

Free Trial | Products | Customers | Support | News | Jobs | About Us         © 2007-2008, GrammaTech, Inc. All rights reserved.