svf-lib 1.0.714 → 1.0.715
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
|
|
@@ -138,7 +138,7 @@ public:
|
|
|
138
138
|
if (lhs != result)
|
|
139
139
|
{
|
|
140
140
|
unionCache[std::minmax(lhs, result)] = result;
|
|
141
|
-
++
|
|
141
|
+
++preemptiveUnions;
|
|
142
142
|
++totalUnions;
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -146,7 +146,7 @@ public:
|
|
|
146
146
|
if (rhs != result)
|
|
147
147
|
{
|
|
148
148
|
unionCache[std::minmax(rhs, result)] = result;
|
|
149
|
-
++
|
|
149
|
+
++preemptiveUnions;
|
|
150
150
|
++totalUnions;
|
|
151
151
|
}
|
|
152
152
|
} else ++lookupUnions;
|
|
@@ -195,17 +195,17 @@ public:
|
|
|
195
195
|
{
|
|
196
196
|
// result AND rhs = EMPTY_SET,
|
|
197
197
|
intersectionCache[std::minmax(result, rhs)] = emptyPointsToId();
|
|
198
|
-
++
|
|
198
|
+
++preemptiveIntersections;
|
|
199
199
|
++totalIntersections;
|
|
200
200
|
|
|
201
201
|
// and result AND lhs = result,
|
|
202
202
|
intersectionCache[std::minmax(result, lhs)] = result;
|
|
203
|
-
++
|
|
203
|
+
++preemptiveIntersections;
|
|
204
204
|
++totalIntersections;
|
|
205
205
|
|
|
206
206
|
// and result - rhs = result.
|
|
207
207
|
complementCache[std::make_pair(result, rhs)] = result;
|
|
208
|
-
++
|
|
208
|
+
++preemptiveComplements;
|
|
209
209
|
++totalComplements;
|
|
210
210
|
}
|
|
211
211
|
} else ++lookupComplements;
|
|
@@ -252,7 +252,7 @@ public:
|
|
|
252
252
|
if (result != rhs)
|
|
253
253
|
{
|
|
254
254
|
intersectionCache[std::minmax(result, rhs)] = result;
|
|
255
|
-
++
|
|
255
|
+
++preemptiveIntersections;
|
|
256
256
|
++totalIntersections;
|
|
257
257
|
}
|
|
258
258
|
|
|
@@ -260,7 +260,7 @@ public:
|
|
|
260
260
|
if (result != lhs)
|
|
261
261
|
{
|
|
262
262
|
intersectionCache[std::minmax(result, lhs)] = result;
|
|
263
|
-
++
|
|
263
|
+
++preemptiveIntersections;
|
|
264
264
|
++totalIntersections;
|
|
265
265
|
}
|
|
266
266
|
|
|
@@ -269,7 +269,7 @@ public:
|
|
|
269
269
|
if (result != emptyPointsToId() && result != lhs)
|
|
270
270
|
{
|
|
271
271
|
unionCache[std::minmax(lhs, result)] = lhs;
|
|
272
|
-
++
|
|
272
|
+
++preemptiveUnions;
|
|
273
273
|
++totalUnions;
|
|
274
274
|
}
|
|
275
275
|
|
|
@@ -277,7 +277,7 @@ public:
|
|
|
277
277
|
if (result != emptyPointsToId() && result != rhs)
|
|
278
278
|
{
|
|
279
279
|
unionCache[std::minmax(rhs, result)] = rhs;
|
|
280
|
-
++
|
|
280
|
+
++preemptiveUnions;
|
|
281
281
|
++totalUnions;
|
|
282
282
|
}
|
|
283
283
|
}
|
|
@@ -294,22 +294,25 @@ public:
|
|
|
294
294
|
|
|
295
295
|
std::cout << "****Persistent Points-To Cache Statistics: " << subtitle << "****\n";
|
|
296
296
|
|
|
297
|
-
std::cout << std::setw(fieldWidth) << "UniquePointsToSets"
|
|
297
|
+
std::cout << std::setw(fieldWidth) << "UniquePointsToSets" << idToPts.size() << "\n";
|
|
298
298
|
|
|
299
|
-
std::cout << std::setw(fieldWidth) << "TotalUnions"
|
|
300
|
-
std::cout << std::setw(fieldWidth) << "PropertyUnions"
|
|
301
|
-
std::cout << std::setw(fieldWidth) << "UniqueUnions"
|
|
302
|
-
std::cout << std::setw(fieldWidth) << "LookupUnions"
|
|
299
|
+
std::cout << std::setw(fieldWidth) << "TotalUnions" << totalUnions << "\n";
|
|
300
|
+
std::cout << std::setw(fieldWidth) << "PropertyUnions" << propertyUnions << "\n";
|
|
301
|
+
std::cout << std::setw(fieldWidth) << "UniqueUnions" << uniqueUnions << "\n";
|
|
302
|
+
std::cout << std::setw(fieldWidth) << "LookupUnions" << lookupUnions << "\n";
|
|
303
|
+
std::cout << std::setw(fieldWidth) << "PreemptiveUnions" << preemptiveUnions << "\n";
|
|
303
304
|
|
|
304
|
-
std::cout << std::setw(fieldWidth) << "TotalComplements"
|
|
305
|
-
std::cout << std::setw(fieldWidth) << "PropertyComplements"
|
|
306
|
-
std::cout << std::setw(fieldWidth) << "UniqueComplements"
|
|
307
|
-
std::cout << std::setw(fieldWidth) << "LookupComplements"
|
|
305
|
+
std::cout << std::setw(fieldWidth) << "TotalComplements" << totalComplements << "\n";
|
|
306
|
+
std::cout << std::setw(fieldWidth) << "PropertyComplements" << propertyComplements << "\n";
|
|
307
|
+
std::cout << std::setw(fieldWidth) << "UniqueComplements" << uniqueComplements << "\n";
|
|
308
|
+
std::cout << std::setw(fieldWidth) << "LookupComplements" << lookupComplements << "\n";
|
|
309
|
+
std::cout << std::setw(fieldWidth) << "PreemptiveComplements" << preemptiveComplements << "\n";
|
|
308
310
|
|
|
309
|
-
std::cout << std::setw(fieldWidth) << "TotalIntersections"
|
|
310
|
-
std::cout << std::setw(fieldWidth) << "PropertyIntersections"
|
|
311
|
-
std::cout << std::setw(fieldWidth) << "UniqueIntersections"
|
|
312
|
-
std::cout << std::setw(fieldWidth) << "LookupIntersections"
|
|
311
|
+
std::cout << std::setw(fieldWidth) << "TotalIntersections" << totalIntersections << "\n";
|
|
312
|
+
std::cout << std::setw(fieldWidth) << "PropertyIntersections" << propertyIntersections << "\n";
|
|
313
|
+
std::cout << std::setw(fieldWidth) << "UniqueIntersections" << uniqueIntersections << "\n";
|
|
314
|
+
std::cout << std::setw(fieldWidth) << "LookupIntersections" << lookupIntersections << "\n";
|
|
315
|
+
std::cout << std::setw(fieldWidth) << "PreemptiveIntersections" << preemptiveIntersections << "\n";
|
|
313
316
|
|
|
314
317
|
std::cout.flush();
|
|
315
318
|
}
|
|
@@ -379,18 +382,21 @@ private:
|
|
|
379
382
|
inline void initStats(void)
|
|
380
383
|
{
|
|
381
384
|
|
|
382
|
-
totalUnions
|
|
383
|
-
uniqueUnions
|
|
384
|
-
propertyUnions
|
|
385
|
-
lookupUnions
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
385
|
+
totalUnions = 0;
|
|
386
|
+
uniqueUnions = 0;
|
|
387
|
+
propertyUnions = 0;
|
|
388
|
+
lookupUnions = 0;
|
|
389
|
+
preemptiveUnions = 0;
|
|
390
|
+
totalComplements = 0;
|
|
391
|
+
uniqueComplements = 0;
|
|
392
|
+
propertyComplements = 0;
|
|
393
|
+
lookupComplements = 0;
|
|
394
|
+
preemptiveComplements = 0;
|
|
395
|
+
totalIntersections = 0;
|
|
396
|
+
uniqueIntersections = 0;
|
|
397
|
+
propertyIntersections = 0;
|
|
398
|
+
lookupIntersections = 0;
|
|
399
|
+
preemptiveIntersections = 0;
|
|
394
400
|
}
|
|
395
401
|
|
|
396
402
|
private:
|
|
@@ -418,14 +424,17 @@ private:
|
|
|
418
424
|
u64_t uniqueUnions;
|
|
419
425
|
u64_t propertyUnions;
|
|
420
426
|
u64_t lookupUnions;
|
|
427
|
+
u64_t preemptiveUnions;
|
|
421
428
|
u64_t totalComplements;
|
|
422
429
|
u64_t uniqueComplements;
|
|
423
430
|
u64_t propertyComplements;
|
|
424
431
|
u64_t lookupComplements;
|
|
432
|
+
u64_t preemptiveComplements;
|
|
425
433
|
u64_t totalIntersections;
|
|
426
434
|
u64_t uniqueIntersections;
|
|
427
435
|
u64_t propertyIntersections;
|
|
428
436
|
u64_t lookupIntersections;
|
|
437
|
+
u64_t preemptiveIntersections;
|
|
429
438
|
};
|
|
430
439
|
|
|
431
440
|
} // End namespace SVF
|
|
@@ -165,11 +165,7 @@ protected:
|
|
|
165
165
|
|
|
166
166
|
|
|
167
167
|
/// Finalization of pointer analysis, and normalize points-to information to Bit Vector representation
|
|
168
|
-
virtual void finalize()
|
|
169
|
-
{
|
|
170
|
-
normalizePointsTo();
|
|
171
|
-
PointerAnalysis::finalize();
|
|
172
|
-
}
|
|
168
|
+
virtual void finalize();
|
|
173
169
|
|
|
174
170
|
/// Update callgraph. This should be implemented by its subclass.
|
|
175
171
|
virtual inline bool updateCallGraph(const CallSiteToFunPtrMap&)
|