svf-lib 1.0.2203 → 1.0.2205

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
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -123,14 +123,30 @@ public:
123
123
 
124
124
 
125
125
  // Return a handle to the stack of nodes in topological
126
- // order. This will be used to seed the initial solution
126
+ // order. This will be used to seed the initial solution
127
127
  // and improve efficiency.
128
128
  inline GNodeStack &topoNodeStack()
129
129
  {
130
130
  return _T;
131
131
  }
132
132
 
133
- const inline GNODESCCInfoMap &GNodeSCCInfo() const
133
+ /// Return a handle to the stack of nodes in reverse topological
134
+ /// order. This will be used to seed the initial solution
135
+ /// and improve efficiency.
136
+ inline GNodeStack revTopoNodeStack()
137
+ {
138
+ GNodeStack revTopoOrder;
139
+ GNodeStack topoOrder = topoNodeStack();
140
+ while(!topoOrder.empty())
141
+ {
142
+ NodeID nodeID = topoOrder.top();
143
+ topoOrder.pop();
144
+ revTopoOrder.push(nodeID);
145
+ }
146
+ return revTopoOrder;
147
+ }
148
+
149
+ const inline GNODESCCInfoMap &GNodeSCCInfo() const
134
150
  {
135
151
  return _NodeSCCAuxInfo;
136
152
  }
@@ -69,31 +69,23 @@ protected:
69
69
  /// SCC detection
70
70
  this->getSCCDetector()->find();
71
71
 
72
+ assert(nodeStack.empty() && "node stack is not empty, some nodes are not popped properly.");
73
+
72
74
  /// Both rep and sub nodes need to be processed later.
73
75
  /// Collect sub nodes from SCCDetector.
74
- NodeStack revTopoStack;
75
- NodeStack& topoStack = this->getSCCDetector()->topoNodeStack();
76
- while (!topoStack.empty())
76
+ NodeStack revTopoStack = this->getSCCDetector()->revTopoNodeStack();
77
+ while (!revTopoStack.empty())
77
78
  {
78
- NodeID nodeId = topoStack.top();
79
- topoStack.pop();
79
+ NodeID nodeId = revTopoStack.top();
80
+ revTopoStack.pop();
80
81
  const NodeBS& subNodes = this->getSCCDetector()->subNodes(nodeId);
81
82
  for (NodeBS::iterator it = subNodes.begin(), eit = subNodes.end(); it != eit; ++it)
82
83
  {
83
- revTopoStack.push(*it);
84
+ /// restore the topological order.
85
+ nodeStack.push(*it);
84
86
  }
85
87
  }
86
88
 
87
- assert(nodeStack.empty() && "node stack is not empty, some nodes are not popped properly.");
88
-
89
- /// restore the topological order.
90
- while (!revTopoStack.empty())
91
- {
92
- NodeID nodeId = revTopoStack.top();
93
- revTopoStack.pop();
94
- nodeStack.push(nodeId);
95
- }
96
-
97
89
  return nodeStack;
98
90
  }
99
91
  };
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -130,12 +130,17 @@ public:
130
130
  return _T;
131
131
  }
132
132
 
133
+ inline const GNodeStack& topoNodeStack() const
134
+ {
135
+ return _T;
136
+ }
137
+
133
138
  /// Return a handle to the stack of nodes in reverse topological
134
139
  /// order. This will be used to seed the initial solution
135
140
  /// and improve efficiency.
136
- inline GNodeStack revTopoNodeStack()
141
+ inline FIFOWorkList<NodeID> revTopoNodeStack() const
137
142
  {
138
- GNodeStack revTopoOrder;
143
+ FIFOWorkList<NodeID> revTopoOrder;
139
144
  GNodeStack topoOrder = topoNodeStack();
140
145
  while(!topoOrder.empty())
141
146
  {
@@ -268,8 +268,6 @@ private:
268
268
  /// Get all the objects in callee's modref escaped via global objects (the chain pts of globals)
269
269
  void getEscapObjviaGlobals(NodeBS& globs, const NodeBS& pts);
270
270
 
271
- /// Get reverse topo call graph scc
272
- void getCallGraphSCCRevTopoOrder(WorkList& worklist);
273
271
 
274
272
  protected:
275
273
  MRGenerator(BVDataPTAImpl* p, bool ptrOnly);
@@ -73,10 +73,10 @@ protected:
73
73
 
74
74
  /// Both rep and sub nodes need to be processed later.
75
75
  /// Collect sub nodes from SCCDetector.
76
- NodeStack revTopoStack = this->getSCCDetector()->revTopoNodeStack();
76
+ FIFOWorkList<NodeID> revTopoStack = this->getSCCDetector()->revTopoNodeStack();
77
77
  while (!revTopoStack.empty())
78
78
  {
79
- NodeID nodeId = revTopoStack.top();
79
+ NodeID nodeId = revTopoStack.front();
80
80
  revTopoStack.pop();
81
81
  const NodeBS& subNodes = this->getSCCDetector()->subNodes(nodeId);
82
82
  for (NodeBS::iterator it = subNodes.begin(), eit = subNodes.end(); it != eit; ++it)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-lib",
3
- "version": "1.0.2203",
3
+ "version": "1.0.2205",
4
4
  "description": "SVF's npm support",
5
5
  "main": "index.js",
6
6
  "scripts": {