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

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

Issue 2804593005: Revert of [profiler] reduce incorrectly unaccounted ticks. (Closed)
Patch Set: Created 3 years, 8 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/cctest.status ('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 // 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 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 CheckSimpleBranch(env.local(), foo_node, bar_branch, arraysize(bar_branch)); 614 CheckSimpleBranch(env.local(), foo_node, bar_branch, arraysize(bar_branch));
615 const char* baz_branch[] = {"baz", "delay", "loop"}; 615 const char* baz_branch[] = {"baz", "delay", "loop"};
616 CheckSimpleBranch(env.local(), foo_node, baz_branch, arraysize(baz_branch)); 616 CheckSimpleBranch(env.local(), foo_node, baz_branch, arraysize(baz_branch));
617 const char* delay_branch[] = {"delay", "loop"}; 617 const char* delay_branch[] = {"delay", "loop"};
618 CheckSimpleBranch(env.local(), foo_node, delay_branch, 618 CheckSimpleBranch(env.local(), foo_node, delay_branch,
619 arraysize(delay_branch)); 619 arraysize(delay_branch));
620 620
621 profile->Delete(); 621 profile->Delete();
622 } 622 }
623 623
624 static const char* cpu_profiler_toplevel_source =
625 "for (var i = 0; i < 1E5; i++) {"
626 " var s = 0;"
627 " for (var j = 0; j < 1E2; j++) s += i;"
628 "}";
629
630 TEST(CollectOptimizedToplevelProfile) {
631 LocalContext env;
632 v8::HandleScope scope(env->GetIsolate());
633
634 v8::CpuProfiler* profiler = v8::CpuProfiler::New(env->GetIsolate());
635 v8::Local<v8::String> profile_name = v8_str("my_profile");
636
637 profiler->SetSamplingInterval(100);
638 profiler->StartProfiling(profile_name, true);
639 v8::internal::CpuProfiler* iprofiler =
640 reinterpret_cast<v8::internal::CpuProfiler*>(profiler);
641 v8::sampler::Sampler* sampler = iprofiler->processor()->sampler();
642 sampler->StartCountingSamples();
643
644 CompileRun(cpu_profiler_toplevel_source);
645
646 v8::CpuProfile* profile = profiler->StopProfiling(profile_name);
647 reinterpret_cast<i::CpuProfile*>(profile)->Print();
648
649 const v8::CpuProfileNode* root = profile->GetTopDownRoot();
650 v8::Local<v8::String> empty = v8::String::Empty(env->GetIsolate());
651 unsigned toplevel_hitcount = 0;
652 unsigned unaccounted_hitcount = 0;
653 for (int i = 0; i < root->GetChildrenCount(); i++) {
654 const v8::CpuProfileNode* child = root->GetChild(i);
655 if (empty->Equals(env.local(), child->GetFunctionName()).FromJust()) {
656 toplevel_hitcount += child->GetHitCount();
657 } else {
658 unaccounted_hitcount += child->GetHitCount();
659 }
660 }
661 // Check that we are getting more ticks from the toplevel function than
662 // unaccounted ticks.
663 DCHECK(toplevel_hitcount > unaccounted_hitcount);
664
665 profile->Delete();
666 profiler->Dispose();
667 }
668
669 static const char* hot_deopt_no_frame_entry_test_source = 624 static const char* hot_deopt_no_frame_entry_test_source =
670 "%NeverOptimizeFunction(foo);\n" 625 "%NeverOptimizeFunction(foo);\n"
671 "%NeverOptimizeFunction(start);\n" 626 "%NeverOptimizeFunction(start);\n"
672 "function foo(a, b) {\n" 627 "function foo(a, b) {\n"
673 " return a + b;\n" 628 " return a + b;\n"
674 "}\n" 629 "}\n"
675 "function start(timeout) {\n" 630 "function start(timeout) {\n"
676 " var start = Date.now();\n" 631 " var start = Date.now();\n"
677 " do {\n" 632 " do {\n"
678 " for (var i = 1; i < 1000; ++i) foo(1, i);\n" 633 " for (var i = 1; i < 1000; ++i) foo(1, i);\n"
(...skipping 1549 matching lines...) Expand 10 before | Expand all | Expand 10 after
2228 printf("Profile JSON: %s\n", profile_json.c_str()); 2183 printf("Profile JSON: %s\n", profile_json.c_str());
2229 std::string code = profile_checker + profile_json + ")"; 2184 std::string code = profile_checker + profile_json + ")";
2230 v8::Local<v8::Value> result = 2185 v8::Local<v8::Value> result =
2231 CompileRunChecked(CcTest::isolate(), code.c_str()); 2186 CompileRunChecked(CcTest::isolate(), code.c_str());
2232 v8::String::Utf8Value value(result); 2187 v8::String::Utf8Value value(result);
2233 printf("Check result: %*s\n", value.length(), *value); 2188 printf("Check result: %*s\n", value.length(), *value);
2234 CHECK_EQ(0, value.length()); 2189 CHECK_EQ(0, value.length());
2235 2190
2236 i::V8::SetPlatformForTesting(old_platform); 2191 i::V8::SetPlatformForTesting(old_platform);
2237 } 2192 }
OLDNEW
« no previous file with comments | « test/cctest/cctest.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698