diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 29fd9226dee7b0..cd72bebbd6b12d 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -65,17 +65,9 @@ shell_g !/testing/gtest/include/gtest /testing/gtest/include/gtest/* !/testing/gtest/include/gtest/gtest_prod.h -/third_party -/third_party/android_tools -/third_party/cygwin -/third_party/icu -/third_party/instrumented_libraries -/third_party/inspector_protocol -/third_party/jinga2 -/third_party/llvm -/third_party/llvm-build -/third_party/markupsafe -/third_party/WebKit +/third_party/* +!/third_party/binutils +!/third_party/inspector_protocol /tools/clang /tools/gcmole/gcmole-tools /tools/gcmole/gcmole-tools.tar.gz @@ -109,4 +101,6 @@ v8.ignition_dispatches_table.json /test/fuzzer/wasm.tar.gz /test/fuzzer/wasm_asmjs.tar.gz /src/inspector/build/closure-compiler.tar.gz -/src/inspector/build/closure-compiler \ No newline at end of file +/src/inspector/build/closure-compiler +!/third_party/jinja2 +!/third_party/markupsafe diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 0229c9259e5c73..476d0c36328c18 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -65,6 +65,7 @@ Franziska Hinkelmann Geoffrey Garside Gwang Yoon Hwang Han Choongwoo +Henrique Ferreiro Hirofumi Mako Honggyu Kim Ioseb Dzmanashvili @@ -111,6 +112,7 @@ Robert Mustacchi Robert Nagy Ryan Dahl Sakthipriyan Vairamani (thefourtheye) +Sander Mathijs van Veen Sandro Santilli Sanjoy Das Seo Sanghyeon diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 06870b6039f2b0..8587356ddcca34 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -43,10 +43,6 @@ declare_args() { # Sets -dENABLE_HANDLE_ZAPPING. v8_enable_handle_zapping = is_debug - # Enable ECMAScript Internationalization API. Enabling this feature will - # add a dependency on the ICU library. - v8_enable_i18n_support = true - # Enable slow dchecks. v8_enable_slow_dchecks = false @@ -65,6 +61,9 @@ declare_args() { # Switches off inlining in V8. v8_no_inline = false + # Override OS page size when generating snapshot + v8_os_page_size = "0" + # Similar to vfp but on MIPS. v8_can_use_fpu_instructions = true @@ -128,6 +127,20 @@ config("internal_config_base") { # This config should be applied to code using the libplatform. config("libplatform_config") { include_dirs = [ "include" ] + if (is_component_build) { + defines = [ "USING_V8_PLATFORM_SHARED" ] + } +} + +# This config should be applied to code using the libbase. +config("libbase_config") { + if (is_component_build) { + defines = [ "USING_V8_BASE_SHARED" ] + } + libs = [] + if (is_android && current_toolchain != host_toolchain) { + libs += [ "log" ] + } } # This config should be applied to code using the libsampler. @@ -145,10 +158,6 @@ config("external_config") { if (v8_enable_inspector_override) { include_dirs += [ "$target_gen_dir/include" ] } - libs = [] - if (is_android && current_toolchain != host_toolchain) { - libs += [ "log" ] - } } # This config should only be applied to code that needs to be explicitly @@ -361,6 +370,20 @@ config("toolchain") { "-fno-inline", ] } + + if (is_clang) { + cflags += [ + "-Wsign-compare", + + # TODO(hans): Remove once http://crbug.com/428099 is resolved. + "-Winconsistent-missing-override", + ] + + if (v8_current_cpu == "x64" || v8_current_cpu == "arm64" || + v8_current_cpu == "mips64el") { + cflags += [ "-Wshorten-64-to-32" ] + } + } } ############################################################################### @@ -388,8 +411,6 @@ action("js2c") { "src/js/symbol.js", "src/js/array.js", "src/js/string.js", - "src/js/math.js", - "src/js/regexp.js", "src/js/arraybuffer.js", "src/js/typedarray.js", "src/js/collection.js", @@ -397,7 +418,6 @@ action("js2c") { "src/js/collection-iterator.js", "src/js/promise.js", "src/js/messages.js", - "src/js/array-iterator.js", "src/js/templates.js", "src/js/spread.js", "src/js/proxy.js", @@ -662,6 +682,13 @@ action("run_mksnapshot") { ] } + if (v8_os_page_size != "0") { + args += [ + "--v8_os_page_size", + v8_os_page_size, + ] + } + if (v8_use_external_startup_data) { outputs += [ "$root_out_dir/snapshot_blob.bin" ] args += [ @@ -715,6 +742,7 @@ action("v8_dump_build_config") { "is_tsan=$is_tsan", "target_cpu=\"$target_cpu\"", "v8_enable_i18n_support=$v8_enable_i18n_support", + "v8_enable_inspector=$v8_enable_inspector_override", "v8_target_cpu=\"$v8_target_cpu\"", "v8_use_snapshot=$v8_use_snapshot", ] @@ -863,6 +891,8 @@ v8_source_set("v8_base") { "src/asmjs/asm-types.h", "src/asmjs/asm-wasm-builder.cc", "src/asmjs/asm-wasm-builder.h", + "src/asmjs/switch-logic.cc", + "src/asmjs/switch-logic.h", "src/assembler.cc", "src/assembler.h", "src/assert-scope.cc", @@ -930,6 +960,7 @@ v8_source_set("v8_base") { "src/builtins/builtins-math.cc", "src/builtins/builtins-number.cc", "src/builtins/builtins-object.cc", + "src/builtins/builtins-promise.cc", "src/builtins/builtins-proxy.cc", "src/builtins/builtins-reflect.cc", "src/builtins/builtins-regexp.cc", @@ -969,6 +1000,8 @@ v8_source_set("v8_base") { "src/compilation-statistics.h", "src/compiler-dispatcher/compiler-dispatcher-job.cc", "src/compiler-dispatcher/compiler-dispatcher-job.h", + "src/compiler-dispatcher/compiler-dispatcher-tracer.cc", + "src/compiler-dispatcher/compiler-dispatcher-tracer.h", "src/compiler-dispatcher/optimizing-compile-dispatcher.cc", "src/compiler-dispatcher/optimizing-compile-dispatcher.h", "src/compiler.cc", @@ -1007,6 +1040,8 @@ v8_source_set("v8_base") { "src/compiler/common-operator-reducer.h", "src/compiler/common-operator.cc", "src/compiler/common-operator.h", + "src/compiler/compiler-source-position-table.cc", + "src/compiler/compiler-source-position-table.h", "src/compiler/control-builders.cc", "src/compiler/control-builders.h", "src/compiler/control-equivalence.cc", @@ -1145,14 +1180,14 @@ v8_source_set("v8_base") { "src/compiler/scheduler.h", "src/compiler/select-lowering.cc", "src/compiler/select-lowering.h", + "src/compiler/simd-scalar-lowering.cc", + "src/compiler/simd-scalar-lowering.h", "src/compiler/simplified-lowering.cc", "src/compiler/simplified-lowering.h", "src/compiler/simplified-operator-reducer.cc", "src/compiler/simplified-operator-reducer.h", "src/compiler/simplified-operator.cc", "src/compiler/simplified-operator.h", - "src/compiler/source-position.cc", - "src/compiler/source-position.h", "src/compiler/state-values-utils.cc", "src/compiler/state-values-utils.h", "src/compiler/store-store-elimination.cc", @@ -1177,8 +1212,8 @@ v8_source_set("v8_base") { "src/compiler/wasm-compiler.cc", "src/compiler/wasm-compiler.h", "src/compiler/wasm-linkage.cc", - "src/compiler/zone-pool.cc", - "src/compiler/zone-pool.h", + "src/compiler/zone-stats.cc", + "src/compiler/zone-stats.h", "src/context-measure.cc", "src/context-measure.h", "src/contexts-inl.h", @@ -1218,8 +1253,6 @@ v8_source_set("v8_base") { "src/crankshaft/hydrogen-instructions.h", "src/crankshaft/hydrogen-load-elimination.cc", "src/crankshaft/hydrogen-load-elimination.h", - "src/crankshaft/hydrogen-mark-deoptimize.cc", - "src/crankshaft/hydrogen-mark-deoptimize.h", "src/crankshaft/hydrogen-mark-unreachable.cc", "src/crankshaft/hydrogen-mark-unreachable.h", "src/crankshaft/hydrogen-osr.cc", @@ -1262,6 +1295,7 @@ v8_source_set("v8_base") { "src/debug/debug-evaluate.h", "src/debug/debug-frames.cc", "src/debug/debug-frames.h", + "src/debug/debug-interface.h", "src/debug/debug-scopes.cc", "src/debug/debug-scopes.h", "src/debug/debug.cc", @@ -1363,7 +1397,6 @@ v8_source_set("v8_base") { "src/heap/objects-visiting.cc", "src/heap/objects-visiting.h", "src/heap/page-parallel-job.h", - "src/heap/remembered-set.cc", "src/heap/remembered-set.h", "src/heap/scavenge-job.cc", "src/heap/scavenge-job.h", @@ -1378,12 +1411,14 @@ v8_source_set("v8_base") { "src/heap/store-buffer.h", "src/i18n.cc", "src/i18n.h", + "src/ic/access-compiler-data.h", "src/ic/access-compiler.cc", "src/ic/access-compiler.h", "src/ic/call-optimization.cc", "src/ic/call-optimization.h", "src/ic/handler-compiler.cc", "src/ic/handler-compiler.h", + "src/ic/handler-configuration-inl.h", "src/ic/handler-configuration.h", "src/ic/ic-compiler.cc", "src/ic/ic-compiler.h", @@ -1392,6 +1427,8 @@ v8_source_set("v8_base") { "src/ic/ic-state.h", "src/ic/ic.cc", "src/ic/ic.h", + "src/ic/keyed-store-generic.cc", + "src/ic/keyed-store-generic.h", "src/ic/stub-cache.cc", "src/ic/stub-cache.h", "src/icu_util.cc", @@ -1541,6 +1578,8 @@ v8_source_set("v8_base") { "src/profiler/tracing-cpu-profiler.h", "src/profiler/unbound-queue-inl.h", "src/profiler/unbound-queue.h", + "src/promise-utils.cc", + "src/promise-utils.h", "src/property-descriptor.cc", "src/property-descriptor.h", "src/property-details.h", @@ -1566,6 +1605,8 @@ v8_source_set("v8_base") { "src/regexp/regexp-parser.h", "src/regexp/regexp-stack.cc", "src/regexp/regexp-stack.h", + "src/regexp/regexp-utils.cc", + "src/regexp/regexp-utils.h", "src/register-configuration.cc", "src/register-configuration.h", "src/runtime-profiler.cc", @@ -1588,9 +1629,11 @@ v8_source_set("v8_base") { "src/runtime/runtime-literals.cc", "src/runtime/runtime-liveedit.cc", "src/runtime/runtime-maths.cc", + "src/runtime/runtime-module.cc", "src/runtime/runtime-numbers.cc", "src/runtime/runtime-object.cc", "src/runtime/runtime-operators.cc", + "src/runtime/runtime-promise.cc", "src/runtime/runtime-proxy.cc", "src/runtime/runtime-regexp.cc", "src/runtime/runtime-scopes.cc", @@ -1628,6 +1671,7 @@ v8_source_set("v8_base") { "src/snapshot/startup-serializer.h", "src/source-position-table.cc", "src/source-position-table.h", + "src/source-position.cc", "src/source-position.h", "src/splay-tree-inl.h", "src/splay-tree.h", @@ -1642,6 +1686,10 @@ v8_source_set("v8_base") { "src/strtod.h", "src/tracing/trace-event.cc", "src/tracing/trace-event.h", + "src/tracing/traced-value.cc", + "src/tracing/traced-value.h", + "src/tracing/tracing-category-observer.cc", + "src/tracing/tracing-category-observer.h", "src/transitions-inl.h", "src/transitions.cc", "src/transitions.h", @@ -1680,16 +1728,14 @@ v8_source_set("v8_base") { "src/wasm/ast-decoder.h", "src/wasm/decoder.h", "src/wasm/leb-helper.h", + "src/wasm/managed.h", "src/wasm/module-decoder.cc", "src/wasm/module-decoder.h", - "src/wasm/switch-logic.cc", - "src/wasm/switch-logic.h", + "src/wasm/signature-map.cc", + "src/wasm/signature-map.h", "src/wasm/wasm-debug.cc", - "src/wasm/wasm-debug.h", "src/wasm/wasm-external-refs.cc", "src/wasm/wasm-external-refs.h", - "src/wasm/wasm-function-name-table.cc", - "src/wasm/wasm-function-name-table.h", "src/wasm/wasm-interpreter.cc", "src/wasm/wasm-interpreter.h", "src/wasm/wasm-js.cc", @@ -1699,6 +1745,8 @@ v8_source_set("v8_base") { "src/wasm/wasm-module-builder.h", "src/wasm/wasm-module.cc", "src/wasm/wasm-module.h", + "src/wasm/wasm-objects.cc", + "src/wasm/wasm-objects.h", "src/wasm/wasm-opcodes.cc", "src/wasm/wasm-opcodes.h", "src/wasm/wasm-result.cc", @@ -1707,6 +1755,7 @@ v8_source_set("v8_base") { "src/zone/accounting-allocator.h", "src/zone/zone-allocator.h", "src/zone/zone-allocator.h", + "src/zone/zone-chunk-list.h", "src/zone/zone-containers.h", "src/zone/zone-segment.cc", "src/zone/zone-segment.h", @@ -2152,24 +2201,15 @@ v8_source_set("v8_base") { } } -v8_source_set("v8_libbase") { - visibility = [ ":*" ] # Only targets in this file can depend on this. - +v8_component("v8_libbase") { sources = [ "src/base/adapters.h", "src/base/atomic-utils.h", "src/base/atomicops.h", - "src/base/atomicops_internals_arm64_gcc.h", - "src/base/atomicops_internals_arm_gcc.h", "src/base/atomicops_internals_atomicword_compat.h", - "src/base/atomicops_internals_mac.h", - "src/base/atomicops_internals_mips64_gcc.h", - "src/base/atomicops_internals_mips_gcc.h", - "src/base/atomicops_internals_s390_gcc.h", - "src/base/atomicops_internals_tsan.h", - "src/base/atomicops_internals_x86_gcc.cc", - "src/base/atomicops_internals_x86_gcc.h", + "src/base/atomicops_internals_portable.h", "src/base/atomicops_internals_x86_msvc.h", + "src/base/base-export.h", "src/base/bits.cc", "src/base/bits.h", "src/base/build_config.h", @@ -2208,6 +2248,7 @@ v8_source_set("v8_libbase") { "src/base/platform/semaphore.h", "src/base/platform/time.cc", "src/base/platform/time.h", + "src/base/ring-buffer.h", "src/base/safe_conversions.h", "src/base/safe_conversions_impl.h", "src/base/safe_math.h", @@ -2220,8 +2261,14 @@ v8_source_set("v8_libbase") { configs = [ ":internal_config_base" ] + public_configs = [ ":libbase_config" ] + defines = [] + if (is_component_build) { + defines = [ "BUILDING_V8_BASE_SHARED" ] + } + if (is_posix) { sources += [ "src/base/platform/platform-posix.cc" ] } @@ -2285,9 +2332,10 @@ v8_source_set("v8_libbase") { # TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris. } -v8_source_set("v8_libplatform") { +v8_component("v8_libplatform") { sources = [ "//base/trace_event/common/trace_event_common.h", + "include/libplatform/libplatform-export.h", "include/libplatform/libplatform.h", "include/libplatform/v8-tracing.h", "src/libplatform/default-platform.cc", @@ -2307,6 +2355,10 @@ v8_source_set("v8_libplatform") { configs = [ ":internal_config_base" ] + if (is_component_build) { + defines = [ "BUILDING_V8_PLATFORM_SHARED" ] + } + public_configs = [ ":libplatform_config" ] deps = [ @@ -2344,27 +2396,7 @@ v8_source_set("fuzzer_support") { ] public_deps = [ - ":v8_libplatform", - ] -} - -# Used by fuzzers that would require exposing too many symbols for a proper -# component build. -v8_source_set("fuzzer_support_nocomponent") { - visibility = [ ":*" ] # Only targets in this file can depend on this. - - sources = [ - "test/fuzzer/fuzzer-support.cc", - "test/fuzzer/fuzzer-support.h", - ] - - configs = [ ":internal_config_base" ] - - deps = [ - ":v8_maybe_snapshot", - ] - - public_deps = [ + ":v8_libbase", ":v8_libplatform", ] } @@ -2393,6 +2425,7 @@ if (current_toolchain == v8_snapshot_toolchain) { deps = [ ":v8_base", + ":v8_libbase", ":v8_libplatform", ":v8_nosnapshot", "//build/config/sanitizers:deps", @@ -2515,6 +2548,7 @@ v8_executable("d8") { deps = [ ":d8_js2c", ":v8", + ":v8_libbase", ":v8_libplatform", "//build/config/sanitizers:deps", "//build/win:default_exe_manifest", @@ -2531,6 +2565,11 @@ v8_executable("d8") { if (v8_enable_i18n_support) { deps += [ "//third_party/icu" ] } + + defines = [] + if (v8_enable_inspector_override) { + defines += [ "V8_INSPECTOR_ENABLED" ] + } } v8_isolate_run("d8") { @@ -2555,6 +2594,7 @@ v8_executable("v8_hello_world") { deps = [ ":v8", + ":v8_libbase", ":v8_libplatform", "//build/config/sanitizers:deps", "//build/win:default_exe_manifest", @@ -2579,6 +2619,7 @@ v8_executable("v8_sample_process") { deps = [ ":v8", + ":v8_libbase", ":v8_libplatform", "//build/config/sanitizers:deps", "//build/win:default_exe_manifest", @@ -2601,32 +2642,16 @@ v8_executable("v8_parser_shell") { ] deps = [ + ":v8", + ":v8_libbase", ":v8_libplatform", "//build/config/sanitizers:deps", "//build/win:default_exe_manifest", ] - if (is_component_build) { - # v8_parser_shell can't be built against a shared library, so we - # need to depend on the underlying static target in that case. - deps += [ ":v8_maybe_snapshot" ] - } else { - deps += [ ":v8" ] - } - if (v8_enable_i18n_support) { deps += [ "//third_party/icu" ] } - - if (is_win) { - # Suppress warnings about importing locally defined symbols. - if (is_component_build) { - ldflags = [ - "/ignore:4049", - "/ignore:4217", - ] - } - } } if (want_v8_shell) { @@ -2644,6 +2669,7 @@ if (want_v8_shell) { deps = [ ":v8", + ":v8_libbase", ":v8_libplatform", "//build/config/sanitizers:deps", "//build/win:default_exe_manifest", @@ -2693,7 +2719,7 @@ v8_source_set("parser_fuzzer") { ] deps = [ - ":fuzzer_support_nocomponent", + ":fuzzer_support", ] configs = [ @@ -2804,6 +2830,26 @@ v8_source_set("wasm_code_fuzzer") { v8_fuzzer("wasm_code_fuzzer") { } +v8_source_set("wasm_call_fuzzer") { + sources = [ + "test/fuzzer/wasm-call.cc", + ] + + deps = [ + ":fuzzer_support", + ":wasm_module_runner", + ":wasm_test_signatures", + ] + + configs = [ + ":external_config", + ":internal_config_base", + ] +} + +v8_fuzzer("wasm_call_fuzzer") { +} + v8_source_set("lib_wasm_section_fuzzer") { sources = [ "test/fuzzer/wasm-section-fuzzers.cc", diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index 40c8537022d79d..2dc77568d4c9a3 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,1690 @@ +2016-11-15: Version 5.6.326 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.325 + + [wasm] Be more lenient on the names section (issue 5632). + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.324 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.323 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.322 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.321 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.320 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.319 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.318 + + Performance and stability improvements on all platforms. + + +2016-11-15: Version 5.6.317 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.316 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.315 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.314 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.313 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.312 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.311 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.310 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.309 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.308 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.307 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.306 + + Performance and stability improvements on all platforms. + + +2016-11-14: Version 5.6.305 + + Performance and stability improvements on all platforms. + + +2016-11-12: Version 5.6.304 + + Performance and stability improvements on all platforms. + + +2016-11-12: Version 5.6.303 + + Performance and stability improvements on all platforms. + + +2016-11-12: Version 5.6.302 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.301 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.300 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.299 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.298 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.297 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.296 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.295 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.294 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.293 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.292 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.291 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.290 + + Performance and stability improvements on all platforms. + + +2016-11-11: Version 5.6.289 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.288 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.287 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.286 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.285 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.284 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.283 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.282 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.281 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.280 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.279 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.278 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.277 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.276 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.275 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.274 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.273 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.272 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.271 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.270 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.269 + + Performance and stability improvements on all platforms. + + +2016-11-10: Version 5.6.268 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.267 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.266 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.265 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.264 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.263 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.262 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.261 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.260 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.259 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.258 + + Performance and stability improvements on all platforms. + + +2016-11-09: Version 5.6.257 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.256 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.255 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.254 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.253 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.252 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.251 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.250 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.249 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.248 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.247 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.246 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.245 + + Performance and stability improvements on all platforms. + + +2016-11-08: Version 5.6.244 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.243 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.242 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.241 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.240 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.239 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.238 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.237 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.236 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.235 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.234 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.233 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.232 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.231 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.230 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.229 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.228 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.227 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.226 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.225 + + Performance and stability improvements on all platforms. + + +2016-11-07: Version 5.6.224 + + Performance and stability improvements on all platforms. + + +2016-11-06: Version 5.6.223 + + Performance and stability improvements on all platforms. + + +2016-11-05: Version 5.6.222 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.221 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.220 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.219 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.218 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.217 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.216 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.215 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.214 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.213 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.212 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.211 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.210 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.209 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.208 + + Performance and stability improvements on all platforms. + + +2016-11-04: Version 5.6.207 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.206 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.205 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.204 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.203 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.202 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.201 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.200 + + Performance and stability improvements on all platforms. + + +2016-11-03: Version 5.6.199 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.198 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.197 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.196 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.195 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.194 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.193 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.192 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.191 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.190 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.189 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.188 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.187 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.186 + + Performance and stability improvements on all platforms. + + +2016-11-02: Version 5.6.185 + + Performance and stability improvements on all platforms. + + +2016-10-31: Version 5.6.184 + + Performance and stability improvements on all platforms. + + +2016-10-31: Version 5.6.183 + + Performance and stability improvements on all platforms. + + +2016-10-31: Version 5.6.182 + + Performance and stability improvements on all platforms. + + +2016-10-31: Version 5.6.181 + + Performance and stability improvements on all platforms. + + +2016-10-31: Version 5.6.180 + + Performance and stability improvements on all platforms. + + +2016-10-31: Version 5.6.179 + + Performance and stability improvements on all platforms. + + +2016-10-29: Version 5.6.178 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.177 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.176 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.175 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.174 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.173 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.172 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.171 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.170 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.169 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.168 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.167 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.166 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.165 + + Performance and stability improvements on all platforms. + + +2016-10-28: Version 5.6.164 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.163 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.162 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.161 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.160 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.159 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.158 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.157 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.156 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.155 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.154 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.153 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.152 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.151 + + Performance and stability improvements on all platforms. + + +2016-10-27: Version 5.6.150 + + Performance and stability improvements on all platforms. + + +2016-10-26: Version 5.6.149 + + Performance and stability improvements on all platforms. + + +2016-10-25: Version 5.6.148 + + Performance and stability improvements on all platforms. + + +2016-10-25: Version 5.6.147 + + Performance and stability improvements on all platforms. + + +2016-10-25: Version 5.6.146 + + Performance and stability improvements on all platforms. + + +2016-10-25: Version 5.6.145 + + Performance and stability improvements on all platforms. + + +2016-10-25: Version 5.6.144 + + Performance and stability improvements on all platforms. + + +2016-10-25: Version 5.6.143 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.142 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.141 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.140 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.139 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.138 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.137 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.136 + + Performance and stability improvements on all platforms. + + +2016-10-24: Version 5.6.135 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.134 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.133 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.132 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.131 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.130 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.129 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.128 + + Performance and stability improvements on all platforms. + + +2016-10-21: Version 5.6.127 + + Performance and stability improvements on all platforms. + + +2016-10-20: Version 5.6.126 + + Performance and stability improvements on all platforms. + + +2016-10-20: Version 5.6.125 + + Performance and stability improvements on all platforms. + + +2016-10-20: Version 5.6.124 + + Performance and stability improvements on all platforms. + + +2016-10-20: Version 5.6.123 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.122 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.121 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.120 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.119 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.118 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.117 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.116 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.115 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.114 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.113 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.112 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.111 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.110 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.109 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.108 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.107 + + Performance and stability improvements on all platforms. + + +2016-10-19: Version 5.6.106 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.105 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.104 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.103 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.102 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.101 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.100 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.99 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.98 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.97 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.96 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.95 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.94 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.93 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.92 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.91 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.90 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.89 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.88 + + Performance and stability improvements on all platforms. + + +2016-10-18: Version 5.6.87 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.86 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.85 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.84 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.83 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.82 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.81 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.80 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.79 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.78 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.77 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.76 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.75 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.74 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.73 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.72 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.71 + + Performance and stability improvements on all platforms. + + +2016-10-17: Version 5.6.70 + + Performance and stability improvements on all platforms. + + +2016-10-16: Version 5.6.69 + + Performance and stability improvements on all platforms. + + +2016-10-16: Version 5.6.68 + + Performance and stability improvements on all platforms. + + +2016-10-15: Version 5.6.67 + + Performance and stability improvements on all platforms. + + +2016-10-15: Version 5.6.66 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.65 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.64 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.63 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.62 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.61 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.60 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.59 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.58 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.57 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.56 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.55 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.54 + + Performance and stability improvements on all platforms. + + +2016-10-14: Version 5.6.53 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.52 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.51 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.50 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.49 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.48 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.47 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.46 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.45 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.44 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.43 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.42 + + Performance and stability improvements on all platforms. + + +2016-10-13: Version 5.6.41 + + Performance and stability improvements on all platforms. + + +2016-10-12: Version 5.6.40 + + Performance and stability improvements on all platforms. + + +2016-10-12: Version 5.6.39 + + Performance and stability improvements on all platforms. + + +2016-10-12: Version 5.6.38 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.37 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.36 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.35 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.34 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.33 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.32 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.31 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.30 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.29 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.28 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.27 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.26 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.25 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.24 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.23 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.22 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.21 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.20 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.19 + + Performance and stability improvements on all platforms. + + +2016-10-11: Version 5.6.18 + + Performance and stability improvements on all platforms. + + +2016-10-10: Version 5.6.17 + + Performance and stability improvements on all platforms. + + +2016-10-10: Version 5.6.16 + + Performance and stability improvements on all platforms. + + +2016-10-10: Version 5.6.15 + + Performance and stability improvements on all platforms. + + +2016-10-10: Version 5.6.14 + + Performance and stability improvements on all platforms. + + +2016-10-10: Version 5.6.13 + + Performance and stability improvements on all platforms. + + +2016-10-09: Version 5.6.12 + + Performance and stability improvements on all platforms. + + +2016-10-08: Version 5.6.11 + + Performance and stability improvements on all platforms. + + +2016-10-08: Version 5.6.10 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.9 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.8 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.7 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.6 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.5 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.4 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.3 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.2 + + Performance and stability improvements on all platforms. + + +2016-10-07: Version 5.6.1 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.383 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.382 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.381 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.380 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.379 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.378 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.377 + + Performance and stability improvements on all platforms. + + +2016-10-06: Version 5.5.376 + + Performance and stability improvements on all platforms. + + +2016-10-05: Version 5.5.375 + + Performance and stability improvements on all platforms. + + +2016-10-05: Version 5.5.374 + + Performance and stability improvements on all platforms. + + +2016-10-05: Version 5.5.373 + + Performance and stability improvements on all platforms. + + 2016-10-05: Version 5.5.372 Performance and stability improvements on all platforms. diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 058cd8bea632e2..161015d661a8d1 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -8,19 +8,17 @@ vars = { deps = { "v8/build": - Var("chromium_url") + "/chromium/src/build.git" + "@" + "475d5b37ded6589c9f8a0d19ced54ddf2e6d14a0", + Var("chromium_url") + "/chromium/src/build.git" + "@" + "a3b623a6eff6dc9d58a03251ae22bccf92f67cb2", "v8/tools/gyp": Var("chromium_url") + "/external/gyp.git" + "@" + "e7079f0e0e14108ab0dba58728ff219637458563", "v8/third_party/icu": - Var("chromium_url") + "/chromium/deps/icu.git" + "@" + "b0bd3ee50bc2e768d7a17cbc60d87f517f024dbe", + Var("chromium_url") + "/chromium/deps/icu.git" + "@" + "c1a237113f525a1561d4b322d7653e1083f79aaa", "v8/third_party/instrumented_libraries": Var("chromium_url") + "/chromium/src/third_party/instrumented_libraries.git" + "@" + "45f5814b1543e41ea0be54c771e3840ea52cca4a", "v8/buildtools": - Var("chromium_url") + "/chromium/buildtools.git" + "@" + "5fd66957f08bb752dca714a591c84587c9d70762", + Var("chromium_url") + "/chromium/buildtools.git" + "@" + "39b1db2ab4aa4b2ccaa263c29bdf63e7c1ee28aa", "v8/base/trace_event/common": - Var("chromium_url") + "/chromium/src/base/trace_event/common.git" + "@" + "e0fa02a02f61430dae2bddfd89a334ea4389f495", - "v8/third_party/WebKit/Source/platform/inspector_protocol": - Var("chromium_url") + "/chromium/src/third_party/WebKit/Source/platform/inspector_protocol.git" + "@" + "3280c57c4c575ce82ccd13e4a403492fb4ca624b", + Var("chromium_url") + "/chromium/src/base/trace_event/common.git" + "@" + "06294c8a4a6f744ef284cd63cfe54dbf61eea290", "v8/third_party/jinja2": Var("chromium_url") + "/chromium/src/third_party/jinja2.git" + "@" + "b61a2c009a579593a259c1b300e0ad02bf48fd78", "v8/third_party/markupsafe": @@ -37,17 +35,19 @@ deps = { Var("chromium_url") + "/v8/deps/third_party/mozilla-tests.git" + "@" + "f6c578a10ea707b1a8ab0b88943fe5115ce2b9be", "v8/test/simdjs/data": Var("chromium_url") + "/external/github.com/tc39/ecmascript_simd.git" + "@" + "baf493985cb9ea7cdbd0d68704860a8156de9556", "v8/test/test262/data": - Var("chromium_url") + "/external/github.com/tc39/test262.git" + "@" + "29c23844494a7cc2fbebc6948d2cb0bcaddb24e7", + Var("chromium_url") + "/external/github.com/tc39/test262.git" + "@" + "fb61ab44eb1bbc2699d714fc00e33af2a19411ce", "v8/test/test262/harness": Var("chromium_url") + "/external/github.com/test262-utils/test262-harness-py.git" + "@" + "cbd968f54f7a95c6556d53ba852292a4c49d11d8", "v8/tools/clang": - Var("chromium_url") + "/chromium/src/tools/clang.git" + "@" + "1f92f999fc374a479e98a189ebdfe25c09484486", + Var("chromium_url") + "/chromium/src/tools/clang.git" + "@" + "75350a858c51ad69e2aae051a8727534542da29f", } deps_os = { "android": { "v8/third_party/android_tools": Var("chromium_url") + "/android_tools.git" + "@" + "25d57ead05d3dfef26e9c19b13ed10b0a69829cf", + "v8/third_party/catapult": + Var('chromium_url') + "/external/github.com/catapult-project/catapult.git" + "@" + "6962f5c0344a79b152bf84460a93e1b2e11ea0f4", }, "win": { "v8/third_party/cygwin": diff --git a/deps/v8/Makefile b/deps/v8/Makefile index a6d4d135da3da1..6eeac09a14875b 100644 --- a/deps/v8/Makefile +++ b/deps/v8/Makefile @@ -163,6 +163,14 @@ endif ifeq ($(goma), on) GYPFLAGS += -Duse_goma=1 endif +# v8_os_page_size=0, when 0 or not specified use build OS page size +ifdef v8_os_page_size + ifneq ($(v8_os_page_size), 0) + ifneq ($(snapshot), off) + GYPFLAGS += -Dv8_os_page_size=$(v8_os_page_size) + endif + endif +endif # arm specific flags. # arm_version= ifneq ($(strip $(arm_version)),) diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 78e7482efbab5d..ad218330b180a4 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -67,7 +67,6 @@ def _V8PresubmitChecks(input_api, output_api): input_api.PresubmitLocalPath(), 'tools')) from presubmit import CppLintProcessor from presubmit import SourceProcessor - from presubmit import CheckExternalReferenceRegistration from presubmit import CheckAuthorizedAuthor from presubmit import CheckStatusFiles @@ -78,9 +77,6 @@ def _V8PresubmitChecks(input_api, output_api): results.append(output_api.PresubmitError( "Copyright header, trailing whitespaces and two empty lines " \ "between declarations check failed")) - if not CheckExternalReferenceRegistration(input_api.PresubmitLocalPath()): - results.append(output_api.PresubmitError( - "External references registration check failed")) if not CheckStatusFiles(input_api.PresubmitLocalPath()): results.append(output_api.PresubmitError("Status file check failed")) results.extend(CheckAuthorizedAuthor(input_api, output_api)) diff --git a/deps/v8/base/trace_event/common/trace_event_common.h b/deps/v8/base/trace_event/common/trace_event_common.h index 0db92692a0fe2a..e87665b8cdb12b 100644 --- a/deps/v8/base/trace_event/common/trace_event_common.h +++ b/deps/v8/base/trace_event/common/trace_event_common.h @@ -223,49 +223,6 @@ flow_flags, arg1_name, arg1_val, \ arg2_name, arg2_val) -// UNSHIPPED_TRACE_EVENT* are like TRACE_EVENT* except that they are not -// included in official builds. - -#if OFFICIAL_BUILD -#undef TRACING_IS_OFFICIAL_BUILD -#define TRACING_IS_OFFICIAL_BUILD 1 -#elif !defined(TRACING_IS_OFFICIAL_BUILD) -#define TRACING_IS_OFFICIAL_BUILD 0 -#endif - -#if TRACING_IS_OFFICIAL_BUILD -#define UNSHIPPED_TRACE_EVENT0(category_group, name) (void)0 -#define UNSHIPPED_TRACE_EVENT1(category_group, name, arg1_name, arg1_val) \ - (void)0 -#define UNSHIPPED_TRACE_EVENT2(category_group, name, arg1_name, arg1_val, \ - arg2_name, arg2_val) \ - (void)0 -#define UNSHIPPED_TRACE_EVENT_INSTANT0(category_group, name, scope) (void)0 -#define UNSHIPPED_TRACE_EVENT_INSTANT1(category_group, name, scope, arg1_name, \ - arg1_val) \ - (void)0 -#define UNSHIPPED_TRACE_EVENT_INSTANT2(category_group, name, scope, arg1_name, \ - arg1_val, arg2_name, arg2_val) \ - (void)0 -#else -#define UNSHIPPED_TRACE_EVENT0(category_group, name) \ - TRACE_EVENT0(category_group, name) -#define UNSHIPPED_TRACE_EVENT1(category_group, name, arg1_name, arg1_val) \ - TRACE_EVENT1(category_group, name, arg1_name, arg1_val) -#define UNSHIPPED_TRACE_EVENT2(category_group, name, arg1_name, arg1_val, \ - arg2_name, arg2_val) \ - TRACE_EVENT2(category_group, name, arg1_name, arg1_val, arg2_name, arg2_val) -#define UNSHIPPED_TRACE_EVENT_INSTANT0(category_group, name, scope) \ - TRACE_EVENT_INSTANT0(category_group, name, scope) -#define UNSHIPPED_TRACE_EVENT_INSTANT1(category_group, name, scope, arg1_name, \ - arg1_val) \ - TRACE_EVENT_INSTANT1(category_group, name, scope, arg1_name, arg1_val) -#define UNSHIPPED_TRACE_EVENT_INSTANT2(category_group, name, scope, arg1_name, \ - arg1_val, arg2_name, arg2_val) \ - TRACE_EVENT_INSTANT2(category_group, name, scope, arg1_name, arg1_val, \ - arg2_name, arg2_val) -#endif - // Records a single event called "name" immediately, with 0, 1 or 2 // associated arguments. If the category is not enabled, then this // does nothing. @@ -301,16 +258,6 @@ TRACE_EVENT_PHASE_INSTANT, category_group, name, timestamp, \ TRACE_EVENT_FLAG_NONE | scope) -// Syntactic sugars for the sampling tracing in the main thread. -#define TRACE_EVENT_SCOPED_SAMPLING_STATE(category, name) \ - TRACE_EVENT_SCOPED_SAMPLING_STATE_FOR_BUCKET(0, category, name) -#define TRACE_EVENT_GET_SAMPLING_STATE() \ - TRACE_EVENT_GET_SAMPLING_STATE_FOR_BUCKET(0) -#define TRACE_EVENT_SET_SAMPLING_STATE(category, name) \ - TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(0, category, name) -#define TRACE_EVENT_SET_NONCONST_SAMPLING_STATE(category_and_name) \ - TRACE_EVENT_SET_NONCONST_SAMPLING_STATE_FOR_BUCKET(0, category_and_name) - // Records a single BEGIN event called "name" immediately, with 0, 1 or 2 // associated arguments. If the category is not enabled, then this // does nothing. @@ -1006,15 +953,15 @@ INTERNAL_TRACE_EVENT_SCOPED_CONTEXT(category_group, name, context) // Macro to specify that two trace IDs are identical. For example, -// TRACE_BIND_IDS( +// TRACE_LINK_IDS( // "category", "name", // TRACE_ID_WITH_SCOPE("net::URLRequest", 0x1000), // TRACE_ID_WITH_SCOPE("blink::ResourceFetcher::FetchRequest", 0x2000)) // tells the trace consumer that events with ID ("net::URLRequest", 0x1000) from // the current process have the same ID as events with ID // ("blink::ResourceFetcher::FetchRequest", 0x2000). -#define TRACE_BIND_IDS(category_group, name, id, bind_id) \ - INTERNAL_TRACE_EVENT_ADD_BIND_IDS(category_group, name, id, bind_id); +#define TRACE_LINK_IDS(category_group, name, id, linked_id) \ + INTERNAL_TRACE_EVENT_ADD_LINK_IDS(category_group, name, id, linked_id); // Macro to efficiently determine if a given category group is enabled. #define TRACE_EVENT_CATEGORY_GROUP_ENABLED(category_group, ret) \ @@ -1081,7 +1028,7 @@ #define TRACE_EVENT_PHASE_CLOCK_SYNC ('c') #define TRACE_EVENT_PHASE_ENTER_CONTEXT ('(') #define TRACE_EVENT_PHASE_LEAVE_CONTEXT (')') -#define TRACE_EVENT_PHASE_BIND_IDS ('=') +#define TRACE_EVENT_PHASE_LINK_IDS ('=') // Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT. #define TRACE_EVENT_FLAG_NONE (static_cast(0)) diff --git a/deps/v8/build_overrides/v8.gni b/deps/v8/build_overrides/v8.gni index 09ea4570b02032..df8320d5d1746d 100644 --- a/deps/v8/build_overrides/v8.gni +++ b/deps/v8/build_overrides/v8.gni @@ -26,7 +26,7 @@ v8_experimental_extra_library_files = declare_args() { # Enable inspector. See include/v8-inspector.h. - v8_enable_inspector = false + v8_enable_inspector = true } v8_enable_inspector_override = v8_enable_inspector diff --git a/deps/v8/gni/isolate.gni b/deps/v8/gni/isolate.gni index 93c828d2cdf0fb..1cc3a38770439f 100644 --- a/deps/v8/gni/isolate.gni +++ b/deps/v8/gni/isolate.gni @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/sanitizers/sanitizers.gni") +import("//build_overrides/v8.gni") import("//third_party/icu/config.gni") import("v8.gni") @@ -12,11 +13,21 @@ declare_args() { } template("v8_isolate_run") { + forward_variables_from(invoker, + "*", + [ + "deps", + "isolate", + ]) + # Remember target name as within the action scope the target name will be # different. name = target_name - if (name != "" && invoker.isolate != "" && invoker.deps != [] && - v8_test_isolation_mode != "noop") { + + assert(defined(invoker.deps)) + assert(defined(invoker.isolate)) + + if (name != "" && v8_test_isolation_mode != "noop") { action(name + "_run") { testonly = true @@ -86,6 +97,11 @@ template("v8_isolate_run") { } else { icu_use_data_file_flag = "0" } + if (v8_enable_inspector_override) { + enable_inspector = "1" + } else { + enable_inspector = "0" + } if (v8_use_external_startup_data) { use_external_startup_data = "1" } else { @@ -107,7 +123,6 @@ template("v8_isolate_run") { gcmole = "0" } - # Note, all paths will be rebased in isolate_driver.py to be relative to # the isolate file. args = [ @@ -142,6 +157,8 @@ template("v8_isolate_run") { "--config-variable", "icu_use_data_file_flag=$icu_use_data_file_flag", "--config-variable", + "is_gn=1", + "--config-variable", "msan=$msan", "--config-variable", "tsan=$tsan", @@ -154,6 +171,8 @@ template("v8_isolate_run") { "--config-variable", "target_arch=$target_arch", "--config-variable", + "v8_enable_inspector=$enable_inspector", + "--config-variable", "v8_use_external_startup_data=$use_external_startup_data", "--config-variable", "v8_use_snapshot=$use_snapshot", diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index 7ff7f6fb89ac36..3759572b935157 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -26,6 +26,10 @@ declare_args() { # Use external files for startup data blobs: # the JS builtins sources and the start snapshot. v8_use_external_startup_data = "" + + # Enable ECMAScript Internationalization API. Enabling this feature will + # add a dependency on the ICU library. + v8_enable_i18n_support = true } if (v8_use_external_startup_data == "") { @@ -38,15 +42,17 @@ if (v8_enable_backtrace == "") { v8_enable_backtrace = is_debug && !v8_optimized_debug } -############################################################################### -# Templates -# - # Points to // in v8 stand-alone or to //v8/ in chromium. We need absolute # paths for all configs in templates as they are shared in different # subdirectories. v8_path_prefix = get_path_info("../", "abspath") +v8_inspector_js_protocol = v8_path_prefix + "/src/inspector/js_protocol.json" + +############################################################################### +# Templates +# + # Common configs to remove or add in all v8 targets. v8_remove_configs = [ "//build/config/compiler:chromium_code" ] v8_add_configs = [ @@ -87,7 +93,15 @@ template("v8_source_set") { template("v8_executable") { executable(target_name) { - forward_variables_from(invoker, "*", [ "configs" ]) + forward_variables_from(invoker, + "*", + [ + "configs", + "remove_configs", + ]) + if (defined(invoker.remove_configs)) { + configs -= invoker.remove_configs + } configs += invoker.configs configs -= v8_remove_configs configs += v8_add_configs diff --git a/deps/v8/gypfiles/all.gyp b/deps/v8/gypfiles/all.gyp index 6b4ef82d6906c1..a3f2eedc77d3bd 100644 --- a/deps/v8/gypfiles/all.gyp +++ b/deps/v8/gypfiles/all.gyp @@ -25,6 +25,12 @@ '../test/unittests/unittests.gyp:*', ], }], + ['v8_enable_inspector==1', { + 'dependencies': [ + '../test/debugger/debugger.gyp:*', + '../test/inspector/inspector.gyp:*', + ], + }], ['test_isolation_mode != "noop"', { 'dependencies': [ '../test/bot_default.gyp:*', diff --git a/deps/v8/gypfiles/get_landmines.py b/deps/v8/gypfiles/get_landmines.py index 432dfd7ae5d8a8..e6b6da6c48db4b 100755 --- a/deps/v8/gypfiles/get_landmines.py +++ b/deps/v8/gypfiles/get_landmines.py @@ -30,6 +30,7 @@ def main(): print 'Clobber after Android NDK update.' print 'Clober to fix windows build problems.' print 'Clober again to fix windows build problems.' + print 'Clobber to possibly resolve failure on win-32 bot.' return 0 diff --git a/deps/v8/gypfiles/isolate.gypi b/deps/v8/gypfiles/isolate.gypi index 149818c8d0636f..8f53a153c6222c 100644 --- a/deps/v8/gypfiles/isolate.gypi +++ b/deps/v8/gypfiles/isolate.gypi @@ -74,12 +74,14 @@ '--config-variable', 'gcmole=<(gcmole)', '--config-variable', 'has_valgrind=<(has_valgrind)', '--config-variable', 'icu_use_data_file_flag=<(icu_use_data_file_flag)', + '--config-variable', 'is_gn=0', '--config-variable', 'msan=<(msan)', '--config-variable', 'tsan=<(tsan)', '--config-variable', 'coverage=<(coverage)', '--config-variable', 'sanitizer_coverage=<(sanitizer_coverage)', '--config-variable', 'component=<(component)', '--config-variable', 'target_arch=<(target_arch)', + '--config-variable', 'v8_enable_inspector=<(v8_enable_inspector)', '--config-variable', 'v8_use_external_startup_data=<(v8_use_external_startup_data)', '--config-variable', 'v8_use_snapshot=<(v8_use_snapshot)', ], diff --git a/deps/v8/gypfiles/standalone.gypi b/deps/v8/gypfiles/standalone.gypi index 7e41ce84aef96d..d438a5aeab992e 100644 --- a/deps/v8/gypfiles/standalone.gypi +++ b/deps/v8/gypfiles/standalone.gypi @@ -455,6 +455,7 @@ 'variables': { 'v8_code%': '<(v8_code)', 'clang_warning_flags': [ + '-Wsign-compare', # TODO(thakis): https://crbug.com/604888 '-Wno-undefined-var-template', # TODO(yangguo): issue 5258 @@ -503,7 +504,9 @@ }, 'conditions':[ ['clang==0', { - 'cflags+': ['-Wno-sign-compare',], + 'cflags+': [ + '-Wno-uninitialized', + ], }], ['clang==1 or host_clang==1', { # This is here so that all files get recompiled after a clang roll and diff --git a/deps/v8/include/libplatform/DEPS b/deps/v8/include/libplatform/DEPS index 15e75e6b4ffe50..d8bcf99880d380 100644 --- a/deps/v8/include/libplatform/DEPS +++ b/deps/v8/include/libplatform/DEPS @@ -1,3 +1,7 @@ +include_rules = [ + "+libplatform/libplatform-export.h", +] + specific_include_rules = { "libplatform\.h": [ "+libplatform/v8-tracing.h", diff --git a/deps/v8/include/libplatform/libplatform-export.h b/deps/v8/include/libplatform/libplatform-export.h new file mode 100644 index 00000000000000..15618434977d93 --- /dev/null +++ b/deps/v8/include/libplatform/libplatform-export.h @@ -0,0 +1,29 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef V8_LIBPLATFORM_LIBPLATFORM_EXPORT_H_ +#define V8_LIBPLATFORM_LIBPLATFORM_EXPORT_H_ + +#if defined(_WIN32) + +#ifdef BUILDING_V8_PLATFORM_SHARED +#define V8_PLATFORM_EXPORT __declspec(dllexport) +#elif USING_V8_PLATFORM_SHARED +#define V8_PLATFORM_EXPORT __declspec(dllimport) +#else +#define V8_PLATFORM_EXPORT +#endif // BUILDING_V8_PLATFORM_SHARED + +#else // defined(_WIN32) + +// Setup for Linux shared library export. +#ifdef BUILDING_V8_PLATFORM_SHARED +#define V8_PLATFORM_EXPORT __attribute__((visibility("default"))) +#else +#define V8_PLATFORM_EXPORT +#endif + +#endif // defined(_WIN32) + +#endif // V8_LIBPLATFORM_LIBPLATFORM_EXPORT_H_ diff --git a/deps/v8/include/libplatform/libplatform.h b/deps/v8/include/libplatform/libplatform.h index 5b5eee651319b5..40f3f668927f4e 100644 --- a/deps/v8/include/libplatform/libplatform.h +++ b/deps/v8/include/libplatform/libplatform.h @@ -5,6 +5,7 @@ #ifndef V8_LIBPLATFORM_LIBPLATFORM_H_ #define V8_LIBPLATFORM_LIBPLATFORM_H_ +#include "libplatform/libplatform-export.h" #include "libplatform/v8-tracing.h" #include "v8-platform.h" // NOLINT(build/include) @@ -19,8 +20,8 @@ namespace platform { * of zero is passed, a suitable default based on the current number of * processors online will be chosen. */ -v8::Platform* CreateDefaultPlatform(int thread_pool_size = 0); - +V8_PLATFORM_EXPORT v8::Platform* CreateDefaultPlatform( + int thread_pool_size = 0); /** * Pumps the message loop for the given isolate. @@ -30,14 +31,15 @@ v8::Platform* CreateDefaultPlatform(int thread_pool_size = 0); * not block if no task is pending. The |platform| has to be created using * |CreateDefaultPlatform|. */ -bool PumpMessageLoop(v8::Platform* platform, v8::Isolate* isolate); +V8_PLATFORM_EXPORT bool PumpMessageLoop(v8::Platform* platform, + v8::Isolate* isolate); /** * Attempts to set the tracing controller for the given platform. * * The |platform| has to be created using |CreateDefaultPlatform|. */ -void SetTracingController( +V8_PLATFORM_EXPORT void SetTracingController( v8::Platform* platform, v8::platform::tracing::TracingController* tracing_controller); diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h index e9f49414784da5..902f8ea93dbaa5 100644 --- a/deps/v8/include/libplatform/v8-tracing.h +++ b/deps/v8/include/libplatform/v8-tracing.h @@ -10,6 +10,7 @@ #include #include +#include "libplatform/libplatform-export.h" #include "v8-platform.h" // NOLINT(build/include) namespace v8 { @@ -23,7 +24,7 @@ namespace tracing { const int kTraceMaxNumArgs = 2; -class TraceObject { +class V8_PLATFORM_EXPORT TraceObject { public: union ArgValue { bool as_bool; @@ -103,7 +104,7 @@ class TraceObject { void operator=(const TraceObject&) = delete; }; -class TraceWriter { +class V8_PLATFORM_EXPORT TraceWriter { public: TraceWriter() {} virtual ~TraceWriter() {} @@ -118,7 +119,7 @@ class TraceWriter { void operator=(const TraceWriter&) = delete; }; -class TraceBufferChunk { +class V8_PLATFORM_EXPORT TraceBufferChunk { public: explicit TraceBufferChunk(uint32_t seq); @@ -142,7 +143,7 @@ class TraceBufferChunk { void operator=(const TraceBufferChunk&) = delete; }; -class TraceBuffer { +class V8_PLATFORM_EXPORT TraceBuffer { public: TraceBuffer() {} virtual ~TraceBuffer() {} @@ -178,45 +179,37 @@ enum TraceRecordMode { ECHO_TO_CONSOLE, }; -class TraceConfig { +class V8_PLATFORM_EXPORT TraceConfig { public: typedef std::vector StringList; static TraceConfig* CreateDefaultTraceConfig(); - TraceConfig() - : enable_sampling_(false), - enable_systrace_(false), - enable_argument_filter_(false) {} + TraceConfig() : enable_systrace_(false), enable_argument_filter_(false) {} TraceRecordMode GetTraceRecordMode() const { return record_mode_; } - bool IsSamplingEnabled() const { return enable_sampling_; } bool IsSystraceEnabled() const { return enable_systrace_; } bool IsArgumentFilterEnabled() const { return enable_argument_filter_; } void SetTraceRecordMode(TraceRecordMode mode) { record_mode_ = mode; } - void EnableSampling() { enable_sampling_ = true; } void EnableSystrace() { enable_systrace_ = true; } void EnableArgumentFilter() { enable_argument_filter_ = true; } void AddIncludedCategory(const char* included_category); - void AddExcludedCategory(const char* excluded_category); bool IsCategoryGroupEnabled(const char* category_group) const; private: TraceRecordMode record_mode_; - bool enable_sampling_ : 1; bool enable_systrace_ : 1; bool enable_argument_filter_ : 1; StringList included_categories_; - StringList excluded_categories_; // Disallow copy and assign TraceConfig(const TraceConfig&) = delete; void operator=(const TraceConfig&) = delete; }; -class TracingController { +class V8_PLATFORM_EXPORT TracingController { public: enum Mode { DISABLED = 0, RECORDING_MODE }; diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 6ee0340f3c3d7c..74c0613946d513 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -48,7 +48,7 @@ namespace v8 { /** * TracingCpuProfiler monitors tracing being enabled/disabled - * and emits CpuProfile trace events once v8.cpu_profile2 tracing category + * and emits CpuProfile trace events once v8.cpu_profiler tracing category * is enabled. It has no overhead unless the category is enabled. */ class V8_EXPORT TracingCpuProfiler { diff --git a/deps/v8/include/v8-util.h b/deps/v8/include/v8-util.h index 99c59fe302963d..8133fdd49dcf4f 100644 --- a/deps/v8/include/v8-util.h +++ b/deps/v8/include/v8-util.h @@ -206,19 +206,14 @@ class PersistentValueMapBase { } /** - * Deprecated. Call V8::RegisterExternallyReferencedObject with the map value - * for given key. - * TODO(hlopko) Remove once migration to reporter is finished. + * Call V8::RegisterExternallyReferencedObject with the map value for given + * key. */ - void RegisterExternallyReferencedObject(K& key) {} - - /** - * Use EmbedderReachableReferenceReporter with the map value for given key. - */ - void RegisterExternallyReferencedObject( - EmbedderReachableReferenceReporter* reporter, K& key) { + void RegisterExternallyReferencedObject(K& key) { DCHECK(Contains(key)); - reporter->ReportExternalReference(FromVal(Traits::Get(&impl_, key))); + V8::RegisterExternallyReferencedObject( + reinterpret_cast(FromVal(Traits::Get(&impl_, key))), + reinterpret_cast(GetIsolate())); } /** diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index b216cf04c30a00..b6949876330a21 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 5 -#define V8_MINOR_VERSION 5 -#define V8_BUILD_NUMBER 372 -#define V8_PATCH_LEVEL 40 +#define V8_MINOR_VERSION 6 +#define V8_BUILD_NUMBER 326 +#define V8_PATCH_LEVEL 55 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 36edf5334a9d27..5348ba7e48b32b 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -35,11 +35,6 @@ // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8 // static library or building a program which uses the V8 static library neither // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined. -#if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED) -#error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\ - build configuration to ensure that at most one of these is set -#endif - #ifdef BUILDING_V8_SHARED # define V8_EXPORT __declspec(dllexport) #elif USING_V8_SHARED @@ -467,16 +462,6 @@ class WeakCallbackInfo { // possible to request a second pass callback. enum class WeakCallbackType { kParameter, kInternalFields, kFinalizer }; -/** - * A reporter class that embedder will use to report reachable references found - * by EmbedderHeapTracer. - */ -class V8_EXPORT EmbedderReachableReferenceReporter { - public: - virtual void ReportExternalReference(Value* object) = 0; - virtual ~EmbedderReachableReferenceReporter() = default; -}; - /** * An object reference that is independent of any handle scope. Where * a Local handle only lives as long as the HandleScope in which it was @@ -573,19 +558,12 @@ template class PersistentBase { // TODO(dcarney): remove this. V8_INLINE void ClearWeak() { ClearWeak(); } - /** - * Deprecated. - * TODO(hlopko): remove once migration to reporter is finished. - */ - V8_INLINE void RegisterExternalReference(Isolate* isolate) const {} - /** * Allows the embedder to tell the v8 garbage collector that a certain object * is alive. Only allowed when the embedder is asked to trace its heap by * EmbedderHeapTracer. */ - V8_INLINE void RegisterExternalReference( - EmbedderReachableReferenceReporter* reporter) const; + V8_INLINE void RegisterExternalReference(Isolate* isolate) const; /** * Marks the reference to this object independent. Garbage collector is free @@ -595,18 +573,6 @@ template class PersistentBase { */ V8_INLINE void MarkIndependent(); - /** - * Marks the reference to this object partially dependent. Partially dependent - * handles only depend on other partially dependent handles and these - * dependencies are provided through object groups. It provides a way to build - * smaller object groups for young objects that represent only a subset of all - * external dependencies. This mark is automatically cleared after each - * garbage collection. - */ - V8_INLINE V8_DEPRECATED( - "deprecated optimization, do not use partially dependent groups", - void MarkPartiallyDependent()); - /** * Marks the reference to this object as active. The scavenge garbage * collection should not reclaim the objects marked as active. @@ -1106,22 +1072,22 @@ class V8_EXPORT Module { */ Local GetModuleRequest(int i) const; - void SetEmbedderData(Local data); - Local GetEmbedderData() const; + /** + * Returns the identity hash for this object. + */ + int GetIdentityHash() const; typedef MaybeLocal (*ResolveCallback)(Local context, Local specifier, - Local referrer, - Local data); + Local referrer); /** * ModuleDeclarationInstantiation * * Returns false if an exception occurred during instantiation. */ - V8_WARN_UNUSED_RESULT bool Instantiate( - Local context, ResolveCallback callback, - Local callback_data = Local()); + V8_WARN_UNUSED_RESULT bool Instantiate(Local context, + ResolveCallback callback); /** * ModuleEvaluation @@ -1745,6 +1711,19 @@ class V8_EXPORT ValueSerializer { * Nothing() returned. */ virtual Maybe WriteHostObject(Isolate* isolate, Local object); + + /* + * Allocates memory for the buffer of at least the size provided. The actual + * size (which may be greater or equal) is written to |actual_size|. If no + * buffer has been allocated yet, nullptr will be provided. + */ + virtual void* ReallocateBufferMemory(void* old_buffer, size_t size, + size_t* actual_size); + + /* + * Frees a buffer allocated with |ReallocateBufferMemory|. + */ + virtual void FreeBufferMemory(void* buffer); }; explicit ValueSerializer(Isolate* isolate); @@ -1766,7 +1745,15 @@ class V8_EXPORT ValueSerializer { * Returns the stored data. This serializer should not be used once the buffer * is released. The contents are undefined if a previous write has failed. */ - std::vector ReleaseBuffer(); + V8_DEPRECATE_SOON("Use Release()", std::vector ReleaseBuffer()); + + /* + * Returns the stored data (allocated using the delegate's + * AllocateBufferMemory) and its size. This serializer should not be used once + * the buffer is released. The contents are undefined if a previous write has + * failed. + */ + V8_WARN_UNUSED_RESULT std::pair Release(); /* * Marks an ArrayBuffer as havings its contents transferred out of band. @@ -1832,7 +1819,6 @@ class V8_EXPORT ValueDeserializer { * May, for example, reject an invalid or unsupported wire format. */ V8_WARN_UNUSED_RESULT Maybe ReadHeader(Local context); - V8_DEPRECATE_SOON("Use Local version", Maybe ReadHeader()); /* * Deserializes a JavaScript value from the buffer. @@ -3542,7 +3528,7 @@ class PropertyCallbackInfo { /** * \return The receiver. In many cases, this is the object on which the * property access was intercepted. When using - * `Reflect.Get`, `Function.prototype.call`, or similar functions, it is the + * `Reflect.get`, `Function.prototype.call`, or similar functions, it is the * object passed in as receiver or thisArg. * * \code @@ -3607,7 +3593,7 @@ class PropertyCallbackInfo { * \return True if the intercepted function should throw if an error occurs. * Usually, `true` corresponds to `'use strict'`. * - * \note Always `false` when intercepting `Reflect.Set()` + * \note Always `false` when intercepting `Reflect.set()` * independent of the language mode. */ V8_INLINE bool ShouldThrowOnError() const; @@ -3902,13 +3888,29 @@ class V8_EXPORT Proxy : public Object { class V8_EXPORT WasmCompiledModule : public Object { public: typedef std::pair, size_t> SerializedModule; + // A buffer that is owned by the caller. + typedef std::pair CallerOwnedBuffer; + // Get the wasm-encoded bytes that were used to compile this module. + Local GetWasmWireBytes(); + // Serialize the compiled module. The serialized data does not include the + // uncompiled bytes. SerializedModule Serialize(); - static MaybeLocal Deserialize( - Isolate* isolate, const SerializedModule& serialized_data); + + // If possible, deserialize the module, otherwise compile it from the provided + // uncompiled bytes. + static MaybeLocal DeserializeOrCompile( + Isolate* isolate, const CallerOwnedBuffer& serialized_module, + const CallerOwnedBuffer& wire_bytes); V8_INLINE static WasmCompiledModule* Cast(Value* obj); private: + static MaybeLocal Deserialize( + Isolate* isolate, const CallerOwnedBuffer& serialized_module, + const CallerOwnedBuffer& wire_bytes); + static MaybeLocal Compile(Isolate* isolate, + const uint8_t* start, + size_t length); WasmCompiledModule(); static void CheckCast(Value* obj); }; @@ -4623,6 +4625,8 @@ class V8_EXPORT Template : public Data { */ void Set(Local name, Local value, PropertyAttribute attributes = None); + void SetPrivate(Local name, Local value, + PropertyAttribute attributes = None); V8_INLINE void Set(Isolate* isolate, const char* name, Local value); void SetAccessorProperty( @@ -4674,6 +4678,14 @@ class V8_EXPORT Template : public Data { Local signature = Local(), AccessControl settings = DEFAULT); + /** + * Like SetNativeDataProperty, but V8 will replace the native data property + * with a real data property on first access. + */ + void SetLazyDataProperty(Local name, AccessorNameGetterCallback getter, + Local data = Local(), + PropertyAttribute attribute = None); + /** * During template instantiation, sets the value with the intrinsic property * from the correct context. @@ -5095,6 +5107,14 @@ class V8_EXPORT FunctionTemplate : public Template { Local data = Local(), Local signature = Local(), int length = 0); + /** + * Creates a function template backed/cached by a private property. + */ + static Local NewWithCache( + Isolate* isolate, FunctionCallback callback, + Local cache_property, Local data = Local(), + Local signature = Local(), int length = 0); + /** Returns the unique function instance in the current execution context.*/ V8_DEPRECATE_SOON("Use maybe version", Local GetFunction()); V8_WARN_UNUSED_RESULT MaybeLocal GetFunction( @@ -5676,6 +5696,10 @@ class V8_EXPORT ResourceConstraints { void set_code_range_size(size_t limit_in_mb) { code_range_size_ = limit_in_mb; } + size_t max_zone_pool_size() const { return max_zone_pool_size_; } + void set_max_zone_pool_size(const size_t bytes) { + max_zone_pool_size_ = bytes; + } private: int max_semi_space_size_; @@ -5683,6 +5707,7 @@ class V8_EXPORT ResourceConstraints { int max_executable_size_; uint32_t* stack_limit_; size_t code_range_size_; + size_t max_zone_pool_size_; }; @@ -6145,11 +6170,11 @@ class V8_EXPORT PersistentHandleVisitor { // NOLINT enum class MemoryPressureLevel { kNone, kModerate, kCritical }; /** - * Interface for tracing through the embedder heap. During the v8 garbage + * Interface for tracing through the embedder heap. During a v8 garbage * collection, v8 collects hidden fields of all potential wrappers, and at the * end of its marking phase iterates the collection and asks the embedder to - * trace through its heap and use reporter to report each js object reachable - * from any of the given wrappers. + * trace through its heap and use reporter to report each JavaScript object + * reachable from any of the given wrappers. * * Before the first call to the TraceWrappersFrom function TracePrologue will be * called. When the garbage collection cycle is finished, TraceEpilogue will be @@ -6167,30 +6192,26 @@ class V8_EXPORT EmbedderHeapTracer { }; /** - * V8 will call this method with internal fields of found wrappers. The - * embedder is expected to store them in its marking deque and trace - * reachable wrappers from them when called through |AdvanceTracing|. + * Called by v8 to register internal fields of found wrappers. + * + * The embedder is expected to store them somewhere and trace reachable + * wrappers from them when called through |AdvanceTracing|. */ virtual void RegisterV8References( const std::vector >& internal_fields) = 0; /** - * Deprecated. - * TODO(hlopko) Remove once the migration to reporter is finished. - */ - virtual void TracePrologue() {} - - /** - * V8 will call this method at the beginning of a GC cycle. Embedder is - * expected to use EmbedderReachableReferenceReporter for reporting all - * reachable v8 objects. + * Called at the beginning of a GC cycle. */ - virtual void TracePrologue(EmbedderReachableReferenceReporter* reporter) {} + virtual void TracePrologue() = 0; /** - * Embedder is expected to trace its heap starting from wrappers reported by - * RegisterV8References method, and use reporter for all reachable wrappers. - * Embedder is expected to stop tracing by the given deadline. + * Called to to make a tracing step in the embedder. + * + * The embedder is expected to trace its heap starting from wrappers reported + * by RegisterV8References method, and report back all reachable wrappers. + * Furthermore, the embedder is expected to stop tracing by the given + * deadline. * * Returns true if there is still work to do. */ @@ -6198,22 +6219,25 @@ class V8_EXPORT EmbedderHeapTracer { AdvanceTracingActions actions) = 0; /** - * V8 will call this method at the end of a GC cycle. + * Called at the end of a GC cycle. * * Note that allocation is *not* allowed within |TraceEpilogue|. */ virtual void TraceEpilogue() = 0; /** - * Let embedder know v8 entered final marking pause (no more incremental steps - * will follow). + * Called upon entering the final marking pause. No more incremental marking + * steps will follow this call. */ - virtual void EnterFinalPause() {} + virtual void EnterFinalPause() = 0; /** - * Throw away all intermediate data and reset to the initial state. + * Called when tracing is aborted. + * + * The embedder is expected to throw away all intermediate data and reset to + * the initial state. */ - virtual void AbortTracing() {} + virtual void AbortTracing() = 0; /** * Returns the number of wrappers that are still to be traced by the embedder. @@ -6224,6 +6248,19 @@ class V8_EXPORT EmbedderHeapTracer { virtual ~EmbedderHeapTracer() = default; }; +/** + * Callback to the embedder used in SnapshotCreator to handle internal fields. + */ +typedef StartupData (*SerializeInternalFieldsCallback)(Local holder, + int index); + +/** + * Callback to the embedder used to deserialize internal fields. + */ +typedef void (*DeserializeInternalFieldsCallback)(Local holder, + int index, + StartupData payload); + /** * Isolate represents an isolated instance of the V8 engine. V8 isolates have * completely separate states. Objects from one isolate must not be used in @@ -6246,7 +6283,8 @@ class V8_EXPORT Isolate { create_histogram_callback(nullptr), add_histogram_sample_callback(nullptr), array_buffer_allocator(nullptr), - external_references(nullptr) {} + external_references(nullptr), + deserialize_internal_fields_callback(nullptr) {} /** * The optional entry_hook allows the host application to provide the @@ -6302,6 +6340,12 @@ class V8_EXPORT Isolate { * entire lifetime of the isolate. */ intptr_t* external_references; + + /** + * Specifies an optional callback to deserialize internal fields. It + * should match the SerializeInternalFieldCallback used to serialize. + */ + DeserializeInternalFieldsCallback deserialize_internal_fields_callback; }; @@ -7506,6 +7550,9 @@ class V8_EXPORT V8 { int* index); static Local GetEternal(Isolate* isolate, int index); + static void RegisterExternallyReferencedObject(internal::Object** object, + internal::Isolate* isolate); + template friend class PersistentValueMapBase; @@ -7528,7 +7575,7 @@ class V8_EXPORT V8 { /** * Helper class to create a snapshot data blob. */ -class SnapshotCreator { +class V8_EXPORT SnapshotCreator { public: enum class FunctionCodeHandling { kClear, kKeep }; @@ -7567,10 +7614,12 @@ class SnapshotCreator { * This must not be called from within a handle scope. * \param function_code_handling whether to include compiled function code * in the snapshot. + * \param callback to serialize embedder-set internal fields. * \returns { nullptr, 0 } on failure, and a startup snapshot on success. The * caller acquires ownership of the data array in the return value. */ - StartupData CreateBlob(FunctionCodeHandling function_code_handling); + StartupData CreateBlob(FunctionCodeHandling function_code_handling, + SerializeInternalFieldsCallback callback = nullptr); // Disallow copying and assigning. SnapshotCreator(const SnapshotCreator&) = delete; @@ -7824,7 +7873,6 @@ class V8_EXPORT ExtensionConfiguration { const char** names_; }; - /** * A sandboxed execution context with its own set of built-in objects * and functions. @@ -8286,11 +8334,10 @@ class Internals { static const int kNodeStateIsPendingValue = 3; static const int kNodeStateIsNearDeathValue = 4; static const int kNodeIsIndependentShift = 3; - static const int kNodeIsPartiallyDependentShift = 4; static const int kNodeIsActiveShift = 4; - static const int kJSObjectType = 0xb9; - static const int kJSApiObjectType = 0xb8; + static const int kJSObjectType = 0xbc; + static const int kJSApiObjectType = 0xbb; static const int kFirstNonstringType = 0x80; static const int kOddballType = 0x83; static const int kForeignType = 0x87; @@ -8566,10 +8613,11 @@ P* PersistentBase::ClearWeak() { } template -void PersistentBase::RegisterExternalReference( - EmbedderReachableReferenceReporter* reporter) const { +void PersistentBase::RegisterExternalReference(Isolate* isolate) const { if (IsEmpty()) return; - reporter->ReportExternalReference(this->val_); + V8::RegisterExternallyReferencedObject( + reinterpret_cast(this->val_), + reinterpret_cast(isolate)); } template @@ -8581,17 +8629,6 @@ void PersistentBase::MarkIndependent() { I::kNodeIsIndependentShift); } - -template -void PersistentBase::MarkPartiallyDependent() { - typedef internal::Internals I; - if (this->IsEmpty()) return; - I::UpdateNodeFlag(reinterpret_cast(this->val_), - true, - I::kNodeIsPartiallyDependentShift); -} - - template void PersistentBase::MarkActive() { typedef internal::Internals I; diff --git a/deps/v8/infra/config/cq.cfg b/deps/v8/infra/config/cq.cfg index 3c645fd90b2268..e93895f3826335 100644 --- a/deps/v8/infra/config/cq.cfg +++ b/deps/v8/infra/config/cq.cfg @@ -104,7 +104,7 @@ verifiers { } builders { name: "v8_linux64_sanitizer_coverage_rel" - experiment_percentage: 100 + experiment_percentage: 20 } } buckets { diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 2747be59093f10..d6a2a2dc4abe50 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -40,7 +40,7 @@ 'V8 Linux - shared': 'gn_release_x86_shared_verify_heap', 'V8 Linux - noi18n - debug': 'gn_debug_x86_no_i18n', # Linux64. - 'V8 Linux64 - builder': 'gn_release_x64', + 'V8 Linux64 - builder': 'gn_release_x64_valgrind', 'V8 Linux64 - debug builder': 'gn_debug_x64_valgrind', 'V8 Linux64 - custom snapshot - debug builder': 'gn_debug_x64_custom', 'V8 Linux64 - internal snapshot': 'gn_release_x64_internal', @@ -156,7 +156,7 @@ 'v8_linux_nosnap_dbg': 'gn_debug_x86_no_snap_trybot', 'v8_linux_gcc_compile_rel': 'gn_release_x86_gcc_minimal_symbols', 'v8_linux_gcc_rel': 'gn_release_x86_gcc_minimal_symbols', - 'v8_linux64_rel_ng': 'gn_release_x64_trybot', + 'v8_linux64_rel_ng': 'gn_release_x64_valgrind_trybot', 'v8_linux64_gyp_rel_ng': 'gyp_release_x64', 'v8_linux64_avx2_rel_ng': 'gn_release_x64_trybot', 'v8_linux64_avx2_dbg': 'gn_debug_x64_trybot', @@ -296,6 +296,10 @@ 'gn', 'release_bot', 'x64', 'tsan', 'swarming'], 'gn_release_x64_tsan_minimal_symbols': [ 'gn', 'release_bot', 'x64', 'tsan', 'minimal_symbols', 'swarming'], + 'gn_release_x64_valgrind': [ + 'gn', 'release_bot', 'x64', 'swarming', 'valgrind'], + 'gn_release_x64_valgrind_trybot': [ + 'gn', 'release_trybot', 'x64', 'swarming', 'valgrind'], # GN debug configs for x64. 'gn_debug_x64': [ @@ -317,7 +321,8 @@ 'gn_debug_x86_minimal_symbols': [ 'gn', 'debug_bot', 'x86', 'minimal_symbols', 'swarming'], 'gn_debug_x86_no_i18n': [ - 'gn', 'debug_bot', 'x86', 'v8_no_i18n'], + 'gn', 'debug_bot', 'x86', 'swarming', 'v8_disable_inspector', + 'v8_no_i18n'], 'gn_debug_x86_no_snap': [ 'gn', 'debug_bot', 'x86', 'swarming', 'v8_snapshot_none'], 'gn_debug_x86_no_snap_trybot': [ @@ -339,7 +344,8 @@ 'gn_release_x86_minimal_symbols': [ 'gn', 'release_bot', 'x86', 'minimal_symbols', 'swarming'], 'gn_release_x86_no_i18n_trybot': [ - 'gn', 'release_trybot', 'x86', 'swarming', 'v8_no_i18n'], + 'gn', 'release_trybot', 'x86', 'swarming', 'v8_disable_inspector', + 'v8_no_i18n'], 'gn_release_x86_no_snap': [ 'gn', 'release_bot', 'x86', 'swarming', 'v8_snapshot_none'], 'gn_release_x86_no_snap_shared_minimal_symbols': [ @@ -354,7 +360,8 @@ # Gyp debug configs for simulators. 'gyp_debug_simulate_x87_no_snap': [ - 'gyp', 'debug_bot', 'simulate_x87', 'swarming', 'v8_snapshot_none'], + 'gyp', 'debug_bot_static', 'simulate_x87', 'swarming', + 'v8_snapshot_none'], # Gyp debug configs for x86. 'gyp_debug_x86': [ @@ -461,6 +468,12 @@ 'v8_optimized_debug'], }, + 'debug_bot_static': { + 'mixins': [ + 'debug', 'static', 'goma', 'v8_enable_slow_dchecks', + 'v8_optimized_debug'], + }, + 'debug_trybot': { 'mixins': ['debug_bot', 'minimal_symbols'], }, @@ -613,6 +626,11 @@ 'gyp_defines': 'v8_enable_i18n_support=0 icu_use_data_file_flag=0', }, + 'v8_disable_inspector': { + 'gn_args': 'v8_enable_inspector=false', + 'gyp_defines': 'v8_enable_inspector=0 ', + }, + 'v8_enable_disassembler': { 'gn_args': 'v8_enable_disassembler=true', 'gyp_defines': 'v8_enable_disassembler=1', diff --git a/deps/v8/samples/samples.gyp b/deps/v8/samples/samples.gyp index e5e9ef0f8ccb20..e7c26cf2629d21 100644 --- a/deps/v8/samples/samples.gyp +++ b/deps/v8/samples/samples.gyp @@ -36,6 +36,7 @@ 'type': 'executable', 'dependencies': [ '../src/v8.gyp:v8', + '../src/v8.gyp:v8_libbase', '../src/v8.gyp:v8_libplatform', ], 'include_dirs': [ diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index b1c428d5d79845..9114669a6d5e77 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -8,6 +8,7 @@ include_rules = [ "-src/heap", "+src/heap/heap.h", "+src/heap/heap-inl.h", + "-src/inspector", "-src/interpreter", "+src/interpreter/bytecode-array-iterator.h", "+src/interpreter/bytecode-decoder.h", diff --git a/deps/v8/src/accessors.cc b/deps/v8/src/accessors.cc index da44151b3edbdd..9ec24b84c7c586 100644 --- a/deps/v8/src/accessors.cc +++ b/deps/v8/src/accessors.cc @@ -19,13 +19,9 @@ namespace v8 { namespace internal { - Handle Accessors::MakeAccessor( - Isolate* isolate, - Handle name, - AccessorNameGetterCallback getter, - AccessorNameSetterCallback setter, - PropertyAttributes attributes) { + Isolate* isolate, Handle name, AccessorNameGetterCallback getter, + AccessorNameBooleanSetterCallback setter, PropertyAttributes attributes) { Factory* factory = isolate->factory(); Handle info = factory->NewAccessorInfo(); info->set_property_attributes(attributes); @@ -33,6 +29,7 @@ Handle Accessors::MakeAccessor( info->set_all_can_write(false); info->set_is_special_data_property(true); info->set_is_sloppy(false); + info->set_replace_on_access(false); name = factory->InternalizeName(name); info->set_name(*name); Handle get = v8::FromCData(isolate, getter); @@ -106,7 +103,7 @@ MUST_USE_RESULT MaybeHandle ReplaceAccessorWithDataProperty( void Accessors::ReconfigureToDataProperty( v8::Local key, v8::Local val, - const v8::PropertyCallbackInfo& info) { + const v8::PropertyCallbackInfo& info) { i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); HandleScope scope(isolate); Handle receiver = Utils::OpenHandle(*info.This()); @@ -116,7 +113,11 @@ void Accessors::ReconfigureToDataProperty( Handle value = Utils::OpenHandle(*val); MaybeHandle result = ReplaceAccessorWithDataProperty(isolate, receiver, holder, name, value); - if (result.is_null()) isolate->OptionalRescheduleException(false); + if (result.is_null()) { + isolate->OptionalRescheduleException(false); + } else { + info.GetReturnValue().Set(true); + } } // @@ -151,6 +152,8 @@ void Accessors::ArrayLengthGetter( v8::Local name, const v8::PropertyCallbackInfo& info) { i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); + RuntimeCallTimerScope timer( + isolate, &RuntimeCallStats::AccessorNameGetterCallback_ArrayLength); DisallowHeapAllocation no_allocation; HandleScope scope(isolate); JSArray* holder = JSArray::cast(*Utils::OpenHandle(*info.Holder())); @@ -158,11 +161,9 @@ void Accessors::ArrayLengthGetter( info.GetReturnValue().Set(Utils::ToLocal(Handle(result, isolate))); } - void Accessors::ArrayLengthSetter( - v8::Local name, - v8::Local val, - const v8::PropertyCallbackInfo& info) { + v8::Local name, v8::Local val, + const v8::PropertyCallbackInfo& info) { i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); HandleScope scope(isolate); @@ -178,17 +179,21 @@ void Accessors::ArrayLengthSetter( JSArray::SetLength(array, length); - if (info.ShouldThrowOnError()) { - uint32_t actual_new_len = 0; - CHECK(array->length()->ToArrayLength(&actual_new_len)); - // Throw TypeError if there were non-deletable elements. - if (actual_new_len != length) { + uint32_t actual_new_len = 0; + CHECK(array->length()->ToArrayLength(&actual_new_len)); + // Fail if there were non-deletable elements. + if (actual_new_len != length) { + if (info.ShouldThrowOnError()) { Factory* factory = isolate->factory(); isolate->Throw(*factory->NewTypeError( MessageTemplate::kStrictDeleteProperty, factory->NewNumberFromUint(actual_new_len - 1), array)); isolate->OptionalRescheduleException(false); + } else { + info.GetReturnValue().Set(false); } + } else { + info.GetReturnValue().Set(true); } } @@ -202,6 +207,50 @@ Handle Accessors::ArrayLengthInfo( attributes); } +// +// Accessors::ModuleNamespaceEntry +// + +void Accessors::ModuleNamespaceEntryGetter( + v8::Local name, const v8::PropertyCallbackInfo& info) { + i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); + HandleScope scope(isolate); + JSModuleNamespace* holder = + JSModuleNamespace::cast(*Utils::OpenHandle(*info.Holder())); + Handle result; + if (!holder->GetExport(Handle::cast(Utils::OpenHandle(*name))) + .ToHandle(&result)) { + isolate->OptionalRescheduleException(false); + } else { + info.GetReturnValue().Set(Utils::ToLocal(result)); + } +} + +void Accessors::ModuleNamespaceEntrySetter( + v8::Local name, v8::Local val, + const v8::PropertyCallbackInfo& info) { + i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); + HandleScope scope(isolate); + Factory* factory = isolate->factory(); + Handle holder = + Handle::cast(Utils::OpenHandle(*info.Holder())); + + if (info.ShouldThrowOnError()) { + isolate->Throw(*factory->NewTypeError( + MessageTemplate::kStrictReadOnlyProperty, Utils::OpenHandle(*name), + i::Object::TypeOf(isolate, holder), holder)); + isolate->OptionalRescheduleException(false); + } else { + info.GetReturnValue().Set(false); + } +} + +Handle Accessors::ModuleNamespaceEntryInfo( + Isolate* isolate, Handle name, PropertyAttributes attributes) { + return MakeAccessor(isolate, name, &ModuleNamespaceEntryGetter, + &ModuleNamespaceEntrySetter, attributes); +} + // // Accessors::StringLength @@ -211,6 +260,8 @@ void Accessors::StringLengthGetter( v8::Local name, const v8::PropertyCallbackInfo& info) { i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); + RuntimeCallTimerScope timer( + isolate, &RuntimeCallStats::AccessorNameGetterCallback_StringLength); DisallowHeapAllocation no_allocation; HandleScope scope(isolate); @@ -417,40 +468,6 @@ Handle Accessors::ScriptCompilationTypeInfo( } -// -// Accessors::ScriptGetLineEnds -// - - -void Accessors::ScriptLineEndsGetter( - v8::Local name, - const v8::PropertyCallbackInfo& info) { - i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); - HandleScope scope(isolate); - Handle object = Utils::OpenHandle(*info.Holder()); - Handle - +

I C E

Your IC-Explorer. + +
+
+ 0 uninitialized
+ . premonomorphic
+ 1 monomorphic
+ ^ recompute handler
+ P polymorphic
+ N megamorphic
+ G generic +
+
+

Usage

Run your script with --trace_ic and upload on this page:
/path/to/d8 --trace_ic your_script.js > trace.txt

Data

diff --git a/deps/v8/tools/ignition/linux_perf_report.py b/deps/v8/tools/ignition/linux_perf_report.py index eaf85b3f91efd2..69db37cbae4b27 100755 --- a/deps/v8/tools/ignition/linux_perf_report.py +++ b/deps/v8/tools/ignition/linux_perf_report.py @@ -52,6 +52,8 @@ COMPILER_SYMBOLS_RE = re.compile( r"v8::internal::(?:\(anonymous namespace\)::)?Compile|v8::internal::Parser") +JIT_CODE_SYMBOLS_RE = re.compile( + r"(LazyCompile|Compile|Eval|Script):(\*|~)") def strip_function_parameters(symbol): @@ -70,7 +72,8 @@ def strip_function_parameters(symbol): return symbol[:-pos] -def collapsed_callchains_generator(perf_stream, show_all=False, +def collapsed_callchains_generator(perf_stream, hide_other=False, + hide_compiler=False, hide_jit=False, show_full_signatures=False): current_chain = [] skip_until_end_of_chain = False @@ -85,7 +88,8 @@ def collapsed_callchains_generator(perf_stream, show_all=False, # Empty line signals the end of the callchain. if not line: - if not skip_until_end_of_chain and current_chain and show_all: + if (not skip_until_end_of_chain and current_chain + and not hide_other): current_chain.append("[other]") yield current_chain # Reset parser status. @@ -101,14 +105,26 @@ def collapsed_callchains_generator(perf_stream, show_all=False, symbol = line.split(" ", 1)[1].split("+", 1)[0] if not show_full_signatures: symbol = strip_function_parameters(symbol) + + # Avoid chains of [unknown] + if (symbol == "[unknown]" and current_chain and + current_chain[-1] == "[unknown]"): + continue + current_chain.append(symbol) if symbol.startswith("BytecodeHandler:"): + current_chain.append("[interpreter]") yield current_chain skip_until_end_of_chain = True + elif JIT_CODE_SYMBOLS_RE.match(symbol): + if not hide_jit: + current_chain.append("[jit]") + yield current_chain + skip_until_end_of_chain = True elif symbol == "Stub:CEntryStub" and compiler_symbol_in_chain: - if show_all: - current_chain[-1] = "[compiler]" + if not hide_compiler: + current_chain.append("[compiler]") yield current_chain skip_until_end_of_chain = True elif COMPILER_SYMBOLS_RE.match(symbol): @@ -181,8 +197,18 @@ def parse_command_line(): dest="output_flamegraph" ) command_line_parser.add_argument( - "--show-all", "-a", - help="show samples outside Ignition bytecode handlers", + "--hide-other", + help="Hide other samples", + action="store_true" + ) + command_line_parser.add_argument( + "--hide-compiler", + help="Hide samples during compilation", + action="store_true" + ) + command_line_parser.add_argument( + "--hide-jit", + help="Hide samples from JIT code execution", action="store_true" ) command_line_parser.add_argument( @@ -210,8 +236,8 @@ def main(): stdout=subprocess.PIPE) callchains = collapsed_callchains_generator( - perf.stdout, program_options.show_all, - program_options.show_full_signatures) + perf.stdout, program_options.hide_other, program_options.hide_compiler, + program_options.hide_jit, program_options.show_full_signatures) if program_options.output_flamegraph: write_flamegraph_input_file(program_options.output_stream, callchains) diff --git a/deps/v8/tools/ignition/linux_perf_report_test.py b/deps/v8/tools/ignition/linux_perf_report_test.py index d9cef75dfff275..9d163c8adbfe64 100644 --- a/deps/v8/tools/ignition/linux_perf_report_test.py +++ b/deps/v8/tools/ignition/linux_perf_report_test.py @@ -40,6 +40,9 @@ 11111111 Builtin:InterpreterEntryTrampoline 22222222 bar + 00000000 hello + 11111111 LazyCompile:~Foo + 11111111 Builtin:InterpreterEntryTrampoline 22222222 bar """ @@ -50,22 +53,26 @@ def test_collapsed_callchains_generator(self): perf_stream = StringIO.StringIO(PERF_SCRIPT_OUTPUT) callchains = list(ipr.collapsed_callchains_generator(perf_stream)) self.assertListEqual(callchains, [ - ["foo", "BytecodeHandler:bar"], - ["foo", "BytecodeHandler:bar"], - ["beep", "BytecodeHandler:bar"], + ['firstSymbol', 'secondSymbol', '[other]'], + ["foo", "BytecodeHandler:bar", "[interpreter]"], + ["foo", "BytecodeHandler:bar", "[interpreter]"], + ["beep", "BytecodeHandler:bar", "[interpreter]"], + ["hello", "v8::internal::Compiler", "Stub:CEntryStub", "[compiler]"], + ["Lost", "[misattributed]"], + ["hello", "LazyCompile:~Foo", "[jit]"], ["[entry trampoline]"], ]) - def test_collapsed_callchains_generator_show_other(self): + def test_collapsed_callchains_generator_hide_other(self): perf_stream = StringIO.StringIO(PERF_SCRIPT_OUTPUT) callchains = list(ipr.collapsed_callchains_generator(perf_stream, - show_all=True)) + hide_other=True, + hide_compiler=True, + hide_jit=True)) self.assertListEqual(callchains, [ - ['firstSymbol', 'secondSymbol', '[other]'], - ["foo", "BytecodeHandler:bar"], - ["foo", "BytecodeHandler:bar"], - ["beep", "BytecodeHandler:bar"], - ["hello", "v8::internal::Compiler", "[compiler]"], + ["foo", "BytecodeHandler:bar", "[interpreter]"], + ["foo", "BytecodeHandler:bar", "[interpreter]"], + ["beep", "BytecodeHandler:bar", "[interpreter]"], ["Lost", "[misattributed]"], ["[entry trampoline]"], ]) @@ -125,7 +132,7 @@ def test_multiple_handlers(self): """) callchains = list(ipr.collapsed_callchains_generator(perf_stream, False)) self.assertListEqual(callchains, [ - ["foo", "BytecodeHandler:first"], + ["foo", "BytecodeHandler:first", "[interpreter]"], ]) def test_compiler_symbols_regex(self): @@ -137,6 +144,15 @@ def test_compiler_symbols_regex(self): for compiler_symbol in compiler_symbols: self.assertTrue(ipr.COMPILER_SYMBOLS_RE.match(compiler_symbol)) + def test_jit_code_symbols_regex(self): + jit_code_symbols = [ + "LazyCompile:~Foo blah.js", + "Eval:*", + "Script:*Bar tmp.js", + ] + for jit_code_symbol in jit_code_symbols: + self.assertTrue(ipr.JIT_CODE_SYMBOLS_RE.match(jit_code_symbol)) + def test_strip_function_parameters(self): def should_match(signature, name): self.assertEqual(ipr.strip_function_parameters(signature), name) @@ -145,3 +161,6 @@ def should_match(signature, name): should_match("Foo(foomatic::(anonymous)::bar(baz))", "Foo"), should_match("v8::(anonymous ns)::bar(baz, poe)", "v8::(anonymous ns)::bar") + +if __name__ == '__main__': + unittest.main() diff --git a/deps/v8/tools/parser-shell.cc b/deps/v8/tools/parser-shell.cc index 43d25781659e5c..0517bbf0e69e88 100644 --- a/deps/v8/tools/parser-shell.cc +++ b/deps/v8/tools/parser-shell.cc @@ -93,9 +93,8 @@ std::pair RunBaselineParser( i::ScriptData* cached_data_impl = NULL; // First round of parsing (produce data to cache). { - Zone zone(reinterpret_cast(isolate)->allocator()); + Zone zone(reinterpret_cast(isolate)->allocator(), ZONE_NAME); ParseInfo info(&zone, script); - info.set_global(); info.set_cached_data(&cached_data_impl); info.set_compile_options(v8::ScriptCompiler::kProduceParserCache); v8::base::ElapsedTimer timer; @@ -111,9 +110,8 @@ std::pair RunBaselineParser( } // Second round of parsing (consume cached data). { - Zone zone(reinterpret_cast(isolate)->allocator()); + Zone zone(reinterpret_cast(isolate)->allocator(), ZONE_NAME); ParseInfo info(&zone, script); - info.set_global(); info.set_cached_data(&cached_data_impl); info.set_compile_options(v8::ScriptCompiler::kConsumeParserCache); v8::base::ElapsedTimer timer; diff --git a/deps/v8/tools/parser-shell.gyp b/deps/v8/tools/parser-shell.gyp index 4ef1a82d719572..9b94888edfd7a0 100644 --- a/deps/v8/tools/parser-shell.gyp +++ b/deps/v8/tools/parser-shell.gyp @@ -37,6 +37,7 @@ 'type': 'executable', 'dependencies': [ '../src/v8.gyp:v8', + '../src/v8.gyp:v8_libbase', '../src/v8.gyp:v8_libplatform', ], 'conditions': [ diff --git a/deps/v8/tools/presubmit.py b/deps/v8/tools/presubmit.py index 3be9caf0613bbe..f9ae2bdea46584 100755 --- a/deps/v8/tools/presubmit.py +++ b/deps/v8/tools/presubmit.py @@ -396,13 +396,6 @@ def ProcessFiles(self, files, path): print "Total violating files: %s" % violations return success - -def CheckExternalReferenceRegistration(workspace): - code = subprocess.call( - [sys.executable, join(workspace, "tools", "external-reference-check.py")]) - return code == 0 - - def _CheckStatusFileForDuplicateKeys(filepath): comma_space_bracket = re.compile(", *]") lines = [] @@ -503,7 +496,6 @@ def Main(): print "Running copyright header, trailing whitespaces and " \ "two empty lines between declarations check..." success &= SourceProcessor().Run(workspace) - success &= CheckExternalReferenceRegistration(workspace) success &= CheckStatusFiles(workspace) if success: return 0 diff --git a/deps/v8/tools/profviz/composer.js b/deps/v8/tools/profviz/composer.js index 108911de696037..ce625addca8f3b 100644 --- a/deps/v8/tools/profviz/composer.js +++ b/deps/v8/tools/profviz/composer.js @@ -106,8 +106,6 @@ function PlotScriptComposer(kResX, kResY, error_output) { new TimerEvent("recompile async", "#CC4499", false, 1), 'V8.CompileEvalMicroSeconds': new TimerEvent("compile eval", "#CC4400", true, 0), - 'V8.IcMiss': - new TimerEvent("ic miss", "#CC9900", false, 0), 'V8.ParseMicroSeconds': new TimerEvent("parse", "#00CC00", true, 0), 'V8.PreParseMicroSeconds': diff --git a/deps/v8/tools/profviz/stdio.js b/deps/v8/tools/profviz/stdio.js index 5a8311dfb28357..8ba12e3ce758a0 100644 --- a/deps/v8/tools/profviz/stdio.js +++ b/deps/v8/tools/profviz/stdio.js @@ -30,10 +30,10 @@ var distortion_per_entry = 0; var range_start_override = undefined; var range_end_override = undefined; -if (!processor.parse()) processor.printUsageAndExit();; +if (!processor.parse()) processor.printUsageAndExit(); var result = processor.result(); var distortion = parseInt(result.distortion); -if (isNaN(distortion)) processor.printUsageAndExit();; +if (isNaN(distortion)) processor.printUsageAndExit(); // Convert picoseconds to milliseconds. distortion_per_entry = distortion / 1000000; var rangelimits = result.range.split(","); @@ -43,7 +43,7 @@ if (!isNaN(range_start)) range_start_override = range_start; if (!isNaN(range_end)) range_end_override = range_end; var kResX = 1600; -var kResY = 700; +var kResY = 600; function log_error(text) { print(text); quit(1); diff --git a/deps/v8/tools/release/auto_roll.py b/deps/v8/tools/release/auto_roll.py index c1a99e8d11c52e..d1a3f48cf8c36d 100755 --- a/deps/v8/tools/release/auto_roll.py +++ b/deps/v8/tools/release/auto_roll.py @@ -20,7 +20,7 @@ https://v8-roll.appspot.com/ This only works with a Google account. -CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel""") +CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel""") class Preparation(Step): MESSAGE = "Preparation." diff --git a/deps/v8/tools/release/test_scripts.py b/deps/v8/tools/release/test_scripts.py index ab92e89f3a05ca..a344376628ebdf 100644 --- a/deps/v8/tools/release/test_scripts.py +++ b/deps/v8/tools/release/test_scripts.py @@ -1044,7 +1044,7 @@ def CheckVersionCommit(): https://v8-roll.appspot.com/ This only works with a Google account. -CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel +CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel TBR=reviewer@chromium.org""" diff --git a/deps/v8/tools/run-tests.py b/deps/v8/tools/run-tests.py index f248dff5cc3eb4..e94f59939f7dec 100755 --- a/deps/v8/tools/run-tests.py +++ b/deps/v8/tools/run-tests.py @@ -67,6 +67,8 @@ "bot_default": [ "mjsunit", "cctest", + "debugger", + "inspector", "webkit", "fuzzer", "message", @@ -78,6 +80,8 @@ "default": [ "mjsunit", "cctest", + "debugger", + "inspector", "fuzzer", "message", "preparser", @@ -88,6 +92,8 @@ "optimize_for_size": [ "mjsunit", "cctest", + "debugger", + "inspector", "webkit", "intl", ], @@ -255,6 +261,9 @@ def BuildOptions(): result.add_option("--download-data-only", help="Deprecated", default=False, action="store_true") + result.add_option("--enable-inspector", + help="Indicates a build with inspector support", + default=False, action="store_true") result.add_option("--extra-flags", help="Additional flags to pass to each test command", default="") @@ -447,8 +456,13 @@ def ProcessOptions(options): print(">>> Latest GN build found is %s" % latest_config) options.outdir = os.path.join(DEFAULT_OUT_GN, latest_config) - build_config_path = os.path.join( - BASE_DIR, options.outdir, "v8_build_config.json") + if options.buildbot: + build_config_path = os.path.join( + BASE_DIR, options.outdir, options.mode, "v8_build_config.json") + else: + build_config_path = os.path.join( + BASE_DIR, options.outdir, "v8_build_config.json") + if os.path.exists(build_config_path): try: with open(build_config_path) as f: @@ -459,6 +473,10 @@ def ProcessOptions(options): return False options.auto_detect = True + # In auto-detect mode the outdir is always where we found the build config. + # This ensures that we'll also take the build products from there. + options.outdir = os.path.dirname(build_config_path) + options.arch_and_mode = None options.arch = build_config["v8_target_cpu"] if options.arch == 'x86': @@ -466,6 +484,7 @@ def ProcessOptions(options): options.arch = 'ia32' options.asan = build_config["is_asan"] options.dcheck_always_on = build_config["dcheck_always_on"] + options.enable_inspector = build_config["v8_enable_inspector"] options.mode = 'debug' if build_config["is_debug"] else 'release' options.msan = build_config["is_msan"] options.no_i18n = not build_config["v8_enable_i18n_support"] @@ -592,6 +611,13 @@ def CheckTestMode(name, option): if options.no_i18n: TEST_MAP["bot_default"].remove("intl") TEST_MAP["default"].remove("intl") + if not options.enable_inspector: + TEST_MAP["default"].remove("inspector") + TEST_MAP["bot_default"].remove("inspector") + TEST_MAP["optimize_for_size"].remove("inspector") + TEST_MAP["default"].remove("debugger") + TEST_MAP["bot_default"].remove("debugger") + TEST_MAP["optimize_for_size"].remove("debugger") return True @@ -702,15 +728,15 @@ def Execute(arch, mode, args, options, suites): shell_dir = options.shell_dir if not shell_dir: - if options.buildbot: + if options.auto_detect: + # If an output dir with a build was passed, test directly in that + # directory. + shell_dir = os.path.join(BASE_DIR, options.outdir) + elif options.buildbot: # TODO(machenbach): Get rid of different output folder location on # buildbot. Currently this is capitalized Release and Debug. shell_dir = os.path.join(BASE_DIR, options.outdir, mode) mode = BuildbotToV8Mode(mode) - elif options.auto_detect: - # If an output dir with a build was passed, test directly in that - # directory. - shell_dir = os.path.join(BASE_DIR, options.outdir) else: shell_dir = os.path.join( BASE_DIR, @@ -733,14 +759,8 @@ def Execute(arch, mode, args, options, suites): # Predictable mode is slower. options.timeout *= 2 - # TODO(machenbach): Remove temporary verbose output on windows after - # debugging driver-hung-up on XP. - verbose_output = ( - options.verbose or - utils.IsWindows() and options.progress == "verbose" - ) ctx = context.Context(arch, MODES[mode]["execution_mode"], shell_dir, - mode_flags, verbose_output, + mode_flags, options.verbose, options.timeout, options.isolates, options.command_prefix, @@ -851,7 +871,7 @@ def iter_seed_flags(): run_networked = not options.no_network if not run_networked: - if verbose_output: + if options.verbose: print("Network distribution disabled, running tests locally.") elif utils.GuessOS() != "linux": print("Network distribution is only supported on Linux, sorry!") diff --git a/deps/v8/tools/sanitizers/sancov_merger.py b/deps/v8/tools/sanitizers/sancov_merger.py index a4cfec1b0c49c7..867f8b42582167 100755 --- a/deps/v8/tools/sanitizers/sancov_merger.py +++ b/deps/v8/tools/sanitizers/sancov_merger.py @@ -7,7 +7,7 @@ When merging test runner output, the sancov files are expected to be located in one directory with the file-name pattern: -.test..sancov +.test...sancov For each executable, this script writes a new file: .result.sancov @@ -48,7 +48,7 @@ # Regexp to find sancov file as output by the v8 test runner. Also grabs the # executable name in group 1. -SANCOV_FILE_RE = re.compile(r'^(.*)\.test\.\d+\.sancov$') +SANCOV_FILE_RE = re.compile(r'^(.*)\.test\.\d+\.\d+\.sancov$') # Regexp to find sancov result files as returned from swarming. SANCOV_RESULTS_FILE_RE = re.compile(r'^.*\.result\.sancov$') diff --git a/deps/v8/tools/sanitizers/sancov_merger_test.py b/deps/v8/tools/sanitizers/sancov_merger_test.py index 93b89eb8a7b2fd..899c716a5a4e40 100644 --- a/deps/v8/tools/sanitizers/sancov_merger_test.py +++ b/deps/v8/tools/sanitizers/sancov_merger_test.py @@ -11,19 +11,19 @@ # executable name -> file list. FILE_MAP = { 'd8': [ - 'd8.test.1.sancov', - 'd8.test.2.sancov', - 'd8.test.3.sancov', - 'd8.test.4.sancov', - 'd8.test.5.sancov', - 'd8.test.6.sancov', - 'd8.test.7.sancov', + 'd8.test.1.1.sancov', + 'd8.test.2.1.sancov', + 'd8.test.3.1.sancov', + 'd8.test.4.1.sancov', + 'd8.test.5.1.sancov', + 'd8.test.5.2.sancov', + 'd8.test.6.1.sancov', ], 'cctest': [ - 'cctest.test.1.sancov', - 'cctest.test.2.sancov', - 'cctest.test.3.sancov', - 'cctest.test.4.sancov', + 'cctest.test.1.1.sancov', + 'cctest.test.2.1.sancov', + 'cctest.test.3.1.sancov', + 'cctest.test.4.1.sancov', ], } @@ -32,42 +32,42 @@ # (flag, path, executable name, intermediate result index, file list). EXPECTED_INPUTS_2 = [ (False, '/some/path', 'cctest', 0, [ - 'cctest.test.1.sancov', - 'cctest.test.2.sancov']), + 'cctest.test.1.1.sancov', + 'cctest.test.2.1.sancov']), (False, '/some/path', 'cctest', 1, [ - 'cctest.test.3.sancov', - 'cctest.test.4.sancov']), + 'cctest.test.3.1.sancov', + 'cctest.test.4.1.sancov']), (False, '/some/path', 'd8', 0, [ - 'd8.test.1.sancov', - 'd8.test.2.sancov', - 'd8.test.3.sancov', - 'd8.test.4.sancov']), + 'd8.test.1.1.sancov', + 'd8.test.2.1.sancov', + 'd8.test.3.1.sancov', + 'd8.test.4.1.sancov']), (False, '/some/path', 'd8', 1, [ - 'd8.test.5.sancov', - 'd8.test.6.sancov', - 'd8.test.7.sancov']), + 'd8.test.5.1.sancov', + 'd8.test.5.2.sancov', + 'd8.test.6.1.sancov']), ] # The same for 4 cpus. EXPECTED_INPUTS_4 = [ (True, '/some/path', 'cctest', 0, [ - 'cctest.test.1.sancov', - 'cctest.test.2.sancov']), + 'cctest.test.1.1.sancov', + 'cctest.test.2.1.sancov']), (True, '/some/path', 'cctest', 1, [ - 'cctest.test.3.sancov', - 'cctest.test.4.sancov']), + 'cctest.test.3.1.sancov', + 'cctest.test.4.1.sancov']), (True, '/some/path', 'd8', 0, [ - 'd8.test.1.sancov', - 'd8.test.2.sancov']), + 'd8.test.1.1.sancov', + 'd8.test.2.1.sancov']), (True, '/some/path', 'd8', 1, [ - 'd8.test.3.sancov', - 'd8.test.4.sancov']), + 'd8.test.3.1.sancov', + 'd8.test.4.1.sancov']), (True, '/some/path', 'd8', 2, [ - 'd8.test.5.sancov', - 'd8.test.6.sancov']), + 'd8.test.5.1.sancov', + 'd8.test.5.2.sancov']), (True, '/some/path', 'd8', 3, [ - 'd8.test.7.sancov'])] + 'd8.test.6.1.sancov'])] class MergerTests(unittest.TestCase): diff --git a/deps/v8/tools/testrunner/local/execution.py b/deps/v8/tools/testrunner/local/execution.py index f3d11a8b5cf377..4cb9e45a035ec2 100644 --- a/deps/v8/tools/testrunner/local/execution.py +++ b/deps/v8/tools/testrunner/local/execution.py @@ -149,8 +149,9 @@ def _rename_coverage_data(self, output, context): Rename files with PIDs to files with unique test IDs, because the number of tests might be higher than pid_max. E.g.: - d8.1234.sancov -> d8.test.1.sancov, where 1234 was the process' PID - and 1 is the test ID. + d8.1234.sancov -> d8.test.42.1.sancov, where 1234 was the process' PID, + 42 is the test ID and 1 is the attempt (the same test might be rerun on + failures). """ if context.sancov_dir and output.pid is not None: sancov_file = os.path.join( @@ -160,7 +161,10 @@ def _rename_coverage_data(self, output, context): if os.path.exists(sancov_file): parts = sancov_file.split(".") new_sancov_file = ".".join( - parts[:-2] + ["test", str(self.test.id)] + parts[-1:]) + parts[:-2] + + ["test", str(self.test.id), str(self.test.run)] + + parts[-1:] + ) assert not os.path.exists(new_sancov_file) os.rename(sancov_file, new_sancov_file) diff --git a/deps/v8/tools/testrunner/testrunner.isolate b/deps/v8/tools/testrunner/testrunner.isolate index 1e8e9dccb99663..533ef68c8feef8 100644 --- a/deps/v8/tools/testrunner/testrunner.isolate +++ b/deps/v8/tools/testrunner/testrunner.isolate @@ -20,5 +20,12 @@ ], }, }], + ['is_gn==1', { + 'variables': { + 'files': [ + '<(PRODUCT_DIR)/v8_build_config.json', + ], + }, + }], ], } diff --git a/deps/v8/tools/turbolizer/schedule-view.js b/deps/v8/tools/turbolizer/schedule-view.js index 2cd49c991fdd5d..ef4789211d3c48 100644 --- a/deps/v8/tools/turbolizer/schedule-view.js +++ b/deps/v8/tools/turbolizer/schedule-view.js @@ -77,7 +77,7 @@ class ScheduleView extends TextView { // Parse opcode including [] [ [/^[A-Za-z0-9_]+(\[.*\])?$/, NODE_STYLE, -1], - [/^[A-Za-z0-9_]+(\[.*\])?/, NODE_STYLE, 3] + [/^[A-Za-z0-9_]+(\[(\[.*?\]|.)*?\])?/, NODE_STYLE, 3] ], // Parse optional parameters [ diff --git a/deps/v8/tools/update-wasm-fuzzers.sh b/deps/v8/tools/update-wasm-fuzzers.sh index 3652829c8d84fd..a58681f6826807 100755 --- a/deps/v8/tools/update-wasm-fuzzers.sh +++ b/deps/v8/tools/update-wasm-fuzzers.sh @@ -12,30 +12,30 @@ cd ${TOOLS_DIR}/.. rm -rf test/fuzzer/wasm rm -rf test/fuzzer/wasm_asmjs -make x64.debug -j +make x64.release -j mkdir -p test/fuzzer/wasm mkdir -p test/fuzzer/wasm_asmjs # asm.js ./tools/run-tests.py -j8 --variants=default --timeout=10 --arch=x64 \ - --mode=debug --no-presubmit --extra-flags="--dump-wasm-module \ + --mode=release --no-presubmit --extra-flags="--dump-wasm-module \ --dump-wasm-module-path=./test/fuzzer/wasm_asmjs/" mjsunit/wasm/asm* ./tools/run-tests.py -j8 --variants=default --timeout=10 --arch=x64 \ - --mode=debug --no-presubmit --extra-flags="--dump-wasm-module \ + --mode=release --no-presubmit --extra-flags="--dump-wasm-module \ --dump-wasm-module-path=./test/fuzzer/wasm_asmjs/" mjsunit/asm/* ./tools/run-tests.py -j8 --variants=default --timeout=10 --arch=x64 \ - --mode=debug --no-presubmit --extra-flags="--dump-wasm-module \ + --mode=release --no-presubmit --extra-flags="--dump-wasm-module \ --dump-wasm-module-path=./test/fuzzer/wasm_asmjs/" mjsunit/regress/asm/* # WASM ./tools/run-tests.py -j8 --variants=default --timeout=10 --arch=x64 \ - --mode=debug --no-presubmit --extra-flags="--dump-wasm-module \ + --mode=release --no-presubmit --extra-flags="--dump-wasm-module \ --dump-wasm-module-path=./test/fuzzer/wasm/" unittests ./tools/run-tests.py -j8 --variants=default --timeout=10 --arch=x64 \ - --mode=debug --no-presubmit --extra-flags="--dump-wasm-module \ + --mode=release --no-presubmit --extra-flags="--dump-wasm-module \ --dump-wasm-module-path=./test/fuzzer/wasm/" mjsunit/wasm/* ./tools/run-tests.py -j8 --variants=default --timeout=10 --arch=x64 \ - --mode=debug --no-presubmit --extra-flags="--dump-wasm-module \ + --mode=release --no-presubmit --extra-flags="--dump-wasm-module \ --dump-wasm-module-path=./test/fuzzer/wasm/" \ $(cd test/; ls cctest/wasm/test-*.cc | \ sed -es/wasm\\///g | sed -es/[.]cc/\\/\\*/g) diff --git a/deps/v8/tools/whitespace.txt b/deps/v8/tools/whitespace.txt index 2229d87d53dd65..0f4384f4e3185a 100644 --- a/deps/v8/tools/whitespace.txt +++ b/deps/v8/tools/whitespace.txt @@ -6,4 +6,4 @@ A Smi balks into a war and says: "I'm so deoptimized today!" The doubles heard this and started to unbox. The Smi looked at them when a crazy v8-autoroll account showed up...... -The autoroller bought a round of Himbeerbrause. Suddenly ... +The autoroller bought a round of Himbeerbrause. Suddenly .......