Chromium Code Reviews| Index: net/proxy/proxy_resolver_v8.cc |
| diff --git a/net/proxy/proxy_resolver_v8.cc b/net/proxy/proxy_resolver_v8.cc |
| index 7e44f15bda5b902049dda87348c5c389c28d3f5c..b4c8bd3e56da1b3e5f3a2b837730d6e510fbe958 100644 |
| --- a/net/proxy/proxy_resolver_v8.cc |
| +++ b/net/proxy/proxy_resolver_v8.cc |
| @@ -9,11 +9,13 @@ |
| #include "base/basictypes.h" |
| #include "base/compiler_specific.h" |
| +#include "base/debug/leak_annotations.h" |
| #include "base/logging.h" |
| #include "base/strings/string_tokenizer.h" |
| #include "base/strings/string_util.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/synchronization/lock.h" |
| +#include "gin/public/isolate_holder.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/net_log.h" |
| #include "net/base/net_util.h" |
| @@ -523,6 +525,7 @@ class ProxyResolverV8::Context { |
| line_number = message->GetLineNumber(); |
| V8ObjectToUTF16String(message->Get(), &error_message, isolate_); |
| } |
| + LOG(ERROR) << line_number << ": " << error_message; |
|
eroman
2014/04/08 19:47:24
Is this log addition intentional? Wander if it cou
jochen (gone - plz use gerrit)
2014/04/08 20:43:40
oops, that's left over from debugging.
|
| js_bindings()->OnError(line_number, error_message); |
| } |
| @@ -764,59 +767,44 @@ int ProxyResolverV8::SetPacScript( |
| } |
| // static |
| -void ProxyResolverV8::RememberDefaultIsolate() { |
| - v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
| - DCHECK(isolate) |
| - << "ProxyResolverV8::RememberDefaultIsolate called on wrong thread"; |
| - DCHECK(g_default_isolate_ == NULL || g_default_isolate_ == isolate) |
| - << "Default Isolate can not be changed"; |
| - g_default_isolate_ = isolate; |
| +void ProxyResolverV8::EnsureIsolateCreated() { |
| + if (g_proxy_resolver_isolate_) |
| + return; |
| + g_proxy_resolver_isolate_ = |
| + new gin::IsolateHolder(gin::IsolateHolder::kNonStrictMode); |
| + ANNOTATE_LEAKING_OBJECT_PTR(g_proxy_resolver_isolate_); |
| } |
| -#if defined(OS_WIN) |
| -// static |
| -void ProxyResolverV8::CreateIsolate() { |
| - v8::Isolate* isolate = v8::Isolate::New(); |
| - DCHECK(isolate); |
| - DCHECK(g_default_isolate_ == NULL) << "Default Isolate can not be set twice"; |
| - |
| - isolate->Enter(); |
| - v8::V8::Initialize(); |
| - |
| - g_default_isolate_ = isolate; |
| -} |
| -#endif // defined(OS_WIN) |
| - |
| // static |
| v8::Isolate* ProxyResolverV8::GetDefaultIsolate() { |
| - DCHECK(g_default_isolate_) |
| - << "Must call ProxyResolverV8::RememberDefaultIsolate() first"; |
| - return g_default_isolate_; |
| + DCHECK(g_proxy_resolver_isolate_) |
| + << "Must call ProxyResolverV8::EnsureIsolateCreated() first"; |
| + return g_proxy_resolver_isolate_->isolate(); |
| } |
| -v8::Isolate* ProxyResolverV8::g_default_isolate_ = NULL; |
| +gin::IsolateHolder* ProxyResolverV8::g_proxy_resolver_isolate_ = NULL; |
| // static |
| size_t ProxyResolverV8::GetTotalHeapSize() { |
| - if (!g_default_isolate_) |
| + if (!g_proxy_resolver_isolate_) |
| return 0; |
| - v8::Locker locked(g_default_isolate_); |
| - v8::Isolate::Scope isolate_scope(g_default_isolate_); |
| + v8::Locker locked(g_proxy_resolver_isolate_->isolate()); |
| + v8::Isolate::Scope isolate_scope(g_proxy_resolver_isolate_->isolate()); |
| v8::HeapStatistics heap_statistics; |
| - g_default_isolate_->GetHeapStatistics(&heap_statistics); |
| + g_proxy_resolver_isolate_->isolate()->GetHeapStatistics(&heap_statistics); |
| return heap_statistics.total_heap_size(); |
| } |
| // static |
| size_t ProxyResolverV8::GetUsedHeapSize() { |
| - if (!g_default_isolate_) |
| + if (!g_proxy_resolver_isolate_) |
| return 0; |
| - v8::Locker locked(g_default_isolate_); |
| - v8::Isolate::Scope isolate_scope(g_default_isolate_); |
| + v8::Locker locked(g_proxy_resolver_isolate_->isolate()); |
| + v8::Isolate::Scope isolate_scope(g_proxy_resolver_isolate_->isolate()); |
| v8::HeapStatistics heap_statistics; |
| - g_default_isolate_->GetHeapStatistics(&heap_statistics); |
| + g_proxy_resolver_isolate_->isolate()->GetHeapStatistics(&heap_statistics); |
| return heap_statistics.used_heap_size(); |
| } |