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

Side by Side Diff: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart

Issue 1311673009: dart2js cps: Use a global counter to generate hash codes. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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 | « pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart ('k') | no next file » | 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 tree_ir_nodes; 5 library tree_ir_nodes;
6 6
7 import '../constants/values.dart' as values; 7 import '../constants/values.dart' as values;
8 import '../dart_types.dart' show DartType, InterfaceType, TypeVariableType; 8 import '../dart_types.dart' show DartType, InterfaceType, TypeVariableType;
9 import '../elements/elements.dart'; 9 import '../elements/elements.dart';
10 import '../io/source_information.dart' show SourceInformation; 10 import '../io/source_information.dart' show SourceInformation;
(...skipping 25 matching lines...) Expand all
36 // In contrast to the CPS-based IR, non-primitive expressions can be named and 36 // In contrast to the CPS-based IR, non-primitive expressions can be named and
37 // arguments (to calls, primitives, and blocks) can be arbitrary expressions. 37 // arguments (to calls, primitives, and blocks) can be arbitrary expressions.
38 // 38 //
39 // Additionally, variables are considered in scope within inner functions; 39 // Additionally, variables are considered in scope within inner functions;
40 // closure variables are thus handled directly instead of using ref cells. 40 // closure variables are thus handled directly instead of using ref cells.
41 41
42 /** 42 /**
43 * The base class of all Tree nodes. 43 * The base class of all Tree nodes.
44 */ 44 */
45 abstract class Node { 45 abstract class Node {
46 /// Workaround for a slow Object.hashCode in the VM.
47 static int _usedHashCodes = 0;
48 final int hashCode = ++_usedHashCodes;
46 } 49 }
47 50
48 /** 51 /**
49 * The base class of [Expression]s. 52 * The base class of [Expression]s.
50 */ 53 */
51 abstract class Expression extends Node { 54 abstract class Expression extends Node {
52 accept(ExpressionVisitor v); 55 accept(ExpressionVisitor v);
53 accept1(ExpressionVisitor1 v, arg); 56 accept1(ExpressionVisitor1 v, arg);
54 } 57 }
55 58
(...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after
1534 1537
1535 /// Number of uses of the current fallthrough target. 1538 /// Number of uses of the current fallthrough target.
1536 int get useCount => _stack.last.useCount; 1539 int get useCount => _stack.last.useCount;
1537 1540
1538 /// Indicate that a statement will fall through to the current fallthrough 1541 /// Indicate that a statement will fall through to the current fallthrough
1539 /// target. 1542 /// target.
1540 void use() { 1543 void use() {
1541 ++_stack.last.useCount; 1544 ++_stack.last.useCount;
1542 } 1545 }
1543 } 1546 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698