OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 repositories; | 5 part of repositories; |
6 | 6 |
7 class AllocationProfileRepository implements M.AllocationProfileRepository { | 7 class AllocationProfileRepository implements M.AllocationProfileRepository { |
8 static const _api = '_getAllocationProfile'; | 8 static const _api = '_getAllocationProfile'; |
9 | 9 |
10 Future<M.AllocationProfile> get(M.IsolateRef i, {bool gc: false, | 10 Future<M.AllocationProfile> get(M.IsolateRef i, |
11 bool reset: false}) async { | 11 {bool gc: false, bool reset: false}) async { |
12 assert(gc != null); | 12 assert(gc != null); |
13 assert(reset != null); | 13 assert(reset != null); |
14 S.Isolate isolate = i as S.Isolate; | 14 S.Isolate isolate = i as S.Isolate; |
15 assert(isolate != null); | 15 assert(isolate != null); |
16 var params = {}; | 16 var params = {}; |
17 if (gc == true) { | 17 if (gc == true) { |
18 params['gc'] = 'full'; | 18 params['gc'] = 'full'; |
19 } | 19 } |
20 if (reset == true) { | 20 if (reset == true) { |
21 params['reset'] = true; | 21 params['reset'] = true; |
22 } | 22 } |
23 final response = await isolate.invokeRpc(_api, params); | 23 final response = await isolate.invokeRpc(_api, params); |
24 isolate.updateHeapsFromMap(response['heaps']); | 24 isolate.updateHeapsFromMap(response['heaps']); |
25 for (S.ServiceMap clsAllocations in response['members']) { | 25 for (S.ServiceMap clsAllocations in response['members']) { |
26 S.Class cls = clsAllocations['class']; | 26 S.Class cls = clsAllocations['class']; |
27 if (cls == null) { | 27 if (cls == null) { |
28 continue; | 28 continue; |
29 } | 29 } |
30 cls.newSpace.update(clsAllocations['new']); | 30 cls.newSpace.update(clsAllocations['new']); |
31 cls.oldSpace.update(clsAllocations['old']); | 31 cls.oldSpace.update(clsAllocations['old']); |
32 } | 32 } |
33 return new AllocationProfile(response); | 33 return new AllocationProfile(response); |
34 } | 34 } |
35 } | 35 } |
OLD | NEW |