Nicholas Nethercote
d71abcd056
Bug 1174625 - Overhaul PLDHashTable's iterator. r=froydnj.
...
This change splits PLDHashTable::Iterator::NextEntry() into two separate
functions, which allow you to get the current element and advance the iterator
separately, which means you can use a for-loop to iterate instead of a
while-loop.
As part of this change, the internals of PLDHashTable::Iterator were
significantly changed and simplified (and modelled after js::HashTable's
equivalent code). It's no longer duplicating code from PL_DHashTableEnumerator.
The chaos mode code was a casualty of this, but given how unreliable that code
has proven to be (see bug 1173212, bug 1174046) this is for the best. (We can
reimplement chaos mode once PLDHashTable::Iterator is back on more solid
footing again, if we think it's important.)
All these changes will make it much easier to add an alternative Iterator that
removes elements, which was turning out to be difficult with the prior code.
In order to make the for-loop header usually fit on a single line, I
deliberately renamed a bunch of things to have shorter names.
In summary, you used to write this:
PLDHashTable::Iterator iter(&table);
while (iter.HasMoreEntries()) {
auto entry = static_cast<FooEntry*>(iter.NextEntry());
// ... do stuff with |entry| ...
}
// iter's scope extends beyond here
and now you write this:
for (auto iter = table.Iter(); !iter.Done(); iter.Next()) {
auto entry = static_cast<FooEntry*>(iter.Get());
// ... do stuff with |entry| ...
}
// iter's scope doesn't reach here
2015-06-11 21:19:53 -07:00
Nicholas Nethercote
1d1a248f5c
Bug 1172761 (part 1) - Remove PL_DHashTableEnumerator use from nsAtomTable. r=froydnj.
2015-06-10 13:07:40 -07:00
Nicholas Nethercote
4500bfa831
Bug 1170416 (part 3) - Remove the PLDHashTable2 typedef. r=froydnj.
2015-05-19 16:46:17 -07:00
Nicholas Nethercote
1f728cc095
Bug 1165768 (part 6) - Convert |gAtomTable| to |PLDHashTable2*|. r=froydnj.
2015-05-18 00:52:08 -07:00
Nicholas Nethercote
594f872fe6
Back out all four patches from bug 1161377. r=me.
...
Due to Android startup regressions (bug 1163066) and plugin crashes (bug
1165155).
2015-05-14 21:48:43 -07:00
Nicholas Nethercote
35cc1f7af7
Bug 1161377 (part 2.5) - Move all static PLDHashTable instances onto the heap to avoid static constructors. r=froydnj.
2015-05-12 17:33:22 -07:00
Andrew McCreight
00f75cda98
Bug 1151541, part 2 - Fix mode lines in xpcom/. r=froydnj
2015-04-09 10:25:05 -07:00
Ehsan Akhgari
ea41d8de48
Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
...
This patch was automatically generated using the following script:
function convert() {
echo "Converting $1 to $2..."
find . \
! -wholename "*/.git*" \
! -wholename "obj-ff-dbg*" \
-type f \
\( -iname "*.cpp" \
-o -iname "*.h" \
-o -iname "*.c" \
-o -iname "*.cc" \
-o -iname "*.idl" \
-o -iname "*.ipdl" \
-o -iname "*.ipdlh" \
-o -iname "*.mm" \) | \
xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}
convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Nicholas Nethercote
3b0764a330
Bug 1131901 (part 1) - Make PL_DHashTableAdd() infallible by default, and add a fallible alternative. r=froydnj.
...
I kept all the existing PL_DHashTableAdd() calls fallible, in order to be
conservative, except for the ones in nsAtomTable.cpp which already were
followed immediately by an abort on failure.
2015-02-02 14:48:58 -08:00
Andrew McCreight
414d2fb22b
Bug 1131199, part 2 - Make PLDHashtInitEntry infallible. r=froydnj
...
Also, drop the unused table argument.
2015-02-11 09:46:40 -08:00
Nicholas Nethercote
1ce96de5ae
Back out changesets 2fcef6b54be7, 2be07829fefc, 66dfe37b8532, df3fcd2be8fd, 0a436bce77a6 (bug 1050035) for causing intermittent crashes and assertion failures.
2015-02-10 14:39:49 -08:00
Nicholas Nethercote
a3bf151ee6
Bug 1050035 (part 4) - Make PL_DHashTableAdd() infallible by default, and add a fallible alternative. r=froydnj.
...
I kept all the existing PL_DHashTableAdd() calls fallible, in order to be
conservative, except for the ones in nsAtomTable.cpp which already were
followed immediately by an abort on failure.
2015-02-02 14:48:58 -08:00
Nicholas Nethercote
4604f714c6
Bug 1123151 (part 2) - Add PLDHashTable::IsInitialized(). r=froydnj.
...
This encapsulates most of the uses of PLDHashTable::ops.
2015-01-19 16:11:34 -08:00
Nicholas Nethercote
009293c72a
Bug 1123151 (part 1) - Set PLDHashTable::ops consistently. r=froydnj.
...
Currently the setting of PLDHashTable::ops is very haphazard.
- PLDHashTable has no constructor, so it's not auto-nulled, so lots of places
null it themselves.
- In the fallible PLDHashTable::Init() function, if the entry storage
allocation fails we'll be left with a table that has |ops| set -- indicating
it's been initialized -- but has null entry storage. I'm not certain this can
cause problems but it feels unsafe, and some (but not all) callers of Init()
null it on failure.
- PLDHashTable does not null |ops| in Finish(), so some (but not all) callers
do this themselves.
This patch makes things simpler.
- It adds a constructor that zeroes |ops|.
- It modifies Init() so that it only sets |ops| once success is ensured.
- It zeroes |ops| in Finish().
- Finally, it removes all the now-unnecessary |ops| nulling done by the users
of PLDHashTable.
2015-01-19 16:01:24 -08:00
Ehsan Akhgari
7565180148
Bug 1122995 - Clarify the lifetime rules applying to the permanent and non-permanent nsIATOM* members in nsAtomTable.cpp; r=froydnj
2015-01-19 09:03:10 -05:00
Nicholas Nethercote
d746138aca
Bug 1121304 (part 2, attempt 2) - Remove PLDHashTableOps::{alloc,free}Table. r=froydnj.
2015-01-14 14:35:56 -08:00
Phil Ringnalda
41e41579d9
Backed out 2 changesets (bug 1121304) for consistent b2g hangs in webgl-color-test.html?frame=1&__&preserve&premult&_____
...
Backed out changeset 20651ac19549 (bug 1121304)
Backed out changeset 758afec77c95 (bug 1121304)
2015-01-14 22:02:23 -08:00
Nicholas Nethercote
70f5bf6167
Bug 1121304 (part 2) - Remove PLDHashTableOps::{alloc,free}Table. r=froydnj.
2015-01-14 14:35:56 -08:00
Nicholas Nethercote
43fc26b699
Bug 1120476 (part 4) - Remove PLDHashTableOps::finalize. r=froydnj.
2015-01-13 19:02:35 -08:00
Nicholas Nethercote
eda870fe92
Bug 1120476 (part 3) - Remove PLDHashTable::data. r=froydnj.
2015-01-13 16:42:13 -08:00
Michael Pruett
cdea6d623f
Bug 1118024 - Add explicit PL_DHashTable{Add,Lookup,Remove} functions. r=nfroyd
2015-01-05 20:26:50 -06:00
Nicholas Nethercote
c9cbbdc34d
Bug 1057912 - Privatize most of PLDHashTable's fields. r=roc.
2014-08-25 16:56:33 -07:00
Nicholas Nethercote
663b82ea3b
Bug 1050009 - Initialize pldhash tables with a length, not a capacity. r=roc.
...
* * *
imported patch rm-dummy-params
2014-08-06 06:31:21 -07:00
Nicholas Nethercote
3c0b216764
No bug. Remove two "njn: ..." comments I accidentally left in. r=me.
...
DONTBUILD because the patches contains only trivial comment changes.
2014-08-06 16:19:55 -07:00
Nicholas Nethercote
2d5e318af3
Bug 1047220 - Shrink the static atoms table. r=bz.
2014-07-31 22:57:13 -07:00
Nicholas Nethercote
49afb558b4
Bug 1046529 (part 2) - Ensure static atoms always end up in gStaticAtomTable. r=bz,hsivonen.
2014-07-30 23:22:42 -07:00
Nicholas Nethercote
88bfc66e99
Bug 1046529 (part 1) - Split and simplify AtomTableKey's constructors. r=bz.
2014-07-30 23:22:40 -07:00
Nicholas Nethercote
10cef5f3cb
Bug 1046477 (part 2) - Don't measure the heap size of static atoms. r=froydnj.
2014-07-30 23:19:23 -07:00
Nicholas Nethercote
d8d1d82534
Bug 1046477 (part 1) - Separate the reporting of the main and static atoms tables. r=froydnj.
2014-07-30 23:06:57 -07:00
Birunthan Mohanathas
779b87ce50
Bug 1022456 - Convert xpcom/ds/ to Gecko style. r=froydnj
2014-07-09 08:15:21 -07:00
Birunthan Mohanathas
eeb9aaaa94
Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj
2014-04-27 03:06:00 -04:00
Ehsan Akhgari
7ce1aa5eb8
Bug 798158 - Part 1: Use a pointer-sized type to store refcounts internally; r=bsmedberg
2014-03-27 16:38:33 -04:00
Kyle Huey
77f0f51293
Bug 967364: Use every already_AddRefed. r=bsmedberg
2014-03-15 12:00:16 -07:00
Andrew McCreight
aded529f53
Bug 962608 - Make PL_DHashTableInit infallible by default. r=briansmith,bsmedberg,ehsan,froydnj,jduell,jfkthame,roc,smaug
2014-02-27 10:04:09 -08:00
Ehsan Akhgari
68bfe70f09
Bug 927728 - Part 1: Replace PRUnichar with char16_t; r=roc
...
This patch was automatically generated by the following script:
#!/bin/bash
# Command to convert PRUnichar to char16_t
function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
! -wholename "*security/nss*" \
! -wholename "*modules/libmar*" \
! -wholename "*/.hg*" \
! -wholename "obj-ff-dbg*" \
! -name prtypes.h \
! -name Char16.h \
-type f \
\( -iname "*.cpp" \
-o -iname "*.h" \
-o -iname "*.c" \
-o -iname "*.cc" \
-o -iname "*.idl" \
-o -iname "*.ipdl" \
-o -iname "*.ipdlh" \
-o -iname "*.mm" \) | \
xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}
convert PRUnichar char16_t
2014-01-04 10:02:17 -05:00
Chris Peterson
bb366d4c5b
Bug 945613 - Part 3: #ifdef pragma for gcc >= 4.7.0. r=ehsan
2013-12-06 09:47:28 -08:00
Chris Peterson
dccfa590ef
Bug 945613 - Part 1: Suppress -Wdelete-non-virtual-dtor warning in nsAtomTable.cpp. r=ehsan
2013-12-01 12:06:29 -08:00
Benjamin Smedberg
1246de99b0
Bug 938794 - Annotate OOM size as infallible string or data structures abort, r=froydnj
2013-11-25 15:06:17 -05:00
Olli Pettay
e8784a1ae8
Bug 732815, make Atom's hash value to be the same what strings use, r=bz
2013-11-09 01:29:09 +02:00
Ehsan Akhgari
c110a2c9ac
Bug 918923 - Part 2: Switch to #including nsString.h in code using the internal strings API; r=bsmedberg
2013-09-23 13:25:00 -04:00
Ehsan Akhgari
5e0f414d1a
Bug 918105 - Minimize the #includes in xpcom/ds; r=bsmedberg
2013-09-19 15:31:21 -04:00
Joshua Cranmer
b01f076a0c
Bug 904985, part 2: Use char16_t for NS_LITERAL_STRING, r=glandium, dbaron.
2013-09-17 22:43:12 -05:00
Robert O'Callahan
51222bdd45
Bug 910989. Remove nsTHashtable::Init, fallible allocation, and MT hashtables. r=ehsan,bsmedberg
2013-09-02 20:41:57 +12:00
Nathan Froyd
66b65565bd
Bug 901976 - don't null-check |new X| in xpcom/; r=bsmedberg
2013-08-05 11:16:53 -04:00
Ehsan Akhgari
1ab9c7bcb4
Bug 895322 - Part 1: Replace the usages of MOZ_STATIC_ASSERT with C++11 static_assert; r=Waldo
...
This patch was mostly generated by running the following scripts on the codebase, with some
manual changes made afterwards:
# static_assert.sh
#!/bin/bash
# Command to convert an NSPR integer type to the equivalent standard integer type
function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
! -wholename "*security/nss*" \
! -wholename "*/.hg*" \
! -wholename "obj-ff-dbg*" \
! -name nsXPCOMCID.h \
! -name prtypes.h \
-type f \
\( -iname "*.cpp" \
-o -iname "*.h" \
-o -iname "*.cc" \
-o -iname "*.mm" \) | \
xargs -n 1 `dirname $0`/assert_replacer.py #sed -i -e "s/\b$1\b/$2/g"
}
convert MOZ_STATIC_ASSERT static_assert
hg rev --no-backup mfbt/Assertions.h \
media/webrtc/signaling/src/sipcc/core/includes/ccapi.h \
modules/libmar/src/mar_private.h \
modules/libmar/src/mar.h
# assert_replacer.py
#!/usr/bin/python
import sys
import re
pattern = re.compile(r"\bMOZ_STATIC_ASSERT\b")
def replaceInPlace(fname):
print fname
f = open(fname, "rw+")
lines = f.readlines()
for i in range(0, len(lines)):
while True:
index = re.search(pattern, lines[i])
if index != None:
index = index.start()
lines[i] = lines[i][0:index] + "static_assert" + lines[i][index+len("MOZ_STATIC_ASSERT"):]
for j in range(i + 1, len(lines)):
if lines[j].find(" ", index) == index:
lines[j] = lines[j][0:index] + lines[j][index+4:]
else:
break
else:
break
f.seek(0, 0)
f.truncate()
f.write("".join(lines))
f.close()
argc = len(sys.argv)
for i in range(1, argc):
replaceInPlace(sys.argv[i])
2013-07-18 13:59:53 -04:00
Justin Lebar
8cc88f21ce
Bug 820686 - Remove code after MOZ_CRASH or MOZ_ASSUME_NOT_REACHED. r=(see below)
...
r=tbsaunde for accessible
r=jmuizelaar for gfx
r=waldo for js
r=roc for layout
r=glandium for mozglue
r=jduell for netwerk
r=khuey for everything else
2013-06-28 18:38:32 -07:00
Justin Lebar
de89040a2c
Bug 802686 - s/MOZ_NOT_REACHED/MOZ_CRASH/ in Gecko. r=(see below)
...
r=tbsaunde for accessible
r=jmuizelaar for gfx
r=roc for layout
r=glandium for mozglue
r=jduell for netwerk
r=khuey for everything else
This is a mechanical change made with sed. Later patches in this queue
clean up the whitespace errors and so on.
2013-06-28 18:38:30 -07:00
Catalin Iacob
f88cdc0744
Bug 798914 (part 5) - Use newly introduced mozilla::MallocSizeOf instead of nsMallocSizeOfFun. r=njn.
2013-06-23 14:03:39 +02:00
Aryeh Gregor
cfbfebd4ba
Bug 859817 - Make nsStringBuffer::Alloc return already_AddRefed; r=bz
2013-04-22 14:13:22 +03:00
Aryeh Gregor
03b4600974
Bug 859817 - Make NS_NewAtom return already_AddRefed; r=bz
2013-04-22 14:13:22 +03:00