diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-11-30 11:34:27 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-11-30 11:37:43 -0800 |
commit | 7286b7952150672cded846e5eee5c533e72f3e9e (patch) | |
tree | ca2402b34014b3ca916836eaf33156585501c466 /deps/v8/test/cctest/test-log.cc | |
parent | 486c74e72bd015ac178f881806a1d36accdcecce (diff) | |
download | node-new-7286b7952150672cded846e5eee5c533e72f3e9e.tar.gz |
Upgrade V8 to 2.5.9.1
Diffstat (limited to 'deps/v8/test/cctest/test-log.cc')
-rw-r--r-- | deps/v8/test/cctest/test-log.cc | 42 |
1 files changed, 10 insertions, 32 deletions
diff --git a/deps/v8/test/cctest/test-log.cc b/deps/v8/test/cctest/test-log.cc index 7168737416..710c10e996 100644 --- a/deps/v8/test/cctest/test-log.cc +++ b/deps/v8/test/cctest/test-log.cc @@ -139,6 +139,12 @@ namespace internal { class LoggerTestHelper : public AllStatic { public: static bool IsSamplerActive() { return Logger::IsProfilerSamplerActive(); } + static void ResetSamplesTaken() { + reinterpret_cast<Sampler*>(Logger::ticker_)->ResetSamplesTaken(); + } + static bool has_samples_taken() { + return reinterpret_cast<Sampler*>(Logger::ticker_)->samples_taken() > 0; + } }; } // namespace v8::internal @@ -147,24 +153,6 @@ class LoggerTestHelper : public AllStatic { using v8::internal::LoggerTestHelper; -// Under Linux, we need to check if signals were delivered to avoid false -// positives. Under other platforms profiling is done via a high-priority -// thread, so this case never happen. -static bool was_sigprof_received = true; -#ifdef __linux__ - -struct sigaction old_sigprof_handler; -pthread_t our_thread; - -static void SigProfSignalHandler(int signal, siginfo_t* info, void* context) { - if (signal != SIGPROF || !pthread_equal(pthread_self(), our_thread)) return; - was_sigprof_received = true; - old_sigprof_handler.sa_sigaction(signal, info, context); -} - -#endif // __linux__ - - namespace { class ScopedLoggerInitializer { @@ -258,6 +246,9 @@ class LogBufferMatcher { static void CheckThatProfilerWorks(LogBufferMatcher* matcher) { + CHECK(!LoggerTestHelper::IsSamplerActive()); + LoggerTestHelper::ResetSamplesTaken(); + Logger::ResumeProfiler(v8::PROFILER_MODULE_CPU, 0); CHECK(LoggerTestHelper::IsSamplerActive()); @@ -266,19 +257,6 @@ static void CheckThatProfilerWorks(LogBufferMatcher* matcher) { const char* code_creation = "\ncode-creation,"; // eq. to /^code-creation,/ CHECK_NE(NULL, matcher->Find(code_creation)); -#ifdef __linux__ - // Intercept SIGPROF handler to make sure that the test process - // had received it. Under load, system can defer it causing test failure. - // It is important to execute this after 'ResumeProfiler'. - our_thread = pthread_self(); - was_sigprof_received = false; - struct sigaction sa; - sa.sa_sigaction = SigProfSignalHandler; - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_SIGINFO; - CHECK_EQ(0, sigaction(SIGPROF, &sa, &old_sigprof_handler)); -#endif // __linux__ - // Force compiler to generate new code by parametrizing source. EmbeddedVector<char, 100> script_src; i::OS::SNPrintF(script_src, @@ -306,7 +284,7 @@ static void CheckThatProfilerWorks(LogBufferMatcher* matcher) { CHECK_NE(NULL, matcher->Find(code_creation)); const char* tick = "\ntick,"; const bool ticks_found = matcher->Find(tick) != NULL; - CHECK_EQ(was_sigprof_received, ticks_found); + CHECK_EQ(LoggerTestHelper::has_samples_taken(), ticks_found); } |