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

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

Issue 1803303002: Move all flags to CompilerOptions (first step to stop passing the compiler to (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 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
« no previous file with comments | « pkg/compiler/lib/src/native/behavior.dart ('k') | pkg/compiler/lib/src/native/native.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 import 'dart:collection' show Queue; 5 import 'dart:collection' show Queue;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/backend_api.dart' show 8 import '../common/backend_api.dart' show
9 ForeignResolver; 9 ForeignResolver;
10 import '../common/registry.dart' show 10 import '../common/registry.dart' show
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 processedLibraries = compiler.cacheStrategy.newSet(); 134 processedLibraries = compiler.cacheStrategy.newSet();
135 135
136 JavaScriptBackend get backend => compiler.backend; 136 JavaScriptBackend get backend => compiler.backend;
137 BackendHelpers get helpers => backend.helpers; 137 BackendHelpers get helpers => backend.helpers;
138 Resolution get resolution => compiler.resolution; 138 Resolution get resolution => compiler.resolution;
139 139
140 DiagnosticReporter get reporter => compiler.reporter; 140 DiagnosticReporter get reporter => compiler.reporter;
141 CoreTypes get coreTypes => compiler.coreTypes; 141 CoreTypes get coreTypes => compiler.coreTypes;
142 142
143 void processNativeClasses(Iterable<LibraryElement> libraries) { 143 void processNativeClasses(Iterable<LibraryElement> libraries) {
144 if (compiler.hasIncrementalSupport) { 144 if (compiler.options.hasIncrementalSupport) {
145 // Since [Set.add] returns bool if an element was added, this restricts 145 // Since [Set.add] returns bool if an element was added, this restricts
146 // [libraries] to ones that haven't already been processed. This saves 146 // [libraries] to ones that haven't already been processed. This saves
147 // time during incremental compiles. 147 // time during incremental compiles.
148 libraries = libraries.where(processedLibraries.add); 148 libraries = libraries.where(processedLibraries.add);
149 } 149 }
150 libraries.forEach(processNativeClassesInLibrary); 150 libraries.forEach(processNativeClassesInLibrary);
151 if (helpers.isolateHelperLibrary != null) { 151 if (helpers.isolateHelperLibrary != null) {
152 processNativeClassesInLibrary(helpers.isolateHelperLibrary); 152 processNativeClassesInLibrary(helpers.isolateHelperLibrary);
153 } 153 }
154 processSubclassesOfNativeClasses(libraries); 154 processSubclassesOfNativeClasses(libraries);
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 if (flushing) return; 363 if (flushing) return;
364 flushing = true; 364 flushing = true;
365 while (!queue.isEmpty) { 365 while (!queue.isEmpty) {
366 (queue.removeFirst())(); 366 (queue.removeFirst())();
367 } 367 }
368 flushing = false; 368 flushing = false;
369 } 369 }
370 370
371 processClass(BaseClassElementX classElement, cause) { 371 processClass(BaseClassElementX classElement, cause) {
372 // TODO(ahe): Fix this assertion to work in incremental compilation. 372 // TODO(ahe): Fix this assertion to work in incremental compilation.
373 assert(compiler.hasIncrementalSupport || 373 assert(compiler.options.hasIncrementalSupport ||
374 !registeredClasses.contains(classElement)); 374 !registeredClasses.contains(classElement));
375 375
376 bool firstTime = registeredClasses.isEmpty; 376 bool firstTime = registeredClasses.isEmpty;
377 pendingClasses.remove(classElement); 377 pendingClasses.remove(classElement);
378 registeredClasses.add(classElement); 378 registeredClasses.add(classElement);
379 379
380 // TODO(ahe): Is this really a global dependency? 380 // TODO(ahe): Is this really a global dependency?
381 classElement.ensureResolved(resolution); 381 classElement.ensureResolved(resolution);
382 compiler.backend.registerInstantiatedType( 382 compiler.backend.registerInstantiatedType(
383 classElement.rawType, world, compiler.globalDependencies); 383 classElement.rawType, world, compiler.globalDependencies);
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 'native exception'); 577 'native exception');
578 } 578 }
579 } 579 }
580 580
581 581
582 class NativeResolutionEnqueuer extends NativeEnqueuerBase { 582 class NativeResolutionEnqueuer extends NativeEnqueuerBase {
583 583
584 Map<String, ClassElement> tagOwner = new Map<String, ClassElement>(); 584 Map<String, ClassElement> tagOwner = new Map<String, ClassElement>();
585 585
586 NativeResolutionEnqueuer(Enqueuer world, Compiler compiler) 586 NativeResolutionEnqueuer(Enqueuer world, Compiler compiler)
587 : super(world, compiler, compiler.enableNativeLiveTypeAnalysis); 587 : super(world, compiler, compiler.options.enableNativeLiveTypeAnalysis);
588 588
589 void processNativeClass(ClassElement classElement) { 589 void processNativeClass(ClassElement classElement) {
590 super.processNativeClass(classElement); 590 super.processNativeClass(classElement);
591 591
592 // Js Interop interfaces do not have tags. 592 // Js Interop interfaces do not have tags.
593 if (backend.isJsInterop(classElement)) return; 593 if (backend.isJsInterop(classElement)) return;
594 // Since we map from dispatch tags to classes, a dispatch tag must be used 594 // Since we map from dispatch tags to classes, a dispatch tag must be used
595 // on only one native class. 595 // on only one native class.
596 for (String tag in backend.getNativeTagsOfClass(classElement)) { 596 for (String tag in backend.getNativeTagsOfClass(classElement)) {
597 ClassElement owner = tagOwner[tag]; 597 ClassElement owner = tagOwner[tag];
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 } 663 }
664 664
665 665
666 class NativeCodegenEnqueuer extends NativeEnqueuerBase { 666 class NativeCodegenEnqueuer extends NativeEnqueuerBase {
667 667
668 final CodeEmitterTask emitter; 668 final CodeEmitterTask emitter;
669 669
670 final Set<ClassElement> doneAddSubtypes = new Set<ClassElement>(); 670 final Set<ClassElement> doneAddSubtypes = new Set<ClassElement>();
671 671
672 NativeCodegenEnqueuer(Enqueuer world, Compiler compiler, this.emitter) 672 NativeCodegenEnqueuer(Enqueuer world, Compiler compiler, this.emitter)
673 : super(world, compiler, compiler.enableNativeLiveTypeAnalysis); 673 : super(world, compiler, compiler.options.enableNativeLiveTypeAnalysis);
674 674
675 void processNativeClasses(Iterable<LibraryElement> libraries) { 675 void processNativeClasses(Iterable<LibraryElement> libraries) {
676 super.processNativeClasses(libraries); 676 super.processNativeClasses(libraries);
677 677
678 // HACK HACK - add all the resolved classes. 678 // HACK HACK - add all the resolved classes.
679 NativeEnqueuerBase enqueuer = compiler.enqueuer.resolution.nativeEnqueuer; 679 NativeEnqueuerBase enqueuer = compiler.enqueuer.resolution.nativeEnqueuer;
680 for (final classElement in enqueuer.registeredClasses) { 680 for (final classElement in enqueuer.registeredClasses) {
681 if (unusedClasses.contains(classElement)) { 681 if (unusedClasses.contains(classElement)) {
682 enqueueClass(classElement, 'was resolved'); 682 enqueueClass(classElement, 'was resolved');
683 } 683 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 superclass, 721 superclass,
722 () => <ClassElement>[]); 722 () => <ClassElement>[]);
723 directSubtypes.add(cls); 723 directSubtypes.add(cls);
724 } 724 }
725 725
726 void logSummary(log(message)) { 726 void logSummary(log(message)) {
727 log('Compiled ${registeredClasses.length} native classes, ' 727 log('Compiled ${registeredClasses.length} native classes, '
728 '${unusedClasses.length} native classes omitted.'); 728 '${unusedClasses.length} native classes omitted.');
729 } 729 }
730 } 730 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/native/behavior.dart ('k') | pkg/compiler/lib/src/native/native.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698