| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 library fn; | 5 library fn; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 import 'dart:sky' as sky; | 9 import 'dart:sky' as sky; |
| 10 import 'reflect.dart' as reflect; | 10 import 'reflect.dart' as reflect; |
| 11 | 11 |
| 12 final sky.Tracing _tracing = sky.window.tracing; |
| 13 |
| 12 bool _initIsInCheckedMode() { | 14 bool _initIsInCheckedMode() { |
| 13 String testFn(i) { double d = i; return d.toString(); } | 15 String testFn(i) { double d = i; return d.toString(); } |
| 14 try { | 16 try { |
| 15 testFn('not a double'); | 17 testFn('not a double'); |
| 16 } catch (ex) { | 18 } catch (ex) { |
| 17 return true; | 19 return true; |
| 18 } | 20 } |
| 19 return false; | 21 return false; |
| 20 } | 22 } |
| 21 | 23 |
| (...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 _unmountedComponents.clear(); | 708 _unmountedComponents.clear(); |
| 707 } finally { | 709 } finally { |
| 708 _notifingMountStatus = false; | 710 _notifingMountStatus = false; |
| 709 } | 711 } |
| 710 } | 712 } |
| 711 | 713 |
| 712 List<Component> _dirtyComponents = new List<Component>(); | 714 List<Component> _dirtyComponents = new List<Component>(); |
| 713 bool _buildScheduled = false; | 715 bool _buildScheduled = false; |
| 714 bool _inRenderDirtyComponents = false; | 716 bool _inRenderDirtyComponents = false; |
| 715 | 717 |
| 718 void _buildDirtyComponents() { |
| 719 _tracing.begin('fn::_buildDirtyComponents'); |
| 716 | 720 |
| 717 void _buildDirtyComponents() { | |
| 718 Stopwatch sw; | 721 Stopwatch sw; |
| 719 if (_shouldLogRenderDuration) | 722 if (_shouldLogRenderDuration) |
| 720 sw = new Stopwatch()..start(); | 723 sw = new Stopwatch()..start(); |
| 721 | 724 |
| 722 try { | 725 try { |
| 723 _inRenderDirtyComponents = true; | 726 _inRenderDirtyComponents = true; |
| 724 | 727 |
| 725 _dirtyComponents.sort((a, b) => a._order - b._order); | 728 _dirtyComponents.sort((a, b) => a._order - b._order); |
| 726 for (var comp in _dirtyComponents) { | 729 for (var comp in _dirtyComponents) { |
| 727 comp._buildIfDirty(); | 730 comp._buildIfDirty(); |
| 728 } | 731 } |
| 729 | 732 |
| 730 _dirtyComponents.clear(); | 733 _dirtyComponents.clear(); |
| 731 _buildScheduled = false; | 734 _buildScheduled = false; |
| 732 } finally { | 735 } finally { |
| 733 _inRenderDirtyComponents = false; | 736 _inRenderDirtyComponents = false; |
| 734 } | 737 } |
| 735 | 738 |
| 736 _notifyMountStatusChanged(); | 739 _notifyMountStatusChanged(); |
| 737 | 740 |
| 738 if (_shouldLogRenderDuration) { | 741 if (_shouldLogRenderDuration) { |
| 739 sw.stop(); | 742 sw.stop(); |
| 740 print("Render took ${sw.elapsedMicroseconds} microseconds"); | 743 print('Render took ${sw.elapsedMicroseconds} microseconds'); |
| 741 } | 744 } |
| 745 |
| 746 _tracing.end('fn::_buildDirtyComponents'); |
| 742 } | 747 } |
| 743 | 748 |
| 744 void _scheduleComponentForRender(Component c) { | 749 void _scheduleComponentForRender(Component c) { |
| 745 assert(!_inRenderDirtyComponents); | 750 assert(!_inRenderDirtyComponents); |
| 746 _dirtyComponents.add(c); | 751 _dirtyComponents.add(c); |
| 747 | 752 |
| 748 if (!_buildScheduled) { | 753 if (!_buildScheduled) { |
| 749 _buildScheduled = true; | 754 _buildScheduled = true; |
| 750 new Future.microtask(_buildDirtyComponents); | 755 new Future.microtask(_buildDirtyComponents); |
| 751 } | 756 } |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 | 899 |
| 895 abstract class App extends Component { | 900 abstract class App extends Component { |
| 896 sky.Node _host; | 901 sky.Node _host; |
| 897 | 902 |
| 898 App() : super(stateful: true) { | 903 App() : super(stateful: true) { |
| 899 _host = sky.document.createElement('div'); | 904 _host = sky.document.createElement('div'); |
| 900 sky.document.appendChild(_host); | 905 sky.document.appendChild(_host); |
| 901 _scheduleComponentForRender(this); | 906 _scheduleComponentForRender(this); |
| 902 } | 907 } |
| 903 } | 908 } |
| OLD | NEW |