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

Side by Side Diff: test/cctest/test-api.cc

Issue 1118533003: Make CPU profiler do not hog 100% of CPU. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: still uploading Created 5 years, 7 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/sampler.cc ('k') | test/cctest/test-cpu-profiler.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 13077 matching lines...) Expand 10 before | Expand all | Expand 10 after
13088 class RegExpInterruptionThread : public v8::base::Thread { 13088 class RegExpInterruptionThread : public v8::base::Thread {
13089 public: 13089 public:
13090 explicit RegExpInterruptionThread(v8::Isolate* isolate) 13090 explicit RegExpInterruptionThread(v8::Isolate* isolate)
13091 : Thread(Options("TimeoutThread")), isolate_(isolate) {} 13091 : Thread(Options("TimeoutThread")), isolate_(isolate) {}
13092 13092
13093 virtual void Run() { 13093 virtual void Run() {
13094 for (v8::base::NoBarrier_Store(&regexp_interruption_data.loop_count, 0); 13094 for (v8::base::NoBarrier_Store(&regexp_interruption_data.loop_count, 0);
13095 v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) < 7; 13095 v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) < 7;
13096 v8::base::NoBarrier_AtomicIncrement( 13096 v8::base::NoBarrier_AtomicIncrement(
13097 &regexp_interruption_data.loop_count, 1)) { 13097 &regexp_interruption_data.loop_count, 1)) {
13098 v8::base::OS::Sleep(50); // Wait a bit before requesting GC. 13098 // Wait a bit before requesting GC.
13099 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(50));
13099 reinterpret_cast<i::Isolate*>(isolate_)->stack_guard()->RequestGC(); 13100 reinterpret_cast<i::Isolate*>(isolate_)->stack_guard()->RequestGC();
13100 } 13101 }
13101 v8::base::OS::Sleep(50); // Wait a bit before terminating. 13102 // Wait a bit before terminating.
13103 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(50));
13102 v8::V8::TerminateExecution(isolate_); 13104 v8::V8::TerminateExecution(isolate_);
13103 } 13105 }
13104 13106
13105 private: 13107 private:
13106 v8::Isolate* isolate_; 13108 v8::Isolate* isolate_;
13107 }; 13109 };
13108 13110
13109 13111
13110 void RunBeforeGC(v8::GCType type, v8::GCCallbackFlags flags) { 13112 void RunBeforeGC(v8::GCType type, v8::GCCallbackFlags flags) {
13111 if (v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) != 2) { 13113 if (v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) != 2) {
(...skipping 5693 matching lines...) Expand 10 before | Expand all | Expand 10 after
18805 18807
18806 class InterruptThread : public v8::base::Thread { 18808 class InterruptThread : public v8::base::Thread {
18807 public: 18809 public:
18808 explicit InterruptThread(ThreadInterruptTest* test) 18810 explicit InterruptThread(ThreadInterruptTest* test)
18809 : Thread(Options("InterruptThread")), test_(test) {} 18811 : Thread(Options("InterruptThread")), test_(test) {}
18810 18812
18811 virtual void Run() { 18813 virtual void Run() {
18812 struct sigaction action; 18814 struct sigaction action;
18813 18815
18814 // Ensure that we'll enter waiting condition 18816 // Ensure that we'll enter waiting condition
18815 v8::base::OS::Sleep(100); 18817 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(100));
18816 18818
18817 // Setup signal handler 18819 // Setup signal handler
18818 memset(&action, 0, sizeof(action)); 18820 memset(&action, 0, sizeof(action));
18819 action.sa_handler = SignalHandler; 18821 action.sa_handler = SignalHandler;
18820 sigaction(SIGCHLD, &action, NULL); 18822 sigaction(SIGCHLD, &action, NULL);
18821 18823
18822 // Send signal 18824 // Send signal
18823 kill(getpid(), SIGCHLD); 18825 kill(getpid(), SIGCHLD);
18824 18826
18825 // Ensure that if wait has returned because of error 18827 // Ensure that if wait has returned because of error
18826 v8::base::OS::Sleep(100); 18828 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(100));
18827 18829
18828 // Set value and signal semaphore 18830 // Set value and signal semaphore
18829 test_->sem_value_ = 1; 18831 test_->sem_value_ = 1;
18830 test_->sem_.Signal(); 18832 test_->sem_.Signal();
18831 } 18833 }
18832 18834
18833 static void SignalHandler(int signal) { 18835 static void SignalHandler(int signal) {
18834 } 18836 }
18835 18837
18836 private: 18838 private:
(...skipping 2166 matching lines...) Expand 10 before | Expand all | Expand 10 after
21003 21005
21004 { 21006 {
21005 v8::HandleScope handle_scope(isolate); 21007 v8::HandleScope handle_scope(isolate);
21006 21008
21007 // Should work 21009 // Should work
21008 v8::Local<v8::Object> obj = v8::Object::New(isolate); 21010 v8::Local<v8::Object> obj = v8::Object::New(isolate);
21009 21011
21010 USE(obj); 21012 USE(obj);
21011 } 21013 }
21012 } 21014 }
OLDNEW
« no previous file with comments | « src/sampler.cc ('k') | test/cctest/test-cpu-profiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698