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

Side by Side Diff: dart/sdk/lib/_internal/compiler/implementation/compiler.dart

Issue 11421060: Improve measuring (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « dart/sdk/lib/_internal/compiler/implementation/apiimpl.dart ('k') | no next file » | 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) 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 part of dart2js; 5 part of dart2js;
6 6
7 /** 7 /**
8 * If true, print a warning for each method that was resolved, but not 8 * If true, print a warning for each method that was resolved, but not
9 * compiled. 9 * compiled.
10 */ 10 */
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 bool isAnalyzed() => resolutionTree != null; 51 bool isAnalyzed() => resolutionTree != null;
52 52
53 void run(Compiler compiler, Enqueuer world) { 53 void run(Compiler compiler, Enqueuer world) {
54 CodeBuffer codeBuffer = world.universe.generatedCode[element]; 54 CodeBuffer codeBuffer = world.universe.generatedCode[element];
55 if (codeBuffer != null) return; 55 if (codeBuffer != null) return;
56 resolutionTree = compiler.analyze(this, world); 56 resolutionTree = compiler.analyze(this, world);
57 compiler.codegen(this, world); 57 compiler.codegen(this, world);
58 } 58 }
59 } 59 }
60 60
61 class UnreportedTask extends CompilerTask {
62 UnreportedTask(Compiler compiler) : super(compiler);
63 String get name => 'Unreported';
64 }
65
66 class ReadingFilesTask extends CompilerTask {
67 ReadingFilesTask(Compiler compiler) : super(compiler);
68 String get name => 'Reading input files';
69 }
70
61 abstract class Backend { 71 abstract class Backend {
62 final Compiler compiler; 72 final Compiler compiler;
63 final ConstantSystem constantSystem; 73 final ConstantSystem constantSystem;
64 74
65 Backend(this.compiler, 75 Backend(this.compiler,
66 [ConstantSystem constantSystem = DART_CONSTANT_SYSTEM]) 76 [ConstantSystem constantSystem = DART_CONSTANT_SYSTEM])
67 : this.constantSystem = constantSystem; 77 : this.constantSystem = constantSystem;
68 78
69 void enqueueAllTopLevelFunctions(LibraryElement lib, Enqueuer world) { 79 void enqueueAllTopLevelFunctions(LibraryElement lib, Enqueuer world) {
70 lib.forEachExport((Element e) { 80 lib.forEachExport((Element e) {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 PatchParserTask patchParser; 193 PatchParserTask patchParser;
184 LibraryLoader libraryLoader; 194 LibraryLoader libraryLoader;
185 TreeValidatorTask validator; 195 TreeValidatorTask validator;
186 ResolverTask resolver; 196 ResolverTask resolver;
187 closureMapping.ClosureTask closureToClassMapper; 197 closureMapping.ClosureTask closureToClassMapper;
188 TypeCheckerTask checker; 198 TypeCheckerTask checker;
189 ti.TypesTask typesTask; 199 ti.TypesTask typesTask;
190 Backend backend; 200 Backend backend;
191 ConstantHandler constantHandler; 201 ConstantHandler constantHandler;
192 EnqueueTask enqueuer; 202 EnqueueTask enqueuer;
203 CompilerTask unreported;
204 CompilerTask fileReadingTask;
193 205
194 static const SourceString MAIN = const SourceString('main'); 206 static const SourceString MAIN = const SourceString('main');
195 static const SourceString CALL_OPERATOR_NAME = const SourceString('call'); 207 static const SourceString CALL_OPERATOR_NAME = const SourceString('call');
196 static const SourceString NO_SUCH_METHOD = const SourceString('noSuchMethod'); 208 static const SourceString NO_SUCH_METHOD = const SourceString('noSuchMethod');
197 static const int NO_SUCH_METHOD_ARG_COUNT = 1; 209 static const int NO_SUCH_METHOD_ARG_COUNT = 1;
198 static const SourceString INVOKE_ON = const SourceString('invokeOn'); 210 static const SourceString INVOKE_ON = const SourceString('invokeOn');
199 static const SourceString RUNTIME_TYPE = const SourceString('runtimeType'); 211 static const SourceString RUNTIME_TYPE = const SourceString('runtimeType');
200 static const SourceString START_ROOT_ISOLATE = 212 static const SourceString START_ROOT_ISOLATE =
201 const SourceString('startRootIsolate'); 213 const SourceString('startRootIsolate');
202 bool enabledNoSuchMethod = false; 214 bool enabledNoSuchMethod = false;
(...skipping 22 matching lines...) Expand all
225 bool generateSourceMap: true, 237 bool generateSourceMap: true,
226 bool disallowUnsafeEval: false, 238 bool disallowUnsafeEval: false,
227 this.analyzeAll: false, 239 this.analyzeAll: false,
228 this.rejectDeprecatedFeatures: false, 240 this.rejectDeprecatedFeatures: false,
229 this.checkDeprecationInSdk: false, 241 this.checkDeprecationInSdk: false,
230 List<String> strips: const []}) 242 List<String> strips: const []})
231 : libraries = new Map<String, LibraryElement>(), 243 : libraries = new Map<String, LibraryElement>(),
232 progress = new Stopwatch() { 244 progress = new Stopwatch() {
233 progress.start(); 245 progress.start();
234 world = new World(this); 246 world = new World(this);
235 scanner = new ScannerTask(this);
236 dietParser = new DietParserTask(this);
237 parser = new ParserTask(this);
238 patchParser = new PatchParserTask(this);
239 libraryLoader = new LibraryLoaderTask(this);
240 validator = new TreeValidatorTask(this);
241 resolver = new ResolverTask(this);
242 closureToClassMapper = new closureMapping.ClosureTask(this);
243 checker = new TypeCheckerTask(this);
244 typesTask = new ti.TypesTask(this, enableConcreteTypeInference);
245 backend = emitJavaScript ? 247 backend = emitJavaScript ?
246 new js_backend.JavaScriptBackend(this, 248 new js_backend.JavaScriptBackend(this,
247 generateSourceMap, 249 generateSourceMap,
248 disallowUnsafeEval) : 250 disallowUnsafeEval) :
249 new dart_backend.DartBackend(this, strips); 251 new dart_backend.DartBackend(this, strips);
250 constantHandler = new ConstantHandler(this, backend.constantSystem); 252
251 enqueuer = new EnqueueTask(this); 253 // No-op in production mode.
252 tasks = [scanner, dietParser, parser, patchParser, libraryLoader, 254 validator = new TreeValidatorTask(this);
253 resolver, closureToClassMapper, checker, typesTask, 255
254 constantHandler, enqueuer]; 256 tasks = [
257 fileReadingTask = new ReadingFilesTask(this),
258 libraryLoader = new LibraryLoaderTask(this),
259 scanner = new ScannerTask(this),
260 dietParser = new DietParserTask(this),
261 parser = new ParserTask(this),
262 patchParser = new PatchParserTask(this),
263 resolver = new ResolverTask(this),
264 closureToClassMapper = new closureMapping.ClosureTask(this),
265 checker = new TypeCheckerTask(this),
266 typesTask = new ti.TypesTask(this, enableConcreteTypeInference),
267 constantHandler = new ConstantHandler(this, backend.constantSystem),
268 enqueuer = new EnqueueTask(this)];
269
255 tasks.addAll(backend.tasks); 270 tasks.addAll(backend.tasks);
271 tasks.add(unreported = new UnreportedTask(this));
256 } 272 }
257 273
258 Universe get resolverWorld => enqueuer.resolution.universe; 274 Universe get resolverWorld => enqueuer.resolution.universe;
259 Universe get codegenWorld => enqueuer.codegen.universe; 275 Universe get codegenWorld => enqueuer.codegen.universe;
260 276
261 int getNextFreeClassId() => nextFreeClassId++; 277 int getNextFreeClassId() => nextFreeClassId++;
262 278
263 void ensure(bool condition) { 279 void ensure(bool condition) {
264 if (!condition) cancel('failed assertion in leg'); 280 if (!condition) cancel('failed assertion in leg');
265 } 281 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 element: element); 350 element: element);
335 }); 351 });
336 } 352 }
337 353
338 void log(message) { 354 void log(message) {
339 reportDiagnostic(null, message, api.Diagnostic.VERBOSE_INFO); 355 reportDiagnostic(null, message, api.Diagnostic.VERBOSE_INFO);
340 } 356 }
341 357
342 bool run(Uri uri) { 358 bool run(Uri uri) {
343 try { 359 try {
344 runCompiler(uri); 360 unreported.measure(() => runCompiler(uri));
ngeoffray 2012/11/27 09:14:07 Will that just measure the non-measured time at th
ahe 2012/11/30 12:00:37 I have changed it. Now it looks like this: info:
345 } on CompilerCancelledException catch (exception) { 361 } on CompilerCancelledException catch (exception) {
346 log('Error: $exception'); 362 log('Error: $exception');
347 return false; 363 return false;
348 } 364 }
349 tracer.close(); 365 tracer.close();
350 return true; 366 return true;
351 } 367 }
352 368
353 void enableNoSuchMethod(Element element) { 369 void enableNoSuchMethod(Element element) {
354 // TODO(ahe): Move this method to Enqueuer. 370 // TODO(ahe): Move this method to Enqueuer.
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 // TODO(johnniwinther): Use [spannable] and [message] to provide better 954 // TODO(johnniwinther): Use [spannable] and [message] to provide better
939 // information on assertion errors. 955 // information on assertion errors.
940 if (condition is Function){ 956 if (condition is Function){
941 condition = condition(); 957 condition = condition();
942 } 958 }
943 if (spannable == null || !condition) { 959 if (spannable == null || !condition) {
944 throw new SpannableAssertionFailure(spannable, message); 960 throw new SpannableAssertionFailure(spannable, message);
945 } 961 }
946 return true; 962 return true;
947 } 963 }
OLDNEW
« no previous file with comments | « dart/sdk/lib/_internal/compiler/implementation/apiimpl.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698