author Nicholas Nethercote <>
Tue, 26 Sep 2017 08:33:21 +1000
changeset 383168 1ede5092b3695bac4248f6f9435120a7ef603a7c
parent 310211 54cf74de41dfa8dfd04fcdf01616609e7f7e2704
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

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at
# Welcome to the new world of configure. We're working on moving to a
# python based configure. In the meanwhile, remains of the old autoconf
# based configure is in
# If you need to add something, please come talk to the build system
# peers for now.
# Because adding a configure file in the tree is going to conflict with
# existing configure files in people's (and automation) work trees, and
# because some automation jobs are still running autoconf and configure
# "manually", this file is actually an m4 file that is processed by
# autoconf, but doesn't call any autoconf macros. The `divert` line
# below ensures the script that follows is output by autoconf.
: "divert(0)dnl"

SRCDIR=$(dirname $0)
export OLD_CONFIGURE="$SRCDIR"/old-configure

which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/" "$@" || exec python "$TOPSRCDIR/" "$@"