int exec_argc;
const char** exec_argv;
- node::Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv);
+ // node::Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv); not called
node::IsolateData isolate_data(gin_env.isolate(), loop);
node::Environment* env = node::CreateEnvironment(
exec_argc, exec_argv);
// Start our custom debugger implementation.
- NodeDebugger node_debugger(gin_env.isolate());
- if (node_debugger.IsRunning())
- env->AssignToContext(v8::Debug::GetDebugContext(gin_env.isolate()));
+ // NodeDebugger node_debugger(gin_env.isolate()); not called
+ // if (node_debugger.IsRunning())
+ // env->AssignToContext(v8::Debug::GetDebugContext(gin_env.isolate()));
mate::Dictionary process(gin_env.isolate(), env->process_object());
#if defined(OS_WIN)
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/ssl/ssl_cert_request_info.h"
+#include "tizen/common/env_variables.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/image/image.h"
void OnIconDataAvailable(v8::Isolate* isolate,
const App::FileIconCallback& callback,
gfx::Image* icon) {
- v8::Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (icon && !icon->IsEmpty()) {
void App::OnLogin(LoginHandler* login_handler,
const base::DictionaryValue& request_details) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
bool prevent_default = Emit(
"login",
const scoped_refptr<content::ResourceRequestBodyImpl>& body,
int render_process_id,
int render_frame_id) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
content::RenderFrameHost* rfh =
content::RenderFrameHost::FromID(render_process_id, render_frame_id);
bool expired_previous_decision,
const base::Callback<void(content::CertificateRequestResultType)>&
callback) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
bool prevent_default = Emit("certificate-error",
WebContents::CreateFrom(isolate(), web_contents),
IconLoader::IconSize icon_size;
FileIconCallback callback;
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
base::FilePath normalized_path = path.NormalizePathSeparators();
#include "base/time/time.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
+#include "tizen/common/env_variables.h"
namespace mate {
}
void AutoUpdater::OnError(const std::string& message) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto error = v8::Exception::Error(mate::StringToV8(isolate(), message));
mate::EmitEvent(
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
+#include "tizen/common/env_variables.h"
#include "atom/common/node_includes.h"
int command_id,
bool use_default_accelerator,
ui::Accelerator* accelerator) const {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
v8::Local<v8::Value> val = get_accelerator_.Run(
command_id, use_default_accelerator);
#include "base/strings/string_util.h"
#include "content/public/browser/child_process_security_policy.h"
#include "native_mate/dictionary.h"
+#include "tizen/common/env_variables.h"
#include "url/url_util.h"
using content::BrowserThread;
if (callback.is_null())
return;
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
if (error == PROTOCOL_OK) {
#include "net/url_request/static_http_user_agent_settings.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
+#include "tizen/common/env_variables.h"
#include "ui/base/l10n/l10n_util.h"
using atom::api::Cookies;
if (item->IsSavePackageDownload())
return;
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto handle = DownloadItem::Create(isolate(), item);
if (item->GetState() == content::DownloadItem::INTERRUPTED)
#include "net/url_request/url_request_context.h"
#include "third_party/WebKit/public/platform/WebInputEvent.h"
#include "third_party/WebKit/public/web/WebFindOptions.h"
+#include "tizen/common/env_variables.h"
#include "ui/display/screen.h"
#if defined(USE_EFL)
const std::string& frame_name,
const GURL& target_url,
content::WebContents* new_contents) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto api_web_contents = CreateFrom(isolate(), new_contents, BROWSER_WINDOW);
Emit("-web-contents-created", api_web_contents, target_url, frame_name);
const gfx::Rect& initial_rect,
bool user_gesture,
bool* was_blocked) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto api_web_contents = CreateFrom(isolate(), new_contents);
if (Emit("-add-new-contents", api_web_contents, disposition, user_gesture,
if (!final_update)
return;
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
mate::Dictionary result = mate::Dictionary::CreateEmpty(isolate());
result.Set("requestId", request_id);
}
void WebContents::DevToolsOpened() {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
auto handle = WebContents::CreateFrom(
isolate(), managed_web_contents()->GetDevToolsWebContents());
}
void WebContents::DevToolsClosed() {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
devtools_web_contents_.Reset();
#include "content/public/common/content_switches.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"
+#include "tizen/common/env_variables.h"
#include "ui/gfx/geometry/rect.h"
#if defined(TOOLKIT_VIEWS)
void Window::WillDestroyNativeObject() {
// Close all child windows before closing current window.
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
for (v8::Local<v8::Value> value : child_windows_.Values(isolate())) {
mate::Handle<Window> child;
#include "atom/common/api/event_emitter_caller.h"
#include "native_mate/wrappable.h"
+#include "tizen/common/env_variables.h"
namespace content {
class WebContents;
content::WebContents* sender,
IPC::Message* message,
const Args&... args) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
v8::Local<v8::Object> event = internal::CreateJSEvent(
isolate(), GetWrapper(), sender, message);
bool EmitWithEvent(const base::StringPiece& name,
v8::Local<v8::Object> event,
const Args&... args) {
- v8::Locker locker(isolate());
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
EmitEvent(isolate(), GetWrapper(), name, event, args...);
return event->Get(
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "base/bind.h"
#include "content/public/browser/render_widget_host.h"
+#include "tizen/common/env_variables.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
if (response != content::ReadbackResponse::READBACK_SUCCESS)
return;
- v8::Locker locker(isolate_);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate_);
v8::HandleScope handle_scope(isolate_);
size_t rgb_arr_size = bitmap.width() * bitmap.height() *
#include "base/callback.h"
#include "base/files/file_path.h"
#include "content/public/browser/web_contents.h"
+#include "tizen/common/env_variables.h"
namespace atom {
void SavePageHandler::OnDownloadUpdated(content::DownloadItem* item) {
if (item->IsDone()) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
- v8::Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (item->GetState() == content::DownloadItem::COMPLETE) {
callback_.Run(v8::Null(isolate));
#include "storage/browser/blob/blob_reader.h"
#include "storage/browser/blob/blob_storage_context.h"
#include "storage/browser/fileapi/file_system_context.h"
+#include "tizen/common/env_variables.h"
#include "atom/common/node_includes.h"
DCHECK_CURRENTLY_ON(BrowserThread::UI);
v8::Isolate* isolate = v8::Isolate::GetCurrent();
- v8::Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (blob_data) {
v8::Local<v8::Value> buffer = node::Buffer::New(isolate,
atom_bindings_ = std::move(self_atom_bindings);
js_env_ = std::move(self_js_env);
+ js_env_->SetupLocker();
node_debugger_ = std::move(self_node_debugger);
bridge_task_runner_ = self_bridge_task_runner;
node_env_ = std::move(self_node_env);
} else {
browser_.reset(new Browser);
node_bindings_.reset(NodeBindings::Create(NodeBindings::BROWSER));
- atom_bindings_.reset(new AtomBindings(uv_default_loop()));
+ atom_bindings_.reset(new AtomBindings(node_bindings_->uv_loop()));
}
self_ = this;
// Register extension scheme as web safe scheme.
self_js_env.reset(new atom::JavascriptEnvironment);
self_node_bindings.reset(atom::NodeBindings::Create(atom::NodeBindings::BROWSER));
- self_atom_bindings.reset(new atom::AtomBindings(uv_default_loop()));
+ self_atom_bindings.reset(new atom::AtomBindings(self_node_bindings->uv_loop()));
self_node_bindings->Initialize();
- self_node_debugger.reset(new atom::NodeDebugger(self_js_env->isolate()));
+ self_node_debugger.reset(new atom::NodeDebugger(self_js_env->isolate(), self_node_bindings->uv_loop()));
env_ = self_node_bindings->CreateEnvironment(self_js_env->context());
self_node_env.reset(new atom::NodeEnvironment(env_));
// The ProxyResolverV8 has setup a complete V8 environment, in order to
// avoid conflicts we only initialize our V8 environment after that.
js_env_.reset(new JavascriptEnvironment);
+ js_env_->SetupLocker();
node_bindings_->Initialize();
// Support the "--debug" switch.
- node_debugger_.reset(new NodeDebugger(js_env_->isolate()));
+ node_debugger_.reset(new NodeDebugger(js_env_->isolate(), node_bindings_->uv_loop()));
// Create the global environment.
node::Environment* env =
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_manager.h"
#include "net/base/filename_util.h"
+#include "tizen/common/env_variables.h"
namespace atom {
void AtomDownloadManagerDelegate::GetItemSavePath(content::DownloadItem* item,
base::FilePath* path) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
- v8::Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
api::DownloadItem* download = api::DownloadItem::FromWrappedClass(isolate,
item);
path.DirName());
v8::Isolate* isolate = v8::Isolate::GetCurrent();
- v8::Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
api::DownloadItem* download_item = api::DownloadItem::FromWrappedClass(
isolate, item);
#include "wgt_manifest_handlers/launch_screen_handler.h"
#endif // defined(OS_TIZEN)
+#include "tizen/common/env_variables.h"
+
namespace atom {
Browser::Browser()
observer.OnQuit();
if (base::ThreadTaskRunnerHandle::IsSet()) {
- base::ThreadTaskRunnerHandle::Get()->PostTask(
+ if (::tizen::is_single_process) {
+ base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+ FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(), base::TimeDelta::FromSeconds(1));
+ } else {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
+ }
ui_app_exit();
} else {
// There is no message loop available so we are in early stage.
#include "content/public/common/content_switches.h"
#include "gin/array_buffer.h"
#include "gin/v8_initializer.h"
+#include "tizen/common/env_variables.h"
#include "atom/common/node_includes.h"
: initialized_(Initialize()),
isolate_(isolate_holder_.isolate()),
isolate_scope_(isolate_),
- locker_(isolate_),
handle_scope_(isolate_),
context_(isolate_, v8::Context::New(isolate_)),
context_scope_(v8::Local<v8::Context>::New(isolate_, context_)) {
isolate_holder_.RemoveRunMicrotasksObserver();
}
+void JavascriptEnvironment::SetupLocker() {
+ if (!::tizen::is_single_process)
+ locker_.reset(new v8::Locker(isolate_));
+}
+
bool JavascriptEnvironment::Initialize() {
auto cmd = base::CommandLine::ForCurrentProcess();
void OnMessageLoopCreated();
void OnMessageLoopDestroying();
+ void SetupLocker();
v8::Isolate* isolate() const { return isolate_; }
v8::Local<v8::Context> context() const {
gin::IsolateHolder isolate_holder_;
v8::Isolate* isolate_;
v8::Isolate::Scope isolate_scope_;
- v8::Locker locker_;
+ std::unique_ptr<v8::Locker> locker_;
v8::HandleScope handle_scope_;
v8::UniquePersistent<v8::Context> context_;
v8::Context::Scope context_scope_;
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/v8_value_converter.h"
+#include "tizen/common/env_variables.h"
namespace atom {
const BeforeStartCallback& before_start,
const ResponseCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- v8::Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Context::Scope context_scope(context);
} // namespace
-NodeDebugger::NodeDebugger(v8::Isolate* isolate)
+NodeDebugger::NodeDebugger(v8::Isolate* isolate, uv_loop_t* loop_)
: isolate_(isolate),
thread_("NodeDebugger"),
content_length_(-1),
v8::Debug::SetMessageHandler(isolate_, DebugMessageHandler);
weak_up_ui_handle_.data = this;
- uv_async_init(uv_default_loop(), &weak_up_ui_handle_, ProcessMessageInUI);
+ uv_async_init(loop_, &weak_up_ui_handle_, ProcessMessageInUI);
// Start a new IO thread.
base::Thread::Options options;
// Add support for node's "--debug" switch.
class NodeDebugger : public net::test_server::StreamListenSocket::Delegate {
public:
- explicit NodeDebugger(v8::Isolate* isolate);
+ explicit NodeDebugger(v8::Isolate* isolate, uv_loop_t* loop_);
virtual ~NodeDebugger();
bool IsRunning() const;
// found in the LICENSE.chromium file.
#include "atom/common/api/locker.h"
+#include "base/logging.h"
+#include "tizen/common/env_variables.h"
namespace mate {
Locker::Locker(v8::Isolate* isolate) {
- if (IsBrowserProcess())
+ if (::tizen::is_single_process)
+ return;
+ if (IsBrowserProcess()) {
locker_.reset(new v8::Locker(isolate));
+ }
}
Locker::~Locker() {
#include <memory>
#include "base/macros.h"
+#include "tizen/common/env_variables.h"
#include "v8/include/v8.h"
namespace mate {
// Returns whether current process is browser process, currently we detect it
// by checking whether current has used V8 Lock, but it might be a bad idea.
- static inline bool IsBrowserProcess() { return v8::Locker::IsActive(); }
+ static inline bool IsBrowserProcess() { if (::tizen::is_single_process) return true; return v8::Locker::IsActive(); }
private:
void* operator new(size_t size);
// found in the LICENSE file.
#include "atom/common/native_mate_converters/callback.h"
+#include "tizen/common/env_variables.h"
using content::BrowserThread;
struct DeleteOnUIThread {
template<typename T>
static void Destruct(const T* x) {
- if (Locker::IsBrowserProcess() &&
+ if ((::tizen::is_single_process || Locker::IsBrowserProcess()) &&
!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, x);
} else {
static v8::Local<v8::Value> Go(v8::Isolate* isolate,
const SafeV8Function& function,
ArgTypes... raw) {
- Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ Locker locker(isolate);
v8::EscapableHandleScope handle_scope(isolate);
if (!function.IsAlive())
return v8::Null(isolate);
static void Go(v8::Isolate* isolate,
const SafeV8Function& function,
ArgTypes... raw) {
- Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (!function.IsAlive())
return;
// Init node.
// (we assume node::Init would not modify the parameters under embedded mode).
- node::Init(nullptr, nullptr, nullptr, nullptr);
+ node::Init(nullptr, nullptr, nullptr, nullptr, uv_loop_);
#if defined(OS_WIN)
// uv_init overrides error mode to suppress the default crash dialog, bring
#include "native_mate/dictionary.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
+#include "tizen/common/env_variables.h"
#include "atom/common/node_includes.h"
} // namespace
AtomRendererClient::AtomRendererClient()
- : node_integration_initialized_(false),
- node_bindings_(NodeBindings::Create(NodeBindings::RENDERER)),
- atom_bindings_(new AtomBindings(uv_default_loop())) {
+ : node_integration_initialized_(false) {
+ if (!::tizen::is_single_process) {
+ node_bindings_.reset(NodeBindings::Create(NodeBindings::RENDERER));
+ atom_bindings_.reset(new AtomBindings(node_bindings_->uv_loop()));
+ }
isolated_world_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kContextIsolation);
}
void AtomRendererClient::RunScriptsAtDocumentStart(
content::RenderFrame* render_frame) {
+ if (::tizen::is_single_process)
+ return;
// Inform the document start pharse.
node::Environment* env = node_bindings_->uv_env();
if (env) {
void AtomRendererClient::RunScriptsAtDocumentEnd(
content::RenderFrame* render_frame) {
+ if (::tizen::is_single_process)
+ return;
// Inform the document end pharse.
node::Environment* env = node_bindings_->uv_env();
if (env) {
render_frame->GetWebFrame()->document().baseURL().string().utf8().c_str());
}
#endif
+ if (::tizen::is_single_process)
+ return;
// Only allow node integration for the main frame, unless it is a devtools
// extension page.
if (!render_frame->IsMainFrame() && !IsDevToolsExtension(render_frame))
if (widget_)
widget_->StopSession(context);
#endif
+ if (::tizen::is_single_process)
+ return;
// Only allow node integration for the main frame, unless it is a devtools
// extension page.
if (!render_frame->IsMainFrame() && !IsDevToolsExtension(render_frame))
#include "printing/page_size_margins.h"
#include "printing/print_job_constants.h"
#include "printing/pdf_metafile_skia.h"
+#include "tizen/common/env_variables.h"
#include "atom/common/node_includes.h"
DCHECK_CURRENTLY_ON(BrowserThread::UI);
v8::Isolate* isolate = v8::Isolate::GetCurrent();
- v8::Locker locker(isolate);
+ if (!::tizen::is_single_process)
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
if (data) {
v8::Local<v8::Value> buffer = node::Buffer::New(isolate,
'app_db_sqlite.h',
'application_data.h',
'application_data.cc',
+ 'env_variables.h',
+ 'env_variables.cc',
'locale_manager.h',
'locale_manager.cc',
'resource_manager.h',
--- /dev/null
+namespace tizen {
+ bool is_single_process = false;
+}
\ No newline at end of file
--- /dev/null
+#ifndef TIZEN_ENV_VARIABLES
+#define TIZEN_ENV_VARIABLES
+
+namespace tizen {
+ extern bool is_single_process;
+}
+
+#endif // TIZEN_ENV_VARIABLES
\ No newline at end of file
// found in the LICENSE file.
#include "wrt_main.h"
+#include "tizen/common/env_variables.h"
#include <stdlib.h>
#include "atom/app/atom_main_delegate.h" // NOLINT
namespace {
+bool block_single_process = false; // set to true to disable single process mode altogether
+
// Default command line flags for all profiles and platforms
const char* kDefaultCommandLineFlags[] = {
"allow-file-access-from-files",
"enable-tizen-app-container",
+ "allow-universal-access-from-files",
+ "single-process",
+ "no-sandbox",
+ "no-zygote",
};
+const int kElectronArgsCount = 2;
+const int kTizenWebappArgsCount = 6;
+
+bool isElectronWebApp() {
+ auto app_data = common::ApplicationDataManager::GetCurrentAppData();
+ if (app_data) {
+ if (app_data->content_info()) {
+ std::string startUrl = app_data->content_info()->src();
+ if (std::string::npos != startUrl.find(".json")) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+bool IsBrowserProcess() {
+ auto command_line = base::CommandLine::ForCurrentProcess();
+ std::string process_type = command_line->GetSwitchValueASCII("type");
+ return process_type.empty();
+}
+
} // namespace
#define REFERENCE_MODULE(name) \
// Add params for EFL port
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ int args_count = kElectronArgsCount;
+ if (IsBrowserProcess()) {
+ if (!block_single_process && !isElectronWebApp()) {
+ LOG(ERROR) << "will run in single process mode";
+ tizen::is_single_process = true;
+ args_count = kTizenWebappArgsCount;
+ } else LOG(ERROR) << "will run in non-single process mode";
+ } else LOG(ERROR) << "not a browser process";
+
static std::vector<char*> flags;
- for (auto arg : kDefaultCommandLineFlags)
- command_line->AppendSwitch(const_cast<char*>(arg));
+ for (int i = 0; i < args_count; ++i)
+ command_line->AppendSwitch(const_cast<char*>(kDefaultCommandLineFlags[i]));
+
efl::AppendPortParams(*command_line);
atom::AtomMainDelegate delegate;
void Init(int* argc,
const char** argv,
int* exec_argc,
- const char*** exec_argv) {
+ const char*** exec_argv,
+ uv_loop_t* uv_loop_) {
// Initialize prog_start_time to get relative uptime.
- prog_start_time = static_cast<double>(uv_now(uv_default_loop()));
+ prog_start_time = static_cast<double>(uv_now(uv_loop_));
if (g_upstream_node_mode) { // No indent to minimize diff.
// Make inherited handles noninheritable.
// init async debug messages dispatching
// Main thread uses uv_default_loop
- CHECK_EQ(0, uv_async_init(uv_default_loop(),
+ CHECK_EQ(0, uv_async_init(uv_loop_,
&dispatch_debug_messages_async,
DispatchDebugMessagesAsyncCallback));
uv_unref(reinterpret_cast<uv_handle_t*>(&dispatch_debug_messages_async));
// performance penalty of frequent EINTR wakeups when the profiler is running.
// Only do this for v8.log profiling, as it breaks v8::CpuProfiler users.
if (v8_is_profiling) {
- uv_loop_configure(uv_default_loop(), UV_LOOP_BLOCK_SIGNAL, SIGPROF);
+ uv_loop_configure(uv_loop_, UV_LOOP_BLOCK_SIGNAL, SIGPROF);
}
#endif
}
-inline int Start(Isolate* isolate, IsolateData* isolate_data,
+inline int Start(Isolate* isolate, IsolateData* isolate_data, // not called
int argc, const char* const* argv,
int exec_argc, const char* const* exec_argv) {
HandleScope handle_scope(isolate);
return exit_code;
}
-inline int Start(uv_loop_t* event_loop,
+inline int Start(uv_loop_t* event_loop, // not called
int argc, const char* const* argv,
int exec_argc, const char* const* exec_argv) {
Isolate::CreateParams params;
// optional, in case you're wondering.
int exec_argc;
const char** exec_argv;
- Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv);
+ // Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv);
#if HAVE_OPENSSL
if (const char* extra = secure_getenv("NODE_EXTRA_CA_CERTS"))
NODE_EXTERN extern bool g_upstream_node_mode;
NODE_EXTERN int Start(int argc, char *argv[]);
-NODE_EXTERN void Init(int* argc,
+NODE_EXTERN void Init(int* argc, // apart from NodeBindings::Initialize(), no one seems to call
const char** argv,
int* exec_argc,
- const char*** exec_argv);
+ const char*** exec_argv,
+ uv_loop_t* uv_loop_);
class IsolateData;
class Environment;