svf-tools 1.0.1279 → 1.0.1281

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.1279",
3
+ "version": "1.0.1281",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/setup.sh CHANGED
@@ -74,3 +74,5 @@ export PATH=$SVF_DIR/$Build/bin:$PATH
74
74
 
75
75
  # Add compiled library directories to $LD_LIBRARY_PATH
76
76
  export LD_LIBRARY_PATH=$SVF_DIR/$Build/svf:$SVF_DIR/$Build/svf-llvm:$LD_LIBRARY_PATH
77
+
78
+ echo "Added SVF, LLVM, and Z3 to each of \$PATH, \$LD_LIBRARY_PATH, and \$DYLD_LIBRARY_PATH."
@@ -212,12 +212,12 @@ public:
212
212
 
213
213
  // From all the candidates, returns the best mapping for pointsToSets (points-to set -> # occurrences).
214
214
  static inline std::pair<hclust_fast_methods, std::vector<NodeID>> determineBestMapping(
215
- const std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> &candidates,
216
- Map<PointsTo, unsigned> pointsToSets,
217
- const std::string &evalSubtitle,
218
- double &evalTime,
219
- bool printStat
220
- );
215
+ const std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> &candidates,
216
+ Map<PointsTo, unsigned> pointsToSets,
217
+ const std::string &evalSubtitle,
218
+ double &evalTime,
219
+ bool printStat
220
+ );
221
221
  };
222
222
  };
223
223
 
@@ -392,7 +392,7 @@ std::vector<NodeID> NodeIDAllocator::Clusterer::cluster(
392
392
 
393
393
  // Work out which of the mappings we generated looks best.
394
394
  std::pair<hclust_fast_methods, std::vector<NodeID>> bestMapping =
395
- determineBestMapping(candidates, pointsToSets, evalSubtitle, evalTime, printStat);
395
+ determineBestMapping(candidates, pointsToSets, evalSubtitle, evalTime, printStat);
396
396
 
397
397
  overallStats[DistanceMatrixTime] = std::to_string(distanceMatrixTime);
398
398
  overallStats[DendrogramTraversalTime] = std::to_string(dendrogramTraversalTime);
@@ -401,7 +401,10 @@ std::vector<NodeID> NodeIDAllocator::Clusterer::cluster(
401
401
  overallStats[TotalTime] = std::to_string(distanceMatrixTime + dendrogramTraversalTime + fastClusterTime + regioningTime + evalTime);
402
402
 
403
403
  overallStats[BestCandidate] = SVFUtil::hclustMethodToString(bestMapping.first);
404
- if (printStat) { printStats(evalSubtitle + ": overall", overallStats); }
404
+ if (printStat)
405
+ {
406
+ printStats(evalSubtitle + ": overall", overallStats);
407
+ }
405
408
 
406
409
  return bestMapping.second;
407
410
  }
@@ -660,12 +663,12 @@ void NodeIDAllocator::Clusterer::evaluate(const std::vector<NodeID> &nodeMap, co
660
663
 
661
664
  // Work out which of the mappings we generated looks best.
662
665
  std::pair<hclust_fast_methods, std::vector<NodeID>> NodeIDAllocator::Clusterer::determineBestMapping(
663
- const std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> &candidates,
664
- Map<PointsTo, unsigned> pointsToSets,
665
- const std::string &evalSubtitle,
666
- double &evalTime,
667
- bool printStat
668
- )
666
+ const std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> &candidates,
667
+ Map<PointsTo, unsigned> pointsToSets,
668
+ const std::string &evalSubtitle,
669
+ double &evalTime,
670
+ bool printStat
671
+ )
669
672
  {
670
673
  // In case we're not comparing anything, set to first "candidate".
671
674
  std::pair<hclust_fast_methods, std::vector<NodeID>> bestMapping = candidates[0];
@@ -685,7 +688,10 @@ std::pair<hclust_fast_methods, std::vector<NodeID>> NodeIDAllocator::Clusterer::
685
688
  evaluate(candidateMapping, pointsToSets, candidateStats, true);
686
689
  const double clkEnd = PTAStat::getClk(true);
687
690
  evalTime += (clkEnd - clkStart) / TIMEINTERVAL;
688
- if (printStat) { printStats(evalSubtitle + ": candidate " + candidateMethodName, candidateStats); }
691
+ if (printStat)
692
+ {
693
+ printStats(evalSubtitle + ": candidate " + candidateMethodName, candidateStats);
694
+ }
689
695
 
690
696
  size_t candidateWords = 0;
691
697
  if (Options::PtType() == PointsTo::SBV) candidateWords = std::stoull(candidateStats[NewSbvNumWords]);
@@ -439,7 +439,10 @@ void Andersen::finalize()
439
439
  // TODO: should we use liveOnly?
440
440
  // TODO: parameterise final arg.
441
441
  NodeIDAllocator::Clusterer::evaluate(*PointsTo::getCurrentBestNodeMapping(), ptd->getAllPts(true), stats, true);
442
- if (print_stat) { NodeIDAllocator::Clusterer::printStats("post-main", stats); }
442
+ if (print_stat)
443
+ {
444
+ NodeIDAllocator::Clusterer::printStats("post-main", stats);
445
+ }
443
446
  }
444
447
 
445
448
  /// sanitize field insensitive obj
@@ -188,7 +188,10 @@ void FlowSensitive::finalize()
188
188
  Map<PointsTo, unsigned> allPts = ptd->getAllPts(true);
189
189
  // TODO: parameterise final arg.
190
190
  NodeIDAllocator::Clusterer::evaluate(*PointsTo::getCurrentBestNodeMapping(), allPts, stats, true);
191
- if (print_stat) { NodeIDAllocator::Clusterer::printStats("post-main: best", stats); }
191
+ if (print_stat)
192
+ {
193
+ NodeIDAllocator::Clusterer::printStats("post-main: best", stats);
194
+ }
192
195
  }
193
196
 
194
197
  BVDataPTAImpl::finalize();