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

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

Issue 80793002: Check compiler exitCode. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased Created 7 years 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 | « no previous file | sdk/lib/_internal/compiler/implementation/dart2js.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) 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 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 /** 497 /**
498 * Perform an operation, [f], returning the return value from [f]. If an 498 * Perform an operation, [f], returning the return value from [f]. If an
499 * error occurs then report it as having occurred during compilation of 499 * error occurs then report it as having occurred during compilation of
500 * [element]. Can be nested. 500 * [element]. Can be nested.
501 */ 501 */
502 withCurrentElement(Element element, f()) { 502 withCurrentElement(Element element, f()) {
503 Element old = currentElement; 503 Element old = currentElement;
504 _currentElement = element; 504 _currentElement = element;
505 try { 505 try {
506 return f(); 506 return f();
507 } on SpannableAssertionFailure catch (ex, s) { 507 } on SpannableAssertionFailure catch (ex) {
508 if (!hasCrashed) { 508 if (!hasCrashed) {
509 String message = (ex.message != null) ? tryToString(ex.message) 509 String message = (ex.message != null) ? tryToString(ex.message)
510 : tryToString(ex); 510 : tryToString(ex);
511 SourceSpan span = spanFromSpannable(ex.node); 511 SourceSpan span = spanFromSpannable(ex.node);
512 reportError(ex.node, MessageKind.GENERIC, {'text': message}); 512 reportError(ex.node, MessageKind.GENERIC, {'text': message});
513 pleaseReportCrash(s, 'The compiler crashed: $message.'); 513 pleaseReportCrash();
514 } 514 }
515 hasCrashed = true; 515 hasCrashed = true;
516 throw new CompilerCancelledException('The compiler crashed.'); 516 rethrow;
517 } on CompilerCancelledException catch (ex) { 517 } on CompilerCancelledException catch (ex) {
518 rethrow; 518 rethrow;
519 } on StackOverflowError catch (ex) { 519 } on StackOverflowError catch (ex) {
520 // We cannot report anything useful in this case, because we 520 // We cannot report anything useful in this case, because we
521 // do not have enough stack space. 521 // do not have enough stack space.
522 rethrow; 522 rethrow;
523 } catch (ex, s) { 523 } catch (ex) {
524 if (hasCrashed) rethrow; 524 if (hasCrashed) rethrow;
525 String message = 'The compiler crashed: ${tryToString(ex)}.';
526 try { 525 try {
527 unhandledExceptionOnElement(element, s, message); 526 unhandledExceptionOnElement(element);
528 } catch (doubleFault) { 527 } catch (doubleFault) {
529 // Ignoring exceptions in exception handling. 528 // Ignoring exceptions in exception handling.
530 } 529 }
531 throw new CompilerCancelledException(message); 530 rethrow;
532 } finally { 531 } finally {
533 _currentElement = old; 532 _currentElement = old;
534 } 533 }
535 } 534 }
536 535
537 List<CompilerTask> tasks; 536 List<CompilerTask> tasks;
538 ScannerTask scanner; 537 ScannerTask scanner;
539 DietParserTask dietParser; 538 DietParserTask dietParser;
540 ParserTask parser; 539 ParserTask parser;
541 PatchParserTask patchParser; 540 PatchParserTask patchParser;
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 Element element}) { 696 Element element}) {
698 cancel('Internal Error: $message', 697 cancel('Internal Error: $message',
699 node: node, token: token, 698 node: node, token: token,
700 instruction: instruction, element: element); 699 instruction: instruction, element: element);
701 } 700 }
702 701
703 void internalErrorOnElement(Element element, String message) { 702 void internalErrorOnElement(Element element, String message) {
704 internalError(message, element: element); 703 internalError(message, element: element);
705 } 704 }
706 705
707 void unhandledExceptionOnElement(Element element, 706 void unhandledExceptionOnElement(Element element) {
708 StackTrace stackTrace,
709 String message) {
710 if (hasCrashed) return; 707 if (hasCrashed) return;
711 hasCrashed = true; 708 hasCrashed = true;
712 reportDiagnostic(spanFromElement(element), 709 reportDiagnostic(spanFromElement(element),
713 MessageKind.COMPILER_CRASHED.error().toString(), 710 MessageKind.COMPILER_CRASHED.error().toString(),
714 api.Diagnostic.CRASH); 711 api.Diagnostic.CRASH);
715 pleaseReportCrash(stackTrace, message); 712 pleaseReportCrash();
716 } 713 }
717 714
718 void pleaseReportCrash(StackTrace stackTrace, String message) { 715 void pleaseReportCrash() {
719 print(MessageKind.PLEASE_REPORT_THE_CRASH.message({'buildId': buildId})); 716 print(MessageKind.PLEASE_REPORT_THE_CRASH.message({'buildId': buildId}));
720 if (message != null) {
721 print(message);
722 }
723 if (stackTrace != null) {
724 print(stackTrace);
725 }
726 } 717 }
727 718
728 void cancel(String reason, {Node node, Token token, 719 void cancel(String reason, {Node node, Token token,
729 HInstruction instruction, Element element}) { 720 HInstruction instruction, Element element}) {
730 assembledCode = null; // Compilation failed. Make sure that we 721 assembledCode = null; // Compilation failed. Make sure that we
731 // don't return a bogus result. 722 // don't return a bogus result.
732 Spannable spannable = null; 723 Spannable spannable = null;
733 if (node != null) { 724 if (node != null) {
734 spannable = node; 725 spannable = node;
735 } else if (token != null) { 726 } else if (token != null) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 } 760 }
770 } 761 }
771 762
772 void log(message) { 763 void log(message) {
773 reportDiagnostic(null, message, api.Diagnostic.VERBOSE_INFO); 764 reportDiagnostic(null, message, api.Diagnostic.VERBOSE_INFO);
774 } 765 }
775 766
776 Future<bool> run(Uri uri) { 767 Future<bool> run(Uri uri) {
777 totalCompileTime.start(); 768 totalCompileTime.start();
778 769
779 return new Future.sync(() => runCompiler(uri)).catchError((error, trace) { 770 return new Future.sync(() => runCompiler(uri)).catchError((error) {
780 if (error is CompilerCancelledException) { 771 if (error is CompilerCancelledException) {
781 log('Error: $error'); 772 log('Error: $error');
782 return false; 773 return false;
783 } 774 }
784 775
785 try { 776 try {
786 if (!hasCrashed) { 777 if (!hasCrashed) {
787 hasCrashed = true; 778 hasCrashed = true;
788 reportDiagnostic(new SourceSpan(uri, 0, 0), 779 reportDiagnostic(new SourceSpan(uri, 0, 0),
789 MessageKind.COMPILER_CRASHED.error().toString(), 780 MessageKind.COMPILER_CRASHED.error().toString(),
790 api.Diagnostic.CRASH); 781 api.Diagnostic.CRASH);
791 String message = 'The compiler crashed.'; 782 pleaseReportCrash();
792 pleaseReportCrash(trace, message);
793 } 783 }
794 } catch (doubleFault) { 784 } catch (doubleFault) {
795 // Ignoring exceptions in exception handling. 785 // Ignoring exceptions in exception handling.
796 } 786 }
797 throw error; 787 throw error;
798 }).whenComplete(() { 788 }).whenComplete(() {
799 tracer.close(); 789 tracer.close();
800 totalCompileTime.stop(); 790 totalCompileTime.stop();
801 }).then((_) { 791 }).then((_) {
802 return !compilationFailed; 792 return !compilationFailed;
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 1651
1662 void close() {} 1652 void close() {}
1663 1653
1664 toString() => name; 1654 toString() => name;
1665 1655
1666 /// Convenience method for getting an [api.CompilerOutputProvider]. 1656 /// Convenience method for getting an [api.CompilerOutputProvider].
1667 static NullSink outputProvider(String name, String extension) { 1657 static NullSink outputProvider(String name, String extension) {
1668 return new NullSink('$name.$extension'); 1658 return new NullSink('$name.$extension');
1669 } 1659 }
1670 } 1660 }
OLDNEW
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/dart2js.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698