OLD | NEW |
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 /** The one true [World]. */ | 5 /** The one true [World]. */ |
6 World world; | 6 World world; |
7 | 7 |
8 /** | 8 /** |
9 * Experimental phase to enable await, only set when using the | 9 * Experimental phase to enable await, only set when using the |
10 * await/awaitc.dart entrypoint. | 10 * await/awaitc.dart entrypoint. |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 } | 399 } |
400 return res; | 400 return res; |
401 } | 401 } |
402 | 402 |
403 void runCompilationPhases() { | 403 void runCompilationPhases() { |
404 final lib = withTiming('first pass', () => processDartScript()); | 404 final lib = withTiming('first pass', () => processDartScript()); |
405 withTiming('resolve top level', resolveAll); | 405 withTiming('resolve top level', resolveAll); |
406 if (experimentalAwaitPhase != null) { | 406 if (experimentalAwaitPhase != null) { |
407 withTiming('await translation', experimentalAwaitPhase); | 407 withTiming('await translation', experimentalAwaitPhase); |
408 } | 408 } |
| 409 withTiming('analyze pass', () { analyzeCode(lib); }); |
409 withTiming('generate code', () { generateCode(lib); }); | 410 withTiming('generate code', () { generateCode(lib); }); |
410 } | 411 } |
411 | 412 |
412 String getGeneratedCode() { | 413 String getGeneratedCode() { |
413 // TODO(jimhug): Assert compilation is all done here. | 414 // TODO(jimhug): Assert compilation is all done here. |
414 if (legCode != null) { | 415 if (legCode != null) { |
415 assert(options.enableLeg); | 416 assert(options.enableLeg); |
416 return legCode; | 417 return legCode; |
417 } else { | 418 } else { |
418 return frogCode; | 419 return frogCode; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 } | 478 } |
478 | 479 |
479 findMainMethod(Library lib) { | 480 findMainMethod(Library lib) { |
480 var main = lib.lookup('main', lib.span); | 481 var main = lib.lookup('main', lib.span); |
481 if (main == null) { | 482 if (main == null) { |
482 fatal('no main method specified'); | 483 fatal('no main method specified'); |
483 } | 484 } |
484 return main; | 485 return main; |
485 } | 486 } |
486 | 487 |
| 488 /** |
| 489 * Walks all code in lib and imports for analysis. |
| 490 */ |
| 491 analyzeCode(Library lib) { |
| 492 gen = new WorldGenerator(findMainMethod(lib), new CodeWriter()); |
| 493 gen.analyze(); |
| 494 } |
| 495 |
| 496 /** |
| 497 * Walks all live code to generate JS source for output. |
| 498 */ |
487 generateCode(Library lib) { | 499 generateCode(Library lib) { |
488 gen = new WorldGenerator(findMainMethod(lib), new CodeWriter()); | |
489 gen.run(); | 500 gen.run(); |
490 frogCode = gen.writer.text; | 501 frogCode = gen.writer.text; |
491 jsBytesWritten = frogCode.length; | 502 jsBytesWritten = frogCode.length; |
492 gen = null; | 503 gen = null; |
493 } | 504 } |
494 | 505 |
495 // ********************** Message support *********************** | 506 // ********************** Message support *********************** |
496 | 507 |
497 void _message(String color, String prefix, String message, | 508 void _message(String color, String prefix, String message, |
498 SourceSpan span, SourceSpan span1, SourceSpan span2, bool throwing) { | 509 SourceSpan span, SourceSpan span1, SourceSpan span2, bool throwing) { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 | 617 |
607 withTiming(String name, f()) { | 618 withTiming(String name, f()) { |
608 final sw = new Stopwatch(); | 619 final sw = new Stopwatch(); |
609 sw.start(); | 620 sw.start(); |
610 var result = f(); | 621 var result = f(); |
611 sw.stop(); | 622 sw.stop(); |
612 info('$name in ${sw.elapsedInMs()}msec'); | 623 info('$name in ${sw.elapsedInMs()}msec'); |
613 return result; | 624 return result; |
614 } | 625 } |
615 } | 626 } |
OLD | NEW |