author Nicholas Nethercote <nnethercote@mozilla.com>
Tue, 26 Sep 2017 08:33:21 +1000
changeset 383168 1ede5092b3695bac4248f6f9435120a7ef603a7c
parent 362829 ff64a7889c1fac56d48205fc2fad4eb5aa481a73
child 385053 67a8e12324569dd730347187e2ffccae486c758b
permissions -rw-r--r--
Bug 1400459 (part 2) - Devirtualize nsIAtom. r=heycam. This patch merges nsAtom into nsIAtom. For the moment, both names can be used interchangeably due to a typedef. The patch also devirtualizes nsIAtom, by making it not inherit from nsISupports, removing NS_DECL_NSIATOM, and dropping the use of NS_IMETHOD_. It also removes nsIAtom's IIDs. These changes trigger knock-on changes throughout the codebase, changing the types of lots of things as follows. - nsCOMPtr<nsIAtom> --> RefPtr<nsIAtom> - nsCOMArray<nsIAtom> --> nsTArray<RefPtr<nsIAtom>> - Count() --> Length() - ObjectAt() --> ElementAt() - AppendObject() --> AppendElement() - RemoveObjectAt() --> RemoveElementAt() - ns*Hashtable<nsISupportsHashKey, ...> --> ns*Hashtable<nsRefPtrHashKey<nsIAtom>, ...> - nsInterfaceHashtable<T, nsIAtom> --> nsRefPtrHashtable<T, nsIAtom> - This requires adding a Get() method to nsRefPtrHashtable that it lacks but nsInterfaceHashtable has. - nsCOMPtr<nsIMutableArray> --> nsTArray<RefPtr<nsIAtom>> - nsArrayBase::Create() --> nsTArray() - GetLength() --> Length() - do_QueryElementAt() --> operator[] The patch also has some changes to Rust code that manipulates nsIAtom. MozReview-Commit-ID: DykOl8aEnUJ

# .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 nsIAtom --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()