svf-lib 1.0.2525 → 1.0.2527

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
@@ -156,9 +156,10 @@ private:
156
156
  /// Initialize abstract state for the global ICFG node and process global statements
157
157
  virtual void handleGlobalNode();
158
158
 
159
- /// Propagate the post-state of a node to all its intra-procedural successors
160
- void propagateToSuccessor(const ICFGNode* node,
161
- const Set<const ICFGNode*>* withinSet = nullptr);
159
+ /// Pull-based state merge: read abstractTrace[pred] for each predecessor,
160
+ /// apply branch refinement for conditional IntraCFGEdges, and join into
161
+ /// abstractTrace[node]. Returns true if at least one predecessor had state.
162
+ bool mergeStatesFromPredecessors(const ICFGNode* node);
162
163
 
163
164
  /// Check if the branch on intraEdge is feasible under abstract state as
164
165
  bool isBranchFeasible(const IntraCFGEdge* intraEdge, AbstractState& as);
@@ -242,7 +243,7 @@ private:
242
243
  // there data should be shared with subclasses
243
244
  Map<std::string, std::function<void(const CallICFGNode*)>> func_map;
244
245
 
245
- Map<const ICFGNode*, AbstractState> abstractTrace; // abstract states for nodes (pre-state before execution, post-state after)
246
+ Map<const ICFGNode*, AbstractState> abstractTrace; // abstract states for nodes
246
247
  Set<const ICFGNode*> allAnalyzedNodes; // All nodes ever analyzed (across all entry points)
247
248
  std::string moduleName;
248
249
 
Binary file
@@ -156,9 +156,10 @@ private:
156
156
  /// Initialize abstract state for the global ICFG node and process global statements
157
157
  virtual void handleGlobalNode();
158
158
 
159
- /// Propagate the post-state of a node to all its intra-procedural successors
160
- void propagateToSuccessor(const ICFGNode* node,
161
- const Set<const ICFGNode*>* withinSet = nullptr);
159
+ /// Pull-based state merge: read abstractTrace[pred] for each predecessor,
160
+ /// apply branch refinement for conditional IntraCFGEdges, and join into
161
+ /// abstractTrace[node]. Returns true if at least one predecessor had state.
162
+ bool mergeStatesFromPredecessors(const ICFGNode* node);
162
163
 
163
164
  /// Check if the branch on intraEdge is feasible under abstract state as
164
165
  bool isBranchFeasible(const IntraCFGEdge* intraEdge, AbstractState& as);
@@ -242,7 +243,7 @@ private:
242
243
  // there data should be shared with subclasses
243
244
  Map<std::string, std::function<void(const CallICFGNode*)>> func_map;
244
245
 
245
- Map<const ICFGNode*, AbstractState> abstractTrace; // abstract states for nodes (pre-state before execution, post-state after)
246
+ Map<const ICFGNode*, AbstractState> abstractTrace; // abstract states for nodes
246
247
  Set<const ICFGNode*> allAnalyzedNodes; // All nodes ever analyzed (across all entry points)
247
248
  std::string moduleName;
248
249
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-lib",
3
- "version": "1.0.2525",
3
+ "version": "1.0.2527",
4
4
  "description": "SVF's npm support",
5
5
  "main": "index.js",
6
6
  "scripts": {