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

Side by Side Diff: pkg/analysis_server/lib/src/services/index/index.dart

Issue 934113002: Generate artificial hashCode for often used classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/engine.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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library services.index; 5 library services.index;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analyzer/src/generated/ast.dart'; 9 import 'package:analyzer/src/generated/ast.dart';
10 import 'package:analyzer/src/generated/element.dart'; 10 import 'package:analyzer/src/generated/element.dart';
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 * Relationship between an element and a location. Relationships are identified 313 * Relationship between an element and a location. Relationships are identified
314 * by a globally unique identifier. 314 * by a globally unique identifier.
315 */ 315 */
316 class Relationship { 316 class Relationship {
317 /** 317 /**
318 * A table mapping relationship identifiers to relationships. 318 * A table mapping relationship identifiers to relationships.
319 */ 319 */
320 static Map<String, Relationship> _RELATIONSHIP_MAP = {}; 320 static Map<String, Relationship> _RELATIONSHIP_MAP = {};
321 321
322 /** 322 /**
323 * The next artificial hash code.
324 */
325 static int _NEXT_HASH_CODE = 0;
326
327 /**
328 * The artifitial hash code for this object.
329 */
330 final int _hashCode = _NEXT_HASH_CODE++;
kasperl 2015/02/18 08:04:16 Have you considered masking here? If you start ove
scheglov 2015/02/18 17:20:32 Good question. See https://codereview.chromium.org
331
332 /**
323 * The unique identifier for this relationship. 333 * The unique identifier for this relationship.
324 */ 334 */
325 final String identifier; 335 final String identifier;
326 336
327 /** 337 /**
328 * Initialize a newly created relationship with the given unique identifier. 338 * Initialize a newly created relationship with the given unique identifier.
329 */ 339 */
330 Relationship(this.identifier); 340 Relationship(this.identifier);
331 341
332 @override 342 @override
343 int get hashCode => _hashCode;
344
345 @override
333 String toString() => identifier; 346 String toString() => identifier;
334 347
335 /** 348 /**
336 * Returns the relationship with the given unique [identifier]. 349 * Returns the relationship with the given unique [identifier].
337 */ 350 */
338 static Relationship getRelationship(String identifier) { 351 static Relationship getRelationship(String identifier) {
339 Relationship relationship = _RELATIONSHIP_MAP[identifier]; 352 Relationship relationship = _RELATIONSHIP_MAP[identifier];
340 if (relationship == null) { 353 if (relationship == null) {
341 relationship = new Relationship(identifier); 354 relationship = new Relationship(identifier);
342 _RELATIONSHIP_MAP[identifier] = relationship; 355 _RELATIONSHIP_MAP[identifier] = relationship;
(...skipping 11 matching lines...) Expand all
354 static final UniverseElement INSTANCE = new UniverseElement._(); 367 static final UniverseElement INSTANCE = new UniverseElement._();
355 368
356 UniverseElement._() : super("--universe--", -1); 369 UniverseElement._() : super("--universe--", -1);
357 370
358 @override 371 @override
359 ElementKind get kind => ElementKind.UNIVERSE; 372 ElementKind get kind => ElementKind.UNIVERSE;
360 373
361 @override 374 @override
362 accept(ElementVisitor visitor) => null; 375 accept(ElementVisitor visitor) => null;
363 } 376 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/engine.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698