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

Side by Side Diff: sdk/lib/async/zone.dart

Issue 27215002: Very simple version of Isolates. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 dart.async; 5 part of dart.async;
6 6
7 typedef dynamic ZoneCallback(); 7 typedef dynamic ZoneCallback();
8 typedef dynamic ZoneUnaryCallback(arg); 8 typedef dynamic ZoneUnaryCallback(arg);
9 typedef dynamic ZoneBinaryCallback(arg1, arg2); 9 typedef dynamic ZoneBinaryCallback(arg1, arg2);
10 10
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 return new _ZoneDelegate(this).createPeriodicTimer(this, duration, f); 694 return new _ZoneDelegate(this).createPeriodicTimer(this, duration, f);
695 } 695 }
696 696
697 void print(String line) { 697 void print(String line) {
698 new _ZoneDelegate(this).print(this, line); 698 new _ZoneDelegate(this).print(this, line);
699 } 699 }
700 } 700 }
701 701
702 void _rootHandleUncaughtError( 702 void _rootHandleUncaughtError(
703 Zone self, ZoneDelegate parent, Zone zone, error, StackTrace stackTrace) { 703 Zone self, ZoneDelegate parent, Zone zone, error, StackTrace stackTrace) {
704 _scheduleAsyncCallback(() { 704 self.run(() {
705 print("Uncaught Error: ${error}"); 705 _scheduleAsyncCallback(() {
706 var trace = stackTrace; 706 print("Uncaught Error: ${error}");
707 if (trace == null) trace = getAttachedStackTrace(error); 707 var trace = stackTrace;
708 // Clear the attached stack trace (if any). 708 if (trace == null) trace = getAttachedStackTrace(error);
709 _attachStackTrace(error, null); 709 // Clear the attached stack trace (if any).
710 if (trace != null) { 710 _attachStackTrace(error, null);
711 print("Stack Trace: \n$trace\n"); 711 if (trace != null) {
712 } 712 print("Stack Trace: \n$trace\n");
713 throw error; 713 }
714 throw error;
715 });
714 }); 716 });
715 } 717 }
716 718
717 dynamic _rootRun(Zone self, ZoneDelegate parent, Zone zone, f()) { 719 dynamic _rootRun(Zone self, ZoneDelegate parent, Zone zone, f()) {
718 if (Zone._current == zone) return f(); 720 if (Zone._current == zone) return f();
719 721
720 Zone old = Zone._current; 722 Zone old = Zone._current;
721 try { 723 try {
722 Zone._current = zone; 724 Zone._current = zone;
723 return f(); 725 return f();
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 ZoneSpecification specification = 1013 ZoneSpecification specification =
1012 new ZoneSpecification(handleUncaughtError: errorHandler, 1014 new ZoneSpecification(handleUncaughtError: errorHandler,
1013 scheduleMicrotask: asyncHandler); 1015 scheduleMicrotask: asyncHandler);
1014 Zone zone = Zone.current.fork(specification: specification); 1016 Zone zone = Zone.current.fork(specification: specification);
1015 if (onError != null) { 1017 if (onError != null) {
1016 return zone.runGuarded(body); 1018 return zone.runGuarded(body);
1017 } else { 1019 } else {
1018 return zone.run(body); 1020 return zone.run(body);
1019 } 1021 }
1020 } 1022 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698