| OLD | NEW | 
|---|
| 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library heap_map_element; | 5 library heap_map_element; | 
| 6 | 6 | 
| 7 import 'dart:async'; | 7 import 'dart:async'; | 
| 8 import 'dart:html'; | 8 import 'dart:html'; | 
| 9 import 'dart:math'; | 9 import 'dart:math'; | 
| 10 import 'package:observatory/models.dart' as M; | 10 import 'package:observatory/models.dart' as M; | 
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 101 | 101 | 
| 102     // Set hover text to describe the object under the cursor. | 102     // Set hover text to describe the object under the cursor. | 
| 103     _canvas.title = _status; | 103     _canvas.title = _status; | 
| 104 | 104 | 
| 105     children = [ | 105     children = [ | 
| 106       navBar([ | 106       navBar([ | 
| 107         new NavTopMenuElement(queue: _r.queue), | 107         new NavTopMenuElement(queue: _r.queue), | 
| 108         new NavVMMenuElement(_vm, _events, queue: _r.queue), | 108         new NavVMMenuElement(_vm, _events, queue: _r.queue), | 
| 109         new NavIsolateMenuElement(_isolate, _events, queue: _r.queue), | 109         new NavIsolateMenuElement(_isolate, _events, queue: _r.queue), | 
| 110         navMenu('heap map'), | 110         navMenu('heap map'), | 
|  | 111         new NavRefreshElement(label: 'GC', queue: _r.queue) | 
|  | 112           ..onRefresh.listen((_) => _refresh(gc: true)), | 
| 111         new NavRefreshElement(queue: _r.queue) | 113         new NavRefreshElement(queue: _r.queue) | 
| 112           ..onRefresh.listen((_) => _refresh()), | 114           ..onRefresh.listen((_) => _refresh()), | 
| 113         new NavNotifyElement(_notifications, queue: _r.queue) | 115         new NavNotifyElement(_notifications, queue: _r.queue) | 
| 114       ]), | 116       ]), | 
| 115       new DivElement() | 117       new DivElement() | 
| 116         ..classes = ['content-centered-big'] | 118         ..classes = ['content-centered-big'] | 
| 117         ..children = [ | 119         ..children = [ | 
| 118           new HeadingElement.h2()..text = _status, | 120           new HeadingElement.h2()..text = _status, | 
| 119           new HRElement(), | 121           new HRElement(), | 
| 120         ], | 122         ], | 
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 270       pixel = pixel.next(); | 272       pixel = pixel.next(); | 
| 271     } | 273     } | 
| 272     _canvas.context2D.putImageData( | 274     _canvas.context2D.putImageData( | 
| 273         _fragmentationData, 0, 0, 0, startY, _fragmentationData.width, endY); | 275         _fragmentationData, 0, 0, 0, startY, _fragmentationData.width, endY); | 
| 274     // Continue with the next page, asynchronously. | 276     // Continue with the next page, asynchronously. | 
| 275     new Future(() { | 277     new Future(() { | 
| 276       _renderPages(startPage + 1); | 278       _renderPages(startPage + 1); | 
| 277     }); | 279     }); | 
| 278   } | 280   } | 
| 279 | 281 | 
| 280   Future _refresh() { | 282   Future _refresh({gc: false}) { | 
| 281     final isolate = _isolate as S.Isolate; | 283     final isolate = _isolate as S.Isolate; | 
| 282     return isolate.invokeRpc('_getHeapMap', {}).then((S.ServiceMap response) { | 284     var params = {}; | 
|  | 285     if (gc) { | 
|  | 286       params['gc'] = 'full'; | 
|  | 287     } | 
|  | 288     return isolate | 
|  | 289         .invokeRpc('_getHeapMap', params) | 
|  | 290         .then((S.ServiceMap response) { | 
| 283       assert(response['type'] == 'HeapMap'); | 291       assert(response['type'] == 'HeapMap'); | 
| 284       _fragmentation = response; | 292       _fragmentation = response; | 
| 285       _updateFragmentationData(); | 293       _updateFragmentationData(); | 
| 286     }); | 294     }); | 
| 287   } | 295   } | 
| 288 } | 296 } | 
| 289 | 297 | 
| 290 // A reference to a particular pixel of ImageData. | 298 // A reference to a particular pixel of ImageData. | 
| 291 class PixelReference { | 299 class PixelReference { | 
| 292   final _data; | 300   final _data; | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 314 | 322 | 
| 315   // The row-major index of this pixel. | 323   // The row-major index of this pixel. | 
| 316   int get index => _dataIndex ~/ NUM_COLOR_COMPONENTS; | 324   int get index => _dataIndex ~/ NUM_COLOR_COMPONENTS; | 
| 317 } | 325 } | 
| 318 | 326 | 
| 319 class ObjectInfo { | 327 class ObjectInfo { | 
| 320   final address; | 328   final address; | 
| 321   final size; | 329   final size; | 
| 322   ObjectInfo(this.address, this.size); | 330   ObjectInfo(this.address, this.size); | 
| 323 } | 331 } | 
| OLD | NEW | 
|---|