Chromium Code Reviews| Index: runtime/vm/coverage.cc |
| diff --git a/runtime/vm/coverage.cc b/runtime/vm/coverage.cc |
| index 3d546a54bf4dc88e4976c5be94f89d7cdae85f64..a029e7a023d321746b533990ebf126a8509cfa8b 100644 |
| --- a/runtime/vm/coverage.cc |
| +++ b/runtime/vm/coverage.cc |
| @@ -41,12 +41,6 @@ static void ComputeTokenPosToLineNumberMap(const Script& script, |
| } |
| -static inline void PrintJSONPreamble(JSONObject* jsobj) { |
| - jsobj->AddProperty("type", "CodeCoverage"); |
| - jsobj->AddProperty("id", "coverage"); |
| -} |
| - |
| - |
| void CodeCoverage::CompileAndAdd(const Function& function, |
| const JSONArray& hits_arr, |
| const GrowableArray<intptr_t>& pos_to_line) { |
| @@ -129,9 +123,10 @@ void CodeCoverage::CompileAndAdd(const Function& function, |
| } |
| -void CodeCoverage::PrintClass(const Class& cls, |
| +void CodeCoverage::PrintClass(const Library& lib, |
| + const Class& cls, |
| const JSONArray& jsarr, |
| - const Script& script_filter) { |
| + CoverageFilter* filter) { |
| Isolate* isolate = Isolate::Current(); |
| if (cls.EnsureIsFinalized(isolate) != Error::null()) { |
| // Only classes that have been finalized do have a meaningful list of |
| @@ -150,7 +145,7 @@ void CodeCoverage::PrintClass(const Class& cls, |
| HANDLESCOPE(isolate); |
| function ^= functions.At(i); |
| script = function.script(); |
| - if (!script_filter.IsNull() && script_filter.raw() != script.raw()) { |
| + if (filter != NULL && !filter->GetCoverage(lib, script, cls, function)) { |
| i++; |
| continue; |
| } |
| @@ -191,7 +186,7 @@ void CodeCoverage::PrintClass(const Class& cls, |
| HANDLESCOPE(isolate); |
| function ^= closures.At(i); |
| script = function.script(); |
| - if (!script_filter.IsNull() && script_filter.raw() != script.raw()) { |
| + if (filter != NULL && !filter->GetCoverage(lib, script, cls, function)) { |
| i++; |
| continue; |
| } |
| @@ -220,44 +215,6 @@ void CodeCoverage::PrintClass(const Class& cls, |
| } |
| -void CodeCoverage::PrintJSONForClass(const Class& cls, |
| - JSONStream* stream) { |
| - JSONObject coverage(stream); |
| - PrintJSONPreamble(&coverage); |
| - { |
| - JSONArray jsarr(&coverage, "coverage"); |
| - PrintClass(cls, jsarr, Script::Handle()); |
| - } |
| -} |
| - |
| - |
| -void CodeCoverage::PrintJSONForLibrary(const Library& lib, |
| - const Script& script_filter, |
| - JSONStream* stream) { |
| - Class& cls = Class::Handle(); |
| - JSONObject coverage(stream); |
| - PrintJSONPreamble(&coverage); |
| - { |
| - JSONArray jsarr(&coverage, "coverage"); |
| - ClassDictionaryIterator it(lib, ClassDictionaryIterator::kIteratePrivate); |
| - while (it.HasNext()) { |
| - cls = it.GetNextClass(); |
| - ASSERT(!cls.IsNull()); |
| - PrintClass(cls, jsarr, script_filter); |
| - } |
| - } |
| -} |
| - |
| - |
| -void CodeCoverage::PrintJSONForScript(const Script& script, |
| - JSONStream* stream) { |
| - Library& lib = Library::Handle(); |
| - lib = script.FindLibrary(); |
| - ASSERT(!lib.IsNull()); |
| - PrintJSONForLibrary(lib, script, stream); |
| -} |
| - |
| - |
| void CodeCoverage::Write(Isolate* isolate) { |
| if (FLAG_coverage_dir == NULL) { |
| return; |
| @@ -271,7 +228,7 @@ void CodeCoverage::Write(Isolate* isolate) { |
| } |
| JSONStream stream; |
| - PrintJSON(isolate, &stream); |
| + PrintJSON(isolate, &stream, NULL); |
| const char* format = "%s/dart-cov-%" Pd "-%" Pd ".json"; |
| intptr_t pid = OS::ProcessId(); |
| @@ -290,7 +247,9 @@ void CodeCoverage::Write(Isolate* isolate) { |
| } |
| -void CodeCoverage::PrintJSON(Isolate* isolate, JSONStream* stream) { |
| +void CodeCoverage::PrintJSON(Isolate* isolate, |
| + JSONStream* stream, |
| + CoverageFilter* filter) { |
| const GrowableObjectArray& libs = GrowableObjectArray::Handle( |
|
Cutch
2014/06/27 15:07:18
kill all the filter != NULL checks by adding:
cla
Michael Lippautz (Google)
2014/06/27 17:12:24
Done.
|
| isolate, isolate->object_store()->libraries()); |
| Library& lib = Library::Handle(); |
| @@ -306,7 +265,7 @@ void CodeCoverage::PrintJSON(Isolate* isolate, JSONStream* stream) { |
| while (it.HasNext()) { |
| cls = it.GetNextClass(); |
| ASSERT(!cls.IsNull()); |
| - PrintClass(cls, jsarr, Script::Handle()); |
| + PrintClass(lib, cls, jsarr, filter); |
| } |
| } |
| } |