Index: test/cctest/test-cpu-profiler.cc |
diff --git a/test/cctest/test-cpu-profiler.cc b/test/cctest/test-cpu-profiler.cc |
index 7740a1d9bf25572140bc33170e58e92472faced7..b26829b5c35d8bb681815390da1cdd29bf2bdbe7 100644 |
--- a/test/cctest/test-cpu-profiler.cc |
+++ b/test/cctest/test-cpu-profiler.cc |
@@ -34,6 +34,7 @@ |
#include "src/base/smart-pointers.h" |
#include "src/deoptimizer.h" |
#include "src/profiler/cpu-profiler-inl.h" |
+#include "src/profiler/profiler-listener.h" |
#include "src/utils.h" |
#include "test/cctest/cctest.h" |
#include "test/cctest/profiler-extension.h" |
@@ -45,6 +46,7 @@ using i::Heap; |
using i::ProfileGenerator; |
using i::ProfileNode; |
using i::ProfilerEventsProcessor; |
+using i::ProfilerListener; |
using i::ScopedVector; |
using i::Vector; |
using v8::base::SmartPointer; |
@@ -164,21 +166,29 @@ TEST(CodeEvents) { |
&generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); |
processor->Start(); |
CpuProfiler profiler(isolate, profiles, &generator, processor.get()); |
+ ProfilerListener* profiler_listener = |
+ profiler.isolate()->logger()->profiler_listener(); |
+ profiler_listener->RegisterObserver(&profiler); |
+ profiler_listener->ResolveCodeEvent(); |
// Enqueue code creation events. |
const char* aaa_str = "aaa"; |
i::Handle<i::String> aaa_name = factory->NewStringFromAsciiChecked(aaa_str); |
- profiler.CodeCreateEvent(i::Logger::FUNCTION_TAG, aaa_code, *aaa_name); |
- profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, comment_code, "comment"); |
- profiler.CodeCreateEvent(i::Logger::STUB_TAG, args5_code, 5); |
- profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, comment2_code, "comment2"); |
- profiler.CodeMoveEvent(comment2_code, moved_code->address()); |
- profiler.CodeCreateEvent(i::Logger::STUB_TAG, args3_code, 3); |
- profiler.CodeCreateEvent(i::Logger::STUB_TAG, args4_code, 4); |
+ profiler_listener->CodeCreateEvent(i::Logger::FUNCTION_TAG, aaa_code, |
+ *aaa_name); |
+ profiler_listener->CodeCreateEvent(i::Logger::BUILTIN_TAG, comment_code, |
+ "comment"); |
+ profiler_listener->CodeCreateEvent(i::Logger::STUB_TAG, args5_code, 5); |
+ profiler_listener->CodeCreateEvent(i::Logger::BUILTIN_TAG, comment2_code, |
+ "comment2"); |
+ profiler_listener->CodeMoveEvent(comment2_code, moved_code->address()); |
+ profiler_listener->CodeCreateEvent(i::Logger::STUB_TAG, args3_code, 3); |
+ profiler_listener->CodeCreateEvent(i::Logger::STUB_TAG, args4_code, 4); |
// Enqueue a tick event to enable code events processing. |
EnqueueTickSampleEvent(processor.get(), aaa_code->address()); |
+ profiler_listener->RemoveObserver(&profiler); |
processor->StopSynchronously(); |
// Check the state of profile generator. |
@@ -223,10 +233,16 @@ TEST(TickEvents) { |
&generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); |
processor->Start(); |
CpuProfiler profiler(isolate, profiles, &generator, processor.get()); |
+ ProfilerListener* profiler_listener = |
+ profiler.isolate()->logger()->profiler_listener(); |
+ profiler_listener->RegisterObserver(&profiler); |
- profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, frame1_code, "bbb"); |
- profiler.CodeCreateEvent(i::Logger::STUB_TAG, frame2_code, 5); |
- profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, frame3_code, "ddd"); |
+ profiler_listener->ResolveCodeEvent(); |
+ profiler_listener->CodeCreateEvent(i::Logger::BUILTIN_TAG, frame1_code, |
+ "bbb"); |
+ profiler_listener->CodeCreateEvent(i::Logger::STUB_TAG, frame2_code, 5); |
+ profiler_listener->CodeCreateEvent(i::Logger::BUILTIN_TAG, frame3_code, |
+ "ddd"); |
EnqueueTickSampleEvent(processor.get(), frame1_code->instruction_start()); |
EnqueueTickSampleEvent( |
@@ -239,6 +255,7 @@ TEST(TickEvents) { |
frame2_code->instruction_end() - 1, |
frame1_code->instruction_end() - 1); |
+ profiler_listener->RemoveObserver(&profiler); |
processor->StopSynchronously(); |
CpuProfile* profile = profiles->StopProfiling(""); |
CHECK(profile); |
@@ -290,8 +307,12 @@ TEST(Issue1398) { |
&generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); |
processor->Start(); |
CpuProfiler profiler(isolate, profiles, &generator, processor.get()); |
+ ProfilerListener* profiler_listener = |
+ profiler.isolate()->logger()->profiler_listener(); |
+ profiler_listener->RegisterObserver(&profiler); |
- profiler.CodeCreateEvent(i::Logger::BUILTIN_TAG, code, "bbb"); |
+ profiler_listener->ResolveCodeEvent(); |
+ profiler_listener->CodeCreateEvent(i::Logger::BUILTIN_TAG, code, "bbb"); |
i::TickSample* sample = processor->StartTickSample(); |
sample->pc = code->address(); |
@@ -302,6 +323,7 @@ TEST(Issue1398) { |
} |
processor->FinishTickSample(); |
+ profiler_listener->RemoveObserver(&profiler); |
processor->StopSynchronously(); |
CpuProfile* profile = profiles->StopProfiling(""); |
CHECK(profile); |
@@ -1028,17 +1050,22 @@ static void TickLines(bool optimize) { |
&generator, NULL, v8::base::TimeDelta::FromMicroseconds(100))); |
processor->Start(); |
CpuProfiler profiler(isolate, profiles, &generator, processor.get()); |
+ ProfilerListener* profiler_listener = |
+ profiler.isolate()->logger()->profiler_listener(); |
+ profiler_listener->RegisterObserver(&profiler); |
// Enqueue code creation events. |
i::Handle<i::String> str = factory->NewStringFromAsciiChecked(func_name); |
int line = 1; |
int column = 1; |
- profiler.CodeCreateEvent(i::Logger::FUNCTION_TAG, code, func->shared(), *str, |
- line, column); |
+ profiler_listener->ResolveCodeEvent(); |
+ profiler_listener->CodeCreateEvent(i::Logger::FUNCTION_TAG, code, |
+ func->shared(), *str, line, column); |
// Enqueue a tick event to enable code events processing. |
EnqueueTickSampleEvent(processor.get(), code_address); |
+ profiler_listener->RemoveObserver(&profiler); |
processor->StopSynchronously(); |
CpuProfile* profile = profiles->StopProfiling(""); |
@@ -1131,8 +1158,8 @@ TEST(FunctionCallSample) { |
const v8::CpuProfileNode* start_node = GetChild(env.local(), root, "start"); |
GetChild(env.local(), start_node, "bar"); |
- const v8::CpuProfileNode* unresolved_node = FindChild( |
- env.local(), root, i::ProfileGenerator::kUnresolvedFunctionName); |
+ const v8::CpuProfileNode* unresolved_node = |
+ FindChild(env.local(), root, i::CodeEntry::kUnresolvedFunctionName); |
CHECK(!unresolved_node || GetChild(env.local(), unresolved_node, "call")); |
profile->Delete(); |
@@ -1187,8 +1214,8 @@ TEST(FunctionApplySample) { |
GetChild(env.local(), start_node, "test"); |
GetChild(env.local(), test_node, "bar"); |
- const v8::CpuProfileNode* unresolved_node = FindChild( |
- env.local(), start_node, ProfileGenerator::kUnresolvedFunctionName); |
+ const v8::CpuProfileNode* unresolved_node = |
+ FindChild(env.local(), start_node, CodeEntry::kUnresolvedFunctionName); |
CHECK(!unresolved_node || GetChild(env.local(), unresolved_node, "apply")); |
profile->Delete(); |
@@ -1595,12 +1622,12 @@ TEST(IdleTime) { |
const v8::CpuProfileNode* root = profile->GetTopDownRoot(); |
const v8::CpuProfileNode* program_node = |
- GetChild(env.local(), root, ProfileGenerator::kProgramEntryName); |
+ GetChild(env.local(), root, CodeEntry::kProgramEntryName); |
CHECK_EQ(0, program_node->GetChildrenCount()); |
CHECK_GE(program_node->GetHitCount(), 2u); |
const v8::CpuProfileNode* idle_node = |
- GetChild(env.local(), root, ProfileGenerator::kIdleEntryName); |
+ GetChild(env.local(), root, CodeEntry::kIdleEntryName); |
CHECK_EQ(0, idle_node->GetChildrenCount()); |
CHECK_GE(idle_node->GetHitCount(), 3u); |