Skip to content
  1. Dec 07, 2023
  2. Dec 06, 2023
  3. 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
  4. Dec 04, 2023
  5. Nov 30, 2023
  6. Nov 29, 2023
  7. Nov 28, 2023
  8. Nov 23, 2023
  9. 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
  10. 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
  11. Jul 27, 2023
  12. Jul 26, 2023
  13. Jul 25, 2023
  14. 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
  15. 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
  16. Mar 03, 2023
  17. Feb 24, 2023
  18. Feb 23, 2023
  19. Feb 16, 2023
  20. Nov 03, 2022
  21. Jul 26, 2022
Loading