Skip to content
  1. Dec 06, 2023
  2. Dec 05, 2023
    • Carlos Galindo's avatar
      Slicing algorithms unification and overhaul. · 8fb45278
      Carlos Galindo authored
      Main motivation: AdaptedStandardAlgorithm is not an equivalent context-insensitive version of StandardAlgorithm, because it groups nodes as if it were slicing the SDG.
      Secondary motivation: apply the same traversal rules (if applicable) to all slicing algorithms, instead of having different versions that haven't been updated since they stopped being used in benchmarks.
      - Introduced the OnePassStandardAlgorithm, field-insensitive version of OnePassConstrainedAlgorithm.
      - Document all available slicing algorithms and their quirks (javadoc on interface).
      - Unified traversal rules for the EDG on SlicingAlgorithm.
      
      Changes to specific algorithms:
      - StandardAlgorithm, AdaptedStandardAlgorithm: include last edge type in traversal.
      - ConstrainedAlgorithm, OnePassConstrainedAlgorithm:
        - Simplify NodeWork processing and EdgeWork constructor.
        - Upstream types of edges that can't be traversed during SummaryGeneration.
      - ConstrainedAlgorithm: copy changes of commit 523c3112.
      - Pseudo-predicate algorithms: unify conditional traversal on SlicingAlgorithm and simplify both algorithms.
      
      Other, minor changes:
      - Add EDG#clearConstraints, moved from OnePassConstrainedAlgorithm#slice (was commented out)
      - LAST#getResFromNode: add check for null NodeInfo.
      - Documentation
      8fb45278
  3. Dec 04, 2023
  4. Nov 30, 2023
  5. Nov 29, 2023
  6. Nov 28, 2023
  7. Nov 23, 2023
  8. Nov 20, 2023
    • Carlos Galindo's avatar
      Work-list based and Reps tabular slicing for recursive programs. · 58d95b2c
      Carlos Galindo authored
      - Worklist approach implemented through a Config flag in SummaryTable.
      - Unconstrained and constrained variantes (TabularAlgorithm & ConstrainedTabularAlgorithm). The constrained version features a limit to the size of the stack.
      - Constrained subsumed variant for efficiency (ConstrainedSubsumedTabularAlgorithm).
      - Efficient EdgeList (linked-list) to store edges visited through a traversal.
      - Bump language level to 16.
      - eKnife cli: added switch to use tabular algorithms.
      - Moved benchmarks out of eKnife and BencherTest.
      58d95b2c
  9. Oct 25, 2023
    • Carlos Galindo's avatar
      Benchmarks for non-recursive tabular slicing. · 4d630beb
      Carlos Galindo authored
      - ️️SummaryTable: actual-out node may none or multiple matching formal-out.
      - EDG, SummaryTable: get and clear methods for stats.
      - EKnife, BencherTest: adapted for benchmarks in which running the benchmark alters the graph itself.
      4d630beb
  10. Jul 27, 2023
  11. Jul 26, 2023
  12. Jul 25, 2023
  13. Jul 24, 2023
    • Carlos Galindo's avatar
      Updated benchmark system · 878d4fad
      Carlos Galindo authored
      - Remember, to run benchmarks you require a "server" process for Erlang (see previous commits).
      - If you output slices, astCounter.erl can be used to count the number of AST nodes in a given program.
      878d4fad
    • Carlos Galindo's avatar
      Full support for records and code printing · ad8763fd
      Carlos Galindo authored
      - Full support for records, with their own access constraints
      - e-Knife can now print Erlang code that contains newly supported data structures (record, bin, try, catch, throw...)
      ad8763fd
  14. Jul 13, 2023
    • Carlos Galindo's avatar
      Benchmarks for JSS Revision 1 (erlsom) · b909e059
      Carlos Galindo authored
      - Basic support for records, bin, float, try, catch
      - Feature to count access constraints traversed
      - Feature to count access constraints present in the graph
      - Bugs fixed:
        - Can handle empty string represented as list `[]`.
        - Can handle other unary operators apart from `-int`.
        - Can handle nested list comprehensions.
      - Now requires a running instance of erlang, use the following command:
      
          erl -pa (pwd)/e-Knife/src/main/resources -name server@localhost -setcookie erlang -noshell
      
      - BencherTest now accepts `-DiterGen=NUM` and `-DiterSlice=NUM` as Java arguments.
      b909e059
  15. Mar 03, 2023
  16. Feb 24, 2023
  17. Feb 23, 2023
  18. Feb 16, 2023
  19. Nov 03, 2022
  20. Jul 26, 2022
  21. Mar 11, 2022
Loading