Skip to content

Commit 819d531

Browse files
committed
Update debug printers for Arc.
1 parent e8989a0 commit 819d531

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/etc/gdb_providers.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,16 @@ def __init__(self, valobj, is_atomic=False):
168168
self.ptr = unwrap_unique_or_non_null(valobj["ptr"])
169169
self.value = self.ptr["data" if is_atomic else "value"]
170170
self.strong = self.ptr["strong"]["v" if is_atomic else "value"]["value"]
171-
self.weak = self.ptr["weak"]["v" if is_atomic else "value"]["value"] - 1
171+
self.weak = self.ptr["weak"]["v" if is_atomic else "value"]["value"]
172+
if is_atomic:
173+
if self.weak % 2 == 1:
174+
self.weak = 0
175+
elif self.weak > 0:
176+
self.weak >>= 1
177+
self.weak -= 1
178+
self.strong >>= 2
179+
else:
180+
self.weak -= 1
172181

173182
def to_string(self):
174183
if self.is_atomic:

src/etc/lldb_providers.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,8 @@ def __init__(self, valobj, dict, is_atomic=False):
610610

611611
self.value_builder = ValueBuilder(valobj)
612612

613+
self.is_atomic = is_atomic
614+
613615
self.update()
614616

615617
def num_children(self):
@@ -641,7 +643,16 @@ def get_child_at_index(self, index):
641643
def update(self):
642644
# type: () -> None
643645
self.strong_count = self.strong.GetValueAsUnsigned()
644-
self.weak_count = self.weak.GetValueAsUnsigned() - 1
646+
self.weak_count = self.weak.GetValueAsUnsigned()
647+
if self.is_atomic:
648+
if self.weak_count % 2 == 1:
649+
self.weak_count = 0
650+
elif self.weak_count > 0:
651+
self.weak_count >>= 1
652+
self.weak_count -= 1
653+
self.strong_count >>= 2
654+
else:
655+
self.weak_count -= 1
645656

646657
def has_children(self):
647658
# type: () -> bool

0 commit comments

Comments
 (0)