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

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

Issue 57873002: Build new IR for functions returning a constant (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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
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 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 hasCrashed = true; 510 hasCrashed = true;
511 throw new CompilerCancelledException('The compiler crashed.'); 511 throw new CompilerCancelledException('The compiler crashed.');
512 } on CompilerCancelledException catch (ex) { 512 } on CompilerCancelledException catch (ex) {
513 rethrow; 513 rethrow;
514 } on StackOverflowError catch (ex) { 514 } on StackOverflowError catch (ex) {
515 // We cannot report anything useful in this case, because we 515 // We cannot report anything useful in this case, because we
516 // do not have enough stack space. 516 // do not have enough stack space.
517 rethrow; 517 rethrow;
518 } catch (ex, s) { 518 } catch (ex, s) {
519 if (hasCrashed) rethrow; 519 if (hasCrashed) rethrow;
520 String message = 'The compiler crashed: ${tryToString(ex)}.'; 520 // @lry debug
521 String message = 'The compiler crashed: ${tryToString(ex)}.\n${ex.stackTra ce}';
kasperl 2013/11/06 08:30:04 Long line.
lukas 2013/11/06 11:36:08 will be removed
521 try { 522 try {
522 unhandledExceptionOnElement(element, s, message); 523 unhandledExceptionOnElement(element, s, message);
523 } catch (doubleFault) { 524 } catch (doubleFault) {
524 // Ignoring exceptions in exception handling. 525 // Ignoring exceptions in exception handling.
525 } 526 }
526 throw new CompilerCancelledException(message); 527 throw new CompilerCancelledException(message);
527 } finally { 528 } finally {
528 _currentElement = old; 529 _currentElement = old;
529 } 530 }
530 } 531 }
531 532
532 List<CompilerTask> tasks; 533 List<CompilerTask> tasks;
533 ScannerTask scanner; 534 ScannerTask scanner;
534 DietParserTask dietParser; 535 DietParserTask dietParser;
535 ParserTask parser; 536 ParserTask parser;
536 PatchParserTask patchParser; 537 PatchParserTask patchParser;
537 LibraryLoader libraryLoader; 538 LibraryLoader libraryLoader;
538 TreeValidatorTask validator; 539 TreeValidatorTask validator;
539 ResolverTask resolver; 540 ResolverTask resolver;
540 closureMapping.ClosureTask closureToClassMapper; 541 closureMapping.ClosureTask closureToClassMapper;
541 TypeCheckerTask checker; 542 TypeCheckerTask checker;
543 IrBuilderTask irBuilder;
542 ti.TypesTask typesTask; 544 ti.TypesTask typesTask;
543 Backend backend; 545 Backend backend;
544 ConstantHandler constantHandler; 546 ConstantHandler constantHandler;
545 EnqueueTask enqueuer; 547 EnqueueTask enqueuer;
546 DeferredLoadTask deferredLoadTask; 548 DeferredLoadTask deferredLoadTask;
547 MirrorUsageAnalyzerTask mirrorUsageAnalyzerTask; 549 MirrorUsageAnalyzerTask mirrorUsageAnalyzerTask;
548 String buildId; 550 String buildId;
549 551
550 static const String MAIN = 'main'; 552 static const String MAIN = 'main';
551 static const String CALL_OPERATOR_NAME = 'call'; 553 static const String CALL_OPERATOR_NAME = 'call';
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 646
645 tasks = [ 647 tasks = [
646 libraryLoader = new LibraryLoaderTask(this), 648 libraryLoader = new LibraryLoaderTask(this),
647 scanner = new ScannerTask(this), 649 scanner = new ScannerTask(this),
648 dietParser = new DietParserTask(this), 650 dietParser = new DietParserTask(this),
649 parser = new ParserTask(this), 651 parser = new ParserTask(this),
650 patchParser = new PatchParserTask(this), 652 patchParser = new PatchParserTask(this),
651 resolver = new ResolverTask(this), 653 resolver = new ResolverTask(this),
652 closureToClassMapper = new closureMapping.ClosureTask(this, closureNamer), 654 closureToClassMapper = new closureMapping.ClosureTask(this, closureNamer),
653 checker = new TypeCheckerTask(this), 655 checker = new TypeCheckerTask(this),
656 irBuilder = new IrBuilderTask(this),
654 typesTask = new ti.TypesTask(this), 657 typesTask = new ti.TypesTask(this),
655 constantHandler = new ConstantHandler(this, backend.constantSystem), 658 constantHandler = new ConstantHandler(this, backend.constantSystem),
656 deferredLoadTask = new DeferredLoadTask(this), 659 deferredLoadTask = new DeferredLoadTask(this),
657 mirrorUsageAnalyzerTask = new MirrorUsageAnalyzerTask(this), 660 mirrorUsageAnalyzerTask = new MirrorUsageAnalyzerTask(this),
658 enqueuer = new EnqueueTask(this)]; 661 enqueuer = new EnqueueTask(this)];
659 662
660 tasks.addAll(backend.tasks); 663 tasks.addAll(backend.tasks);
661 } 664 }
662 665
663 Universe get resolverWorld => enqueuer.resolution.universe; 666 Universe get resolverWorld => enqueuer.resolution.universe;
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 1097
1095 // TODO(ahe): Remove this line. Eventually, enqueuer.resolution 1098 // TODO(ahe): Remove this line. Eventually, enqueuer.resolution
1096 // should know this. 1099 // should know this.
1097 world.populate(); 1100 world.populate();
1098 // Compute whole-program-knowledge that the backend needs. (This might 1101 // Compute whole-program-knowledge that the backend needs. (This might
1099 // require the information computed in [world.populate].) 1102 // require the information computed in [world.populate].)
1100 backend.onResolutionComplete(); 1103 backend.onResolutionComplete();
1101 1104
1102 deferredLoadTask.onResolutionComplete(main); 1105 deferredLoadTask.onResolutionComplete(main);
1103 1106
1107 log('Building IR...');
1108 irBuilder.buildNodes();
1109
1104 log('Inferring types...'); 1110 log('Inferring types...');
1105 typesTask.onResolutionComplete(main); 1111 typesTask.onResolutionComplete(main);
1106 1112
1107 log('Compiling...'); 1113 log('Compiling...');
1108 phase = PHASE_COMPILING; 1114 phase = PHASE_COMPILING;
1109 // TODO(johnniwinther): Move these to [CodegenEnqueuer]. 1115 // TODO(johnniwinther): Move these to [CodegenEnqueuer].
1110 if (hasIsolateSupport()) { 1116 if (hasIsolateSupport()) {
1111 enqueuer.codegen.addToWorkList( 1117 enqueuer.codegen.addToWorkList(
1112 isolateHelperLibrary.find(Compiler.START_ROOT_ISOLATE)); 1118 isolateHelperLibrary.find(Compiler.START_ROOT_ISOLATE));
1113 enqueuer.codegen.registerGetOfStaticFunction(mainApp.find(MAIN)); 1119 enqueuer.codegen.registerGetOfStaticFunction(mainApp.find(MAIN));
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 1651
1646 void close() {} 1652 void close() {}
1647 1653
1648 toString() => name; 1654 toString() => name;
1649 1655
1650 /// Convenience method for getting an [api.CompilerOutputProvider]. 1656 /// Convenience method for getting an [api.CompilerOutputProvider].
1651 static NullSink outputProvider(String name, String extension) { 1657 static NullSink outputProvider(String name, String extension) {
1652 return new NullSink('$name.$extension'); 1658 return new NullSink('$name.$extension');
1653 } 1659 }
1654 } 1660 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698