Skip to content

Latest commit

 

History

History
79 lines (59 loc) · 4.32 KB

HISTORY.md

File metadata and controls

79 lines (59 loc) · 4.32 KB

History of the WMC tool

v1.0

  • initial version of the WMC tool

v1.1

  • added support for PROM Counting
  • added support for Table ROM Instrumentation
  • added support for stack counting
  • added progress bar (0-100%)
  • added support for S("string") macro in manually-instrumented sections

v1.2

  • added Unident mode to remove unused left margin

  • added automatic conversion of TABs to spaces

  • added a command-line switch to disable all warnings (/dw99)

  • modified the atomatically-generated file "wmc_auto.h" to eliminate warnings when compiled with gcc

  • removed #pragma WMC_TOOL_MESSAGE in the rom_*.c files

  • removed #pragma WMC_TOOL_MESSAGE for manually-instrumented sections

  • changed the default PROM counting weights to those specified in [S4-110479 - FTO - On Program ROM measurement for EVS standardization.doc] ([https://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/TSGS4_64/docs/S4-110479.zip)

  • fix of a small bug where using /op2, /op3 crashes the WMC tool

  • added support for Windows 8 command line and Cygwin V1.7.17 and later versions

  • fix for a bug where a $("[]M[]") was inserted at the end of some C source files when it was re-instrumented

v1.3

  • break in early-return out of .each early with return false
  • prevent adding unnecessary space by the functions Move_on_Chars() and Skip_Chars()
  • optimize the function Find_Region() to improve the speef of instrumentation
  • optimize the function calculating the next pointer address after hitting the search target
  • order macro names, system functions, etc. in the highest priority order
  • combine strlno and strcno inside Make_Position_String()
  • optimize the usage of the function Instrument_Names() inside Find_Keywords() and Find_Calls()
  • remove the cases where item_link is always NULL

v1.4

  • first version uploaded to the Open-ITU/STL Github repository

  • remove obsolete parts of the source code (e.g. FLC)

  • bug in PROM calculation fixed

  • command-line options modified (/ic and /op removed)

  • memory instrumentation (PROM, Table ROM, static RAM and stack) integrated within the WMC tool (auxiliary files PROM_Size_xxx.c no longer generated)

  • merging and renaming of files: ** wmops.h and wmops.c -> wmc_auto.h and wmc_auto.c ** memory.c -> wmc_auto.c ** mem_count.h and mem_count.c -> wmc_auto.h and wmc_auto.c ** wmc_auto.h and wmc_auto.c are optionally generated by the WMC tool with the ./wmc_tool /cp dir_name command-line option

  • PROM consumption calculated during instrumentation and added at the end in each .c file

  • total PROM consumption may be printed with the function print_mem()

  • re-factoring of the Table ROM instrumentation, calculation and reporting

v1.5

  • fixed compilation issues on MaC platforms
  • fixed a problem where NaN was printed for a non-instrumented function having zero complexity
  • dynamic allocation and re-allocation of all internal buffers tracking both heap and stack call trees
  • introduction of -f FRAME_PER_SECONDS command-line option allowing the user to choose the number of frames per second (default is still 50.0)
  • fixed a problem when push_wmops() was called twice when WMOPS_DETAILS was activated
  • raise an error message if #define WMC_TOOL_SKIP is not paired with #undef WMC_TOOL_SKIP
  • export information about all dynamic allocations/de-allocations occuring during the runtime of the codec to a .csv file
  • added an exemplary Python script mem_analysis.py for graphical analysis and profiling of dynamic memory alloations based on the generated .csv file
  • added support for counting complexity and PROM size of BASOP operations and BASOP functions within floating-point source code

v1.5.1

  • added the -s (--skip_cmplx_instrumentation) command-line option, which avoids the instrumentation of function bodies. The func_start_ and return_ keywords, along with the remaining functionality, remain unchanged.

v1.6

  • fixed instrumentation issues in encoder.c of the 3GPP EVS codec where malloc() is instrumented and print_mem() is present as well
  • when #undef WMC_TOOL_SKIP is missing, automatically assume end of file, but before the last automatically instrumented segment
  • the function DesInstrument_ROM() is called in all regular files as well as the file pointed to with the -m command-line argument