Index: gin/v8_platform.cc |
diff --git a/gin/v8_platform.cc b/gin/v8_platform.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d50ff24f8bf49d7aa2c947e6f4bb20a1cbaee6ab |
--- /dev/null |
+++ b/gin/v8_platform.cc |
@@ -0,0 +1,42 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "gin/public/v8_platform.h" |
+ |
+#include "base/bind.h" |
+#include "base/location.h" |
+#include "base/message_loop/message_loop_proxy.h" |
+#include "base/threading/worker_pool.h" |
+#include "gin/per_isolate_data.h" |
+ |
+namespace gin { |
+ |
+namespace { |
+ |
+base::LazyInstance<V8Platform>::Leaky g_v8_platform = LAZY_INSTANCE_INITIALIZER; |
+ |
+} // namespace |
+ |
+// static |
+V8Platform* V8Platform::Get() { return g_v8_platform.Pointer(); } |
+ |
+V8Platform::V8Platform() {} |
+ |
+V8Platform::~V8Platform() {} |
+ |
+void V8Platform::CallOnBackgroundThread( |
+ v8::Task* task, |
+ v8::Platform::ExpectedRuntime expected_runtime) { |
+ base::WorkerPool::PostTask( |
+ FROM_HERE, |
+ base::Bind(&v8::Task::Run, base::Owned(task)), |
+ expected_runtime == v8::Platform::kLongRunningTask); |
+} |
+ |
+void V8Platform::CallOnForegroundThread(v8::Isolate* isolate, v8::Task* task) { |
+ PerIsolateData::From(isolate)->message_loop_proxy()->PostTask( |
+ FROM_HERE, base::Bind(&v8::Task::Run, base::Owned(task))); |
+} |
+ |
+} // namespace gin |