| OLD | NEW |
| 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 trydart.poi; | 5 library trydart.poi; |
| 6 | 6 |
| 7 import 'dart:async' show | 7 import 'dart:async' show |
| 8 Completer, | 8 Completer, |
| 9 Future; | 9 Future; |
| 10 | 10 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 | 82 |
| 83 /// Counts the number of times [runPoi] has been invoked. | 83 /// Counts the number of times [runPoi] has been invoked. |
| 84 int poiCount; | 84 int poiCount; |
| 85 | 85 |
| 86 int globalCounter = 0; | 86 int globalCounter = 0; |
| 87 | 87 |
| 88 /// Enabled by the option --verbose (or -v). Prints more information than you | 88 /// Enabled by the option --verbose (or -v). Prints more information than you |
| 89 /// really need. | 89 /// really need. |
| 90 bool isVerbose = false; | 90 bool isVerbose = false; |
| 91 | 91 |
| 92 /// Enabled by the option --compile. Also compiles the program after analyzing |
| 93 /// the POI. |
| 94 bool isCompiler = false; |
| 95 |
| 92 /// When true (the default value) print serialized scope information at the | 96 /// When true (the default value) print serialized scope information at the |
| 93 /// provided position. | 97 /// provided position. |
| 94 const bool PRINT_SCOPE_INFO = | 98 const bool PRINT_SCOPE_INFO = |
| 95 const bool.fromEnvironment('PRINT_SCOPE_INFO', defaultValue: true); | 99 const bool.fromEnvironment('PRINT_SCOPE_INFO', defaultValue: true); |
| 96 | 100 |
| 97 Stopwatch wallClock = new Stopwatch(); | 101 Stopwatch wallClock = new Stopwatch(); |
| 98 | 102 |
| 99 PoiTask poiTask; | 103 PoiTask poiTask; |
| 100 | 104 |
| 101 Compiler cachedCompiler; | 105 Compiler cachedCompiler; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 case '--simulate-mutation': | 147 case '--simulate-mutation': |
| 144 isSimulateMutationEnabled = true; | 148 isSimulateMutationEnabled = true; |
| 145 break; | 149 break; |
| 146 case '--enable-dart-mind': | 150 case '--enable-dart-mind': |
| 147 isDartMindEnabled = true; | 151 isDartMindEnabled = true; |
| 148 break; | 152 break; |
| 149 case '-v': | 153 case '-v': |
| 150 case '--verbose': | 154 case '--verbose': |
| 151 isVerbose = true; | 155 isVerbose = true; |
| 152 break; | 156 break; |
| 157 case '--compile': |
| 158 isCompiler = true; |
| 159 break; |
| 153 default: | 160 default: |
| 154 throw 'Unknown option: $argument.'; | 161 throw 'Unknown option: $argument.'; |
| 155 } | 162 } |
| 156 } else { | 163 } else { |
| 157 nonOptionArguments.add(argument); | 164 nonOptionArguments.add(argument); |
| 158 } | 165 } |
| 159 } | 166 } |
| 160 if (nonOptionArguments.isEmpty) { | 167 if (nonOptionArguments.isEmpty) { |
| 161 stdin = new StdinIterator(); | 168 stdin = new StdinIterator(); |
| 162 } else { | 169 } else { |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 int position, | 365 int position, |
| 359 api.CompilerInputProvider inputProvider, | 366 api.CompilerInputProvider inputProvider, |
| 360 api.DiagnosticHandler handler) { | 367 api.DiagnosticHandler handler) { |
| 361 Stopwatch sw = new Stopwatch()..start(); | 368 Stopwatch sw = new Stopwatch()..start(); |
| 362 Uri libraryRoot = Uri.base.resolve('sdk/'); | 369 Uri libraryRoot = Uri.base.resolve('sdk/'); |
| 363 Uri packageRoot = Uri.base.resolveUri( | 370 Uri packageRoot = Uri.base.resolveUri( |
| 364 new Uri.file('${io.Platform.packageRoot}/')); | 371 new Uri.file('${io.Platform.packageRoot}/')); |
| 365 | 372 |
| 366 var options = [ | 373 var options = [ |
| 367 '--analyze-main', | 374 '--analyze-main', |
| 368 '--analyze-only', | |
| 369 '--no-source-maps', | 375 '--no-source-maps', |
| 370 '--verbose', | 376 '--verbose', |
| 371 '--categories=Client,Server', | 377 '--categories=Client,Server', |
| 372 '--incremental-support', | 378 '--incremental-support', |
| 373 '--disable-type-inference', | 379 '--disable-type-inference', |
| 374 ]; | 380 ]; |
| 375 | 381 |
| 382 if (!isCompiler) { |
| 383 options.add('--analyze-only'); |
| 384 } |
| 385 |
| 376 LibraryUpdater updater = | 386 LibraryUpdater updater = |
| 377 new LibraryUpdater( | 387 new LibraryUpdater( |
| 378 cachedCompiler, inputProvider, script, printWallClock, printVerbose); | 388 cachedCompiler, inputProvider, script, printWallClock, printVerbose); |
| 379 Future<bool> reuseLibrary(LibraryElement library) { | 389 Future<bool> reuseLibrary(LibraryElement library) { |
| 380 return poiTask.measure(() => updater.reuseLibrary(library)); | 390 return poiTask.measure(() => updater.reuseLibrary(library)); |
| 381 } | 391 } |
| 382 | 392 |
| 383 return reuseCompiler( | 393 return reuseCompiler( |
| 384 diagnosticHandler: handler, | 394 diagnosticHandler: handler, |
| 385 inputProvider: inputProvider, | 395 inputProvider: inputProvider, |
| 386 options: options, | 396 options: options, |
| 387 cachedCompiler: cachedCompiler, | 397 cachedCompiler: cachedCompiler, |
| 388 libraryRoot: libraryRoot, | 398 libraryRoot: libraryRoot, |
| 389 packageRoot: packageRoot, | 399 packageRoot: packageRoot, |
| 390 packagesAreImmutable: true, | 400 packagesAreImmutable: true, |
| 391 reuseLibrary: reuseLibrary).then((Compiler newCompiler) { | 401 reuseLibrary: reuseLibrary).then((Compiler newCompiler) { |
| 392 var filter = new ScriptOnlyFilter(script); | 402 if (!isCompiler) { |
| 393 newCompiler.enqueuerFilter = filter; | 403 newCompiler.enqueuerFilter = new ScriptOnlyFilter(script); |
| 404 } |
| 394 return runPoiInternal(newCompiler, sw, updater, position); | 405 return runPoiInternal(newCompiler, sw, updater, position); |
| 395 }); | 406 }); |
| 396 } | 407 } |
| 397 | 408 |
| 398 Future<Element> runPoiInternal( | 409 Future<Element> runPoiInternal( |
| 399 Compiler newCompiler, | 410 Compiler newCompiler, |
| 400 Stopwatch sw, | 411 Stopwatch sw, |
| 401 LibraryUpdater updater, | 412 LibraryUpdater updater, |
| 402 int position) { | 413 int position) { |
| 403 bool isFullCompile = cachedCompiler != newCompiler; | 414 bool isFullCompile = cachedCompiler != newCompiler; |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 746 | 757 |
| 747 modelx.ImportScope importScope(modelx.LibraryElementX element) { | 758 modelx.ImportScope importScope(modelx.LibraryElementX element) { |
| 748 return element.importScope; | 759 return element.importScope; |
| 749 } | 760 } |
| 750 | 761 |
| 751 class PoiTask extends CompilerTask { | 762 class PoiTask extends CompilerTask { |
| 752 PoiTask(Compiler compiler) : super(compiler); | 763 PoiTask(Compiler compiler) : super(compiler); |
| 753 | 764 |
| 754 String get name => 'POI'; | 765 String get name => 'POI'; |
| 755 } | 766 } |
| OLD | NEW |