Conversation
There was a problem hiding this comment.
Pull request overview
This PR implements inlining functionality (closes #347) by refactoring the context sensitivity mechanism. The key changes consolidate multiple token types into a single parameterized KDepthToken<A> class and add generic type parameters throughout the scope tracking system.
- Unified context sensitivity: Replaces
ContextSensitivityToken,FullStackToken,LastCallToken, andContextInsensitiveTokenwith a singleKDepthToken<A>that handles all sensitivity levels via akparameter - Generic scope tracking: Added type parameter
<A extends AbstractLattice<A>>toScopeIdinterface and implementations - Enhanced API: Updated
ScopeId.push()to accept anAnalysisState<A>parameter for potential state-based inlining decisions
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| lisa/lisa-sdk/src/main/java/it/unive/lisa/interprocedural/ScopeId.java | Added generic type parameter and new state parameter to push method |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/interprocedural/UniqueScope.java | Made generic to match updated ScopeId interface |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/interprocedural/FixpointResults.java | Updated to use generic ScopeId |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/interprocedural/CFGResults.java | Updated to use generic ScopeId throughout |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/analysis/AnalyzedCFG.java | Updated id field and constructor parameters to use ScopeId |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/analysis/BackwardAnalyzedCFG.java | Updated id field and constructor parameters to use ScopeId |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/analysis/OptimizedAnalyzedCFG.java | Updated ScopeId usage and modified push call to include state parameter |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/analysis/BackwardOptimizedAnalyzedCFG.java | Updated ScopeId usage, renamed parameter from exitState to entryState for consistency, modified push call |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/program/cfg/CFG.java | Updated all fixpoint method signatures to use ScopeId |
| lisa/lisa-sdk/src/main/java/it/unive/lisa/util/numeric/IntInterval.java | Fixed spelling: corrected "then" to "than" in three documentation comments |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/KDepthToken.java | Refactored to implement ScopeId, added logic for k-depth sensitivity (k=0: insensitive, k<0: full stack, k>0: bounded) |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/ContextSensitivityToken.java | Removed - functionality consolidated into KDepthToken |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/FullStackToken.java | Removed - replaced by KDepthToken with k=-1 |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/LastCallToken.java | Removed - replaced by KDepthToken with k=1 |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/ContextInsensitiveToken.java | Removed - replaced by KDepthToken with k=0 |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/ContextBasedAnalysis.java | Replaced ContextSensitivityToken with KDepthToken, updated constructor to accept int k parameter |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/recursion/Recursion.java | Updated to use KDepthToken instead of ContextSensitivityToken |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/recursion/RecursionSolver.java | Updated to use KDepthToken instead of ContextSensitivityToken |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/ModularWorstCaseAnalysis.java | Changed id from static final to instance field to accommodate generic type parameter |
| lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/BackwardModularWorstCaseAnalysis.java | Changed id from static final to instance field to accommodate generic type parameter |
| lisa/lisa-sdk/src/test/java/it/unive/lisa/checks/semantic/CheckToolWithAnalysisResultsTest.java | Added diamond operator to UniqueScope instantiations |
| lisa/lisa-sdk/src/test/java/it/unive/lisa/analysis/AnalyzedCFGTest.java | Added diamond operator to UniqueScope instantiations |
| lisa/lisa-analyses/src/test/java/it/unive/lisa/program/cfg/CFGFixpointTest.java | Added diamond operator to UniqueScope instantiations |
| lisa/lisa-analyses/src/test/java/it/unive/lisa/TestParameterProvider.java | Added diamond operator to UniqueScope instantiations |
| lisa/lisa-analyses/src/test/java/it/unive/lisa/cron/*.java | Replaced FullStackToken.getSingleton() with new ContextBasedAnalysis<>(-1) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
.../lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/ContextBasedAnalysis.java
Outdated
Show resolved
Hide resolved
lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/KDepthToken.java
Outdated
Show resolved
Hide resolved
lisa/lisa-analyses/src/main/java/it/unive/lisa/interprocedural/context/KDepthToken.java
Outdated
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implemented features
Closes #347