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

Side by Side Diff: pkg/compiler/lib/src/js_backend/backend.dart

Issue 2727373003: Late creation of CodegenEnqueuerListener and CodegenWorldBuilder (Closed)
Patch Set: Created 3 years, 9 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 js_backend.backend; 5 library js_backend.backend;
6 6
7 import 'dart:async' show Future; 7 import 'dart:async' show Future;
8 8
9 import 'package:js_runtime/shared/embedded_names.dart' as embeddedNames; 9 import 'package:js_runtime/shared/embedded_names.dart' as embeddedNames;
10 10
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 import '../js/rewrite_async.dart'; 45 import '../js/rewrite_async.dart';
46 import '../js_emitter/js_emitter.dart' show CodeEmitterTask; 46 import '../js_emitter/js_emitter.dart' show CodeEmitterTask;
47 import '../kernel/task.dart'; 47 import '../kernel/task.dart';
48 import '../library_loader.dart' show LibraryLoader, LoadedLibraries; 48 import '../library_loader.dart' show LibraryLoader, LoadedLibraries;
49 import '../native/native.dart' as native; 49 import '../native/native.dart' as native;
50 import '../patch_parser.dart' 50 import '../patch_parser.dart'
51 show checkNativeAnnotation, checkJsInteropAnnotation; 51 show checkNativeAnnotation, checkJsInteropAnnotation;
52 import '../ssa/ssa.dart' show SsaFunctionCompiler; 52 import '../ssa/ssa.dart' show SsaFunctionCompiler;
53 import '../tracer.dart'; 53 import '../tracer.dart';
54 import '../tree/tree.dart'; 54 import '../tree/tree.dart';
55 import '../types/types.dart';
55 import '../universe/call_structure.dart' show CallStructure; 56 import '../universe/call_structure.dart' show CallStructure;
56 import '../universe/selector.dart' show Selector; 57 import '../universe/selector.dart' show Selector;
57 import '../universe/world_builder.dart'; 58 import '../universe/world_builder.dart';
58 import '../universe/use.dart' show StaticUse, TypeUse; 59 import '../universe/use.dart' show StaticUse, TypeUse;
59 import '../universe/world_impact.dart' 60 import '../universe/world_impact.dart'
60 show 61 show
61 ImpactStrategy, 62 ImpactStrategy,
62 ImpactUseCase, 63 ImpactUseCase,
63 WorldImpact, 64 WorldImpact,
64 WorldImpactBuilder, 65 WorldImpactBuilder,
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 NativeDataBuilder get nativeDataBuilder => _nativeData; 436 NativeDataBuilder get nativeDataBuilder => _nativeData;
436 InterceptorDataBuilder _interceptorDataBuilder; 437 InterceptorDataBuilder _interceptorDataBuilder;
437 InterceptorData _interceptorData; 438 InterceptorData _interceptorData;
438 OneShotInterceptorData _oneShotInterceptorData; 439 OneShotInterceptorData _oneShotInterceptorData;
439 BackendUsage _backendUsage; 440 BackendUsage _backendUsage;
440 BackendUsageBuilder _backendUsageBuilder; 441 BackendUsageBuilder _backendUsageBuilder;
441 MirrorsData mirrorsData; 442 MirrorsData mirrorsData;
442 CheckedModeHelpers _checkedModeHelpers; 443 CheckedModeHelpers _checkedModeHelpers;
443 444
444 ResolutionEnqueuerListener _resolutionEnqueuerListener; 445 ResolutionEnqueuerListener _resolutionEnqueuerListener;
445 CodegenEnqueuerListener _codegenEnqueuerListener;
446 446
447 native.NativeResolutionEnqueuer _nativeResolutionEnqueuer; 447 native.NativeResolutionEnqueuer _nativeResolutionEnqueuer;
448 native.NativeCodegenEnqueuer _nativeCodegenEnqueuer; 448 native.NativeCodegenEnqueuer _nativeCodegenEnqueuer;
449 449
450 BackendHelpers helpers; 450 BackendHelpers helpers;
451 BackendImpacts impacts; 451 BackendImpacts impacts;
452 452
453 /// Common classes used by the backend. 453 /// Common classes used by the backend.
454 BackendClasses backendClasses; 454 BackendClasses backendClasses;
455 455
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 nativeData, 559 nativeData,
560 _interceptorDataBuilder, 560 _interceptorDataBuilder,
561 _backendUsageBuilder, 561 _backendUsageBuilder,
562 _rtiNeedBuilder, 562 _rtiNeedBuilder,
563 mirrorsData, 563 mirrorsData,
564 noSuchMethodRegistry, 564 noSuchMethodRegistry,
565 customElementsResolutionAnalysis, 565 customElementsResolutionAnalysis,
566 lookupMapLibraryAccess, 566 lookupMapLibraryAccess,
567 mirrorsAnalysis, 567 mirrorsAnalysis,
568 _nativeResolutionEnqueuer); 568 _nativeResolutionEnqueuer);
569 _codegenEnqueuerListener = new CodegenEnqueuerListener(
570 this,
571 compiler.elementEnvironment,
572 commonElements,
573 helpers,
574 impacts,
575 mirrorsData,
576 customElementsCodegenAnalysis,
577 typeVariableHandler,
578 lookupMapAnalysis,
579 mirrorsAnalysis,
580 _nativeCodegenEnqueuer);
581 } 569 }
582 570
583 /// The [ConstantSystem] used to interpret compile-time constants for this 571 /// The [ConstantSystem] used to interpret compile-time constants for this
584 /// backend. 572 /// backend.
585 ConstantSystem get constantSystem => constants.constantSystem; 573 ConstantSystem get constantSystem => constants.constantSystem;
586 574
587 DiagnosticReporter get reporter => compiler.reporter; 575 DiagnosticReporter get reporter => compiler.reporter;
588 576
589 CommonElements get commonElements => compiler.commonElements; 577 CommonElements get commonElements => compiler.commonElements;
590 578
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 assert(invariant(NO_LOCATION_SPANNABLE, _rtiEncoder != null, 634 assert(invariant(NO_LOCATION_SPANNABLE, _rtiEncoder != null,
647 message: "RuntimeTypesEncoder has not been created.")); 635 message: "RuntimeTypesEncoder has not been created."));
648 return _rtiEncoder; 636 return _rtiEncoder;
649 } 637 }
650 638
651 CheckedModeHelpers get checkedModeHelpers => _checkedModeHelpers; 639 CheckedModeHelpers get checkedModeHelpers => _checkedModeHelpers;
652 640
653 EnqueuerListener get resolutionEnqueuerListener => 641 EnqueuerListener get resolutionEnqueuerListener =>
654 _resolutionEnqueuerListener; 642 _resolutionEnqueuerListener;
655 643
656 EnqueuerListener get codegenEnqueuerListener => _codegenEnqueuerListener;
657
658 /// Returns constant environment for the JavaScript interpretation of the 644 /// Returns constant environment for the JavaScript interpretation of the
659 /// constants. 645 /// constants.
660 JavaScriptConstantCompiler get constants { 646 JavaScriptConstantCompiler get constants {
661 return constantCompilerTask.jsConstantCompiler; 647 return constantCompilerTask.jsConstantCompiler;
662 } 648 }
663 649
664 bool isDefaultNoSuchMethod(MethodElement element) { 650 bool isDefaultNoSuchMethod(MethodElement element) {
665 return noSuchMethodRegistry.isDefaultNoSuchMethodImplementation(element); 651 return noSuchMethodRegistry.isDefaultNoSuchMethodImplementation(element);
666 } 652 }
667 653
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 node, MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT); 946 node, MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT);
961 } 947 }
962 // No native behavior for this call. 948 // No native behavior for this call.
963 return null; 949 return null;
964 } 950 }
965 951
966 bool isComplexNoSuchMethod(FunctionElement element) => 952 bool isComplexNoSuchMethod(FunctionElement element) =>
967 noSuchMethodRegistry.isComplex(element); 953 noSuchMethodRegistry.isComplex(element);
968 954
969 /// Creates an [Enqueuer] for code generation specific to this backend. 955 /// Creates an [Enqueuer] for code generation specific to this backend.
970 CodegenEnqueuer createCodegenEnqueuer(CompilerTask task, Compiler compiler) { 956 CodegenEnqueuer createCodegenEnqueuer(
957 CompilerTask task, Compiler compiler, ClosedWorld closedWorld) {
971 return new CodegenEnqueuer( 958 return new CodegenEnqueuer(
972 task, this, compiler.options, const TreeShakingEnqueuerStrategy()); 959 task,
960 compiler.options,
961 const TreeShakingEnqueuerStrategy(),
962 new CodegenWorldBuilderImpl(
963 this, closedWorld, const TypeMaskStrategy()),
964 new CodegenWorkItemBuilder(this, compiler.options),
965 new CodegenEnqueuerListener(
966 compiler.dumpInfoTask,
967 compiler.elementEnvironment,
968 commonElements,
969 helpers,
970 impacts,
971 backendUsage,
972 rtiNeed,
973 mirrorsData,
974 customElementsCodegenAnalysis,
975 typeVariableHandler,
976 lookupMapAnalysis,
977 mirrorsAnalysis,
978 _nativeCodegenEnqueuer));
973 } 979 }
974 980
975 WorldImpact codegen(CodegenWorkItem work) { 981 WorldImpact codegen(CodegenWorkItem work) {
976 Element element = work.element; 982 Element element = work.element;
977 if (compiler.elementHasCompileTimeError(element)) { 983 if (compiler.elementHasCompileTimeError(element)) {
978 DiagnosticMessage message = 984 DiagnosticMessage message =
979 // If there's more than one error, the first is probably most 985 // If there's more than one error, the first is probably most
980 // informative, as the following errors may be side-effects of the 986 // informative, as the following errors may be side-effects of the
981 // first error. 987 // first error.
982 compiler.elementsWithCompileTimeErrors[element].first; 988 compiler.elementsWithCompileTimeErrors[element].first;
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 return _backend.defaultSuperclass(element); 1649 return _backend.defaultSuperclass(element);
1644 } 1650 }
1645 1651
1646 @override 1652 @override
1647 bool isNativeClass(ClassEntity element) => 1653 bool isNativeClass(ClassEntity element) =>
1648 _backend.nativeData.isNativeClass(element); 1654 _backend.nativeData.isNativeClass(element);
1649 1655
1650 @override 1656 @override
1651 bool isForeign(Element element) => _backend.isForeign(element); 1657 bool isForeign(Element element) => _backend.isForeign(element);
1652 } 1658 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/enqueue.dart ('k') | pkg/compiler/lib/src/js_backend/codegen_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698