Index: sdk/lib/io/http_headers.dart |
diff --git a/sdk/lib/io/http_headers.dart b/sdk/lib/io/http_headers.dart |
index 33d51373a121331ab282ca78dcb6a0916ccfe185..14a34853bee0577b262987823dd1bca903dae153 100644 |
--- a/sdk/lib/io/http_headers.dart |
+++ b/sdk/lib/io/http_headers.dart |
@@ -338,25 +338,53 @@ class _HttpHeaders implements HttpHeaders { |
headers._set(HttpHeaders.CONTENT_TYPE, value); |
} |
- // TODO(ajohnsen): Change to const map, once const maps are faster. |
- static final _addMap = { |
- HttpHeaders.CONTENT_LENGTH: _addContentLength, |
- HttpHeaders.TRANSFER_ENCODING: _addTransferEncoding, |
- HttpHeaders.DATE: _addDate, |
- HttpHeaders.EXPIRES: _addExpires, |
- HttpHeaders.IF_MODIFIED_SINCE: _addIfModifiedSince, |
- HttpHeaders.HOST: _addHost, |
- HttpHeaders.CONNECTION: _addConnection, |
- HttpHeaders.CONTENT_TYPE: _addContentType |
- }; |
- |
// [name] must be a lower-case version of the name. |
void _add(String name, value) { |
assert(name == name.toLowerCase()); |
Søren Gjesse
2014/04/23 12:06:39
Please add a comment on this optimization.
Anders Johnsen
2014/04/23 12:20:12
Done.
|
- var method = _addMap[name]; |
- if (method != null) { |
- method(this, name, value); |
- return; |
+ switch (name.length) { |
+ case 4: |
+ if (HttpHeaders.DATE == name) { |
+ _addDate(this, name, value); |
Anders Johnsen
2014/04/23 11:57:05
Should we merge return into this line?
Søren Gjesse
2014/04/23 12:06:39
Don't think so.
|
+ return; |
+ } |
+ if (HttpHeaders.HOST == name) { |
+ _addHost(this, name, value); |
+ return; |
+ } |
+ break; |
+ case 7: |
+ if (HttpHeaders.EXPIRES == name) { |
+ _addExpires(this, name, value); |
+ return; |
+ } |
+ break; |
+ case 10: |
+ if (HttpHeaders.CONNECTION == name) { |
+ _addConnection(this, name, value); |
+ return; |
+ } |
+ break; |
+ case 12: |
+ if (HttpHeaders.CONTENT_TYPE == name) { |
+ _addContentType(this, name, value); |
+ return; |
+ } |
+ break; |
+ case 14: |
+ if (HttpHeaders.CONTENT_LENGTH == name) { |
+ _addContentLength(this, name, value); |
+ return; |
+ } |
+ break; |
+ case 17: |
+ if (HttpHeaders.TRANSFER_ENCODING == name) { |
+ _addTransferEncoding(this, name, value); |
+ return; |
+ } |
+ if (HttpHeaders.IF_MODIFIED_SINCE == name) { |
+ _addIfModifiedSince(this, name, value); |
+ return; |
+ } |
} |
_addValue(name, value); |
} |