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

Side by Side Diff: pkg/compiler/lib/src/universe/class_set.dart

Issue 1354603002: Revert "Enqueue superclasses instead of supertypes." (Closed) Base URL: https://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/types/type_mask.dart ('k') | pkg/compiler/lib/src/universe/universe.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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 dart2js.world.class_set; 5 library dart2js.world.class_set;
6 6
7 import 'dart:collection' show IterableBase; 7 import 'dart:collection' show IterableBase;
8 import '../elements/elements.dart' show ClassElement; 8 import '../elements/elements.dart' show ClassElement;
9 import '../util/util.dart' show Link; 9 import '../util/util.dart' show Link;
10 10
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 bool includeUninstantiated: true, 94 bool includeUninstantiated: true,
95 bool strict: false}) { 95 bool strict: false}) {
96 return new ClassHierarchyNodeIterable( 96 return new ClassHierarchyNodeIterable(
97 this, 97 this,
98 includeRoot: !strict, 98 includeRoot: !strict,
99 includeDirectlyInstantiated: includeDirectlyInstantiated, 99 includeDirectlyInstantiated: includeDirectlyInstantiated,
100 includeIndirectlyInstantiated: includeIndirectlyInstantiated, 100 includeIndirectlyInstantiated: includeIndirectlyInstantiated,
101 includeUninstantiated: includeUninstantiated); 101 includeUninstantiated: includeUninstantiated);
102 } 102 }
103 103
104 void printOn(StringBuffer sb, String indentation, 104 void dump(StringBuffer sb, String indentation) {
105 {bool instantiatedOnly: false}) { 105 sb.write('$indentation$cls:[');
106 sb.write('$indentation$cls');
107 if (isDirectlyInstantiated) {
108 sb.write(' directly');
109 }
110 if (isIndirectlyInstantiated) {
111 sb.write(' indirectly');
112 }
113 sb.write(' [');
114 if (_directSubclasses.isEmpty) { 106 if (_directSubclasses.isEmpty) {
115 sb.write(']'); 107 sb.write(']');
116 } else { 108 } else {
109 sb.write('\n');
117 bool needsComma = false; 110 bool needsComma = false;
118 for (Link<ClassHierarchyNode> link = _directSubclasses; 111 for (Link<ClassHierarchyNode> link = _directSubclasses;
119 !link.isEmpty; 112 !link.isEmpty;
120 link = link.tail) { 113 link = link.tail) {
121 if (instantiatedOnly && !link.head.isInstantiated) {
122 continue;
123 }
124 if (needsComma) { 114 if (needsComma) {
125 sb.write(',\n'); 115 sb.write(',\n');
126 } else {
127 sb.write('\n');
128 } 116 }
129 link.head.printOn( 117 link.head.dump(sb, '$indentation ');
130 sb, '$indentation ', instantiatedOnly: instantiatedOnly);
131 needsComma = true; 118 needsComma = true;
132 } 119 }
133 if (needsComma) { 120 sb.write('\n');
134 sb.write('\n'); 121 sb.write('$indentation]');
135 sb.write('$indentation]');
136 } else {
137 sb.write(']');
138 }
139 } 122 }
140 } 123 }
141 124
142 String dump({String indentation: '', bool instantiatedOnly: false}) {
143 StringBuffer sb = new StringBuffer();
144 printOn(sb, indentation, instantiatedOnly: instantiatedOnly);
145 return sb.toString();
146 }
147
148 String toString() => cls.toString(); 125 String toString() => cls.toString();
149 } 126 }
150 127
151 /// Object holding the subclass and subtype relation for a single 128 /// Object holding the subclass and subtype relation for a single
152 /// [ClassElement]. 129 /// [ClassElement].
153 /// 130 ///
154 /// The subclass relation for a class `C` is modelled through a reference to 131 /// The subclass relation for a class `C` is modelled through a reference to
155 /// the [ClassHierarchyNode] for `C` in the global [ClassHierarchyNode] tree 132 /// the [ClassHierarchyNode] for `C` in the global [ClassHierarchyNode] tree
156 /// computed in [World]. 133 /// computed in [World].
157 /// 134 ///
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 if (!added) { 267 if (!added) {
291 newSubtypes.add(subtype); 268 newSubtypes.add(subtype);
292 } 269 }
293 _directSubtypes = newSubtypes; 270 _directSubtypes = newSubtypes;
294 } 271 }
295 } 272 }
296 273
297 String toString() { 274 String toString() {
298 StringBuffer sb = new StringBuffer(); 275 StringBuffer sb = new StringBuffer();
299 sb.write('[\n'); 276 sb.write('[\n');
300 node.printOn(sb, ' '); 277 node.dump(sb, ' ');
301 sb.write('\n'); 278 sb.write('\n');
302 if (_directSubtypes != null) { 279 if (_directSubtypes != null) {
303 for (ClassHierarchyNode node in _directSubtypes) { 280 for (ClassHierarchyNode node in _directSubtypes) {
304 node.printOn(sb, ' '); 281 node.dump(sb, ' ');
305 sb.write('\n'); 282 sb.write('\n');
306 } 283 }
307 } 284 }
308 sb.write(']'); 285 sb.write(']');
309 return sb.toString(); 286 return sb.toString();
310 } 287 }
311 } 288 }
312 289
313 /// Iterable for subclasses of a [ClassHierarchyNode]. 290 /// Iterable for subclasses of a [ClassHierarchyNode].
314 class ClassHierarchyNodeIterable extends IterableBase<ClassElement> { 291 class ClassHierarchyNodeIterable extends IterableBase<ClassElement> {
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 includeDirectlyInstantiated: includeDirectlyInstantiated, 469 includeDirectlyInstantiated: includeDirectlyInstantiated,
493 includeIndirectlyInstantiated: includeIndirectlyInstantiated, 470 includeIndirectlyInstantiated: includeIndirectlyInstantiated,
494 includeUninstantiated: includeUninstantiated).iterator; 471 includeUninstantiated: includeUninstantiated).iterator;
495 if (elements.moveNext()) { 472 if (elements.moveNext()) {
496 return true; 473 return true;
497 } 474 }
498 } 475 }
499 return false; 476 return false;
500 } 477 }
501 } 478 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/types/type_mask.dart ('k') | pkg/compiler/lib/src/universe/universe.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698