OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
2 // | 2 // |
3 // Tests of profiles generator and utilities. | 3 // Tests of profiles generator and utilities. |
4 | 4 |
5 #ifdef ENABLE_CPP_PROFILES_PROCESSOR | 5 #ifdef ENABLE_CPP_PROFILES_PROCESSOR |
6 | 6 |
7 #include "v8.h" | 7 #include "v8.h" |
8 #include "cpu-profiler-inl.h" | 8 #include "cpu-profiler-inl.h" |
9 #include "cctest.h" | 9 #include "cctest.h" |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 | 40 |
41 static inline i::Address ToAddress(int n) { | 41 static inline i::Address ToAddress(int n) { |
42 return reinterpret_cast<i::Address>(n); | 42 return reinterpret_cast<i::Address>(n); |
43 } | 43 } |
44 | 44 |
45 static void EnqueueTickSampleEvent(ProfilerEventsProcessor* proc, | 45 static void EnqueueTickSampleEvent(ProfilerEventsProcessor* proc, |
46 i::Address frame1, | 46 i::Address frame1, |
47 i::Address frame2 = NULL, | 47 i::Address frame2 = NULL, |
48 i::Address frame3 = NULL) { | 48 i::Address frame3 = NULL) { |
49 i::TickSample* sample = proc->TickSampleEvent(); | 49 i::TickSample* sample = proc->TickSampleEvent(); |
50 sample->state = i::OTHER; | |
51 sample->pc = frame1; | 50 sample->pc = frame1; |
52 sample->function = frame1; | 51 sample->function = frame1; |
53 sample->frames_count = 0; | 52 sample->frames_count = 0; |
54 if (frame2 != NULL) { | 53 if (frame2 != NULL) { |
55 sample->stack[0] = frame2; | 54 sample->stack[0] = frame2; |
56 sample->frames_count = 1; | 55 sample->frames_count = 1; |
57 } | 56 } |
58 if (frame3 != NULL) { | 57 if (frame3 != NULL) { |
59 sample->stack[1] = frame3; | 58 sample->stack[1] = frame3; |
60 sample->frames_count = 2; | 59 sample->frames_count = 2; |
61 } | 60 } |
62 } | 61 } |
63 | 62 |
| 63 namespace { |
| 64 |
| 65 class TestSetup { |
| 66 public: |
| 67 TestSetup() |
| 68 : old_flag_prof_browser_mode_(i::FLAG_prof_browser_mode) { |
| 69 i::FLAG_prof_browser_mode = false; |
| 70 } |
| 71 |
| 72 ~TestSetup() { |
| 73 i::FLAG_prof_browser_mode = old_flag_prof_browser_mode_; |
| 74 } |
| 75 |
| 76 private: |
| 77 bool old_flag_prof_browser_mode_; |
| 78 }; |
| 79 |
| 80 } // namespace |
| 81 |
64 TEST(CodeEvents) { | 82 TEST(CodeEvents) { |
65 InitializeVM(); | 83 InitializeVM(); |
| 84 TestSetup test_setup; |
66 CpuProfilesCollection profiles; | 85 CpuProfilesCollection profiles; |
67 profiles.StartProfiling("", 1); | 86 profiles.StartProfiling("", 1); |
68 ProfileGenerator generator(&profiles); | 87 ProfileGenerator generator(&profiles); |
69 ProfilerEventsProcessor processor(&generator); | 88 ProfilerEventsProcessor processor(&generator); |
70 processor.Start(); | 89 processor.Start(); |
71 while (!processor.running()) { | 90 while (!processor.running()) { |
72 i::Thread::YieldCPU(); | 91 i::Thread::YieldCPU(); |
73 } | 92 } |
74 | 93 |
75 // Enqueue code creation events. | 94 // Enqueue code creation events. |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 CHECK_EQ(aaa_str, entry5->name()); | 141 CHECK_EQ(aaa_str, entry5->name()); |
123 } | 142 } |
124 | 143 |
125 | 144 |
126 template<typename T> | 145 template<typename T> |
127 static int CompareProfileNodes(const T* p1, const T* p2) { | 146 static int CompareProfileNodes(const T* p1, const T* p2) { |
128 return strcmp((*p1)->entry()->name(), (*p2)->entry()->name()); | 147 return strcmp((*p1)->entry()->name(), (*p2)->entry()->name()); |
129 } | 148 } |
130 | 149 |
131 TEST(TickEvents) { | 150 TEST(TickEvents) { |
| 151 TestSetup test_setup; |
132 CpuProfilesCollection profiles; | 152 CpuProfilesCollection profiles; |
133 profiles.StartProfiling("", 1); | 153 profiles.StartProfiling("", 1); |
134 ProfileGenerator generator(&profiles); | 154 ProfileGenerator generator(&profiles); |
135 ProfilerEventsProcessor processor(&generator); | 155 ProfilerEventsProcessor processor(&generator); |
136 processor.Start(); | 156 processor.Start(); |
137 while (!processor.running()) { | 157 while (!processor.running()) { |
138 i::Thread::YieldCPU(); | 158 i::Thread::YieldCPU(); |
139 } | 159 } |
140 | 160 |
141 processor.CodeCreateEvent(i::Logger::BUILTIN_TAG, | 161 processor.CodeCreateEvent(i::Logger::BUILTIN_TAG, |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 bottom_up_root_children[2]->children(); | 216 bottom_up_root_children[2]->children(); |
197 CHECK_EQ(1, bottom_up_ddd_children->length()); | 217 CHECK_EQ(1, bottom_up_ddd_children->length()); |
198 CHECK_EQ("5", bottom_up_ddd_children->last()->entry()->name()); | 218 CHECK_EQ("5", bottom_up_ddd_children->last()->entry()->name()); |
199 const i::List<ProfileNode*>* bottom_up_ddd_stub_children = | 219 const i::List<ProfileNode*>* bottom_up_ddd_stub_children = |
200 bottom_up_ddd_children->last()->children(); | 220 bottom_up_ddd_children->last()->children(); |
201 CHECK_EQ(1, bottom_up_ddd_stub_children->length()); | 221 CHECK_EQ(1, bottom_up_ddd_stub_children->length()); |
202 CHECK_EQ("bbb", bottom_up_ddd_stub_children->last()->entry()->name()); | 222 CHECK_EQ("bbb", bottom_up_ddd_stub_children->last()->entry()->name()); |
203 } | 223 } |
204 | 224 |
205 #endif // ENABLE_CPP_PROFILES_PROCESSOR | 225 #endif // ENABLE_CPP_PROFILES_PROCESSOR |
OLD | NEW |