Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1828)

Side by Side Diff: test/cctest/test-cpu-profiler.cc

Issue 2061623002: Introduce JIT code events dispatcher for the isolate. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebaseline Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/v8.gyp ('k') | test/cctest/test-profile-generator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 profiles->StartProfiling("", false); 161 profiles->StartProfiling("", false);
162 ProfileGenerator generator(profiles); 162 ProfileGenerator generator(profiles);
163 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor( 163 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor(
164 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); 164 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100)));
165 processor->Start(); 165 processor->Start();
166 CpuProfiler profiler(isolate, profiles, &generator, processor.get()); 166 CpuProfiler profiler(isolate, profiles, &generator, processor.get());
167 167
168 // Enqueue code creation events. 168 // Enqueue code creation events.
169 const char* aaa_str = "aaa"; 169 const char* aaa_str = "aaa";
170 i::Handle<i::String> aaa_name = factory->NewStringFromAsciiChecked(aaa_str); 170 i::Handle<i::String> aaa_name = factory->NewStringFromAsciiChecked(aaa_str);
171 profiler.CodeCreateEvent(i::Logger::FUNCTION_TAG, aaa_code, *aaa_name); 171 profiler.CodeCreateEvent(i::CodeEventListener::FUNCTION_TAG, aaa_code,
172 profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, comment_code, "comment"); 172 *aaa_name);
173 profiler.CodeCreateEvent(i::Logger::STUB_TAG, args5_code, 5); 173 profiler.CodeCreateEvent(i::CodeEventListener::BUILTIN_TAG, comment_code,
174 profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, comment2_code, "comment2"); 174 "comment");
175 profiler.CodeCreateEvent(i::CodeEventListener::STUB_TAG, args5_code, 5);
176 profiler.CodeCreateEvent(i::CodeEventListener::BUILTIN_TAG, comment2_code,
177 "comment2");
175 profiler.CodeMoveEvent(comment2_code, moved_code->address()); 178 profiler.CodeMoveEvent(comment2_code, moved_code->address());
176 profiler.CodeCreateEvent(i::Logger::STUB_TAG, args3_code, 3); 179 profiler.CodeCreateEvent(i::CodeEventListener::STUB_TAG, args3_code, 3);
177 profiler.CodeCreateEvent(i::Logger::STUB_TAG, args4_code, 4); 180 profiler.CodeCreateEvent(i::CodeEventListener::STUB_TAG, args4_code, 4);
178 181
179 // Enqueue a tick event to enable code events processing. 182 // Enqueue a tick event to enable code events processing.
180 EnqueueTickSampleEvent(processor.get(), aaa_code->address()); 183 EnqueueTickSampleEvent(processor.get(), aaa_code->address());
181 184
182 processor->StopSynchronously(); 185 processor->StopSynchronously();
183 186
184 // Check the state of profile generator. 187 // Check the state of profile generator.
185 CodeEntry* aaa = generator.code_map()->FindEntry(aaa_code->address()); 188 CodeEntry* aaa = generator.code_map()->FindEntry(aaa_code->address());
186 CHECK(aaa); 189 CHECK(aaa);
187 CHECK_EQ(0, strcmp(aaa_str, aaa->name())); 190 CHECK_EQ(0, strcmp(aaa_str, aaa->name()));
(...skipping 29 matching lines...) Expand all
217 i::AbstractCode* frame3_code = CreateCode(&env); 220 i::AbstractCode* frame3_code = CreateCode(&env);
218 221
219 CpuProfilesCollection* profiles = new CpuProfilesCollection(isolate->heap()); 222 CpuProfilesCollection* profiles = new CpuProfilesCollection(isolate->heap());
220 profiles->StartProfiling("", false); 223 profiles->StartProfiling("", false);
221 ProfileGenerator generator(profiles); 224 ProfileGenerator generator(profiles);
222 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor( 225 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor(
223 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); 226 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100)));
224 processor->Start(); 227 processor->Start();
225 CpuProfiler profiler(isolate, profiles, &generator, processor.get()); 228 CpuProfiler profiler(isolate, profiles, &generator, processor.get());
226 229
227 profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, frame1_code, "bbb"); 230 profiler.CodeCreateEvent(i::CodeEventListener::BUILTIN_TAG, frame1_code,
228 profiler.CodeCreateEvent(i::Logger::STUB_TAG, frame2_code, 5); 231 "bbb");
229 profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, frame3_code, "ddd"); 232 profiler.CodeCreateEvent(i::CodeEventListener::STUB_TAG, frame2_code, 5);
233 profiler.CodeCreateEvent(i::CodeEventListener::BUILTIN_TAG, frame3_code,
234 "ddd");
230 235
231 EnqueueTickSampleEvent(processor.get(), frame1_code->instruction_start()); 236 EnqueueTickSampleEvent(processor.get(), frame1_code->instruction_start());
232 EnqueueTickSampleEvent( 237 EnqueueTickSampleEvent(
233 processor.get(), 238 processor.get(),
234 frame2_code->instruction_start() + frame2_code->ExecutableSize() / 2, 239 frame2_code->instruction_start() + frame2_code->ExecutableSize() / 2,
235 frame1_code->instruction_start() + frame2_code->ExecutableSize() / 2); 240 frame1_code->instruction_start() + frame2_code->ExecutableSize() / 2);
236 EnqueueTickSampleEvent( 241 EnqueueTickSampleEvent(
237 processor.get(), 242 processor.get(),
238 frame3_code->instruction_end() - 1, 243 frame3_code->instruction_end() - 1,
239 frame2_code->instruction_end() - 1, 244 frame2_code->instruction_end() - 1,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 i::AbstractCode* code = CreateCode(&env); 289 i::AbstractCode* code = CreateCode(&env);
285 290
286 CpuProfilesCollection* profiles = new CpuProfilesCollection(isolate->heap()); 291 CpuProfilesCollection* profiles = new CpuProfilesCollection(isolate->heap());
287 profiles->StartProfiling("", false); 292 profiles->StartProfiling("", false);
288 ProfileGenerator generator(profiles); 293 ProfileGenerator generator(profiles);
289 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor( 294 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor(
290 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); 295 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100)));
291 processor->Start(); 296 processor->Start();
292 CpuProfiler profiler(isolate, profiles, &generator, processor.get()); 297 CpuProfiler profiler(isolate, profiles, &generator, processor.get());
293 298
294 profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, code, "bbb"); 299 profiler.CodeCreateEvent(i::CodeEventListener::BUILTIN_TAG, code, "bbb");
295 300
296 i::TickSample* sample = processor->StartTickSample(); 301 i::TickSample* sample = processor->StartTickSample();
297 sample->pc = code->address(); 302 sample->pc = code->address();
298 sample->tos = 0; 303 sample->tos = 0;
299 sample->frames_count = i::TickSample::kMaxFramesCount; 304 sample->frames_count = i::TickSample::kMaxFramesCount;
300 for (unsigned i = 0; i < sample->frames_count; ++i) { 305 for (unsigned i = 0; i < sample->frames_count; ++i) {
301 sample->stack[i] = code->address(); 306 sample->stack[i] = code->address();
302 } 307 }
303 processor->FinishTickSample(); 308 processor->FinishTickSample();
304 309
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 ProfileGenerator generator(profiles); 1031 ProfileGenerator generator(profiles);
1027 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor( 1032 SmartPointer<ProfilerEventsProcessor> processor(new ProfilerEventsProcessor(
1028 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); 1033 &generator, NULL, v8::base::TimeDelta::FromMicroseconds(100)));
1029 processor->Start(); 1034 processor->Start();
1030 CpuProfiler profiler(isolate, profiles, &generator, processor.get()); 1035 CpuProfiler profiler(isolate, profiles, &generator, processor.get());
1031 1036
1032 // Enqueue code creation events. 1037 // Enqueue code creation events.
1033 i::Handle<i::String> str = factory->NewStringFromAsciiChecked(func_name); 1038 i::Handle<i::String> str = factory->NewStringFromAsciiChecked(func_name);
1034 int line = 1; 1039 int line = 1;
1035 int column = 1; 1040 int column = 1;
1036 profiler.CodeCreateEvent(i::Logger::FUNCTION_TAG, code, func->shared(), *str, 1041 profiler.CodeCreateEvent(i::CodeEventListener::FUNCTION_TAG, code,
1037 line, column); 1042 func->shared(), *str, line, column);
1038 1043
1039 // Enqueue a tick event to enable code events processing. 1044 // Enqueue a tick event to enable code events processing.
1040 EnqueueTickSampleEvent(processor.get(), code_address); 1045 EnqueueTickSampleEvent(processor.get(), code_address);
1041 1046
1042 processor->StopSynchronously(); 1047 processor->StopSynchronously();
1043 1048
1044 CpuProfile* profile = profiles->StopProfiling(""); 1049 CpuProfile* profile = profiles->StopProfiling("");
1045 CHECK(profile); 1050 CHECK(profile);
1046 1051
1047 // Check the state of profile generator. 1052 // Check the state of profile generator.
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after
2023 iprofile->Print(); 2028 iprofile->Print();
2024 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile); 2029 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile);
2025 2030
2026 const char* branch[] = {"", "test"}; 2031 const char* branch[] = {"", "test"};
2027 const ProfileNode* itest_node = 2032 const ProfileNode* itest_node =
2028 GetSimpleBranch(env, profile, branch, arraysize(branch)); 2033 GetSimpleBranch(env, profile, branch, arraysize(branch));
2029 CHECK_EQ(0U, itest_node->deopt_infos().size()); 2034 CHECK_EQ(0U, itest_node->deopt_infos().size());
2030 2035
2031 iprofiler->DeleteProfile(iprofile); 2036 iprofiler->DeleteProfile(iprofile);
2032 } 2037 }
OLDNEW
« no previous file with comments | « src/v8.gyp ('k') | test/cctest/test-profile-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698