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

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

Issue 16035027: DevTools: CPUProfiler: provide url for scripts that have sourceURL property. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: dinamicaly compiled code also covered Created 7 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 | Annotate | Revision Log
« src/log.cc ('K') | « src/log.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 // 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 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 792
793 const v8::CpuProfileNode* root = profile->GetTopDownRoot(); 793 const v8::CpuProfileNode* root = profile->GetTopDownRoot();
794 const v8::CpuProfileNode* startNode = GetChild(root, "start"); 794 const v8::CpuProfileNode* startNode = GetChild(root, "start");
795 // TODO(yurys): in LoadIC should be changed to report external callback 795 // TODO(yurys): in LoadIC should be changed to report external callback
796 // invocation. See r13768 where it was LoadCallbackProperty was removed. 796 // invocation. See r13768 where it was LoadCallbackProperty was removed.
797 // GetChild(startNode, "get foo"); 797 // GetChild(startNode, "get foo");
798 GetChild(startNode, "set foo"); 798 GetChild(startNode, "set foo");
799 799
800 cpu_profiler->DeleteAllCpuProfiles(); 800 cpu_profiler->DeleteAllCpuProfiles();
801 } 801 }
802
803
804 static const char* cpu_profiler_sourceURL_source =
805 "function start(timeout) {\n"
806 " var start = Date.now();\n"
807 " var duration = 0;\n"
808 " do {\n"
809 " try {\n"
810 " duration = Date.now() - start;\n"
811 " } catch(e) { }\n"
812 " } while (duration < timeout);\n"
813 " return duration;\n"
814 "}\n"
815 "//# sourceURL=cpu_profiler_sourceURL_source.js";
816
817
818 TEST(SourceURLSupportForNewFunctions) {
819 LocalContext env;
820 v8::HandleScope scope(env->GetIsolate());
821
822 v8::Script::Compile(v8::String::New(cpu_profiler_sourceURL_source))->Run();
823 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(
824 env->Global()->Get(v8::String::New("start")));
825 v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler();
826 int32_t profiling_interval_ms = 100;
827
828 // Cold run.
829 v8::Local<v8::String> profile_name = v8::String::New("my_profile");
830 cpu_profiler->StartCpuProfiling(profile_name);
831 v8::Handle<v8::Value> args[] = { v8::Integer::New(profiling_interval_ms) };
832 function->Call(env->Global(), ARRAY_SIZE(args), args);
833 const v8::CpuProfile* profile = cpu_profiler->StopCpuProfiling(profile_name);
834 CHECK_NE(NULL, profile);
835
836 // Dump collected profile to have a better diagnostic in case of failure.
837 reinterpret_cast<i::CpuProfile*>(
838 const_cast<v8::CpuProfile*>(profile))->Print();
839 const v8::CpuProfileNode* root = profile->GetTopDownRoot();
840 const v8::CpuProfileNode* startNode = GetChild(root, "start");
841
842 CHECK_EQ(v8::String::New("cpu_profiler_sourceURL_source.js"),
843 startNode->GetScriptResourceName());
844
845 cpu_profiler->DeleteAllCpuProfiles();
846 }
847
848 TEST(LogExistingFunctionSourceURLCheck) {
849 LocalContext env;
850 v8::HandleScope scope(env->GetIsolate());
851
852 v8::Script::Compile(v8::String::New(cpu_profiler_sourceURL_source))->Run();
853 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(
854 env->Global()->Get(v8::String::New("start")));
855 v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler();
856 int32_t profiling_interval_ms = 100;
857
858 // Warm up.
859 v8::Handle<v8::Value> args[] = { v8::Integer::New(profiling_interval_ms) };
860 function->Call(env->Global(), ARRAY_SIZE(args), args);
861
862 v8::Local<v8::String> profile_name = v8::String::New("my_profile");
863 cpu_profiler->StartCpuProfiling(profile_name);
864 function->Call(env->Global(), ARRAY_SIZE(args), args);
865 const v8::CpuProfile* profile = cpu_profiler->StopCpuProfiling(profile_name);
866 CHECK_NE(NULL, profile);
867
868 // Dump collected profile to have a better diagnostic in case of failure.
869 reinterpret_cast<i::CpuProfile*>(
870 const_cast<v8::CpuProfile*>(profile))->Print();
871 const v8::CpuProfileNode* root = profile->GetTopDownRoot();
872 const v8::CpuProfileNode* startNode = GetChild(root, "start");
873 CHECK_EQ(v8::String::New("cpu_profiler_sourceURL_source.js"),
874 startNode->GetScriptResourceName());
875
876 cpu_profiler->DeleteAllCpuProfiles();
877 }
OLDNEW
« src/log.cc ('K') | « src/log.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698