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

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: Do not use Sleep on Windows 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
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 13065 matching lines...) Expand 10 before | Expand all | Expand 10 after
13076 class RegExpInterruptionThread : public v8::base::Thread { 13076 class RegExpInterruptionThread : public v8::base::Thread {
13077 public: 13077 public:
13078 explicit RegExpInterruptionThread(v8::Isolate* isolate) 13078 explicit RegExpInterruptionThread(v8::Isolate* isolate)
13079 : Thread(Options("TimeoutThread")), isolate_(isolate) {} 13079 : Thread(Options("TimeoutThread")), isolate_(isolate) {}
13080 13080
13081 virtual void Run() { 13081 virtual void Run() {
13082 for (v8::base::NoBarrier_Store(&regexp_interruption_data.loop_count, 0); 13082 for (v8::base::NoBarrier_Store(&regexp_interruption_data.loop_count, 0);
13083 v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) < 7; 13083 v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) < 7;
13084 v8::base::NoBarrier_AtomicIncrement( 13084 v8::base::NoBarrier_AtomicIncrement(
13085 &regexp_interruption_data.loop_count, 1)) { 13085 &regexp_interruption_data.loop_count, 1)) {
13086 v8::base::OS::Sleep(50); // Wait a bit before requesting GC. 13086 // Wait a bit before requesting GC.
13087 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(50));
13087 reinterpret_cast<i::Isolate*>(isolate_)->stack_guard()->RequestGC(); 13088 reinterpret_cast<i::Isolate*>(isolate_)->stack_guard()->RequestGC();
13088 } 13089 }
13089 v8::base::OS::Sleep(50); // Wait a bit before terminating. 13090 // Wait a bit before terminating.
13091 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(50));
13090 v8::V8::TerminateExecution(isolate_); 13092 v8::V8::TerminateExecution(isolate_);
13091 } 13093 }
13092 13094
13093 private: 13095 private:
13094 v8::Isolate* isolate_; 13096 v8::Isolate* isolate_;
13095 }; 13097 };
13096 13098
13097 13099
13098 void RunBeforeGC(v8::GCType type, v8::GCCallbackFlags flags) { 13100 void RunBeforeGC(v8::GCType type, v8::GCCallbackFlags flags) {
13099 if (v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) != 2) { 13101 if (v8::base::NoBarrier_Load(&regexp_interruption_data.loop_count) != 2) {
(...skipping 5674 matching lines...) Expand 10 before | Expand all | Expand 10 after
18774 18776
18775 class InterruptThread : public v8::base::Thread { 18777 class InterruptThread : public v8::base::Thread {
18776 public: 18778 public:
18777 explicit InterruptThread(ThreadInterruptTest* test) 18779 explicit InterruptThread(ThreadInterruptTest* test)
18778 : Thread(Options("InterruptThread")), test_(test) {} 18780 : Thread(Options("InterruptThread")), test_(test) {}
18779 18781
18780 virtual void Run() { 18782 virtual void Run() {
18781 struct sigaction action; 18783 struct sigaction action;
18782 18784
18783 // Ensure that we'll enter waiting condition 18785 // Ensure that we'll enter waiting condition
18784 v8::base::OS::Sleep(100); 18786 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(100));
18785 18787
18786 // Setup signal handler 18788 // Setup signal handler
18787 memset(&action, 0, sizeof(action)); 18789 memset(&action, 0, sizeof(action));
18788 action.sa_handler = SignalHandler; 18790 action.sa_handler = SignalHandler;
18789 sigaction(SIGCHLD, &action, NULL); 18791 sigaction(SIGCHLD, &action, NULL);
18790 18792
18791 // Send signal 18793 // Send signal
18792 kill(getpid(), SIGCHLD); 18794 kill(getpid(), SIGCHLD);
18793 18795
18794 // Ensure that if wait has returned because of error 18796 // Ensure that if wait has returned because of error
18795 v8::base::OS::Sleep(100); 18797 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(100));
18796 18798
18797 // Set value and signal semaphore 18799 // Set value and signal semaphore
18798 test_->sem_value_ = 1; 18800 test_->sem_value_ = 1;
18799 test_->sem_.Signal(); 18801 test_->sem_.Signal();
18800 } 18802 }
18801 18803
18802 static void SignalHandler(int signal) { 18804 static void SignalHandler(int signal) {
18803 } 18805 }
18804 18806
18805 private: 18807 private:
(...skipping 2166 matching lines...) Expand 10 before | Expand all | Expand 10 after
20972 20974
20973 { 20975 {
20974 v8::HandleScope handle_scope(isolate); 20976 v8::HandleScope handle_scope(isolate);
20975 20977
20976 // Should work 20978 // Should work
20977 v8::Local<v8::Object> obj = v8::Object::New(isolate); 20979 v8::Local<v8::Object> obj = v8::Object::New(isolate);
20978 20980
20979 USE(obj); 20981 USE(obj);
20980 } 20982 }
20981 } 20983 }
OLDNEW
« src/cpu-profiler.cc ('K') | « 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