Skip to content
This repository was archived by the owner on Nov 15, 2017. It is now read-only.

Commit b6c8877

Browse files
committed
it was totally not worth to look farther than 1 char ahead
1 parent 6af8eaa commit b6c8877

File tree

2 files changed

+28
-53
lines changed

2 files changed

+28
-53
lines changed

doc/img/onbeforerequest-perf.png

216 Bytes
Loading

js/abp-filters.js

Lines changed: 28 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,6 @@ var FilterContainer = function() {
702702
// Used during URL matching
703703
this.categoryBuckets = new Array(8);
704704
this.reAnyToken = /[%0-9a-z]+/g;
705-
this.reMatches = null;
706705
};
707706

708707
/******************************************************************************/
@@ -834,7 +833,7 @@ FilterContainer.prototype.addFilter = function(parsed) {
834833
FilterContainer.prototype.addFilterEntry = function(filter, parsed, party, tokenBeg, tokenEnd) {
835834
var s = parsed.f;
836835
var prefixKey = trimChar(s.substring(tokenBeg - 1, tokenBeg), '*');
837-
var suffixKey = trimChar(s.substring(tokenEnd, tokenEnd + 2), '*');
836+
var suffixKey = trimChar(s.substring(tokenEnd, tokenEnd + 1), '*');
838837
var tokenKey = prefixKey + s.slice(tokenBeg, tokenEnd) + suffixKey;
839838
if ( parsed.types.length === 0 ) {
840839
this.addToCategory(parsed.action | AnyType | party, tokenKey, filter);
@@ -888,69 +887,45 @@ FilterContainer.prototype.freeze = function() {
888887

889888
/******************************************************************************/
890889

891-
FilterContainer.prototype.matchToken = function(categoryBucket) {
892-
var url = this.url;
893-
var beg = this.reMatches.index;
894-
var end = this.reAnyToken.lastIndex;
895-
var right = url.length - end;
896-
var f;
897-
898-
if ( right > 1 ) {
899-
if ( beg !== 0 ) {
900-
f = categoryBucket[url.slice(beg-1, end+2)];
901-
if ( f !== undefined && f.match(url, beg) !== false ) {
902-
return f.s;
903-
}
904-
}
905-
f = categoryBucket[url.slice(beg, end+2)];
906-
if ( f !== undefined && f.match(url, beg) !== false ) {
907-
return f.s;
908-
}
909-
}
910-
if ( right > 0 ) {
911-
if ( beg !== 0 ) {
912-
f = categoryBucket[url.slice(beg-1, end+1)];
913-
if ( f !== undefined && f.match(url, beg) !== false ) {
914-
return f.s;
915-
}
916-
}
917-
f = categoryBucket[url.slice(beg, end+1)];
918-
if ( f !== undefined && f.match(url, beg) !== false ) {
919-
return f.s;
920-
}
921-
}
922-
if ( beg !== 0 ) {
923-
f = categoryBucket[url.slice(beg-1, end)];
924-
if ( f !== undefined && f.match(url, beg) !== false ) {
925-
return f.s;
926-
}
927-
}
928-
f = categoryBucket[url.slice(beg, end)];
929-
if ( f !== undefined && f.match(url, beg) !== false ) {
930-
return f.s;
931-
}
932-
return false;
933-
};
934-
935-
/******************************************************************************/
936-
937890
FilterContainer.prototype.matchTokens = function() {
938891
var buckets = this.categoryBuckets;
939892
var url = this.url;
893+
var urlLen = url.length;
940894
var re = this.reAnyToken;
941-
var i, bucket, f;
895+
var beg, end, i, bucket, f;
896+
var matches;
942897

943898
re.lastIndex = 0;
944-
while ( this.reMatches = re.exec(url) ) {
899+
while ( matches = re.exec(url) ) {
900+
beg = matches.index;
901+
end = re.lastIndex;
945902
i = 8;
946903
while ( i-- ) {
947904
bucket = buckets[i];
948905
if ( bucket === undefined ) {
949906
continue;
950907
}
951-
f = this.matchToken(bucket);
952-
if ( f !== false ) {
953-
return f;
908+
if ( end !== urlLen ) {
909+
if ( beg !== 0 ) {
910+
f = bucket[url.slice(beg-1, end+1)];
911+
if ( f !== undefined && f.match(url, beg) !== false ) {
912+
return f.s;
913+
}
914+
}
915+
f = bucket[url.slice(beg, end+1)];
916+
if ( f !== undefined && f.match(url, beg) !== false ) {
917+
return f.s;
918+
}
919+
}
920+
if ( beg !== 0 ) {
921+
f = bucket[url.slice(beg-1, end)];
922+
if ( f !== undefined && f.match(url, beg) !== false ) {
923+
return f.s;
924+
}
925+
}
926+
f = bucket[url.slice(beg, end)];
927+
if ( f !== undefined && f.match(url, beg) !== false ) {
928+
return f.s;
954929
}
955930
}
956931
}

0 commit comments

Comments
 (0)