jingham added inline comments.

================
Comment at: lldb/source/Plugins/Language/ObjC/Cocoa.cpp:278
+          && descriptor->GetTaggedPointerInfo(nullptr, nullptr, &payload)) {
+        count = __builtin_popcountll(payload);
+        break;
----------------
bulbazord wrote:
> I'm pretty sure `__builtin_popcount` and friends are GNU extensions not 
> supported by MSVC. You'll probably need to abstract this out with C 
> preprocessor macro guards.
> 
> Alternatively, I think llvm has its own `popcount` implementation with 
> `llvm::popcount` in `include/llvm/ADT/bit.h`.
Good catch.  The llvm one is just a wrapper for the builtin when available and 
a by-hand version otherwise, so might as well use that one.


================
Comment at: lldb/source/Plugins/Language/ObjC/Cocoa.cpp:294
+          // This is the bitfield case.  The bitfield is a uint64_t:
+          count = process_sp->ReadUnsignedIntegerFromMemory(
+              valobj_addr + 2 * ptr_size, 8, 0, error);
----------------
mib wrote:
> Do we want to overwrite the `count` read previously ?
This code was originally written by Sean, who loved to write any code with 
complex logic in the form:

do {
  /// Complex Logic here
} while (0);

so that he could exit the whole construct with a "break".  After we get the bit 
mask value from the tagged pointer we `break` which sends us immediately to 
line 343.  So that setting and this one are on non-intersecting code paths.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157022

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to