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

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

Issue 2161543002: [turbofan] Add support for eager/soft deoptimization reasons. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Do the ports properly Created 4 years, 5 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/x87/assembler-x87.h ('k') | test/unittests/compiler/escape-analysis-unittest.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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 return v8::Local<v8::Function>::Cast( 56 return v8::Local<v8::Function>::Cast(
57 env->Global()->Get(env, v8_str(name)).ToLocalChecked()); 57 env->Global()->Get(env, v8_str(name)).ToLocalChecked());
58 } 58 }
59 59
60 static size_t offset(const char* src, const char* substring) { 60 static size_t offset(const char* src, const char* substring) {
61 const char* it = strstr(src, substring); 61 const char* it = strstr(src, substring);
62 CHECK(it); 62 CHECK(it);
63 return static_cast<size_t>(it - src); 63 return static_cast<size_t>(it - src);
64 } 64 }
65 65
66 static const char* reason(const i::Deoptimizer::DeoptReason reason) { 66 static const char* reason(const i::DeoptimizeReason reason) {
67 return i::Deoptimizer::GetDeoptReason(reason); 67 return i::DeoptimizeReasonToString(reason);
68 } 68 }
69 69
70 TEST(StartStop) { 70 TEST(StartStop) {
71 CpuProfilesCollection profiles(CcTest::i_isolate()); 71 CpuProfilesCollection profiles(CcTest::i_isolate());
72 ProfileGenerator generator(&profiles); 72 ProfileGenerator generator(&profiles);
73 std::unique_ptr<ProfilerEventsProcessor> processor( 73 std::unique_ptr<ProfilerEventsProcessor> processor(
74 new ProfilerEventsProcessor(CcTest::i_isolate(), &generator, 74 new ProfilerEventsProcessor(CcTest::i_isolate(), &generator,
75 v8::base::TimeDelta::FromMicroseconds(100))); 75 v8::base::TimeDelta::FromMicroseconds(100)));
76 processor->Start(); 76 processor->Start();
77 processor->StopSynchronously(); 77 processor->StopSynchronously();
(...skipping 1768 matching lines...) Expand 10 before | Expand all | Expand 10 after
1846 ;;; deopted at script_id: 29 position: 108 with reason 'not a 1846 ;;; deopted at script_id: 29 position: 108 with reason 'not a
1847 heap number'. 1847 heap number'.
1848 0 opt_function1 30 #5 1848 0 opt_function1 30 #5
1849 1 opt_function1 30 #6 1849 1 opt_function1 30 #6
1850 ;;; deopted at script_id: 30 position: 108 with reason 'lost 1850 ;;; deopted at script_id: 30 position: 108 with reason 'lost
1851 precision or NaN'. 1851 precision or NaN'.
1852 */ 1852 */
1853 1853
1854 { 1854 {
1855 const char* branch[] = {"", "opt_function0", "opt_function0"}; 1855 const char* branch[] = {"", "opt_function0", "opt_function0"};
1856 CHECK_EQ(reason(i::Deoptimizer::kNotAHeapNumber), 1856 CHECK_EQ(reason(i::DeoptimizeReason::kNotAHeapNumber),
1857 GetBranchDeoptReason(env, iprofile, branch, arraysize(branch))); 1857 GetBranchDeoptReason(env, iprofile, branch, arraysize(branch)));
1858 } 1858 }
1859 { 1859 {
1860 const char* branch[] = {"", "opt_function1", "opt_function1"}; 1860 const char* branch[] = {"", "opt_function1", "opt_function1"};
1861 const char* deopt_reason = 1861 const char* deopt_reason =
1862 GetBranchDeoptReason(env, iprofile, branch, arraysize(branch)); 1862 GetBranchDeoptReason(env, iprofile, branch, arraysize(branch));
1863 if (deopt_reason != reason(i::Deoptimizer::kNaN) && 1863 if (deopt_reason != reason(i::DeoptimizeReason::kNaN) &&
1864 deopt_reason != reason(i::Deoptimizer::kLostPrecisionOrNaN)) { 1864 deopt_reason != reason(i::DeoptimizeReason::kLostPrecisionOrNaN)) {
1865 FATAL(deopt_reason); 1865 FATAL(deopt_reason);
1866 } 1866 }
1867 } 1867 }
1868 { 1868 {
1869 const char* branch[] = {"", "opt_function2", "opt_function2"}; 1869 const char* branch[] = {"", "opt_function2", "opt_function2"};
1870 CHECK_EQ(reason(i::Deoptimizer::kDivisionByZero), 1870 CHECK_EQ(reason(i::DeoptimizeReason::kDivisionByZero),
1871 GetBranchDeoptReason(env, iprofile, branch, arraysize(branch))); 1871 GetBranchDeoptReason(env, iprofile, branch, arraysize(branch)));
1872 } 1872 }
1873 iprofiler->DeleteProfile(iprofile); 1873 iprofiler->DeleteProfile(iprofile);
1874 } 1874 }
1875 1875
1876 1876
1877 TEST(SourceLocation) { 1877 TEST(SourceLocation) {
1878 i::FLAG_always_opt = true; 1878 i::FLAG_always_opt = true;
1879 i::FLAG_hydrogen_track_positions = true; 1879 i::FLAG_hydrogen_track_positions = true;
1880 LocalContext env; 1880 LocalContext env;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1950 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile); 1950 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile);
1951 1951
1952 const char* branch[] = {"", "test"}; 1952 const char* branch[] = {"", "test"};
1953 const ProfileNode* itest_node = 1953 const ProfileNode* itest_node =
1954 GetSimpleBranch(env, profile, branch, arraysize(branch)); 1954 GetSimpleBranch(env, profile, branch, arraysize(branch));
1955 const std::vector<v8::CpuProfileDeoptInfo>& deopt_infos = 1955 const std::vector<v8::CpuProfileDeoptInfo>& deopt_infos =
1956 itest_node->deopt_infos(); 1956 itest_node->deopt_infos();
1957 CHECK_EQ(1U, deopt_infos.size()); 1957 CHECK_EQ(1U, deopt_infos.size());
1958 1958
1959 const v8::CpuProfileDeoptInfo& info = deopt_infos[0]; 1959 const v8::CpuProfileDeoptInfo& info = deopt_infos[0];
1960 CHECK_EQ(reason(i::Deoptimizer::kNotAHeapNumber), info.deopt_reason); 1960 CHECK_EQ(reason(i::DeoptimizeReason::kNotAHeapNumber), info.deopt_reason);
1961 CHECK_EQ(2U, info.stack.size()); 1961 CHECK_EQ(2U, info.stack.size());
1962 CHECK_EQ(inlined_script_id, info.stack[0].script_id); 1962 CHECK_EQ(inlined_script_id, info.stack[0].script_id);
1963 CHECK_EQ(offset(inlined_source, "left /"), info.stack[0].position); 1963 CHECK_EQ(offset(inlined_source, "left /"), info.stack[0].position);
1964 CHECK_EQ(script_id, info.stack[1].script_id); 1964 CHECK_EQ(script_id, info.stack[1].script_id);
1965 CHECK_EQ(offset(source, "opt_function(left,"), info.stack[1].position); 1965 CHECK_EQ(offset(source, "opt_function(left,"), info.stack[1].position);
1966 1966
1967 iprofiler->DeleteProfile(iprofile); 1967 iprofiler->DeleteProfile(iprofile);
1968 } 1968 }
1969 1969
1970 1970
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2023 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile); 2023 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile);
2024 2024
2025 const char* branch[] = {"", "test1"}; 2025 const char* branch[] = {"", "test1"};
2026 const ProfileNode* itest_node = 2026 const ProfileNode* itest_node =
2027 GetSimpleBranch(env, profile, branch, arraysize(branch)); 2027 GetSimpleBranch(env, profile, branch, arraysize(branch));
2028 const std::vector<v8::CpuProfileDeoptInfo>& deopt_infos = 2028 const std::vector<v8::CpuProfileDeoptInfo>& deopt_infos =
2029 itest_node->deopt_infos(); 2029 itest_node->deopt_infos();
2030 CHECK_EQ(1U, deopt_infos.size()); 2030 CHECK_EQ(1U, deopt_infos.size());
2031 2031
2032 const v8::CpuProfileDeoptInfo info = deopt_infos[0]; 2032 const v8::CpuProfileDeoptInfo info = deopt_infos[0];
2033 CHECK_EQ(reason(i::Deoptimizer::kNotAHeapNumber), info.deopt_reason); 2033 CHECK_EQ(reason(i::DeoptimizeReason::kNotAHeapNumber), info.deopt_reason);
2034 CHECK_EQ(3U, info.stack.size()); 2034 CHECK_EQ(3U, info.stack.size());
2035 CHECK_EQ(inlined_script_id, info.stack[0].script_id); 2035 CHECK_EQ(inlined_script_id, info.stack[0].script_id);
2036 CHECK_EQ(offset(inlined_source, "left /"), info.stack[0].position); 2036 CHECK_EQ(offset(inlined_source, "left /"), info.stack[0].position);
2037 CHECK_EQ(script_id, info.stack[1].script_id); 2037 CHECK_EQ(script_id, info.stack[1].script_id);
2038 CHECK_EQ(offset(source, "opt_function(left,"), info.stack[1].position); 2038 CHECK_EQ(offset(source, "opt_function(left,"), info.stack[1].position);
2039 CHECK_EQ(offset(source, "test2(left, right);"), info.stack[2].position); 2039 CHECK_EQ(offset(source, "test2(left, right);"), info.stack[2].position);
2040 2040
2041 iprofiler->DeleteProfile(iprofile); 2041 iprofiler->DeleteProfile(iprofile);
2042 } 2042 }
2043 2043
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2080 iprofile->Print(); 2080 iprofile->Print();
2081 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile); 2081 v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile);
2082 2082
2083 const char* branch[] = {"", "test"}; 2083 const char* branch[] = {"", "test"};
2084 const ProfileNode* itest_node = 2084 const ProfileNode* itest_node =
2085 GetSimpleBranch(env, profile, branch, arraysize(branch)); 2085 GetSimpleBranch(env, profile, branch, arraysize(branch));
2086 CHECK_EQ(0U, itest_node->deopt_infos().size()); 2086 CHECK_EQ(0U, itest_node->deopt_infos().size());
2087 2087
2088 iprofiler->DeleteProfile(iprofile); 2088 iprofiler->DeleteProfile(iprofile);
2089 } 2089 }
OLDNEW
« no previous file with comments | « src/x87/assembler-x87.h ('k') | test/unittests/compiler/escape-analysis-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698