[Openmp-commits] [PATCH] D123443: [OpenMP][NFCI] Cleanup APIs and improve object encapsulation

Johannes Doerfert via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Tue Apr 12 08:05:19 PDT 2022


jdoerfert added inline comments.


================
Comment at: openmp/libomptarget/src/device.cpp:219
       // It might have been allocated with the parent, but it's still new.
-      IsNew = HT.getTotalRefCount() == 1;
+      TPR.setIsNew(HT.getTotalRefCount() == 1);
       RefCountAction = " (update suppressed)";
----------------
ye-luo wrote:
> jdoerfert wrote:
> > ye-luo wrote:
> > > jdoerfert wrote:
> > > > ye-luo wrote:
> > > > > Can we avoid all the setXXX functions?
> > > > > I feel better keep the local IsNew and then return by calling TPR::TPR(Entry, TargetPointer, IsNew...)
> > > > But then I need to do manual locking again and I would like us to avoid that.
> > > Do you have a patch with locking added? Try to understand better your intention.
> > I do not. Every `setEntry` will lock the entry and unlock the lat entry, if any. Every time TPR goes out of scope, e.g., when we give up and return an dummy object, you unlock the entry. If you do manual locking the caller needs to also unlock when TPR is destroyed, various places all across the code base.
> Assuming the lock is in the entry, it makes sense.
Yes. Entry is the one with the lock. TPR is bacically a exclusive accessor with some extra information. @tianshilei1992 asked for more documentation, I will add that before I merge.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D123443/new/

https://reviews.llvm.org/D123443



More information about the Openmp-commits mailing list