Skip to content

Commit c7bcc5e

Browse files
committed
Issue 4057 - Use Set for seenFilters, number for key
1 parent 112a377 commit c7bcc5e

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

lib/elemHide.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ var {FilterNotifier} = require("filterNotifier");
3131
* Lookup table, filters by their associated key
3232
* @type Object
3333
*/
34-
var filterByKey = [];
34+
var filterByKey = Object.create(null);
3535

3636
/**
3737
* Lookup table, keys of the filters by filter text
@@ -47,7 +47,7 @@ var keyByFilter = Object.create(null);
4747
var usingGetSelectorsForDomain = !("nsIStyleSheetService" in Ci);
4848

4949
/**
50-
* Nested lookup table, filter (or false if inactive) by filter text by domain.
50+
* Nested lookup table, filter (or false if inactive) by filter key by domain.
5151
* (Only contains filters that aren't unconditionally matched for all domains.)
5252
* @type Object
5353
*/
@@ -125,7 +125,7 @@ var ElemHide = exports.ElemHide =
125125
*/
126126
clear: function()
127127
{
128-
filterByKey = [];
128+
filterByKey = Object.create(null);
129129
keyByFilter = Object.create(null);
130130
filtersByDomain = Object.create(null);
131131
filtersBySelector = Object.create(null);
@@ -192,7 +192,12 @@ var ElemHide = exports.ElemHide =
192192
if (filter.text in keyByFilter)
193193
return;
194194

195-
let key = filterByKey.push(filter) - 1;
195+
let key;
196+
do {
197+
key = Math.random() * 0x0FFFFFFF | 0;
198+
} while (key in filterByKey);
199+
200+
filterByKey[key] = filter;
196201
keyByFilter[filter.text] = key;
197202

198203
if (usingGetSelectorsForDomain)
@@ -482,7 +487,7 @@ var ElemHide = exports.ElemHide =
482487

483488
let selectors = [];
484489

485-
let seenFilters = Object.create(null);
490+
let seenFilters = new Set();
486491
let currentDomain = domain ? domain.toUpperCase() : "";
487492
while (true)
488493
{
@@ -494,9 +499,9 @@ var ElemHide = exports.ElemHide =
494499
{
495500
for (let filterKey in filters)
496501
{
497-
if (filterKey in seenFilters)
502+
if (seenFilters.has(filterKey))
498503
continue;
499-
seenFilters[filterKey] = true;
504+
seenFilters.add(filterKey);
500505

501506
let filter = filters[filterKey];
502507
if (filter && !this.getException(filter, domain))

0 commit comments

Comments
 (0)