wallace requested changes to this revision.
wallace added a comment.
This revision now requires changes to proceed.

very good start!



================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:5-6
 
+FORWARD_LIST = "FORWARD_LIST"
+LIST = "LIST"
+
----------------
remove this


================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:21-151
+    def next_node_abstract(self, node):
         logger = lldb.formatters.Logger.Logger()
         return node.GetChildMemberWithName('_M_next')
 
-    def is_valid(self, node):
+    def is_valid_abstract(self, node, break_condition):
         logger = lldb.formatters.Logger.Logger()
+        valid = self.value_abstract(self.next_node_abstract(node)) != 
break_condition
----------------
remove all these _abstract suffixes. They make reading harder


================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:27
         logger = lldb.formatters.Logger.Logger()
-        valid = self.value(self.next_node(node)) != self.node_address
+        valid = self.value_abstract(self.next_node_abstract(node)) != 
break_condition
         if valid:
----------------
here you should call the method get_end_of_list_address that i mention below


================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:41-42
 
-    # Floyd's cycle-finding algorithm
-    # try to detect if this list has a loop
-    def has_loop(self):
----------------
don't remove this command. It's useful to know what's going on


================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:95
                 current = current.GetChildMemberWithName('_M_next')
-            return (size - 1)
+            return (size - size_correction)
         except:
----------------
what is this? try to come up with a better name with documentation to make this 
easier to understand


================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:161
+    def num_children(self):
+        return super().num_children_abstract(incoming_size=1, 
size_correction=0, is_valid_break_condition=0, type=FORWARD_LIST)
+
----------------
don't pass the is_valid_break_condition variable everywhere. It makes code more 
confusing. Instead, you should create a method "get_end_of_list_address" that 
should be overridden by each child implementation. Then you add a comment that 
this address is used to identify if a node traversal has reached its end


================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:161
+    def num_children(self):
+        return super().num_children_abstract(incoming_size=1, 
size_correction=0, is_valid_break_condition=0, type=FORWARD_LIST)
+
----------------
wallace wrote:
> don't pass the is_valid_break_condition variable everywhere. It makes code 
> more confusing. Instead, you should create a method "get_end_of_list_address" 
> that should be overridden by each child implementation. Then you add a 
> comment that this address is used to identify if a node traversal has reached 
> its end
don't pass 'type' here, instead, in the constructor of the parent in line 158 
pass a boolean flag 'has_prev'. That should be enough for the parent class to 
know if there's a prev pointer or not


================
Comment at: lldb/examples/synthetic/gnu_libstdcpp.py:161
+    def num_children(self):
+        return super().num_children_abstract(incoming_size=1, 
size_correction=0, is_valid_break_condition=0, type=FORWARD_LIST)
+
----------------
wallace wrote:
> wallace wrote:
> > don't pass the is_valid_break_condition variable everywhere. It makes code 
> > more confusing. Instead, you should create a method 
> > "get_end_of_list_address" that should be overridden by each child 
> > implementation. Then you add a comment that this address is used to 
> > identify if a node traversal has reached its end
> don't pass 'type' here, instead, in the constructor of the parent in line 158 
> pass a boolean flag 'has_prev'. That should be enough for the parent class to 
> know if there's a prev pointer or not
similarly, pass incoming_size to the constructor, and a better name is 
"node_value_pointer_offset", and you add a comment explaining that lists have 1 
or more pointers followed by the value


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113362

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

Reply via email to