summaryrefslogtreecommitdiffstats
path: root/lldb/source/DataFormatters/Cocoa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/DataFormatters/Cocoa.cpp')
-rw-r--r--lldb/source/DataFormatters/Cocoa.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/lldb/source/DataFormatters/Cocoa.cpp b/lldb/source/DataFormatters/Cocoa.cpp
index 858bba98abc..e7f4def8d15 100644
--- a/lldb/source/DataFormatters/Cocoa.cpp
+++ b/lldb/source/DataFormatters/Cocoa.cpp
@@ -321,12 +321,10 @@ lldb_private::formatters::NSNumberSummaryProvider (ValueObject& valobj, Stream&
if (!strcmp(class_name,"NSNumber") || !strcmp(class_name,"__NSCFNumber"))
{
- if (descriptor->IsTagged())
+ uint64_t value = 0;
+ uint64_t i_bits = 0;
+ if (descriptor->GetTaggedPointerInfo(&i_bits,&value))
{
- // we have a call to get info and value bits in the tagged descriptor. but we prefer not to cast and replicate them
- int64_t value = (valobj_addr & ~0x0000000000000000FFL) >> 8;
- uint64_t i_bits = (valobj_addr & 0xF0) >> 4;
-
switch (i_bits)
{
case 0:
@@ -515,10 +513,9 @@ lldb_private::formatters::NSDateSummaryProvider (ValueObject& valobj, Stream& st
strcmp(class_name,"__NSDate") == 0 ||
strcmp(class_name,"__NSTaggedDate") == 0)
{
- if (descriptor->IsTagged())
+ uint64_t info_bits=0,value_bits = 0;
+ if (descriptor->GetTaggedPointerInfo(&info_bits,&value_bits))
{
- uint64_t info_bits = (valobj_addr & 0xF0ULL) >> 4;
- uint64_t value_bits = (valobj_addr & ~0x0000000000000000FFULL) >> 8;
date_value_bits = ((value_bits << 8) | (info_bits << 4));
date_value = *((double*)&date_value_bits);
}
OpenPOWER on IntegriCloud