Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/libplatform/default-platform.h" | 5 #include "src/libplatform/default-platform.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <queue> | 8 #include <queue> |
| 9 | 9 |
| 10 #include "src/base/logging.h" | 10 #include "src/base/logging.h" |
| 11 #include "src/base/platform/platform.h" | 11 #include "src/base/platform/platform.h" |
| 12 #include "src/base/platform/time.h" | 12 #include "src/base/platform/time.h" |
| 13 #include "src/base/sys-info.h" | 13 #include "src/base/sys-info.h" |
| 14 #include "src/flags.h" | |
|
Igor Sheludko
2015/11/10 10:41:06
Unfortunately this violates "-src" directive from
| |
| 14 #include "src/libplatform/worker-thread.h" | 15 #include "src/libplatform/worker-thread.h" |
| 15 | 16 |
| 16 namespace v8 { | 17 namespace v8 { |
| 17 namespace platform { | 18 namespace platform { |
| 18 | 19 |
| 19 | 20 |
| 20 v8::Platform* CreateDefaultPlatform(int thread_pool_size) { | 21 v8::Platform* CreateDefaultPlatform(int thread_pool_size) { |
| 21 DefaultPlatform* platform = new DefaultPlatform(); | 22 DefaultPlatform* platform = new DefaultPlatform(); |
| 22 platform->SetThreadPoolSize(thread_pool_size); | 23 platform->SetThreadPoolSize(thread_pool_size); |
| 23 platform->EnsureInitialized(); | 24 platform->EnsureInitialized(); |
| 24 return platform; | 25 return platform; |
| 25 } | 26 } |
| 26 | 27 |
| 27 | 28 |
| 28 bool PumpMessageLoop(v8::Platform* platform, v8::Isolate* isolate) { | 29 bool PumpMessageLoop(v8::Platform* platform, v8::Isolate* isolate) { |
| 29 return reinterpret_cast<DefaultPlatform*>(platform)->PumpMessageLoop(isolate); | 30 return reinterpret_cast<DefaultPlatform*>(platform)->PumpMessageLoop(isolate); |
| 30 } | 31 } |
| 31 | 32 |
| 32 | 33 |
| 33 const int DefaultPlatform::kMaxThreadPoolSize = 4; | 34 const int DefaultPlatform::kMaxThreadPoolSize = 4; |
| 34 | 35 |
| 35 | 36 |
| 36 DefaultPlatform::DefaultPlatform() | 37 DefaultPlatform::DefaultPlatform() |
| 37 : initialized_(false), thread_pool_size_(0) {} | 38 : initialized_(false), thread_pool_size_(0), synthetic_time_in_sec_(0.0) {} |
| 38 | 39 |
| 39 | 40 |
| 40 DefaultPlatform::~DefaultPlatform() { | 41 DefaultPlatform::~DefaultPlatform() { |
| 41 base::LockGuard<base::Mutex> guard(&lock_); | 42 base::LockGuard<base::Mutex> guard(&lock_); |
| 42 queue_.Terminate(); | 43 queue_.Terminate(); |
| 43 if (initialized_) { | 44 if (initialized_) { |
| 44 for (auto i = thread_pool_.begin(); i != thread_pool_.end(); ++i) { | 45 for (auto i = thread_pool_.begin(); i != thread_pool_.end(); ++i) { |
| 45 delete *i; | 46 delete *i; |
| 46 } | 47 } |
| 47 } | 48 } |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 158 void DefaultPlatform::CallIdleOnForegroundThread(Isolate* isolate, | 159 void DefaultPlatform::CallIdleOnForegroundThread(Isolate* isolate, |
| 159 IdleTask* task) { | 160 IdleTask* task) { |
| 160 UNREACHABLE(); | 161 UNREACHABLE(); |
| 161 } | 162 } |
| 162 | 163 |
| 163 | 164 |
| 164 bool DefaultPlatform::IdleTasksEnabled(Isolate* isolate) { return false; } | 165 bool DefaultPlatform::IdleTasksEnabled(Isolate* isolate) { return false; } |
| 165 | 166 |
| 166 | 167 |
| 167 double DefaultPlatform::MonotonicallyIncreasingTime() { | 168 double DefaultPlatform::MonotonicallyIncreasingTime() { |
| 169 if (v8::internal::FLAG_verify_predictable) { | |
|
Igor Sheludko
2015/11/10 10:41:06
We could probably make FLAG_verify_predictable rea
jochen (gone - plz use gerrit)
2015/11/10 23:20:06
we can't rely on every embedder doing this. how ab
Igor Sheludko
2015/11/11 10:20:46
1) The VERIFY_PREDICTABLE (and then --verify-predi
| |
| 170 synthetic_time_in_sec_ += 0.000001; | |
| 171 return synthetic_time_in_sec_; | |
| 172 } | |
| 173 | |
| 168 return base::TimeTicks::HighResolutionNow().ToInternalValue() / | 174 return base::TimeTicks::HighResolutionNow().ToInternalValue() / |
| 169 static_cast<double>(base::Time::kMicrosecondsPerSecond); | 175 static_cast<double>(base::Time::kMicrosecondsPerSecond); |
| 170 } | 176 } |
| 171 } // namespace platform | 177 } // namespace platform |
| 172 } // namespace v8 | 178 } // namespace v8 |
| OLD | NEW |