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

Side by Side Diff: test/cctest/test-profile-generator.cc

Issue 2745002: Move token-related constants from CodeEntry to TokenEnumerator. (Closed)
Patch Set: Created 10 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 | « test/cctest/test-cpu-profiler.cc ('k') | no next file » | 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 // 2 //
3 // Tests of profiles generator and utilities. 3 // Tests of profiles generator and utilities.
4 4
5 #ifdef ENABLE_LOGGING_AND_PROFILING 5 #ifdef ENABLE_LOGGING_AND_PROFILING
6 6
7 #include "v8.h" 7 #include "v8.h"
8 #include "profile-generator-inl.h" 8 #include "profile-generator-inl.h"
9 #include "cctest.h" 9 #include "cctest.h"
10 #include "../include/v8-profiler.h" 10 #include "../include/v8-profiler.h"
(...skipping 21 matching lines...) Expand all
32 public: 32 public:
33 static i::List<bool>* token_removed(TokenEnumerator* te) { 33 static i::List<bool>* token_removed(TokenEnumerator* te) {
34 return &te->token_removed_; 34 return &te->token_removed_;
35 } 35 }
36 }; 36 };
37 37
38 } } // namespace v8::internal 38 } } // namespace v8::internal
39 39
40 TEST(TokenEnumerator) { 40 TEST(TokenEnumerator) {
41 TokenEnumerator te; 41 TokenEnumerator te;
42 CHECK_EQ(CodeEntry::kNoSecurityToken, te.GetTokenId(NULL)); 42 CHECK_EQ(TokenEnumerator::kNoSecurityToken, te.GetTokenId(NULL));
43 v8::HandleScope hs; 43 v8::HandleScope hs;
44 v8::Local<v8::String> token1(v8::String::New("1")); 44 v8::Local<v8::String> token1(v8::String::New("1"));
45 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1))); 45 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
46 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1))); 46 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
47 v8::Local<v8::String> token2(v8::String::New("2")); 47 v8::Local<v8::String> token2(v8::String::New("2"));
48 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2))); 48 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2)));
49 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2))); 49 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2)));
50 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1))); 50 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
51 { 51 {
52 v8::HandleScope hs; 52 v8::HandleScope hs;
53 v8::Local<v8::String> token3(v8::String::New("3")); 53 v8::Local<v8::String> token3(v8::String::New("3"));
54 CHECK_EQ(2, te.GetTokenId(*v8::Utils::OpenHandle(*token3))); 54 CHECK_EQ(2, te.GetTokenId(*v8::Utils::OpenHandle(*token3)));
55 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2))); 55 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2)));
56 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1))); 56 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
57 } 57 }
58 CHECK(!i::TokenEnumeratorTester::token_removed(&te)->at(2)); 58 CHECK(!i::TokenEnumeratorTester::token_removed(&te)->at(2));
59 i::Heap::CollectAllGarbage(false); 59 i::Heap::CollectAllGarbage(false);
60 CHECK(i::TokenEnumeratorTester::token_removed(&te)->at(2)); 60 CHECK(i::TokenEnumeratorTester::token_removed(&te)->at(2));
61 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2))); 61 CHECK_EQ(1, te.GetTokenId(*v8::Utils::OpenHandle(*token2)));
62 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1))); 62 CHECK_EQ(0, te.GetTokenId(*v8::Utils::OpenHandle(*token1)));
63 } 63 }
64 64
65 65
66 TEST(ProfileNodeFindOrAddChild) { 66 TEST(ProfileNodeFindOrAddChild) {
67 ProfileNode node(NULL, NULL); 67 ProfileNode node(NULL, NULL);
68 CodeEntry entry1( 68 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0,
69 i::Logger::FUNCTION_TAG, "", "aaa", "", 0, CodeEntry::kNoSecurityToken); 69 TokenEnumerator::kNoSecurityToken);
70 ProfileNode* childNode1 = node.FindOrAddChild(&entry1); 70 ProfileNode* childNode1 = node.FindOrAddChild(&entry1);
71 CHECK_NE(NULL, childNode1); 71 CHECK_NE(NULL, childNode1);
72 CHECK_EQ(childNode1, node.FindOrAddChild(&entry1)); 72 CHECK_EQ(childNode1, node.FindOrAddChild(&entry1));
73 CodeEntry entry2( 73 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0,
74 i::Logger::FUNCTION_TAG, "", "bbb", "", 0, CodeEntry::kNoSecurityToken); 74 TokenEnumerator::kNoSecurityToken);
75 ProfileNode* childNode2 = node.FindOrAddChild(&entry2); 75 ProfileNode* childNode2 = node.FindOrAddChild(&entry2);
76 CHECK_NE(NULL, childNode2); 76 CHECK_NE(NULL, childNode2);
77 CHECK_NE(childNode1, childNode2); 77 CHECK_NE(childNode1, childNode2);
78 CHECK_EQ(childNode1, node.FindOrAddChild(&entry1)); 78 CHECK_EQ(childNode1, node.FindOrAddChild(&entry1));
79 CHECK_EQ(childNode2, node.FindOrAddChild(&entry2)); 79 CHECK_EQ(childNode2, node.FindOrAddChild(&entry2));
80 CodeEntry entry3( 80 CodeEntry entry3(i::Logger::FUNCTION_TAG, "", "ccc", "", 0,
81 i::Logger::FUNCTION_TAG, "", "ccc", "", 0, CodeEntry::kNoSecurityToken); 81 TokenEnumerator::kNoSecurityToken);
82 ProfileNode* childNode3 = node.FindOrAddChild(&entry3); 82 ProfileNode* childNode3 = node.FindOrAddChild(&entry3);
83 CHECK_NE(NULL, childNode3); 83 CHECK_NE(NULL, childNode3);
84 CHECK_NE(childNode1, childNode3); 84 CHECK_NE(childNode1, childNode3);
85 CHECK_NE(childNode2, childNode3); 85 CHECK_NE(childNode2, childNode3);
86 CHECK_EQ(childNode1, node.FindOrAddChild(&entry1)); 86 CHECK_EQ(childNode1, node.FindOrAddChild(&entry1));
87 CHECK_EQ(childNode2, node.FindOrAddChild(&entry2)); 87 CHECK_EQ(childNode2, node.FindOrAddChild(&entry2));
88 CHECK_EQ(childNode3, node.FindOrAddChild(&entry3)); 88 CHECK_EQ(childNode3, node.FindOrAddChild(&entry3));
89 } 89 }
90 90
91 91
(...skipping 20 matching lines...) Expand all
112 return node; 112 return node;
113 } 113 }
114 114
115 private: 115 private:
116 const ProfileTree* tree_; 116 const ProfileTree* tree_;
117 }; 117 };
118 118
119 } // namespace 119 } // namespace
120 120
121 TEST(ProfileTreeAddPathFromStart) { 121 TEST(ProfileTreeAddPathFromStart) {
122 CodeEntry entry1( 122 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0,
123 i::Logger::FUNCTION_TAG, "", "aaa", "", 0, CodeEntry::kNoSecurityToken); 123 TokenEnumerator::kNoSecurityToken);
124 CodeEntry entry2( 124 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0,
125 i::Logger::FUNCTION_TAG, "", "bbb", "", 0, CodeEntry::kNoSecurityToken); 125 TokenEnumerator::kNoSecurityToken);
126 CodeEntry entry3( 126 CodeEntry entry3(i::Logger::FUNCTION_TAG, "", "ccc", "", 0,
127 i::Logger::FUNCTION_TAG, "", "ccc", "", 0, CodeEntry::kNoSecurityToken); 127 TokenEnumerator::kNoSecurityToken);
128 ProfileTree tree; 128 ProfileTree tree;
129 ProfileTreeTestHelper helper(&tree); 129 ProfileTreeTestHelper helper(&tree);
130 CHECK_EQ(NULL, helper.Walk(&entry1)); 130 CHECK_EQ(NULL, helper.Walk(&entry1));
131 CHECK_EQ(NULL, helper.Walk(&entry2)); 131 CHECK_EQ(NULL, helper.Walk(&entry2));
132 CHECK_EQ(NULL, helper.Walk(&entry3)); 132 CHECK_EQ(NULL, helper.Walk(&entry3));
133 133
134 CodeEntry* path[] = {NULL, &entry1, NULL, &entry2, NULL, NULL, &entry3, NULL}; 134 CodeEntry* path[] = {NULL, &entry1, NULL, &entry2, NULL, NULL, &entry3, NULL};
135 Vector<CodeEntry*> path_vec(path, sizeof(path) / sizeof(path[0])); 135 Vector<CodeEntry*> path_vec(path, sizeof(path) / sizeof(path[0]));
136 tree.AddPathFromStart(path_vec); 136 tree.AddPathFromStart(path_vec);
137 CHECK_EQ(NULL, helper.Walk(&entry2)); 137 CHECK_EQ(NULL, helper.Walk(&entry2));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 CHECK_EQ(2, node3->self_ticks()); 182 CHECK_EQ(2, node3->self_ticks());
183 ProfileNode* node4 = helper.Walk(&entry1, &entry2, &entry2); 183 ProfileNode* node4 = helper.Walk(&entry1, &entry2, &entry2);
184 CHECK_NE(NULL, node4); 184 CHECK_NE(NULL, node4);
185 CHECK_NE(node3, node4); 185 CHECK_NE(node3, node4);
186 CHECK_EQ(0, node4->total_ticks()); 186 CHECK_EQ(0, node4->total_ticks());
187 CHECK_EQ(1, node4->self_ticks()); 187 CHECK_EQ(1, node4->self_ticks());
188 } 188 }
189 189
190 190
191 TEST(ProfileTreeAddPathFromEnd) { 191 TEST(ProfileTreeAddPathFromEnd) {
192 CodeEntry entry1( 192 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0,
193 i::Logger::FUNCTION_TAG, "", "aaa", "", 0, CodeEntry::kNoSecurityToken); 193 TokenEnumerator::kNoSecurityToken);
194 CodeEntry entry2( 194 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0,
195 i::Logger::FUNCTION_TAG, "", "bbb", "", 0, CodeEntry::kNoSecurityToken); 195 TokenEnumerator::kNoSecurityToken);
196 CodeEntry entry3( 196 CodeEntry entry3(i::Logger::FUNCTION_TAG, "", "ccc", "", 0,
197 i::Logger::FUNCTION_TAG, "", "ccc", "", 0, CodeEntry::kNoSecurityToken); 197 TokenEnumerator::kNoSecurityToken);
198 ProfileTree tree; 198 ProfileTree tree;
199 ProfileTreeTestHelper helper(&tree); 199 ProfileTreeTestHelper helper(&tree);
200 CHECK_EQ(NULL, helper.Walk(&entry1)); 200 CHECK_EQ(NULL, helper.Walk(&entry1));
201 CHECK_EQ(NULL, helper.Walk(&entry2)); 201 CHECK_EQ(NULL, helper.Walk(&entry2));
202 CHECK_EQ(NULL, helper.Walk(&entry3)); 202 CHECK_EQ(NULL, helper.Walk(&entry3));
203 203
204 CodeEntry* path[] = {NULL, &entry3, NULL, &entry2, NULL, NULL, &entry1, NULL}; 204 CodeEntry* path[] = {NULL, &entry3, NULL, &entry2, NULL, NULL, &entry1, NULL};
205 Vector<CodeEntry*> path_vec(path, sizeof(path) / sizeof(path[0])); 205 Vector<CodeEntry*> path_vec(path, sizeof(path) / sizeof(path[0]));
206 tree.AddPathFromEnd(path_vec); 206 tree.AddPathFromEnd(path_vec);
207 CHECK_EQ(NULL, helper.Walk(&entry2)); 207 CHECK_EQ(NULL, helper.Walk(&entry2));
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 empty_tree.CalculateTotalTicks(); 265 empty_tree.CalculateTotalTicks();
266 CHECK_EQ(0, empty_tree.root()->total_ticks()); 266 CHECK_EQ(0, empty_tree.root()->total_ticks());
267 CHECK_EQ(0, empty_tree.root()->self_ticks()); 267 CHECK_EQ(0, empty_tree.root()->self_ticks());
268 empty_tree.root()->IncrementSelfTicks(); 268 empty_tree.root()->IncrementSelfTicks();
269 CHECK_EQ(0, empty_tree.root()->total_ticks()); 269 CHECK_EQ(0, empty_tree.root()->total_ticks());
270 CHECK_EQ(1, empty_tree.root()->self_ticks()); 270 CHECK_EQ(1, empty_tree.root()->self_ticks());
271 empty_tree.CalculateTotalTicks(); 271 empty_tree.CalculateTotalTicks();
272 CHECK_EQ(1, empty_tree.root()->total_ticks()); 272 CHECK_EQ(1, empty_tree.root()->total_ticks());
273 CHECK_EQ(1, empty_tree.root()->self_ticks()); 273 CHECK_EQ(1, empty_tree.root()->self_ticks());
274 274
275 CodeEntry entry1( 275 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0,
276 i::Logger::FUNCTION_TAG, "", "aaa", "", 0, CodeEntry::kNoSecurityToken); 276 TokenEnumerator::kNoSecurityToken);
277 CodeEntry* e1_path[] = {&entry1}; 277 CodeEntry* e1_path[] = {&entry1};
278 Vector<CodeEntry*> e1_path_vec( 278 Vector<CodeEntry*> e1_path_vec(
279 e1_path, sizeof(e1_path) / sizeof(e1_path[0])); 279 e1_path, sizeof(e1_path) / sizeof(e1_path[0]));
280 280
281 ProfileTree single_child_tree; 281 ProfileTree single_child_tree;
282 single_child_tree.AddPathFromStart(e1_path_vec); 282 single_child_tree.AddPathFromStart(e1_path_vec);
283 single_child_tree.root()->IncrementSelfTicks(); 283 single_child_tree.root()->IncrementSelfTicks();
284 CHECK_EQ(0, single_child_tree.root()->total_ticks()); 284 CHECK_EQ(0, single_child_tree.root()->total_ticks());
285 CHECK_EQ(1, single_child_tree.root()->self_ticks()); 285 CHECK_EQ(1, single_child_tree.root()->self_ticks());
286 ProfileTreeTestHelper single_child_helper(&single_child_tree); 286 ProfileTreeTestHelper single_child_helper(&single_child_tree);
287 ProfileNode* node1 = single_child_helper.Walk(&entry1); 287 ProfileNode* node1 = single_child_helper.Walk(&entry1);
288 CHECK_NE(NULL, node1); 288 CHECK_NE(NULL, node1);
289 CHECK_EQ(0, node1->total_ticks()); 289 CHECK_EQ(0, node1->total_ticks());
290 CHECK_EQ(1, node1->self_ticks()); 290 CHECK_EQ(1, node1->self_ticks());
291 single_child_tree.CalculateTotalTicks(); 291 single_child_tree.CalculateTotalTicks();
292 CHECK_EQ(2, single_child_tree.root()->total_ticks()); 292 CHECK_EQ(2, single_child_tree.root()->total_ticks());
293 CHECK_EQ(1, single_child_tree.root()->self_ticks()); 293 CHECK_EQ(1, single_child_tree.root()->self_ticks());
294 CHECK_EQ(1, node1->total_ticks()); 294 CHECK_EQ(1, node1->total_ticks());
295 CHECK_EQ(1, node1->self_ticks()); 295 CHECK_EQ(1, node1->self_ticks());
296 296
297 CodeEntry entry2( 297 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0,
298 i::Logger::FUNCTION_TAG, "", "bbb", "", 0, CodeEntry::kNoSecurityToken); 298 TokenEnumerator::kNoSecurityToken);
299 CodeEntry* e1_e2_path[] = {&entry1, &entry2}; 299 CodeEntry* e1_e2_path[] = {&entry1, &entry2};
300 Vector<CodeEntry*> e1_e2_path_vec( 300 Vector<CodeEntry*> e1_e2_path_vec(
301 e1_e2_path, sizeof(e1_e2_path) / sizeof(e1_e2_path[0])); 301 e1_e2_path, sizeof(e1_e2_path) / sizeof(e1_e2_path[0]));
302 302
303 ProfileTree flat_tree; 303 ProfileTree flat_tree;
304 ProfileTreeTestHelper flat_helper(&flat_tree); 304 ProfileTreeTestHelper flat_helper(&flat_tree);
305 flat_tree.AddPathFromStart(e1_path_vec); 305 flat_tree.AddPathFromStart(e1_path_vec);
306 flat_tree.AddPathFromStart(e1_path_vec); 306 flat_tree.AddPathFromStart(e1_path_vec);
307 flat_tree.AddPathFromStart(e1_e2_path_vec); 307 flat_tree.AddPathFromStart(e1_e2_path_vec);
308 flat_tree.AddPathFromStart(e1_e2_path_vec); 308 flat_tree.AddPathFromStart(e1_e2_path_vec);
(...skipping 14 matching lines...) Expand all
323 CHECK_EQ(5, flat_tree.root()->total_ticks()); 323 CHECK_EQ(5, flat_tree.root()->total_ticks());
324 CHECK_EQ(0, flat_tree.root()->self_ticks()); 324 CHECK_EQ(0, flat_tree.root()->self_ticks());
325 CHECK_EQ(5, node1->total_ticks()); 325 CHECK_EQ(5, node1->total_ticks());
326 CHECK_EQ(2, node1->self_ticks()); 326 CHECK_EQ(2, node1->self_ticks());
327 CHECK_EQ(3, node2->total_ticks()); 327 CHECK_EQ(3, node2->total_ticks());
328 CHECK_EQ(3, node2->self_ticks()); 328 CHECK_EQ(3, node2->self_ticks());
329 329
330 CodeEntry* e2_path[] = {&entry2}; 330 CodeEntry* e2_path[] = {&entry2};
331 Vector<CodeEntry*> e2_path_vec( 331 Vector<CodeEntry*> e2_path_vec(
332 e2_path, sizeof(e2_path) / sizeof(e2_path[0])); 332 e2_path, sizeof(e2_path) / sizeof(e2_path[0]));
333 CodeEntry entry3( 333 CodeEntry entry3(i::Logger::FUNCTION_TAG, "", "ccc", "", 0,
334 i::Logger::FUNCTION_TAG, "", "ccc", "", 0, CodeEntry::kNoSecurityToken); 334 TokenEnumerator::kNoSecurityToken);
335 CodeEntry* e3_path[] = {&entry3}; 335 CodeEntry* e3_path[] = {&entry3};
336 Vector<CodeEntry*> e3_path_vec( 336 Vector<CodeEntry*> e3_path_vec(
337 e3_path, sizeof(e3_path) / sizeof(e3_path[0])); 337 e3_path, sizeof(e3_path) / sizeof(e3_path[0]));
338 338
339 ProfileTree wide_tree; 339 ProfileTree wide_tree;
340 ProfileTreeTestHelper wide_helper(&wide_tree); 340 ProfileTreeTestHelper wide_helper(&wide_tree);
341 wide_tree.AddPathFromStart(e1_path_vec); 341 wide_tree.AddPathFromStart(e1_path_vec);
342 wide_tree.AddPathFromStart(e1_path_vec); 342 wide_tree.AddPathFromStart(e1_path_vec);
343 wide_tree.AddPathFromStart(e1_e2_path_vec); 343 wide_tree.AddPathFromStart(e1_e2_path_vec);
344 wide_tree.AddPathFromStart(e2_path_vec); 344 wide_tree.AddPathFromStart(e2_path_vec);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 387
388 388
389 TEST(ProfileTreeFilteredClone) { 389 TEST(ProfileTreeFilteredClone) {
390 ProfileTree source_tree; 390 ProfileTree source_tree;
391 const int token0 = 0, token1 = 1, token2 = 2; 391 const int token0 = 0, token1 = 1, token2 = 2;
392 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0, token0); 392 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0, token0);
393 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0, token1); 393 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0, token1);
394 CodeEntry entry3(i::Logger::FUNCTION_TAG, "", "ccc", "", 0, token0); 394 CodeEntry entry3(i::Logger::FUNCTION_TAG, "", "ccc", "", 0, token0);
395 CodeEntry entry4( 395 CodeEntry entry4(
396 i::Logger::FUNCTION_TAG, "", "ddd", "", 0, 396 i::Logger::FUNCTION_TAG, "", "ddd", "", 0,
397 CodeEntry::kInheritsSecurityToken); 397 TokenEnumerator::kInheritsSecurityToken);
398 398
399 { 399 {
400 CodeEntry* e1_e2_path[] = {&entry1, &entry2}; 400 CodeEntry* e1_e2_path[] = {&entry1, &entry2};
401 Vector<CodeEntry*> e1_e2_path_vec( 401 Vector<CodeEntry*> e1_e2_path_vec(
402 e1_e2_path, sizeof(e1_e2_path) / sizeof(e1_e2_path[0])); 402 e1_e2_path, sizeof(e1_e2_path) / sizeof(e1_e2_path[0]));
403 source_tree.AddPathFromStart(e1_e2_path_vec); 403 source_tree.AddPathFromStart(e1_e2_path_vec);
404 CodeEntry* e2_e4_path[] = {&entry2, &entry4}; 404 CodeEntry* e2_e4_path[] = {&entry2, &entry4};
405 Vector<CodeEntry*> e2_e4_path_vec( 405 Vector<CodeEntry*> e2_e4_path_vec(
406 e2_e4_path, sizeof(e2_e4_path) / sizeof(e2_e4_path[0])); 406 e2_e4_path, sizeof(e2_e4_path) / sizeof(e2_e4_path[0]));
407 source_tree.AddPathFromStart(e2_e4_path_vec); 407 source_tree.AddPathFromStart(e2_e4_path_vec);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 } 484 }
485 } 485 }
486 486
487 487
488 static inline i::Address ToAddress(int n) { 488 static inline i::Address ToAddress(int n) {
489 return reinterpret_cast<i::Address>(n); 489 return reinterpret_cast<i::Address>(n);
490 } 490 }
491 491
492 TEST(CodeMapAddCode) { 492 TEST(CodeMapAddCode) {
493 CodeMap code_map; 493 CodeMap code_map;
494 CodeEntry entry1( 494 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0,
495 i::Logger::FUNCTION_TAG, "", "aaa", "", 0, CodeEntry::kNoSecurityToken); 495 TokenEnumerator::kNoSecurityToken);
496 CodeEntry entry2( 496 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0,
497 i::Logger::FUNCTION_TAG, "", "bbb", "", 0, CodeEntry::kNoSecurityToken); 497 TokenEnumerator::kNoSecurityToken);
498 CodeEntry entry3( 498 CodeEntry entry3(i::Logger::FUNCTION_TAG, "", "ccc", "", 0,
499 i::Logger::FUNCTION_TAG, "", "ccc", "", 0, CodeEntry::kNoSecurityToken); 499 TokenEnumerator::kNoSecurityToken);
500 CodeEntry entry4( 500 CodeEntry entry4(i::Logger::FUNCTION_TAG, "", "ddd", "", 0,
501 i::Logger::FUNCTION_TAG, "", "ddd", "", 0, CodeEntry::kNoSecurityToken); 501 TokenEnumerator::kNoSecurityToken);
502 code_map.AddCode(ToAddress(0x1500), &entry1, 0x200); 502 code_map.AddCode(ToAddress(0x1500), &entry1, 0x200);
503 code_map.AddCode(ToAddress(0x1700), &entry2, 0x100); 503 code_map.AddCode(ToAddress(0x1700), &entry2, 0x100);
504 code_map.AddCode(ToAddress(0x1900), &entry3, 0x50); 504 code_map.AddCode(ToAddress(0x1900), &entry3, 0x50);
505 code_map.AddCode(ToAddress(0x1950), &entry4, 0x10); 505 code_map.AddCode(ToAddress(0x1950), &entry4, 0x10);
506 CHECK_EQ(NULL, code_map.FindEntry(0)); 506 CHECK_EQ(NULL, code_map.FindEntry(0));
507 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1500 - 1))); 507 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1500 - 1)));
508 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500))); 508 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500)));
509 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500 + 0x100))); 509 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500 + 0x100)));
510 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500 + 0x200 - 1))); 510 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500 + 0x200 - 1)));
511 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700))); 511 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700)));
512 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700 + 0x50))); 512 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700 + 0x50)));
513 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700 + 0x100 - 1))); 513 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700 + 0x100 - 1)));
514 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1700 + 0x100))); 514 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1700 + 0x100)));
515 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1900 - 1))); 515 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1900 - 1)));
516 CHECK_EQ(&entry3, code_map.FindEntry(ToAddress(0x1900))); 516 CHECK_EQ(&entry3, code_map.FindEntry(ToAddress(0x1900)));
517 CHECK_EQ(&entry3, code_map.FindEntry(ToAddress(0x1900 + 0x28))); 517 CHECK_EQ(&entry3, code_map.FindEntry(ToAddress(0x1900 + 0x28)));
518 CHECK_EQ(&entry4, code_map.FindEntry(ToAddress(0x1950))); 518 CHECK_EQ(&entry4, code_map.FindEntry(ToAddress(0x1950)));
519 CHECK_EQ(&entry4, code_map.FindEntry(ToAddress(0x1950 + 0x7))); 519 CHECK_EQ(&entry4, code_map.FindEntry(ToAddress(0x1950 + 0x7)));
520 CHECK_EQ(&entry4, code_map.FindEntry(ToAddress(0x1950 + 0x10 - 1))); 520 CHECK_EQ(&entry4, code_map.FindEntry(ToAddress(0x1950 + 0x10 - 1)));
521 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1950 + 0x10))); 521 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1950 + 0x10)));
522 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0xFFFFFFFF))); 522 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0xFFFFFFFF)));
523 } 523 }
524 524
525 525
526 TEST(CodeMapMoveAndDeleteCode) { 526 TEST(CodeMapMoveAndDeleteCode) {
527 CodeMap code_map; 527 CodeMap code_map;
528 CodeEntry entry1( 528 CodeEntry entry1(i::Logger::FUNCTION_TAG, "", "aaa", "", 0,
529 i::Logger::FUNCTION_TAG, "", "aaa", "", 0, CodeEntry::kNoSecurityToken); 529 TokenEnumerator::kNoSecurityToken);
530 CodeEntry entry2( 530 CodeEntry entry2(i::Logger::FUNCTION_TAG, "", "bbb", "", 0,
531 i::Logger::FUNCTION_TAG, "", "bbb", "", 0, CodeEntry::kNoSecurityToken); 531 TokenEnumerator::kNoSecurityToken);
532 code_map.AddCode(ToAddress(0x1500), &entry1, 0x200); 532 code_map.AddCode(ToAddress(0x1500), &entry1, 0x200);
533 code_map.AddCode(ToAddress(0x1700), &entry2, 0x100); 533 code_map.AddCode(ToAddress(0x1700), &entry2, 0x100);
534 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500))); 534 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1500)));
535 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700))); 535 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700)));
536 code_map.MoveCode(ToAddress(0x1500), ToAddress(0x1800)); 536 code_map.MoveCode(ToAddress(0x1500), ToAddress(0x1800));
537 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1500))); 537 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1500)));
538 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700))); 538 CHECK_EQ(&entry2, code_map.FindEntry(ToAddress(0x1700)));
539 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1800))); 539 CHECK_EQ(&entry1, code_map.FindEntry(ToAddress(0x1800)));
540 code_map.DeleteCode(ToAddress(0x1700)); 540 code_map.DeleteCode(ToAddress(0x1700));
541 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1700))); 541 CHECK_EQ(NULL, code_map.FindEntry(ToAddress(0x1700)));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 generator.RecordTickSample(sample2); 594 generator.RecordTickSample(sample2);
595 TickSample sample3; 595 TickSample sample3;
596 sample3.pc = ToAddress(0x1510); 596 sample3.pc = ToAddress(0x1510);
597 sample3.function = ToAddress(0x1500); 597 sample3.function = ToAddress(0x1500);
598 sample3.stack[0] = ToAddress(0x1910); 598 sample3.stack[0] = ToAddress(0x1910);
599 sample3.stack[1] = ToAddress(0x1610); 599 sample3.stack[1] = ToAddress(0x1610);
600 sample3.frames_count = 2; 600 sample3.frames_count = 2;
601 generator.RecordTickSample(sample3); 601 generator.RecordTickSample(sample3);
602 602
603 CpuProfile* profile = 603 CpuProfile* profile =
604 profiles.StopProfiling(CodeEntry::kNoSecurityToken, "", 1); 604 profiles.StopProfiling(TokenEnumerator::kNoSecurityToken, "", 1);
605 CHECK_NE(NULL, profile); 605 CHECK_NE(NULL, profile);
606 ProfileTreeTestHelper top_down_test_helper(profile->top_down()); 606 ProfileTreeTestHelper top_down_test_helper(profile->top_down());
607 CHECK_EQ(NULL, top_down_test_helper.Walk(entry2)); 607 CHECK_EQ(NULL, top_down_test_helper.Walk(entry2));
608 CHECK_EQ(NULL, top_down_test_helper.Walk(entry3)); 608 CHECK_EQ(NULL, top_down_test_helper.Walk(entry3));
609 ProfileNode* node1 = top_down_test_helper.Walk(entry1); 609 ProfileNode* node1 = top_down_test_helper.Walk(entry1);
610 CHECK_NE(NULL, node1); 610 CHECK_NE(NULL, node1);
611 CHECK_EQ(entry1, node1->entry()); 611 CHECK_EQ(entry1, node1->entry());
612 ProfileNode* node2 = top_down_test_helper.Walk(entry1, entry1); 612 ProfileNode* node2 = top_down_test_helper.Walk(entry1, entry1);
613 CHECK_NE(NULL, node2); 613 CHECK_NE(NULL, node2);
614 CHECK_EQ(entry1, node2->entry()); 614 CHECK_EQ(entry1, node2->entry());
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 current = PickChild(current, "a"); 769 current = PickChild(current, "a");
770 CHECK_NE(NULL, const_cast<ProfileNode*>(current)); 770 CHECK_NE(NULL, const_cast<ProfileNode*>(current));
771 current = PickChild(current, "b"); 771 current = PickChild(current, "b");
772 CHECK_NE(NULL, const_cast<ProfileNode*>(current)); 772 CHECK_NE(NULL, const_cast<ProfileNode*>(current));
773 current = PickChild(current, "c"); 773 current = PickChild(current, "c");
774 CHECK_NE(NULL, const_cast<ProfileNode*>(current)); 774 CHECK_NE(NULL, const_cast<ProfileNode*>(current));
775 CHECK_EQ(0, current->children()->length()); 775 CHECK_EQ(0, current->children()->length());
776 } 776 }
777 777
778 #endif // ENABLE_LOGGING_AND_PROFILING 778 #endif // ENABLE_LOGGING_AND_PROFILING
OLDNEW
« no previous file with comments | « test/cctest/test-cpu-profiler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698