.lldbinit
author Kartikaya Gupta <kgupta@mozilla.com>
Wed, 30 May 2018 15:54:50 -0400
changeset 420571 8a1bdb8d8bf5a1c8869bf3f82fd86c56f9f4b72c
parent 385053 67a8e12324569dd730347187e2ffccae486c758b
child 430547 ff3a0784588f2cb5aaa84e8d6a2a3677a5e52930
permissions -rw-r--r--
Bug 1457590 - Strengthen the contract around recycling HitTestingTreeNodes. r=botond This patch makes three related changes: - A non-functional change that factors a IsRecyclable function on HitTestingTreeNode. - A non-functional change that sprinkles proof-of-tree-lock arguments to a few HitTestingTreeNode functions, to ensure at compile-time that they can only be called while holding the tree lock. - A functional change that stops clearing mLayersId in HitTestingTreeNode::Destroy, so that if a node is non-recyclable, and it gets Destroy()'d while other code still has a RefPtr to it, that other code can still read the layers id off in a safe manner. These changes provide a stronger set of checks around node recycling, and allows for a safe mechanism to use a HitTestingTreeNode on the controller thread without having to lock the entire APZ tree. The mechanism is effectively a per-node lock, which will be added in the next patch. MozReview-Commit-ID: DBIjFDZJwhE

# .lldbinit file for debugging Mozilla

# -----------------------------------------------------------------------------
# For documentation on all of the commands and type summaries defined here and
# in the accompanying Python scripts, see third_party/python/lldbutils/README.txt.
# -----------------------------------------------------------------------------

# Import the module that defines complex Gecko debugging commands.  This assumes
# you are either running lldb from the top level source directory, the objdir,
# or the dist/bin directory.  (.lldbinit files in the objdir and dist/bin set
# topsrcdir appropriately.)
script topsrcdir = topsrcdir if locals().has_key("topsrcdir") else os.getcwd(); sys.path.append(os.path.join(topsrcdir, "third_party/python/lldbutils")); import lldbutils; lldbutils.init()

# Mozilla's use of UNIFIED_SOURCES to include multiple source files into a
# single compiled file breaks lldb breakpoint setting. This works around that.
# See http://lldb.llvm.org/troubleshooting.html for more info.
settings set target.inline-breakpoint-strategy always

# Show the dynamic type of an object when using "expr".  This, for example,
# will show a variable declared as "nsIFrame *" that points to an nsBlockFrame
# object as being of type "nsBlockFrame *" rather than "nsIFrame *".
settings set target.prefer-dynamic-value run-target

# Show the string value in atoms.
type summary add nsAtom --summary-string "${var.mString}"

# Show the value of text nodes.
type summary add nsTextNode --summary-string "${var.mText}"

# Dump the current JS stack.
command alias js expr DumpJSStack()