| Index: test/cctest/test-cpu-profiler.cc
|
| diff --git a/test/cctest/test-cpu-profiler.cc b/test/cctest/test-cpu-profiler.cc
|
| index 1f768790939251725d1ffe772e0e755ffae0ddc2..d54aefa7aebb75733dffe969bfd86650be7c6e25 100644
|
| --- a/test/cctest/test-cpu-profiler.cc
|
| +++ b/test/cctest/test-cpu-profiler.cc
|
| @@ -32,6 +32,7 @@
|
| #include "include/v8-profiler.h"
|
| #include "src/base/platform/platform.h"
|
| #include "src/cpu-profiler-inl.h"
|
| +#include "src/deoptimizer.h"
|
| #include "src/smart-pointers.h"
|
| #include "src/utils.h"
|
| #include "test/cctest/cctest.h"
|
| @@ -1720,23 +1721,33 @@ TEST(DontStopOnFinishedProfileDelete) {
|
|
|
|
|
| static const char* collect_deopt_events_test_source =
|
| - "function opt_function(value) {\n"
|
| - " return value / 10;\n"
|
| + "function opt_function(left, right, depth) {\n"
|
| + " if (depth) return opt_function(left, right, depth - 1);\n"
|
| + "\n"
|
| + " var k = left / 10;\n"
|
| + " var r = 10 / right;\n"
|
| + " return k + r;"
|
| "}\n"
|
| "\n"
|
| - "function test(value) {\n"
|
| - " return opt_function(value);\n"
|
| + "function test(left, right) {\n"
|
| + " return opt_function(left, right, 1);\n"
|
| "}\n"
|
| "\n"
|
| "startProfiling();\n"
|
| "\n"
|
| - "for (var i = 0; i < 10; ++i) test(10);\n"
|
| + "test(10, 10);\n"
|
| + "\n"
|
| + "%OptimizeFunctionOnNextCall(opt_function)\n"
|
| + "\n"
|
| + "test(10, 10);\n"
|
| + "\n"
|
| + "test(undefined, 10);\n"
|
| "\n"
|
| "%OptimizeFunctionOnNextCall(opt_function)\n"
|
| "\n"
|
| - "for (var i = 0; i < 10; ++i) test(10);\n"
|
| + "test(10, 10);\n"
|
| "\n"
|
| - "for (var i = 0; i < 10; ++i) test(undefined);\n"
|
| + "test(10, 0);\n"
|
| "\n"
|
| "stopProfiling();\n"
|
| "\n";
|
| @@ -1756,9 +1767,16 @@ TEST(CollectDeoptEvents) {
|
| i::CpuProfile* iprofile = iprofiler->GetProfile(0);
|
| iprofile->Print();
|
| v8::CpuProfile* profile = reinterpret_cast<v8::CpuProfile*>(iprofile);
|
| - const char* branch[] = {"", "test", "opt_function"};
|
| + const char* branch[] = {"", "test", "opt_function", "opt_function"};
|
| const v8::CpuProfileNode* opt_function = GetSimpleBranch(
|
| env->GetIsolate(), profile->GetTopDownRoot(), branch, arraysize(branch));
|
| CHECK(opt_function);
|
| + const i::ProfileNode* iopt_function =
|
| + reinterpret_cast<const i::ProfileNode*>(opt_function);
|
| + CHECK_EQ(2, iopt_function->deopt_infos().length());
|
| + CHECK_EQ(i::Deoptimizer::GetDeoptReason(i::Deoptimizer::kNotAHeapNumber),
|
| + iopt_function->deopt_infos()[0].deopt_reason);
|
| + CHECK_EQ(i::Deoptimizer::GetDeoptReason(i::Deoptimizer::kDivisionByZero),
|
| + iopt_function->deopt_infos()[1].deopt_reason);
|
| iprofiler->DeleteProfile(iprofile);
|
| }
|
|
|