Index: runtime/vm/coverage.cc |
=================================================================== |
--- runtime/vm/coverage.cc (revision 38030) |
+++ runtime/vm/coverage.cc (working copy) |
@@ -90,16 +90,18 @@ |
const intptr_t end_pos = function.end_token_pos(); |
intptr_t last_line = -1; |
intptr_t last_count = 0; |
- for (int j = 0; j < descriptors.Length(); j++) { |
+ PcDescriptors::Iterator iter(descriptors); |
+ while (iter.HasNext()) { |
HANDLESCOPE(isolate); |
- PcDescriptors::Kind kind = descriptors.DescriptorKind(j); |
+ const RawPcDescriptors::PcDescriptorRec& rec = iter.Next(); |
+ RawPcDescriptors::Kind kind = rec.kind(); |
// Only IC based calls have counting. |
- if ((kind == PcDescriptors::kIcCall) || |
- (kind == PcDescriptors::kUnoptStaticCall)) { |
- intptr_t deopt_id = descriptors.DeoptId(j); |
+ if ((kind == RawPcDescriptors::kIcCall) || |
+ (kind == RawPcDescriptors::kUnoptStaticCall)) { |
+ intptr_t deopt_id = rec.deopt_id; |
const ICData* ic_data= (*ic_data_array)[deopt_id]; |
if (!ic_data->IsNull()) { |
- intptr_t token_pos = descriptors.TokenPos(j); |
+ intptr_t token_pos = rec.token_pos; |
// Filter out descriptors that do not map to tokens in the source code. |
if (token_pos < begin_pos || |
token_pos > end_pos) { |