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

Side by Side Diff: pkg/analyzer/lib/src/util/fast_uri.dart

Issue 2220373002: Reapply fast-URI patch. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix bug in SimpleUri.replace where ? was included in the result's query. Created 4 years, 4 months 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 unified diff | Download patch
« no previous file with comments | « CHANGELOG.md ('k') | runtime/lib/uri_patch.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:collection'; 5 import 'dart:collection';
6 6
7 /** 7 /**
8 * Implementation of [Uri] that understands only a limited set of valid 8 * Implementation of [Uri] that understands only a limited set of valid
9 * URI formats, but works fast. In practice Dart code almost always uses such 9 * URI formats, but works fast. In practice Dart code almost always uses such
10 * limited URI format, so almost always can be processed fast. 10 * limited URI format, so almost always can be processed fast.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 @override 55 @override
56 bool get hasAuthority => _hasEmptyAuthority; 56 bool get hasAuthority => _hasEmptyAuthority;
57 57
58 @override 58 @override
59 bool get hasEmptyPath => _path.isEmpty; 59 bool get hasEmptyPath => _path.isEmpty;
60 60
61 @override 61 @override
62 bool get hasFragment => false; 62 bool get hasFragment => false;
63 63
64 @override 64 @override
65 int get hashCode { 65 int get hashCode => _text.hashCode;
66 // This code is copied from the standard Uri implementation.
67 // It is important that Uri and FastUri generate compatible hashCodes
68 // because Uri and FastUri may be used as keys in the same map.
69 int combine(part, current) {
70 // The sum is truncated to 30 bits to make sure it fits into a Smi.
71 return (current * 31 + part.hashCode) & 0x3FFFFFFF;
72 }
73 return _hashCode ??= combine(
74 scheme,
75 combine(
76 userInfo,
77 combine(
78 host,
79 combine(port,
80 combine(path, combine(query, combine(fragment, 1)))))));
81 }
82 66
83 @override 67 @override
84 bool get hasPort => false; 68 bool get hasPort => false;
85 69
86 @override 70 @override
87 bool get hasQuery => false; 71 bool get hasQuery => false;
88 72
89 @override 73 @override
90 bool get hasScheme => _scheme.isNotEmpty; 74 bool get hasScheme => _scheme.isNotEmpty;
91 75
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 hasEmptyAuthority = true; 266 hasEmptyAuthority = true;
283 path = path.substring(2); 267 path = path.substring(2);
284 if (!path.startsWith('/')) { 268 if (!path.startsWith('/')) {
285 return null; 269 return null;
286 } 270 }
287 } 271 }
288 return new FastUri._(_currentCacheGeneration, text, scheme, 272 return new FastUri._(_currentCacheGeneration, text, scheme,
289 hasEmptyAuthority, path, lastSlashIndex); 273 hasEmptyAuthority, path, lastSlashIndex);
290 } 274 }
291 } 275 }
OLDNEW
« no previous file with comments | « CHANGELOG.md ('k') | runtime/lib/uri_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698