Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(693)

Unified Diff: sdk/lib/io/http_parser.dart

Issue 80883002: Avoid unneeded toLowerCase and add fast version of _isTokenChar, in HTTP parser. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« sdk/lib/io/http_headers.dart ('K') | « sdk/lib/io/http_impl.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/io/http_parser.dart
diff --git a/sdk/lib/io/http_parser.dart b/sdk/lib/io/http_parser.dart
index aada781add0bb1c460d7c8ff734537147326f21a..e2e046b04e4adfa90a6b983f990203ed3339f88a 100644
--- a/sdk/lib/io/http_parser.dart
+++ b/sdk/lib/io/http_parser.dart
@@ -21,6 +21,30 @@ class _Const {
static const SEPARATORS = const [40, 41, 60, 62, 64, 44, 59, 58, 92, 34, 47,
Søren Gjesse 2013/11/21 13:03:03 Is SEPARATORS still used?
Anders Johnsen 2013/11/21 13:14:41 Done.
91, 93, 63, 61, 123, 125, 32, 9];
+ // Loopup-map for _isTokenChar.
Søren Gjesse 2013/11/21 13:03:03 Add the character-list from above to the comment.
Anders Johnsen 2013/11/21 13:14:41 Done.
+ static const CHAR_MAP = const [
Søren Gjesse 2013/11/21 13:03:03 CHAR_MAP -> TOKEN_CHAR_MAP
Anders Johnsen 2013/11/21 13:14:41 Done.
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,true,false,true,
+ true,true,true,true,false,false,true,true,false,true,true,false,true,true,
+ true,true,true,true,true,true,true,true,false,false,false,false,false,
+ false,false,true,true,true,true,true,true,true,true,true,true,true,true,
+ true,true,true,true,true,true,true,true,true,true,true,true,true,true,
+ false,false,false,true,true,true,true,true,true,true,true,true,true,true,
+ true,true,true,true,true,true,true,true,true,true,true,true,true,true,
+ true,true,true,true,false,true,false,true,true,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false];
+
// Bytes for '()<>@,;:\\"/[]?={} \t\r\n'.
static const SEPARATORS_AND_CR_LF = const [40, 41, 60, 62, 64, 44, 59, 58, 92,
34, 47, 91, 93, 63, 61, 123, 125,
@@ -835,9 +859,7 @@ class _HttpParser
_index = null;
}
- bool _isTokenChar(int byte) {
- return byte > 31 && byte < 128 && _Const.SEPARATORS.indexOf(byte) == -1;
- }
+ bool _isTokenChar(int byte) => _Const.CHAR_MAP[byte];
List<String> _tokenizeFieldValue(String headerValue) {
List<String> tokens = new List<String>();
« sdk/lib/io/http_headers.dart ('K') | « sdk/lib/io/http_impl.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698