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

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

Issue 2167663002: Revert "Add fast-mode Uri class." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 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 => _text.hashCode; 65 int get 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 }
66 82
67 @override 83 @override
68 bool get hasPort => false; 84 bool get hasPort => false;
69 85
70 @override 86 @override
71 bool get hasQuery => false; 87 bool get hasQuery => false;
72 88
73 @override 89 @override
74 bool get hasScheme => _scheme.isNotEmpty; 90 bool get hasScheme => _scheme.isNotEmpty;
75 91
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 hasEmptyAuthority = true; 282 hasEmptyAuthority = true;
267 path = path.substring(2); 283 path = path.substring(2);
268 if (!path.startsWith('/')) { 284 if (!path.startsWith('/')) {
269 return null; 285 return null;
270 } 286 }
271 } 287 }
272 return new FastUri._(_currentCacheGeneration, text, scheme, 288 return new FastUri._(_currentCacheGeneration, text, scheme,
273 hasEmptyAuthority, path, lastSlashIndex); 289 hasEmptyAuthority, path, lastSlashIndex);
274 } 290 }
275 } 291 }
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