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

Side by Side Diff: pkg/compiler/lib/src/enqueue.dart

Issue 1299413002: Move common identifiers, names and selectors to a separate library. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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.enqueue; 5 library dart2js.enqueue;
6 6
7 import 'dart:collection' show 7 import 'dart:collection' show
8 Queue; 8 Queue;
9 9
10 import 'common/names.dart' show
11 Identifiers;
10 import 'common/work.dart' show 12 import 'common/work.dart' show
11 ItemCompilationContext, 13 ItemCompilationContext,
12 WorkItem; 14 WorkItem;
13 import 'common/tasks.dart' show 15 import 'common/tasks.dart' show
14 CompilerTask, 16 CompilerTask,
15 DeferredAction, 17 DeferredAction,
16 DeferredTask; 18 DeferredTask;
17 import 'common/registry.dart' show 19 import 'common/registry.dart' show
18 Registry; 20 Registry;
19 import 'common/codegen.dart' show 21 import 'common/codegen.dart' show
(...skipping 15 matching lines...) Expand all
35 ClassElement, 37 ClassElement,
36 ConstructorElement, 38 ConstructorElement,
37 Element, 39 Element,
38 Elements, 40 Elements,
39 FunctionElement, 41 FunctionElement,
40 LibraryElement, 42 LibraryElement,
41 LocalFunctionElement, 43 LocalFunctionElement,
42 Member, 44 Member,
43 MemberElement, 45 MemberElement,
44 MethodElement, 46 MethodElement,
47 Name,
45 TypedElement, 48 TypedElement,
46 TypedefElement; 49 TypedefElement;
47 import 'js/js.dart' as js; 50 import 'js/js.dart' as js;
48 import 'native/native.dart' as native; 51 import 'native/native.dart' as native;
49 import 'resolution/members.dart' show 52 import 'resolution/members.dart' show
50 ResolverVisitor; 53 ResolverVisitor;
51 import 'tree/tree.dart' show 54 import 'tree/tree.dart' show
52 Send; 55 Send;
53 import 'universe/universe.dart'; 56 import 'universe/universe.dart';
54 import 'util/util.dart' show 57 import 'util/util.dart' show
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 } else { 242 } else {
240 // All field initializers must be resolved as they could 243 // All field initializers must be resolved as they could
241 // have an observable side-effect (and cannot be tree-shaken 244 // have an observable side-effect (and cannot be tree-shaken
242 // away). 245 // away).
243 addToWorkList(member); 246 addToWorkList(member);
244 return; 247 return;
245 } 248 }
246 } else if (member.isFunction) { 249 } else if (member.isFunction) {
247 FunctionElement function = member; 250 FunctionElement function = member;
248 function.computeType(compiler); 251 function.computeType(compiler);
249 if (function.name == Compiler.NO_SUCH_METHOD) { 252 if (function.name == Identifiers.noSuchMethod_) {
250 registerNoSuchMethod(function); 253 registerNoSuchMethod(function);
251 } 254 }
252 if (function.name == Compiler.CALL_OPERATOR_NAME && 255 if (function.name == Identifiers.call &&
253 !cls.typeVariables.isEmpty) { 256 !cls.typeVariables.isEmpty) {
254 registerCallMethodWithFreeTypeVariables( 257 registerCallMethodWithFreeTypeVariables(
255 function, compiler.globalDependencies); 258 function, compiler.globalDependencies);
256 } 259 }
257 // If there is a property access with the same name as a method we 260 // If there is a property access with the same name as a method we
258 // need to emit the method. 261 // need to emit the method.
259 if (universe.hasInvokedGetter(function, compiler.world)) { 262 if (universe.hasInvokedGetter(function, compiler.world)) {
260 registerClosurizedMember(function, compiler.globalDependencies); 263 registerClosurizedMember(function, compiler.globalDependencies);
261 addToWorkList(function); 264 addToWorkList(function);
262 return; 265 return;
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 registerStaticUse(element.declaration); 407 registerStaticUse(element.declaration);
405 } else if (element.isInstanceMember) { 408 } else if (element.isInstanceMember) {
406 // We need to enqueue all members matching this one in subclasses, as 409 // We need to enqueue all members matching this one in subclasses, as
407 // well. 410 // well.
408 // TODO(herhut): Use TypedSelector.subtype for enqueueing 411 // TODO(herhut): Use TypedSelector.subtype for enqueueing
409 UniverseSelector selector = new UniverseSelector( 412 UniverseSelector selector = new UniverseSelector(
410 new Selector.fromElement(element), null); 413 new Selector.fromElement(element), null);
411 registerSelectorUse(selector); 414 registerSelectorUse(selector);
412 if (element.isField) { 415 if (element.isField) {
413 UniverseSelector selector = new UniverseSelector( 416 UniverseSelector selector = new UniverseSelector(
414 new Selector.setter(element.name, element.library), null); 417 new Selector.setter(new Name(
418 element.name, element.library, isSetter: true)), null);
415 registerInvokedSetter(selector); 419 registerInvokedSetter(selector);
416 } 420 }
417 } 421 }
418 } 422 }
419 } 423 }
420 424
421 /// Enqeue the member [element] if it is required for reflection. 425 /// Enqeue the member [element] if it is required for reflection.
422 /// 426 ///
423 /// [enclosingWasIncluded] provides a hint whether the enclosing element was 427 /// [enclosingWasIncluded] provides a hint whether the enclosing element was
424 /// needed for reflection. 428 /// needed for reflection.
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 } else if (uri == 'dart:async') { 817 } else if (uri == 'dart:async') {
814 if (element.name == '_createTimer' || 818 if (element.name == '_createTimer' ||
815 element.name == '_createPeriodicTimer') { 819 element.name == '_createPeriodicTimer') {
816 // The [:Timer:] class uses the event queue of the isolate 820 // The [:Timer:] class uses the event queue of the isolate
817 // library, so we make sure that event queue is generated. 821 // library, so we make sure that event queue is generated.
818 enableIsolateSupport(); 822 enableIsolateSupport();
819 } 823 }
820 } 824 }
821 } 825 }
822 826
823 if (element.isGetter && element.name == Compiler.RUNTIME_TYPE) { 827 if (element.isGetter && element.name == Identifiers.runtimeType_) {
824 // Enable runtime type support if we discover a getter called runtimeType. 828 // Enable runtime type support if we discover a getter called runtimeType.
825 // We have to enable runtime type before hitting the codegen, so 829 // We have to enable runtime type before hitting the codegen, so
826 // that constructors know whether they need to generate code for 830 // that constructors know whether they need to generate code for
827 // runtime type. 831 // runtime type.
828 compiler.enabledRuntimeType = true; 832 compiler.enabledRuntimeType = true;
829 // TODO(ahe): Record precise dependency here. 833 // TODO(ahe): Record precise dependency here.
830 compiler.backend.registerRuntimeType(this, compiler.globalDependencies); 834 compiler.backend.registerRuntimeType(this, compiler.globalDependencies);
831 } else if (element == compiler.functionApplyMethod) { 835 } else if (element == compiler.functionApplyMethod) {
832 compiler.enabledFunctionApply = true; 836 compiler.enabledFunctionApply = true;
833 } 837 }
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 void processWorkItem(void f(WorkItem work), WorkItem work) { 1012 void processWorkItem(void f(WorkItem work), WorkItem work) {
1009 f(work); 1013 f(work);
1010 } 1014 }
1011 } 1015 }
1012 1016
1013 void removeFromSet(Map<String, Set<Element>> map, Element element) { 1017 void removeFromSet(Map<String, Set<Element>> map, Element element) {
1014 Set<Element> set = map[element.name]; 1018 Set<Element> set = map[element.name];
1015 if (set == null) return; 1019 if (set == null) return;
1016 set.remove(element); 1020 set.remove(element);
1017 } 1021 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698