| Index: runtime/vm/profiler_service.cc
|
| diff --git a/runtime/vm/profiler_service.cc b/runtime/vm/profiler_service.cc
|
| index 64197073f9373f1d4a39df5e699f7959b845a972..7ea7d3b129cc138ebf54bb7b7f3494861c74cffb 100644
|
| --- a/runtime/vm/profiler_service.cc
|
| +++ b/runtime/vm/profiler_service.cc
|
| @@ -984,18 +984,18 @@ class ProfileBuilder : public ValueObject {
|
| kNumProfileInfoKind,
|
| };
|
|
|
| - ProfileBuilder(Isolate* isolate,
|
| + ProfileBuilder(Thread* thread,
|
| SampleFilter* filter,
|
| Profile::TagOrder tag_order,
|
| intptr_t extra_tags,
|
| Profile* profile)
|
| - : isolate_(isolate),
|
| + : thread_(thread),
|
| vm_isolate_(Dart::vm_isolate()),
|
| filter_(filter),
|
| tag_order_(tag_order),
|
| extra_tags_(extra_tags),
|
| profile_(profile),
|
| - deoptimized_code_(new DeoptimizedCodeSet(isolate)),
|
| + deoptimized_code_(new DeoptimizedCodeSet(thread->isolate())),
|
| null_code_(Code::ZoneHandle()),
|
| null_function_(Function::ZoneHandle()),
|
| tick_functions_(false),
|
| @@ -1051,8 +1051,9 @@ class ProfileBuilder : public ValueObject {
|
|
|
| void FilterSamples() {
|
| ScopeTimer sw("ProfileBuilder::FilterSamples", FLAG_trace_profiler);
|
| - MutexLocker profiler_data_lock(isolate_->profiler_data_mutex());
|
| - IsolateProfilerData* profiler_data = isolate_->profiler_data();
|
| + Isolate* isolate = thread_->isolate();
|
| + MutexLocker profiler_data_lock(isolate->profiler_data_mutex());
|
| + IsolateProfilerData* profiler_data = isolate->profiler_data();
|
| if (profiler_data == NULL) {
|
| return;
|
| }
|
| @@ -1845,10 +1846,10 @@ class ProfileBuilder : public ValueObject {
|
| ProfileCode* CreateProfileCode(uword pc) {
|
| const intptr_t kDartCodeAlignment = OS::PreferredCodeAlignment();
|
| const intptr_t kDartCodeAlignmentMask = ~(kDartCodeAlignment - 1);
|
| - Code& code = Code::Handle(isolate_->current_zone());
|
| + Code& code = Code::Handle(thread_->zone());
|
|
|
| // Check current isolate for pc.
|
| - if (isolate_->heap()->CodeContains(pc)) {
|
| + if (thread_->isolate()->heap()->CodeContains(pc)) {
|
| code ^= Code::LookupCode(pc);
|
| if (!code.IsNull()) {
|
| deoptimized_code_->Add(code);
|
| @@ -1957,7 +1958,7 @@ class ProfileBuilder : public ValueObject {
|
| return (extra_tags_ & extra_tags_bits) != 0;
|
| }
|
|
|
| - Isolate* isolate_;
|
| + Thread* thread_;
|
| Isolate* vm_isolate_;
|
| SampleFilter* filter_;
|
| Profile::TagOrder tag_order_;
|
| @@ -1971,7 +1972,7 @@ class ProfileBuilder : public ValueObject {
|
|
|
| ProcessedSampleBuffer* samples_;
|
| ProfileInfoKind info_kind_;
|
| -};
|
| +}; // ProfileBuilder.
|
|
|
|
|
| Profile::Profile(Isolate* isolate)
|
| @@ -1991,10 +1992,11 @@ Profile::Profile(Isolate* isolate)
|
| }
|
|
|
|
|
| -void Profile::Build(SampleFilter* filter,
|
| +void Profile::Build(Thread* thread,
|
| + SampleFilter* filter,
|
| TagOrder tag_order,
|
| intptr_t extra_tags) {
|
| - ProfileBuilder builder(isolate_, filter, tag_order, extra_tags, this);
|
| + ProfileBuilder builder(thread, filter, tag_order, extra_tags, this);
|
| builder.Build();
|
| }
|
|
|
| @@ -2216,7 +2218,7 @@ void ProfilerService::PrintJSONImpl(Thread* thread,
|
| StackZone zone(thread);
|
| HANDLESCOPE(thread);
|
| Profile profile(isolate);
|
| - profile.Build(filter, tag_order, extra_tags);
|
| + profile.Build(thread, filter, tag_order, extra_tags);
|
| profile.PrintJSON(stream);
|
| }
|
|
|
|
|