diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-01-25 11:39:07 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-01-25 15:20:42 +0000 |
commit | 6c91641271e536ffaa88a1dff5127e42ee99a91e (patch) | |
tree | 703d9dd49602377ddc90cbf886aad37913f2496b /chromium/gin | |
parent | b145b7fafd36f0c260d6a768c81fc14e32578099 (diff) | |
download | qtwebengine-chromium-6c91641271e536ffaa88a1dff5127e42ee99a91e.tar.gz |
BASELINE: Update Chromium to 49.0.2623.23
Also adds missing printing sources.
Change-Id: I3726b8f0c7d6751c9fc846096c571fadca7108cd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'chromium/gin')
46 files changed, 318 insertions, 52 deletions
diff --git a/chromium/gin/BUILD.gn b/chromium/gin/BUILD.gn index 45350747bfe..4531cd1f637 100644 --- a/chromium/gin/BUILD.gn +++ b/chromium/gin/BUILD.gn @@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/module_args/v8.gni") +import("//build_overrides/v8.gni") import("//testing/test.gni") component("gin") { @@ -82,21 +82,23 @@ component("gin") { ] deps = [ "//base/third_party/dynamic_annotations", + "//crypto", ] if (v8_use_external_startup_data && is_win) { public_deps += [ ":gin_v8_snapshot_fingerprint" ] - deps += [ "//crypto:crypto" ] sources += [ "$target_gen_dir/v8_snapshot_fingerprint.cc" ] defines += [ "V8_VERIFY_EXTERNAL_STARTUP_DATA" ] } + + configs += [ "//v8:external_startup_data" ] } if (v8_use_external_startup_data) { action("gin_v8_snapshot_fingerprint") { script = "//gin/fingerprint/fingerprint_v8_snapshot.py" - snapshot_file = "$root_build_dir/snapshot_blob.bin" - natives_file = "$root_build_dir/natives_blob.bin" + snapshot_file = "$root_out_dir/snapshot_blob.bin" + natives_file = "$root_out_dir/natives_blob.bin" output_file = "$target_gen_dir/v8_snapshot_fingerprint.cc" args = [ @@ -133,6 +135,8 @@ executable("gin_shell") { "//build/config/sanitizers:deps", "//v8", ] + + configs += [ "//v8:external_startup_data" ] } source_set("gin_test") { @@ -157,6 +161,8 @@ source_set("gin_test") { deps = [ "//v8", ] + + configs += [ "//v8:external_startup_data" ] } test("gin_unittests") { @@ -175,8 +181,33 @@ test("gin_unittests") { ] deps = [ + ":gin_shell", ":gin_test", "//base/test:test_support", "//v8", ] + + configs += [ "//v8:external_startup_data" ] + + data = [ + "modules/module_registry_unittests.js", + "shell/hello_world.js", + "test/expect.js", + "test/file_unittests.js", + "test/gtest_unittests.js", + "../OWNERS", + ] + + data_deps = [ + ":gin_shell", + ] +} + +# TODO(GYP): Delete this after we've converted everything to GN. +# The _run targets exist only for compatibility w/ GYP. +group("gin_unittests_run") { + testonly = true + deps = [ + ":gin_unittests", + ] } diff --git a/chromium/gin/arguments.h b/chromium/gin/arguments.h index b8d1296d138..55f9f449e2d 100644 --- a/chromium/gin/arguments.h +++ b/chromium/gin/arguments.h @@ -5,7 +5,6 @@ #ifndef GIN_ARGUMENTS_H_ #define GIN_ARGUMENTS_H_ -#include "base/basictypes.h" #include "gin/converter.h" #include "gin/gin_export.h" diff --git a/chromium/gin/array_buffer.cc b/chromium/gin/array_buffer.cc index 9aad42e389c..d40e8981bd4 100644 --- a/chromium/gin/array_buffer.cc +++ b/chromium/gin/array_buffer.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <stddef.h> #include <stdlib.h> #include "base/logging.h" diff --git a/chromium/gin/array_buffer.h b/chromium/gin/array_buffer.h index 4451540e654..2aef366ac81 100644 --- a/chromium/gin/array_buffer.h +++ b/chromium/gin/array_buffer.h @@ -5,8 +5,11 @@ #ifndef GIN_ARRAY_BUFFER_H_ #define GIN_ARRAY_BUFFER_H_ -#include "base/basictypes.h" +#include <stddef.h> +#include <stdint.h> + #include "base/compiler_specific.h" +#include "base/macros.h" #include "base/memory/ref_counted.h" #include "gin/converter.h" #include "gin/gin_export.h" diff --git a/chromium/gin/converter.cc b/chromium/gin/converter.cc index 9a3462d5a2d..42fcd59adb9 100644 --- a/chromium/gin/converter.cc +++ b/chromium/gin/converter.cc @@ -4,6 +4,8 @@ #include "gin/converter.h" +#include <stdint.h> + #include "v8/include/v8.h" using v8::ArrayBuffer; diff --git a/chromium/gin/converter.h b/chromium/gin/converter.h index 8d17d41c29f..c15f87dc0b3 100644 --- a/chromium/gin/converter.h +++ b/chromium/gin/converter.h @@ -5,6 +5,8 @@ #ifndef GIN_CONVERTER_H_ #define GIN_CONVERTER_H_ +#include <stdint.h> + #include <string> #include <vector> @@ -20,7 +22,8 @@ bool SetProperty(v8::Isolate* isolate, v8::Local<v8::Object> object, KeyType key, v8::Local<v8::Value> value) { - auto maybe = object->Set(isolate->GetCurrentContext(), key, value); + auto maybe = + object->DefineOwnProperty(isolate->GetCurrentContext(), key, value); return !maybe.IsNothing() && maybe.FromJust(); } diff --git a/chromium/gin/converter_unittest.cc b/chromium/gin/converter_unittest.cc index a7c35470320..ec543c253d9 100644 --- a/chromium/gin/converter_unittest.cc +++ b/chromium/gin/converter_unittest.cc @@ -5,8 +5,9 @@ #include "gin/converter.h" #include <limits.h> +#include <stddef.h> +#include <stdint.h> -#include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "gin/public/isolate_holder.h" @@ -80,7 +81,7 @@ TEST_F(ConverterTest, Int32) { struct { v8::Local<v8::Value> input; - bool expect_sucess; + bool expect_success; int expected_result; } test_data_from[] = { { Boolean::New(instance_->isolate(), false).As<Value>(), false, 0 }, @@ -102,7 +103,7 @@ TEST_F(ConverterTest, Int32) { int32_t result = std::numeric_limits<int32_t>::min(); bool success = Converter<int32_t>::FromV8(instance_->isolate(), test_data_from[i].input, &result); - EXPECT_EQ(test_data_from[i].expect_sucess, success) << i; + EXPECT_EQ(test_data_from[i].expect_success, success) << i; if (success) EXPECT_EQ(test_data_from[i].expected_result, result) << i; } diff --git a/chromium/gin/function_template.h b/chromium/gin/function_template.h index 15ea8fef016..c0228cb5f83 100644 --- a/chromium/gin/function_template.h +++ b/chromium/gin/function_template.h @@ -5,8 +5,11 @@ #ifndef GIN_FUNCTION_TEMPLATE_H_ #define GIN_FUNCTION_TEMPLATE_H_ +#include <stddef.h> + #include "base/callback.h" #include "base/logging.h" +#include "base/macros.h" #include "gin/arguments.h" #include "gin/converter.h" #include "gin/gin_export.h" diff --git a/chromium/gin/gin.gyp b/chromium/gin/gin.gyp index a3e4d39c1c8..1b5a544b018 100644 --- a/chromium/gin/gin.gyp +++ b/chromium/gin/gin.gyp @@ -156,6 +156,7 @@ 'dependencies': [ '../base/base.gyp:test_support_base', '../v8/tools/gyp/v8.gyp:v8', + 'gin_shell', 'gin_test', ], 'sources': [ @@ -173,4 +174,23 @@ ], }, ], + 'conditions': [ + ['test_isolation_mode != "noop"', { + 'targets': [ + { + 'target_name': 'gin_unittests_run', + 'type': 'none', + 'dependencies': [ + 'gin_unittests', + ], + 'includes': [ + '../build/isolate.gypi', + ], + 'sources': [ + 'gin_unittests.isolate', + ], + }, + ], + }], + ], } diff --git a/chromium/gin/gin_unittests.isolate b/chromium/gin/gin_unittests.isolate new file mode 100644 index 00000000000..7313e25d73a --- /dev/null +++ b/chromium/gin/gin_unittests.isolate @@ -0,0 +1,56 @@ +# Copyright 2015 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. + +{ + 'variables': { + 'files': [ + '<(PRODUCT_DIR)/gin_shell<(EXECUTABLE_SUFFIX)', + '<(PRODUCT_DIR)/gin_unittests<(EXECUTABLE_SUFFIX)', + 'modules/module_registry_unittests.js', + 'shell/hello_world.js', + 'test/expect.js', + 'test/file_unittests.js', + 'test/gtest_unittests.js', + '../OWNERS', + ], + }, + 'conditions': [ + ['OS=="linux" or OS=="mac" or OS=="win"', { + 'variables': { + 'files': [ + '../testing/test_env.py', + ], + 'command': [ + '../testing/test_env.py', + '<(PRODUCT_DIR)/gin_unittests<(EXECUTABLE_SUFFIX)', + '--brave-new-test-launcher', + '--test-launcher-bot-mode', + '--asan=<(asan)', + '--msan=<(msan)', + '--tsan=<(tsan)', + ], + }, + }], + ['OS=="mac" and asan==1 and fastbuild==0', { + 'variables': { + 'files': [ + '<(PRODUCT_DIR)/gin_shell.dSYM/', + '<(PRODUCT_DIR)/gin_unittests.dSYM/', + ], + }, + }], + ['OS=="win" and (fastbuild==0 or fastbuild==1)', { + 'variables': { + 'files': [ + '<(PRODUCT_DIR)/gin_shell.exe.pdb', + '<(PRODUCT_DIR)/gin_unittests.exe.pdb', + ], + }, + }], + ], + 'includes': [ + '../base/base.isolate', + '../gin/v8.isolate', + ], +} diff --git a/chromium/gin/interceptor.cc b/chromium/gin/interceptor.cc index 617fd08e26d..6b7b8127ac6 100644 --- a/chromium/gin/interceptor.cc +++ b/chromium/gin/interceptor.cc @@ -4,6 +4,8 @@ #include "gin/interceptor.h" +#include <stdint.h> + #include <map> #include "gin/per_isolate_data.h" diff --git a/chromium/gin/interceptor.h b/chromium/gin/interceptor.h index 43cb3464fe9..bd265fb094d 100644 --- a/chromium/gin/interceptor.h +++ b/chromium/gin/interceptor.h @@ -5,10 +5,12 @@ #ifndef GIN_INTERCEPTOR_H_ #define GIN_INTERCEPTOR_H_ +#include <stdint.h> + #include <string> #include <vector> -#include "base/basictypes.h" +#include "base/macros.h" #include "gin/gin_export.h" #include "v8/include/v8.h" diff --git a/chromium/gin/interceptor_unittest.cc b/chromium/gin/interceptor_unittest.cc index 02fb10d235a..59e75cf04d7 100644 --- a/chromium/gin/interceptor_unittest.cc +++ b/chromium/gin/interceptor_unittest.cc @@ -2,7 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <stdint.h> + #include "base/logging.h" +#include "base/macros.h" #include "gin/arguments.h" #include "gin/handle.h" #include "gin/interceptor.h" diff --git a/chromium/gin/isolate_holder.cc b/chromium/gin/isolate_holder.cc index 3defd7ce9b5..c05cd1e42db 100644 --- a/chromium/gin/isolate_holder.cc +++ b/chromium/gin/isolate_holder.cc @@ -4,8 +4,10 @@ #include "gin/public/isolate_holder.h" +#include <stddef.h> #include <stdlib.h> #include <string.h> +#include <utility> #include "base/logging.h" #include "base/message_loop/message_loop.h" @@ -74,15 +76,16 @@ IsolateHolder::~IsolateHolder() { // static void IsolateHolder::Initialize(ScriptMode mode, + V8ExtrasMode v8_extras_mode, v8::ArrayBuffer::Allocator* allocator) { CHECK(allocator); - V8Initializer::Initialize(mode); + V8Initializer::Initialize(mode, v8_extras_mode); g_array_buffer_allocator = allocator; } void IsolateHolder::AddRunMicrotasksObserver() { DCHECK(!task_observer_.get()); - task_observer_.reset(new RunMicrotasksObserver(isolate_));; + task_observer_.reset(new RunMicrotasksObserver(isolate_)); base::MessageLoop::current()->AddTaskObserver(task_observer_.get()); } @@ -95,7 +98,7 @@ void IsolateHolder::RemoveRunMicrotasksObserver() { void IsolateHolder::EnableIdleTasks( scoped_ptr<V8IdleTaskRunner> idle_task_runner) { DCHECK(isolate_data_.get()); - isolate_data_->EnableIdleTasks(idle_task_runner.Pass()); + isolate_data_->EnableIdleTasks(std::move(idle_task_runner)); } } // namespace gin diff --git a/chromium/gin/modules/console.cc b/chromium/gin/modules/console.cc index 231d8fc4761..63fc41eeaf0 100644 --- a/chromium/gin/modules/console.cc +++ b/chromium/gin/modules/console.cc @@ -4,7 +4,7 @@ #include "gin/modules/console.h" -#include <iostream> +#include <stdio.h> #include "base/strings/string_util.h" #include "gin/arguments.h" @@ -25,7 +25,7 @@ void Log(Arguments* args) { args->ThrowError(); return; } - std::cout << base::JoinString(messages, " ") << std::endl; + printf("%s\n", base::JoinString(messages, " ").c_str()); } WrapperInfo g_wrapper_info = { kEmbedderNativeGin }; diff --git a/chromium/gin/modules/file_module_provider.cc b/chromium/gin/modules/file_module_provider.cc index 1568378ee60..a25686dfd5e 100644 --- a/chromium/gin/modules/file_module_provider.cc +++ b/chromium/gin/modules/file_module_provider.cc @@ -4,6 +4,8 @@ #include "gin/modules/file_module_provider.h" +#include <stddef.h> + #include "base/bind.h" #include "base/files/file_util.h" #include "base/message_loop/message_loop.h" diff --git a/chromium/gin/modules/file_module_provider.h b/chromium/gin/modules/file_module_provider.h index dd75a0feaf1..7c038879684 100644 --- a/chromium/gin/modules/file_module_provider.h +++ b/chromium/gin/modules/file_module_provider.h @@ -10,6 +10,7 @@ #include <vector> #include "base/files/file_path.h" +#include "base/macros.h" #include "gin/gin_export.h" #include "gin/runner.h" diff --git a/chromium/gin/modules/module_registry.cc b/chromium/gin/modules/module_registry.cc index b75894cf4cb..deec1874b48 100644 --- a/chromium/gin/modules/module_registry.cc +++ b/chromium/gin/modules/module_registry.cc @@ -4,7 +4,10 @@ #include "gin/modules/module_registry.h" +#include <stddef.h> +#include <stdint.h> #include <string> +#include <utility> #include <vector> #include "base/logging.h" @@ -80,7 +83,7 @@ void Define(const v8::FunctionCallbackInfo<Value>& info) { ModuleRegistry* registry = ModuleRegistry::From(args.isolate()->GetCurrentContext()); - registry->AddPendingModule(args.isolate(), pending.Pass()); + registry->AddPendingModule(args.isolate(), std::move(pending)); } WrapperInfo g_wrapper_info = { kEmbedderNativeGin }; @@ -158,7 +161,7 @@ void ModuleRegistry::AddPendingModule(Isolate* isolate, scoped_ptr<PendingModule> pending) { const std::string pending_id = pending->id; const std::vector<std::string> pending_dependencies = pending->dependencies; - AttemptToLoad(isolate, pending.Pass()); + AttemptToLoad(isolate, std::move(pending)); FOR_EACH_OBSERVER(ModuleRegistryObserver, observer_list_, OnDidAddPendingModule(pending_id, pending_dependencies)); } @@ -255,7 +258,7 @@ bool ModuleRegistry::AttemptToLoad(Isolate* isolate, pending_modules_.push_back(pending.release()); return false; } - return Load(isolate, pending.Pass()); + return Load(isolate, std::move(pending)); } v8::Local<v8::Value> ModuleRegistry::GetModule(v8::Isolate* isolate, @@ -275,7 +278,7 @@ void ModuleRegistry::AttemptToLoadMoreModules(Isolate* isolate) { for (size_t i = 0; i < pending_modules.size(); ++i) { scoped_ptr<PendingModule> pending(pending_modules[i]); pending_modules[i] = NULL; - if (AttemptToLoad(isolate, pending.Pass())) + if (AttemptToLoad(isolate, std::move(pending))) keep_trying = true; } } diff --git a/chromium/gin/modules/module_registry.h b/chromium/gin/modules/module_registry.h index a2e0d0bb527..0f67137abb3 100644 --- a/chromium/gin/modules/module_registry.h +++ b/chromium/gin/modules/module_registry.h @@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/compiler_specific.h" +#include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/observer_list.h" diff --git a/chromium/gin/modules/module_registry_unittest.cc b/chromium/gin/modules/module_registry_unittest.cc index 00c6a94e193..e337c2d9b4b 100644 --- a/chromium/gin/modules/module_registry_unittest.cc +++ b/chromium/gin/modules/module_registry_unittest.cc @@ -4,7 +4,10 @@ #include "gin/modules/module_registry.h" +#include <stdint.h> + #include "base/bind.h" +#include "base/macros.h" #include "gin/modules/module_registry_observer.h" #include "gin/modules/module_runner_delegate.h" #include "gin/public/context_holder.h" diff --git a/chromium/gin/modules/module_runner_delegate.h b/chromium/gin/modules/module_runner_delegate.h index 002db1c7425..f49594c5318 100644 --- a/chromium/gin/modules/module_runner_delegate.h +++ b/chromium/gin/modules/module_runner_delegate.h @@ -9,6 +9,7 @@ #include "base/callback.h" #include "base/compiler_specific.h" +#include "base/macros.h" #include "gin/gin_export.h" #include "gin/modules/file_module_provider.h" #include "gin/shell_runner.h" diff --git a/chromium/gin/modules/timer.cc b/chromium/gin/modules/timer.cc index 8aac8a64925..26b5c75e4da 100644 --- a/chromium/gin/modules/timer.cc +++ b/chromium/gin/modules/timer.cc @@ -12,8 +12,8 @@ namespace gin { namespace { -v8::Local<v8::String> GetHiddenPropertyName(v8::Isolate* isolate) { - return gin::StringToSymbol(isolate, "::gin::Timer"); +v8::Local<v8::Private> GetHiddenPropertyName(v8::Isolate* isolate) { + return v8::Private::ForApi(isolate, gin::StringToV8(isolate, "::gin::Timer")); } } // namespace @@ -45,8 +45,10 @@ Timer::Timer(v8::Isolate* isolate, bool repeating, int delay_ms, runner_(PerContextData::From( isolate->GetCurrentContext())->runner()->GetWeakPtr()), weak_factory_(this) { - GetWrapper(runner_->GetContextHolder()->isolate())->SetHiddenValue( - GetHiddenPropertyName(isolate), function); + GetWrapper(runner_->GetContextHolder()->isolate()) + ->SetPrivate(isolate->GetCurrentContext(), GetHiddenPropertyName(isolate), + function) + .FromJust(); timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(delay_ms), base::Bind(&Timer::OnTimerFired, weak_factory_.GetWeakPtr())); } @@ -65,7 +67,10 @@ void Timer::OnTimerFired() { Runner::Scope scope(runner_.get()); v8::Isolate* isolate = runner_->GetContextHolder()->isolate(); v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast( - GetWrapper(isolate)->GetHiddenValue(GetHiddenPropertyName(isolate))); + GetWrapper(isolate) + ->GetPrivate(runner_->GetContextHolder()->context(), + GetHiddenPropertyName(isolate)) + .ToLocalChecked()); runner_->Call(function, v8::Undefined(isolate), 0, NULL); } diff --git a/chromium/gin/modules/timer.h b/chromium/gin/modules/timer.h index c4f809168eb..1b7f6139eda 100644 --- a/chromium/gin/modules/timer.h +++ b/chromium/gin/modules/timer.h @@ -5,6 +5,7 @@ #ifndef GIN_MODULES_TIMER_H_ #define GIN_MODULES_TIMER_H_ +#include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/timer/timer.h" #include "gin/gin_export.h" diff --git a/chromium/gin/object_template_builder.cc b/chromium/gin/object_template_builder.cc index 28c9791b05f..158131f206c 100644 --- a/chromium/gin/object_template_builder.cc +++ b/chromium/gin/object_template_builder.cc @@ -4,6 +4,8 @@ #include "gin/object_template_builder.h" +#include <stdint.h> + #include "gin/interceptor.h" #include "gin/per_isolate_data.h" #include "gin/public/wrapper_info.h" diff --git a/chromium/gin/object_template_builder.h b/chromium/gin/object_template_builder.h index 1e53d83a151..3cfd4a394b9 100644 --- a/chromium/gin/object_template_builder.h +++ b/chromium/gin/object_template_builder.h @@ -5,6 +5,8 @@ #ifndef GIN_OBJECT_TEMPLATE_BUILDER_H_ #define GIN_OBJECT_TEMPLATE_BUILDER_H_ +#include <type_traits> + #include "base/bind.h" #include "base/callback.h" #include "base/strings/string_piece.h" @@ -52,9 +54,10 @@ struct CallbackTraits<base::Callback<T> > { // specially because the first parameter for callbacks to MFP should typically // come from the the JavaScript "this" object the function was called on, not // from the first normal parameter. -template<typename T> -struct CallbackTraits<T, typename base::enable_if< - base::is_member_function_pointer<T>::value>::type> { +template <typename T> +struct CallbackTraits< + T, + typename std::enable_if<base::is_member_function_pointer<T>::value>::type> { static v8::Local<v8::FunctionTemplate> CreateTemplate(v8::Isolate* isolate, T callback) { return CreateFunctionTemplate(isolate, base::Bind(callback), diff --git a/chromium/gin/per_context_data.h b/chromium/gin/per_context_data.h index 976ef51bd3a..39314293c17 100644 --- a/chromium/gin/per_context_data.h +++ b/chromium/gin/per_context_data.h @@ -5,7 +5,7 @@ #ifndef GIN_PER_CONTEXT_DATA_H_ #define GIN_PER_CONTEXT_DATA_H_ -#include "base/basictypes.h" +#include "base/macros.h" #include "base/supports_user_data.h" #include "gin/gin_export.h" #include "v8/include/v8.h" diff --git a/chromium/gin/per_isolate_data.cc b/chromium/gin/per_isolate_data.cc index cec082174bf..a6101582fa3 100644 --- a/chromium/gin/per_isolate_data.cc +++ b/chromium/gin/per_isolate_data.cc @@ -4,6 +4,8 @@ #include "gin/per_isolate_data.h" +#include <utility> + #include "base/logging.h" #include "base/single_thread_task_runner.h" #include "base/thread_task_runner_handle.h" @@ -113,7 +115,7 @@ NamedPropertyInterceptor* PerIsolateData::GetNamedPropertyInterceptor( void PerIsolateData::EnableIdleTasks( scoped_ptr<V8IdleTaskRunner> idle_task_runner) { - idle_task_runner_ = idle_task_runner.Pass(); + idle_task_runner_ = std::move(idle_task_runner); } } // namespace gin diff --git a/chromium/gin/per_isolate_data.h b/chromium/gin/per_isolate_data.h index ef44f313a27..a1ef4747aa9 100644 --- a/chromium/gin/per_isolate_data.h +++ b/chromium/gin/per_isolate_data.h @@ -7,7 +7,7 @@ #include <map> -#include "base/basictypes.h" +#include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "gin/gin_export.h" diff --git a/chromium/gin/public/context_holder.h b/chromium/gin/public/context_holder.h index 835bffa2d3c..176af1754fe 100644 --- a/chromium/gin/public/context_holder.h +++ b/chromium/gin/public/context_holder.h @@ -7,7 +7,7 @@ #include <list> -#include "base/basictypes.h" +#include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "gin/gin_export.h" #include "v8/include/v8.h" diff --git a/chromium/gin/public/debug.h b/chromium/gin/public/debug.h index 0c24109f400..14e30170985 100644 --- a/chromium/gin/public/debug.h +++ b/chromium/gin/public/debug.h @@ -5,6 +5,8 @@ #ifndef GIN_PUBLIC_DEBUG_H_ #define GIN_PUBLIC_DEBUG_H_ +#include <stddef.h> + #include "build/build_config.h" #include "gin/gin_export.h" #include "v8/include/v8.h" diff --git a/chromium/gin/public/isolate_holder.h b/chromium/gin/public/isolate_holder.h index f7e01e8aee8..cb51c2f0844 100644 --- a/chromium/gin/public/isolate_holder.h +++ b/chromium/gin/public/isolate_holder.h @@ -5,7 +5,7 @@ #ifndef GIN_PUBLIC_ISOLATE_HOLDER_H_ #define GIN_PUBLIC_ISOLATE_HOLDER_H_ -#include "base/basictypes.h" +#include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "gin/gin_export.h" #include "gin/public/v8_idle_task_runner.h" @@ -35,6 +35,12 @@ class GIN_EXPORT IsolateHolder { kUseLocker }; + // Indicates whether V8 works with stable or experimental v8 extras. + enum V8ExtrasMode { + kStableV8Extras, + kStableAndExperimentalV8Extras, + }; + IsolateHolder(); explicit IsolateHolder(AccessMode access_mode); ~IsolateHolder(); @@ -48,6 +54,7 @@ class GIN_EXPORT IsolateHolder { // V8Initializer::LoadV8SnapshotFromFD or // V8Initializer::LoadV8Snapshot) before calling this method. static void Initialize(ScriptMode mode, + V8ExtrasMode v8_extras_mode, v8::ArrayBuffer::Allocator* allocator); v8::Isolate* isolate() { return isolate_; } diff --git a/chromium/gin/public/v8_idle_task_runner.h b/chromium/gin/public/v8_idle_task_runner.h index f0662d19639..a294166f9bc 100644 --- a/chromium/gin/public/v8_idle_task_runner.h +++ b/chromium/gin/public/v8_idle_task_runner.h @@ -5,7 +5,6 @@ #ifndef GIN_PUBLIC_V8_IDLE_TASK_RUNNER_H_ #define GIN_PUBLIC_V8_IDLE_TASK_RUNNER_H_ -#include "base/basictypes.h" #include "v8/include/v8-platform.h" namespace gin { diff --git a/chromium/gin/public/v8_platform.h b/chromium/gin/public/v8_platform.h index d66c1fba38d..31e812e05b7 100644 --- a/chromium/gin/public/v8_platform.h +++ b/chromium/gin/public/v8_platform.h @@ -5,9 +5,10 @@ #ifndef GIN_PUBLIC_V8_PLATFORM_H_ #define GIN_PUBLIC_V8_PLATFORM_H_ -#include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/lazy_instance.h" +#include "base/macros.h" +#include "base/trace_event/trace_event.h" #include "gin/gin_export.h" #include "v8/include/v8-platform.h" @@ -30,6 +31,22 @@ class GIN_EXPORT V8Platform : public NON_EXPORTED_BASE(v8::Platform) { v8::IdleTask* task) override; bool IdleTasksEnabled(v8::Isolate* isolate) override; double MonotonicallyIncreasingTime() override; + const uint8_t* GetCategoryGroupEnabled(const char* name) override; + const char* GetCategoryGroupName( + const uint8_t* category_enabled_flag) override; + uint64_t AddTraceEvent(char phase, + const uint8_t* category_enabled_flag, + const char* name, + uint64_t id, + uint64_t bind_id, + int32_t num_args, + const char** arg_names, + const uint8_t* arg_types, + const uint64_t* arg_values, + unsigned int flags) override; + void UpdateTraceEventDuration(const uint8_t* category_enabled_flag, + const char* name, + uint64_t handle) override; private: friend struct base::DefaultLazyInstanceTraits<V8Platform>; diff --git a/chromium/gin/runner.h b/chromium/gin/runner.h index 31995698ffd..a898b035e55 100644 --- a/chromium/gin/runner.h +++ b/chromium/gin/runner.h @@ -7,6 +7,7 @@ #include <string> +#include "base/macros.h" #include "base/memory/weak_ptr.h" #include "gin/gin_export.h" #include "gin/public/context_holder.h" diff --git a/chromium/gin/shell/gin_main.cc b/chromium/gin/shell/gin_main.cc index 0b461eed2cc..1fff9f5e5a0 100644 --- a/chromium/gin/shell/gin_main.cc +++ b/chromium/gin/shell/gin_main.cc @@ -7,6 +7,7 @@ #include "base/command_line.h" #include "base/files/file_util.h" #include "base/i18n/icu_util.h" +#include "base/macros.h" #include "base/message_loop/message_loop.h" #include "gin/array_buffer.h" #include "gin/modules/console.h" @@ -68,6 +69,7 @@ int main(int argc, char** argv) { base::MessageLoop message_loop; gin::IsolateHolder::Initialize(gin::IsolateHolder::kStrictMode, + gin::IsolateHolder::kStableV8Extras, gin::ArrayBufferAllocator::SharedInstance()); gin::IsolateHolder instance; diff --git a/chromium/gin/shell/gin_shell_unittest.cc b/chromium/gin/shell/gin_shell_unittest.cc index 2be25192401..ce90535106d 100644 --- a/chromium/gin/shell/gin_shell_unittest.cc +++ b/chromium/gin/shell/gin_shell_unittest.cc @@ -12,7 +12,11 @@ base::FilePath GinShellPath() { base::FilePath dir; PathService::Get(base::DIR_EXE, &dir); +#if defined(OS_WIN) + return dir.AppendASCII("gin_shell.exe"); +#else return dir.AppendASCII("gin_shell"); +#endif } base::FilePath HelloWorldPath() { diff --git a/chromium/gin/shell_runner.h b/chromium/gin/shell_runner.h index e150feacda3..2d1cc4902b5 100644 --- a/chromium/gin/shell_runner.h +++ b/chromium/gin/shell_runner.h @@ -5,6 +5,7 @@ #ifndef GIN_SHELL_RUNNER_H_ #define GIN_SHELL_RUNNER_H_ +#include "base/macros.h" #include "gin/runner.h" namespace gin { diff --git a/chromium/gin/shell_runner_unittest.cc b/chromium/gin/shell_runner_unittest.cc index 4c8b0f6d98f..abd4f3cb755 100644 --- a/chromium/gin/shell_runner_unittest.cc +++ b/chromium/gin/shell_runner_unittest.cc @@ -33,6 +33,7 @@ TEST(RunnerTest, Run) { #endif gin::IsolateHolder::Initialize(gin::IsolateHolder::kStrictMode, + gin::IsolateHolder::kStableV8Extras, gin::ArrayBufferAllocator::SharedInstance()); gin::IsolateHolder instance; diff --git a/chromium/gin/try_catch.h b/chromium/gin/try_catch.h index 84b2ae16465..a1daaf1c4f0 100644 --- a/chromium/gin/try_catch.h +++ b/chromium/gin/try_catch.h @@ -7,7 +7,7 @@ #include <string> -#include "base/basictypes.h" +#include "base/macros.h" #include "gin/gin_export.h" #include "v8/include/v8.h" diff --git a/chromium/gin/v8_initializer.cc b/chromium/gin/v8_initializer.cc index 810225c9c86..cfb3630ebcf 100644 --- a/chromium/gin/v8_initializer.cc +++ b/chromium/gin/v8_initializer.cc @@ -4,7 +4,9 @@ #include "gin/v8_initializer.h" -#include "base/basictypes.h" +#include <stddef.h> +#include <stdint.h> + #include "base/debug/alias.h" #include "base/files/file.h" #include "base/files/file_path.h" @@ -53,8 +55,19 @@ base::PlatformFile g_snapshot_pf = kInvalidPlatformFile; base::MemoryMappedFile::Region g_natives_region; base::MemoryMappedFile::Region g_snapshot_region; +#if defined(OS_ANDROID) +#ifdef __LP64__ +const char kNativesFileName[] = "natives_blob_64.bin"; +const char kSnapshotFileName[] = "snapshot_blob_64.bin"; +#else +const char kNativesFileName[] = "natives_blob_32.bin"; +const char kSnapshotFileName[] = "snapshot_blob_32.bin"; +#endif // __LP64__ + +#else // defined(OS_ANDROID) const char kNativesFileName[] = "natives_blob.bin"; const char kSnapshotFileName[] = "snapshot_blob.bin"; +#endif // defined(OS_ANDROID) void GetV8FilePath(const char* file_name, base::FilePath* path_out) { #if !defined(OS_MACOSX) @@ -275,8 +288,8 @@ void V8Initializer::LoadV8Natives() { // static void V8Initializer::LoadV8SnapshotFromFD(base::PlatformFile snapshot_pf, - int64 snapshot_offset, - int64 snapshot_size) { + int64_t snapshot_offset, + int64_t snapshot_size) { if (g_mapped_snapshot) return; @@ -307,8 +320,8 @@ void V8Initializer::LoadV8SnapshotFromFD(base::PlatformFile snapshot_pf, // static void V8Initializer::LoadV8NativesFromFD(base::PlatformFile natives_pf, - int64 natives_offset, - int64 natives_size) { + int64_t natives_offset, + int64_t natives_size) { if (g_mapped_natives) return; @@ -351,17 +364,22 @@ base::PlatformFile V8Initializer::GetOpenSnapshotFileForChildProcesses( #endif // defined(V8_USE_EXTERNAL_STARTUP_DATA) // static -void V8Initializer::Initialize(gin::IsolateHolder::ScriptMode mode) { +void V8Initializer::Initialize(IsolateHolder::ScriptMode mode, + IsolateHolder::V8ExtrasMode v8_extras_mode) { static bool v8_is_initialized = false; if (v8_is_initialized) return; v8::V8::InitializePlatform(V8Platform::Get()); - if (gin::IsolateHolder::kStrictMode == mode) { + if (IsolateHolder::kStrictMode == mode) { static const char use_strict[] = "--use_strict"; v8::V8::SetFlagsFromString(use_strict, sizeof(use_strict) - 1); } + if (IsolateHolder::kStableAndExperimentalV8Extras == v8_extras_mode) { + static const char flag[] = "--experimental_extras"; + v8::V8::SetFlagsFromString(flag, sizeof(flag) - 1); + } #if defined(V8_USE_EXTERNAL_STARTUP_DATA) v8::StartupData natives; diff --git a/chromium/gin/v8_initializer.h b/chromium/gin/v8_initializer.h index e1814369225..dcb5329d074 100644 --- a/chromium/gin/v8_initializer.h +++ b/chromium/gin/v8_initializer.h @@ -5,6 +5,8 @@ #ifndef GIN_V8_INITIALIZER_H_ #define GIN_V8_INITIALIZER_H_ +#include <stdint.h> + #include "base/files/file.h" #include "base/files/memory_mapped_file.h" #include "gin/array_buffer.h" @@ -18,7 +20,8 @@ namespace gin { class GIN_EXPORT V8Initializer { public: // This should be called by IsolateHolder::Initialize(). - static void Initialize(gin::IsolateHolder::ScriptMode mode); + static void Initialize(IsolateHolder::ScriptMode mode, + IsolateHolder::V8ExtrasMode v8_extras_mode); // Get address and size information for currently loaded snapshot. // If no snapshot is loaded, the return values are null for addresses @@ -35,14 +38,14 @@ class GIN_EXPORT V8Initializer { // of the files to be loaded. Since the VM can boot with or without // the snapshot, this function does not return a status. static void LoadV8SnapshotFromFD(base::PlatformFile snapshot_fd, - int64 snapshot_offset, - int64 snapshot_size); + int64_t snapshot_offset, + int64_t snapshot_size); // Similar to LoadV8SnapshotFromFD, but for the source of the natives. // Without the natives we cannot continue, so this function contains // release mode asserts and won't return if it fails. static void LoadV8NativesFromFD(base::PlatformFile natives_fd, - int64 natives_offset, - int64 natives_size); + int64_t natives_offset, + int64_t natives_size); // Load V8 snapshot from default resources, if they are available. static void LoadV8Snapshot(); diff --git a/chromium/gin/v8_isolate_memory_dump_provider.cc b/chromium/gin/v8_isolate_memory_dump_provider.cc index ecbf5fffabf..ec2e33be0a6 100644 --- a/chromium/gin/v8_isolate_memory_dump_provider.cc +++ b/chromium/gin/v8_isolate_memory_dump_provider.cc @@ -4,6 +4,8 @@ #include "gin/v8_isolate_memory_dump_provider.h" +#include <stddef.h> + #include "base/strings/stringprintf.h" #include "base/thread_task_runner_handle.h" #include "base/trace_event/memory_dump_manager.h" @@ -17,7 +19,7 @@ V8IsolateMemoryDumpProvider::V8IsolateMemoryDumpProvider( IsolateHolder* isolate_holder) : isolate_holder_(isolate_holder) { base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( - this, base::ThreadTaskRunnerHandle::Get()); + this, "V8Isolate", base::ThreadTaskRunnerHandle::Get()); } V8IsolateMemoryDumpProvider::~V8IsolateMemoryDumpProvider() { @@ -103,6 +105,18 @@ void V8IsolateMemoryDumpProvider::DumpHeapStatistics( base::trace_event::MemoryAllocatorDump::kUnitsBytes, heap_statistics.total_heap_size() - known_spaces_size); + // If V8 zaps garbage, all the memory mapped regions become resident, + // so we add an extra dump to avoid mismatches w.r.t. the total + // resident values. + if (heap_statistics.does_zap_garbage()) { + auto zap_dump = process_memory_dump->CreateAllocatorDump( + dump_base_name + "/zapped_for_debug"); + zap_dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, + base::trace_event::MemoryAllocatorDump::kUnitsBytes, + heap_statistics.total_heap_size() - + heap_statistics.total_physical_size()); + } + // If light dump is requested, then object statistics are not dumped if (args.level_of_detail == base::trace_event::MemoryDumpLevelOfDetail::LIGHT) return; diff --git a/chromium/gin/v8_isolate_memory_dump_provider.h b/chromium/gin/v8_isolate_memory_dump_provider.h index 2a2c5dbcdb0..d70b790e0e0 100644 --- a/chromium/gin/v8_isolate_memory_dump_provider.h +++ b/chromium/gin/v8_isolate_memory_dump_provider.h @@ -7,6 +7,7 @@ #include <string> +#include "base/macros.h" #include "base/trace_event/memory_dump_provider.h" #include "gin/gin_export.h" diff --git a/chromium/gin/v8_platform.cc b/chromium/gin/v8_platform.cc index bd32977d651..75129ef7101 100644 --- a/chromium/gin/v8_platform.cc +++ b/chromium/gin/v8_platform.cc @@ -61,4 +61,42 @@ double V8Platform::MonotonicallyIncreasingTime() { static_cast<double>(base::Time::kMicrosecondsPerSecond); } +const uint8_t* V8Platform::GetCategoryGroupEnabled(const char* name) { + return TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(name); +} + +const char* V8Platform::GetCategoryGroupName( + const uint8_t* category_enabled_flag) { + return base::trace_event::TraceLog::GetCategoryGroupName( + category_enabled_flag); +} + +uint64_t V8Platform::AddTraceEvent(char phase, + const uint8_t* category_enabled_flag, + const char* name, + uint64_t id, + uint64_t bind_id, + int32_t num_args, + const char** arg_names, + const uint8_t* arg_types, + const uint64_t* arg_values, + unsigned int flags) { + base::trace_event::TraceEventHandle handle = + TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID( + phase, category_enabled_flag, name, id, bind_id, num_args, arg_names, + arg_types, (const long long unsigned int*)arg_values, NULL, flags); + uint64_t result; + memcpy(&result, &handle, sizeof(result)); + return result; +} + +void V8Platform::UpdateTraceEventDuration(const uint8_t* category_enabled_flag, + const char* name, + uint64_t handle) { + base::trace_event::TraceEventHandle traceEventHandle; + memcpy(&traceEventHandle, &handle, sizeof(handle)); + TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_enabled_flag, name, + traceEventHandle); +} + } // namespace gin diff --git a/chromium/gin/wrappable.h b/chromium/gin/wrappable.h index f7d82b0d5a7..f253fd9566e 100644 --- a/chromium/gin/wrappable.h +++ b/chromium/gin/wrappable.h @@ -5,6 +5,9 @@ #ifndef GIN_WRAPPABLE_H_ #define GIN_WRAPPABLE_H_ +#include <type_traits> + +#include "base/macros.h" #include "base/template_util.h" #include "gin/converter.h" #include "gin/gin_export.h" @@ -101,9 +104,10 @@ class Wrappable : public WrappableBase { // This converter handles any subclass of Wrappable. -template<typename T> -struct Converter<T*, typename base::enable_if< - base::is_convertible<T*, WrappableBase*>::value>::type> { +template <typename T> +struct Converter<T*, + typename std::enable_if< + base::is_convertible<T*, WrappableBase*>::value>::type> { static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, T* val) { return val->GetWrapper(isolate); } diff --git a/chromium/gin/wrappable_unittest.cc b/chromium/gin/wrappable_unittest.cc index 07d4fb30676..e773d2d2839 100644 --- a/chromium/gin/wrappable_unittest.cc +++ b/chromium/gin/wrappable_unittest.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/logging.h" +#include "base/macros.h" #include "gin/arguments.h" #include "gin/handle.h" #include "gin/object_template_builder.h" |