diff --git a/Makefile b/Makefile index 05d3056f27973e..b50ed12077e31e 100644 --- a/Makefile +++ b/Makefile @@ -481,7 +481,7 @@ build-ci: # - node-test-commit-linux-coverage: where the build and the tests need # to be instrumented, see `coverage`. run-ci: build-ci - $(MAKE) test-ci + $(MAKE) test-ci -j1 test-release: test-build $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) diff --git a/common.gypi b/common.gypi index 48fc8d9322fb42..39c09183753b17 100644 --- a/common.gypi +++ b/common.gypi @@ -28,29 +28,56 @@ 'openssl_fips%': '', - # Default to -O0 for debug builds. - 'v8_optimized_debug%': 0, + # Some STL containers (e.g. std::vector) do not preserve ABI compatibility + # between debug and non-debug mode. + 'disable_glibcxx_debug': 1, + + # Don't use ICU data file (icudtl.dat) from V8, we use our own. + 'icu_use_data_file_flag%': 0, # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.3', + 'v8_embedder_string': '-node.0', + + ##### V8 defaults for Node.js ##### + + # Old time default, now explicitly stated. + 'v8_use_snapshot': 'true', + + # Refs: https://github.com/nodejs/node/issues/23122 + # Refs: https://github.com/nodejs/node/issues/23167 + # Enable compiler warnings when using V8_DEPRECATED apis. + 'v8_deprecation_warnings': 1, + # Enable compiler warnings when using V8_DEPRECATE_SOON apis. + 'v8_imminent_deprecation_warnings': 1, + + # Default to -O0 for debug builds. + 'v8_optimized_debug': 0, # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, # Don't bake anything extra into the snapshot. - 'v8_use_external_startup_data%': 0, + 'v8_use_external_startup_data': 0, + + # https://github.com/nodejs/node/pull/22920/files#r222779926 + 'v8_enable_handle_zapping': 0, # Disable V8 untrusted code mitigations. # See https://github.com/v8/v8/wiki/Untrusted-code-mitigations 'v8_untrusted_code_mitigations': 'false', - # Some STL containers (e.g. std::vector) do not preserve ABI compatibility - # between debug and non-debug mode. - 'disable_glibcxx_debug': 1, + # Still WIP in V8 7.1 + 'v8_enable_pointer_compression': 'false', - # Don't use ICU data file (icudtl.dat) from V8, we use our own. - 'icu_use_data_file_flag%': 0, + # New in V8 7.1 + 'v8_enable_embedded_builtins': 'true', + + # This is more of a V8 dev setting + # https://github.com/nodejs/node/pull/22920/files#r222779926 + 'v8_enable_fast_mksnapshot': 0, + + ##### end V8 defaults ##### 'conditions': [ ['GENERATOR=="ninja"', { diff --git a/deps/v8/.clang-tidy b/deps/v8/.clang-tidy new file mode 100644 index 00000000000000..31d7ddc750011f --- /dev/null +++ b/deps/v8/.clang-tidy @@ -0,0 +1,20 @@ +--- +--- + Checks: '-*, + modernize-redundant-void-arg, + modernize-replace-random-shuffle, + modernize-shrink-to-fit, + modernize-use-auto, + modernize-use-bool-literals, + modernize-use-equals-default, + modernize-use-equals-delete, + modernize-use-nullptr, + modernize-use-override, + google-build-explicit-make-pair, + google-explicit-constructor, + google-readability-casting' +WarningsAsErrors: '' +HeaderFilterRegex: '' +AnalyzeTemporaryDtors: false +... + diff --git a/deps/v8/.gitattributes b/deps/v8/.gitattributes index 7ef1e1b74b01e0..b3e9762a9392a1 100644 --- a/deps/v8/.gitattributes +++ b/deps/v8/.gitattributes @@ -3,3 +3,5 @@ # Do not modify line endings for binary files (which are sometimes auto # detected as text files by git). *.png binary +# Don't include minified JS in git grep/diff output +test/mjsunit/asm/sqlite3/*.js -diff diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 511e24d90c740f..7f09c89e360f8e 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -73,7 +73,6 @@ /tools/clang /tools/gcmole/gcmole-tools /tools/gcmole/gcmole-tools.tar.gz -/tools/gyp /tools/jsfunfuzz/jsfunfuzz /tools/jsfunfuzz/jsfunfuzz.tar.gz /tools/luci-go diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 898bc8feaecd08..b935565945dad7 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -132,6 +132,7 @@ Peter Rybin Peter Varga Peter Wong Paul Lind +PhistucK Qingyan Li Qiuyi Zhang Rafal Krypa @@ -162,6 +163,7 @@ Vladimir Krivosheev Vladimir Shutoff Wiktor Garbacz Xiaoyin Liu +Yannic Bonenberger Yong Wang Yu Yin Zac Hansen diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index c6a58776cd6a81..a4fa599762f95a 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -63,7 +63,7 @@ declare_args() { v8_enable_vtunejit = false # Sets -dENABLE_HANDLE_ZAPPING. - v8_enable_handle_zapping = is_debug + v8_enable_handle_zapping = true # Enable slow dchecks. v8_enable_slow_dchecks = false @@ -76,9 +76,6 @@ declare_args() { v8_enable_embedded_builtins = v8_use_snapshot && v8_current_cpu != "x86" && !is_aix && (!is_win || is_clang) - # Enable embedded bytecode handlers. - v8_enable_embedded_bytecode_handlers = false - # Enable code-generation-time checking of types in the CodeStubAssembler. v8_enable_verify_csa = false @@ -164,6 +161,17 @@ declare_args() { # setting the "check_v8_header_includes" gclient variable to run a # specific hook). v8_check_header_includes = false + + # We reuse the snapshot toolchain for building torque and other generators to + # avoid building v8_libbase on the host more than once. On mips with big + # endian, the snapshot toolchain is the target toolchain and, hence, can't be + # used. +} + +v8_generator_toolchain = v8_snapshot_toolchain +if (host_cpu == "x64" && + (v8_current_cpu == "mips" || v8_current_cpu == "mips64")) { + v8_generator_toolchain = "//build/toolchain/linux:clang_x64" } # Derived defaults. @@ -197,9 +205,6 @@ assert( !v8_untrusted_code_mitigations, "Embedded builtins on ia32 and untrusted code mitigations are incompatible") -assert(!v8_enable_embedded_bytecode_handlers || v8_enable_embedded_builtins, - "Embedded bytecode handlers only work with embedded builtins") - # Specifies if the target build is a simulator build. Comparing target cpu # with v8 target cpu to not affect simulator builds for making cross-compile # snapshots. @@ -377,10 +382,10 @@ config("features") { defines += [ "V8_CHECK_MICROTASKS_SCOPES_CONSISTENCY" ] } if (v8_enable_embedded_builtins) { - defines += [ "V8_EMBEDDED_BUILTINS" ] - } - if (v8_enable_embedded_bytecode_handlers) { - defines += [ "V8_EMBEDDED_BYTECODE_HANDLERS" ] + defines += [ + "V8_EMBEDDED_BUILTINS", + "V8_EMBEDDED_BYTECODE_HANDLERS", + ] } if (v8_use_multi_snapshots) { defines += [ "V8_MULTI_SNAPSHOTS" ] @@ -849,6 +854,8 @@ action("postmortem-metadata") { sources = [ "src/objects.h", "src/objects-inl.h", + "src/objects/allocation-site-inl.h", + "src/objects/allocation-site.h", "src/objects/code-inl.h", "src/objects/code.h", "src/objects/data-handler.h", @@ -859,12 +866,16 @@ action("postmortem-metadata") { "src/objects/js-array.h", "src/objects/js-array-buffer-inl.h", "src/objects/js-array-buffer.h", + "src/objects/js-objects-inl.h", + "src/objects/js-objects.h", "src/objects/js-regexp-inl.h", "src/objects/js-regexp.h", "src/objects/js-regexp-string-iterator-inl.h", "src/objects/js-regexp-string-iterator.h", "src/objects/map.h", "src/objects/map-inl.h", + "src/objects/name.h", + "src/objects/name-inl.h", "src/objects/scope-info.h", "src/objects/script.h", "src/objects/script-inl.h", @@ -887,7 +898,10 @@ torque_files = [ "src/builtins/array.tq", "src/builtins/array-copywithin.tq", "src/builtins/array-foreach.tq", + "src/builtins/array-lastindexof.tq", "src/builtins/array-reverse.tq", + "src/builtins/array-splice.tq", + "src/builtins/array-unshift.tq", "src/builtins/typed-array.tq", "src/builtins/data-view.tq", "test/torque/test-torque.tq", @@ -909,17 +923,8 @@ action("run_torque") { "test/cctest/:*", ] - # We reuse the snapshot toolchain for building torque to not build v8_libbase - # on the host more than once. On mips with big endian, the snapshot toolchain - # is the target toolchain and, hence, can't be used. - v8_torque_toolchain = v8_snapshot_toolchain - if (host_cpu == "x64" && - (v8_current_cpu == "mips" || v8_current_cpu == "mips64")) { - v8_torque_toolchain = "//build/toolchain/linux:clang_x64" - } - deps = [ - ":torque($v8_torque_toolchain)", + ":torque($v8_generator_toolchain)", ] script = "tools/run.py" @@ -937,7 +942,7 @@ action("run_torque") { } args = [ - "./" + rebase_path(get_label_info(":torque($v8_torque_toolchain)", + "./" + rebase_path(get_label_info(":torque($v8_generator_toolchain)", "root_out_dir") + "/torque", root_build_dir), "-o", @@ -967,6 +972,7 @@ v8_source_set("torque_generated_initializers") { visibility = [ ":*" ] # Only targets in this file can depend on this. deps = [ + ":generate_bytecode_builtins_list", ":run_torque", ] @@ -987,6 +993,24 @@ v8_source_set("torque_generated_initializers") { configs = [ ":internal_config" ] } +action("generate_bytecode_builtins_list") { + script = "tools/run.py" + outputs = [ + "$target_gen_dir/builtins-generated/bytecodes-builtins-list.h", + ] + deps = [ + ":bytecode_builtins_list_generator($v8_generator_toolchain)", + ] + args = [ + "./" + rebase_path( + get_label_info( + ":bytecode_builtins_list_generator($v8_generator_toolchain)", + "root_out_dir") + "/bytecode_builtins_list_generator", + root_build_dir), + rebase_path("$target_gen_dir/builtins-generated/bytecodes-builtins-list.h"), + ] +} + # Template to generate different V8 snapshots based on different runtime flags. # Can be invoked with run_mksnapshot(). The target will resolve to # run_mksnapshot_. If is "default", no file suffixes will be used. @@ -1380,8 +1404,6 @@ v8_source_set("v8_initializers") { "src/interpreter/interpreter-generator.h", "src/interpreter/interpreter-intrinsics-generator.cc", "src/interpreter/interpreter-intrinsics-generator.h", - "src/interpreter/setup-interpreter-internal.cc", - "src/interpreter/setup-interpreter.h", ] if (use_jumbo_build == true) { @@ -1483,6 +1505,7 @@ v8_header_set("v8_headers") { configs = [ ":internal_config" ] sources = [ + "include/v8-internal.h", "include/v8.h", "include/v8config.h", ] @@ -1502,8 +1525,10 @@ v8_source_set("v8_base") { "//base/trace_event/common/trace_event_common.h", ### gcmole(all) ### + "$target_gen_dir/builtins-generated/bytecodes-builtins-list.h", "include/v8-inspector-protocol.h", "include/v8-inspector.h", + "include/v8-internal.h", "include/v8-platform.h", "include/v8-profiler.h", "include/v8-testing.h", @@ -1514,6 +1539,7 @@ v8_source_set("v8_base") { "src/accessors.h", "src/address-map.cc", "src/address-map.h", + "src/allocation-site-scopes-inl.h", "src/allocation-site-scopes.h", "src/allocation.cc", "src/allocation.h", @@ -1560,6 +1586,7 @@ v8_source_set("v8_base") { "src/ast/modules.h", "src/ast/prettyprinter.cc", "src/ast/prettyprinter.h", + "src/ast/scopes-inl.h", "src/ast/scopes.cc", "src/ast/scopes.h", "src/ast/variables.cc", @@ -1597,7 +1624,6 @@ v8_source_set("v8_base") { "src/builtins/builtins-internal.cc", "src/builtins/builtins-interpreter.cc", "src/builtins/builtins-intl.cc", - "src/builtins/builtins-intl.h", "src/builtins/builtins-json.cc", "src/builtins/builtins-math.cc", "src/builtins/builtins-number.cc", @@ -1811,6 +1837,7 @@ v8_source_set("v8_base") { "src/compiler/operator.h", "src/compiler/osr.cc", "src/compiler/osr.h", + "src/compiler/per-isolate-compiler-cache.h", "src/compiler/persistent-map.h", "src/compiler/pipeline-statistics.cc", "src/compiler/pipeline-statistics.h", @@ -1822,6 +1849,8 @@ v8_source_set("v8_base") { "src/compiler/raw-machine-assembler.h", "src/compiler/redundancy-elimination.cc", "src/compiler/redundancy-elimination.h", + "src/compiler/refs-map.cc", + "src/compiler/refs-map.h", "src/compiler/register-allocator-verifier.cc", "src/compiler/register-allocator-verifier.h", "src/compiler/register-allocator.cc", @@ -2138,6 +2167,8 @@ v8_source_set("v8_base") { "src/macro-assembler.h", "src/map-updater.cc", "src/map-updater.h", + "src/math-random.cc", + "src/math-random.h", "src/maybe-handles-inl.h", "src/maybe-handles.h", "src/messages.cc", @@ -2156,6 +2187,7 @@ v8_source_set("v8_base") { "src/objects/arguments.h", "src/objects/bigint.cc", "src/objects/bigint.h", + "src/objects/builtin-function-id.h", "src/objects/code-inl.h", "src/objects/code.h", "src/objects/compilation-cache-inl.h", @@ -2179,11 +2211,17 @@ v8_source_set("v8_base") { "src/objects/js-array-buffer.h", "src/objects/js-array-inl.h", "src/objects/js-array.h", + "src/objects/js-break-iterator-inl.h", + "src/objects/js-break-iterator.cc", + "src/objects/js-break-iterator.h", "src/objects/js-collator-inl.h", "src/objects/js-collator.cc", "src/objects/js-collator.h", "src/objects/js-collection-inl.h", "src/objects/js-collection.h", + "src/objects/js-date-time-format-inl.h", + "src/objects/js-date-time-format.cc", + "src/objects/js-date-time-format.h", "src/objects/js-generator-inl.h", "src/objects/js-generator.h", "src/objects/js-list-format-inl.h", @@ -2192,6 +2230,11 @@ v8_source_set("v8_base") { "src/objects/js-locale-inl.h", "src/objects/js-locale.cc", "src/objects/js-locale.h", + "src/objects/js-number-format-inl.h", + "src/objects/js-number-format.cc", + "src/objects/js-number-format.h", + "src/objects/js-objects-inl.h", + "src/objects/js-objects.h", "src/objects/js-plural-rules-inl.h", "src/objects/js-plural-rules.cc", "src/objects/js-plural-rules.h", @@ -2206,6 +2249,9 @@ v8_source_set("v8_base") { "src/objects/js-relative-time-format-inl.h", "src/objects/js-relative-time-format.cc", "src/objects/js-relative-time-format.h", + "src/objects/js-segmenter-inl.h", + "src/objects/js-segmenter.cc", + "src/objects/js-segmenter.h", "src/objects/literal-objects-inl.h", "src/objects/literal-objects.cc", "src/objects/literal-objects.h", @@ -2216,6 +2262,9 @@ v8_source_set("v8_base") { "src/objects/maybe-object-inl.h", "src/objects/maybe-object.h", "src/objects/microtask-inl.h", + "src/objects/microtask-queue-inl.h", + "src/objects/microtask-queue.cc", + "src/objects/microtask-queue.h", "src/objects/microtask.h", "src/objects/module-inl.h", "src/objects/module.cc", @@ -2229,6 +2278,8 @@ v8_source_set("v8_base") { "src/objects/ordered-hash-table.h", "src/objects/promise-inl.h", "src/objects/promise.h", + "src/objects/property-array-inl.h", + "src/objects/property-array.h", "src/objects/property-descriptor-object-inl.h", "src/objects/property-descriptor-object.h", "src/objects/prototype-info-inl.h", @@ -2240,6 +2291,8 @@ v8_source_set("v8_base") { "src/objects/script.h", "src/objects/shared-function-info-inl.h", "src/objects/shared-function-info.h", + "src/objects/stack-frame-info-inl.h", + "src/objects/stack-frame-info.h", "src/objects/string-inl.h", "src/objects/string-table.h", "src/objects/string.h", @@ -2265,6 +2318,7 @@ v8_source_set("v8_base") { "src/parsing/parsing.cc", "src/parsing/parsing.h", "src/parsing/pattern-rewriter.cc", + "src/parsing/preparsed-scope-data-impl.h", "src/parsing/preparsed-scope-data.cc", "src/parsing/preparsed-scope-data.h", "src/parsing/preparser-logger.h", @@ -2321,6 +2375,8 @@ v8_source_set("v8_base") { "src/regexp/jsregexp-inl.h", "src/regexp/jsregexp.cc", "src/regexp/jsregexp.h", + "src/regexp/property-sequences.cc", + "src/regexp/property-sequences.h", "src/regexp/regexp-ast.cc", "src/regexp/regexp-ast.h", "src/regexp/regexp-macro-assembler-irregexp-inl.h", @@ -2342,6 +2398,7 @@ v8_source_set("v8_base") { "src/reloc-info.cc", "src/reloc-info.h", "src/roots-inl.h", + "src/roots.cc", "src/roots.h", "src/runtime-profiler.cc", "src/runtime-profiler.h", @@ -2361,7 +2418,6 @@ v8_source_set("v8_base") { "src/runtime/runtime-interpreter.cc", "src/runtime/runtime-intl.cc", "src/runtime/runtime-literals.cc", - "src/runtime/runtime-maths.cc", "src/runtime/runtime-module.cc", "src/runtime/runtime-numbers.cc", "src/runtime/runtime-object.cc", @@ -2393,8 +2449,6 @@ v8_source_set("v8_base") { "src/snapshot/builtin-serializer-allocator.h", "src/snapshot/builtin-serializer.cc", "src/snapshot/builtin-serializer.h", - "src/snapshot/builtin-snapshot-utils.cc", - "src/snapshot/builtin-snapshot-utils.h", "src/snapshot/code-serializer.cc", "src/snapshot/code-serializer.h", "src/snapshot/default-deserializer-allocator.cc", @@ -2437,6 +2491,8 @@ v8_source_set("v8_base") { "src/string-builder.cc", "src/string-case.cc", "src/string-case.h", + "src/string-constants.cc", + "src/string-constants.h", "src/string-hasher-inl.h", "src/string-hasher.h", "src/string-search.h", @@ -2445,6 +2501,7 @@ v8_source_set("v8_base") { "src/strtod.cc", "src/strtod.h", "src/third_party/utf8-decoder/utf8-decoder.h", + "src/torque-assembler.h", "src/tracing/trace-event.cc", "src/tracing/trace-event.h", "src/tracing/traced-value.cc", @@ -2516,6 +2573,7 @@ v8_source_set("v8_base") { "src/wasm/module-compiler.h", "src/wasm/module-decoder.cc", "src/wasm/module-decoder.h", + "src/wasm/object-access.h", "src/wasm/signature-map.cc", "src/wasm/signature-map.h", "src/wasm/streaming-decoder.cc", @@ -2867,6 +2925,7 @@ v8_source_set("v8_base") { defines = [] deps = [ + ":generate_bytecode_builtins_list", ":torque_generated_core", ":v8_headers", ":v8_libbase", @@ -2884,28 +2943,39 @@ v8_source_set("v8_base") { } else { sources -= [ "src/builtins/builtins-intl.cc", - "src/builtins/builtins-intl.h", "src/char-predicates.cc", "src/intl.cc", "src/intl.h", "src/objects/intl-objects-inl.h", "src/objects/intl-objects.cc", "src/objects/intl-objects.h", + "src/objects/js-break-iterator-inl.h", + "src/objects/js-break-iterator.cc", + "src/objects/js-break-iterator.h", "src/objects/js-collator-inl.h", "src/objects/js-collator.cc", "src/objects/js-collator.h", + "src/objects/js-date-time-format-inl.h", + "src/objects/js-date-time-format.cc", + "src/objects/js-date-time-format.h", "src/objects/js-list-format-inl.h", "src/objects/js-list-format.cc", "src/objects/js-list-format.h", "src/objects/js-locale-inl.h", "src/objects/js-locale.cc", "src/objects/js-locale.h", + "src/objects/js-number-format-inl.h", + "src/objects/js-number-format.cc", + "src/objects/js-number-format.h", "src/objects/js-plural-rules-inl.h", "src/objects/js-plural-rules.cc", "src/objects/js-plural-rules.h", "src/objects/js-relative-time-format-inl.h", "src/objects/js-relative-time-format.cc", "src/objects/js-relative-time-format.h", + "src/objects/js-segmenter-inl.h", + "src/objects/js-segmenter.cc", + "src/objects/js-segmenter.h", "src/runtime/runtime-intl.cc", ] } @@ -2914,6 +2984,15 @@ v8_source_set("v8_base") { sources += [ "$target_gen_dir/debug-support.cc" ] deps += [ ":postmortem-metadata" ] } + + # Platforms that don't have CAS support need to link atomic library + # to implement atomic memory access + if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel" || + v8_current_cpu == "mips64" || v8_current_cpu == "mips64el" || + v8_current_cpu == "ppc" || v8_current_cpu == "ppc64" || + v8_current_cpu == "s390" || v8_current_cpu == "s390x") { + libs = [ "atomic" ] + } } v8_source_set("torque_base") { @@ -2921,7 +3000,11 @@ v8_source_set("torque_base") { sources = [ "src/torque/ast.h", + "src/torque/cfg.cc", + "src/torque/cfg.h", "src/torque/contextual.h", + "src/torque/csa-generator.cc", + "src/torque/csa-generator.h", "src/torque/declarable.cc", "src/torque/declarable.h", "src/torque/declaration-visitor.cc", @@ -2935,6 +3018,8 @@ v8_source_set("torque_base") { "src/torque/global-context.h", "src/torque/implementation-visitor.cc", "src/torque/implementation-visitor.h", + "src/torque/instructions.cc", + "src/torque/instructions.h", "src/torque/scope.cc", "src/torque/scope.h", "src/torque/source-positions.cc", @@ -2959,6 +3044,7 @@ v8_source_set("torque_base") { v8_component("v8_libbase") { sources = [ "src/base/adapters.h", + "src/base/address-region.h", "src/base/atomic-utils.h", "src/base/atomicops.h", "src/base/atomicops_internals_atomicword_compat.h", @@ -2967,6 +3053,8 @@ v8_component("v8_libbase") { "src/base/base-export.h", "src/base/bits.cc", "src/base/bits.h", + "src/base/bounded-page-allocator.cc", + "src/base/bounded-page-allocator.h", "src/base/build_config.h", "src/base/compiler-specific.h", "src/base/cpu.cc", @@ -2992,6 +3080,8 @@ v8_component("v8_libbase") { "src/base/list.h", "src/base/logging.cc", "src/base/logging.h", + "src/base/lsan-page-allocator.cc", + "src/base/lsan-page-allocator.h", "src/base/macros.h", "src/base/once.cc", "src/base/once.h", @@ -3008,6 +3098,8 @@ v8_component("v8_libbase") { "src/base/platform/semaphore.h", "src/base/platform/time.cc", "src/base/platform/time.h", + "src/base/region-allocator.cc", + "src/base/region-allocator.h", "src/base/ring-buffer.h", "src/base/safe_conversions.h", "src/base/safe_conversions_impl.h", @@ -3235,6 +3327,29 @@ if (v8_monolithic) { # Executables # +if (current_toolchain == v8_generator_toolchain) { + v8_executable("bytecode_builtins_list_generator") { + visibility = [ ":*" ] # Only targets in this file can depend on this. + + include_dirs = [ "." ] + + sources = [ + "src/builtins/generate-bytecodes-builtins-list.cc", + "src/interpreter/bytecode-operands.cc", + "src/interpreter/bytecode-operands.h", + "src/interpreter/bytecodes.cc", + "src/interpreter/bytecodes.h", + ] + + configs = [ ":internal_config" ] + + deps = [ + ":v8_libbase", + "//build/win:default_exe_manifest", + ] + } +} + if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) { v8_executable("mksnapshot") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -3634,6 +3749,7 @@ v8_source_set("wasm_module_runner") { ] deps = [ + ":generate_bytecode_builtins_list", ":torque_generated_core", ] @@ -3717,6 +3833,7 @@ v8_source_set("lib_wasm_fuzzer_common") { ] deps = [ + ":generate_bytecode_builtins_list", ":torque_generated_core", ] diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index 428325ad58c974..375d57ebc897e3 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,9231 +1,7 @@ -2018-08-27: Version 7.0.276 +2017-12-19: Sentinel - Performance and stability improvements on all platforms. - - -2018-08-27: Version 7.0.275 - - Performance and stability improvements on all platforms. - - -2018-08-26: Version 7.0.274 - - Performance and stability improvements on all platforms. - - -2018-08-25: Version 7.0.273 - - Performance and stability improvements on all platforms. - - -2018-08-25: Version 7.0.272 - - Performance and stability improvements on all platforms. - - -2018-08-25: Version 7.0.271 - - Performance and stability improvements on all platforms. - - -2018-08-25: Version 7.0.270 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.269 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.268 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.267 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.266 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.265 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.264 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.263 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.262 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.261 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.260 - - Performance and stability improvements on all platforms. - - -2018-08-24: Version 7.0.259 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.258 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.257 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.256 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.255 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.254 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.253 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.252 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.251 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.250 - - Performance and stability improvements on all platforms. - - -2018-08-23: Version 7.0.249 - - Performance and stability improvements on all platforms. - - -2018-08-22: Version 7.0.248 - - Performance and stability improvements on all platforms. - - -2018-08-22: Version 7.0.247 - - Performance and stability improvements on all platforms. - - -2018-08-21: Version 7.0.246 - - Performance and stability improvements on all platforms. - - -2018-08-21: Version 7.0.245 - - Performance and stability improvements on all platforms. - - -2018-08-21: Version 7.0.244 - - Performance and stability improvements on all platforms. - - -2018-08-21: Version 7.0.243 - - Performance and stability improvements on all platforms. - - -2018-08-17: Version 7.0.242 - - Performance and stability improvements on all platforms. - - -2018-08-17: Version 7.0.241 - - Performance and stability improvements on all platforms. - - -2018-08-17: Version 7.0.240 - - Performance and stability improvements on all platforms. - - -2018-08-17: Version 7.0.239 - - Performance and stability improvements on all platforms. - - -2018-08-17: Version 7.0.238 - - Performance and stability improvements on all platforms. - - -2018-08-15: Version 7.0.237 - - Performance and stability improvements on all platforms. - - -2018-08-14: Version 7.0.236 - - Performance and stability improvements on all platforms. - - -2018-08-14: Version 7.0.235 - - Performance and stability improvements on all platforms. - - -2018-08-14: Version 7.0.234 - - Performance and stability improvements on all platforms. - - -2018-08-14: Version 7.0.233 - - Performance and stability improvements on all platforms. - - -2018-08-14: Version 7.0.232 - - Performance and stability improvements on all platforms. - - -2018-08-14: Version 7.0.231 - - Performance and stability improvements on all platforms. - - -2018-08-12: Version 7.0.230 - - Performance and stability improvements on all platforms. - - -2018-08-11: Version 7.0.229 - - Performance and stability improvements on all platforms. - - -2018-08-11: Version 7.0.228 - - Performance and stability improvements on all platforms. - - -2018-08-11: Version 7.0.227 - - Performance and stability improvements on all platforms. - - -2018-08-11: Version 7.0.226 - - Performance and stability improvements on all platforms. - - -2018-08-11: Version 7.0.225 - - Performance and stability improvements on all platforms. - - -2018-08-11: Version 7.0.224 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.223 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.222 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.221 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.220 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.219 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.218 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.217 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.216 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.215 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.214 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.213 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.212 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.211 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.210 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.209 - - Performance and stability improvements on all platforms. - - -2018-08-10: Version 7.0.208 - - Performance and stability improvements on all platforms. - - -2018-08-09: Version 7.0.207 - - Performance and stability improvements on all platforms. - - -2018-08-09: Version 7.0.206 - - Performance and stability improvements on all platforms. - - -2018-08-09: Version 7.0.205 - - Performance and stability improvements on all platforms. - - -2018-08-09: Version 7.0.204 - - Performance and stability improvements on all platforms. - - -2018-08-09: Version 7.0.203 - - Performance and stability improvements on all platforms. - - -2018-08-09: Version 7.0.202 - - Performance and stability improvements on all platforms. - - -2018-08-09: Version 7.0.201 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.200 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.199 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.198 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.197 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.196 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.195 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.194 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.193 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.192 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.191 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.190 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.189 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.188 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.187 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.186 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.185 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.184 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.183 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.182 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.181 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.180 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.179 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.178 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.177 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.176 - - Performance and stability improvements on all platforms. - - -2018-08-08: Version 7.0.175 - - Performance and stability improvements on all platforms. - - -2018-08-07: Version 7.0.174 - - Performance and stability improvements on all platforms. - - -2018-08-07: Version 7.0.173 - - Performance and stability improvements on all platforms. - - -2018-08-07: Version 7.0.172 - - Performance and stability improvements on all platforms. - - -2018-08-07: Version 7.0.171 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.170 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.169 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.168 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.167 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.166 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.165 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.164 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.163 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.162 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.161 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.160 - - Performance and stability improvements on all platforms. - - -2018-08-06: Version 7.0.159 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.158 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.157 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.156 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.155 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.154 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.153 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.152 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.151 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.150 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.149 - - Performance and stability improvements on all platforms. - - -2018-08-03: Version 7.0.148 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.147 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.146 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.145 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.144 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.143 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.142 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.141 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.140 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.139 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.138 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.137 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.136 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.135 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.134 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.133 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.132 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.131 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.130 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.129 - - Performance and stability improvements on all platforms. - - -2018-08-02: Version 7.0.128 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.127 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.126 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.125 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.124 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.123 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.122 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.121 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.120 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.119 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.118 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.117 - - Performance and stability improvements on all platforms. - - -2018-08-01: Version 7.0.116 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.115 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.114 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.113 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.112 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.111 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.110 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.109 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.108 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.107 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.106 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.105 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.104 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.103 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.102 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.101 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.100 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.99 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.98 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.97 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.96 - - Performance and stability improvements on all platforms. - - -2018-07-31: Version 7.0.95 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.94 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.93 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.92 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.91 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.90 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.89 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.88 - - Performance and stability improvements on all platforms. - - -2018-07-30: Version 7.0.87 - - Performance and stability improvements on all platforms. - - -2018-07-29: Version 7.0.86 - - Performance and stability improvements on all platforms. - - -2018-07-28: Version 7.0.85 - - Performance and stability improvements on all platforms. - - -2018-07-28: Version 7.0.84 - - Performance and stability improvements on all platforms. - - -2018-07-28: Version 7.0.83 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.82 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.81 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.80 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.79 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.78 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.77 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.76 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.75 - - Performance and stability improvements on all platforms. - - -2018-07-27: Version 7.0.74 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.73 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.72 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.71 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.70 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.69 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.68 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.67 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.66 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.65 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.64 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.63 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.62 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.61 - - Performance and stability improvements on all platforms. - - -2018-07-26: Version 7.0.60 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.59 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.58 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.57 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.56 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.55 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.54 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.53 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.52 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.51 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.50 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.49 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.48 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.47 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.46 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.45 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.44 - - Performance and stability improvements on all platforms. - - -2018-07-25: Version 7.0.43 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.42 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.41 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.40 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.39 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.38 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.37 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.36 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.35 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.34 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.33 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.32 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.31 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.30 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.29 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.28 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.27 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.26 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.25 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.24 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.23 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.22 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.21 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.20 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.19 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.18 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.17 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.16 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.15 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.14 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.13 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.12 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.11 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.10 - - Performance and stability improvements on all platforms. - - -2018-07-24: Version 7.0.9 - - Performance and stability improvements on all platforms. - - -2018-07-23: Version 7.0.8 - - Performance and stability improvements on all platforms. - - -2018-07-23: Version 7.0.7 - - Performance and stability improvements on all platforms. - - -2018-07-23: Version 7.0.6 - - Performance and stability improvements on all platforms. - - -2018-07-23: Version 7.0.5 - - Performance and stability improvements on all platforms. - - -2018-07-23: Version 7.0.4 - - Performance and stability improvements on all platforms. - - -2018-07-23: Version 7.0.3 - - Performance and stability improvements on all platforms. - - -2018-07-23: Version 7.0.2 - - Performance and stability improvements on all platforms. - - -2018-07-20: Version 7.0.1 - - Performance and stability improvements on all platforms. - - -2018-07-19: Version 6.9.454 - - Performance and stability improvements on all platforms. - - -2018-07-19: Version 6.9.453 - - Performance and stability improvements on all platforms. - - -2018-07-19: Version 6.9.452 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.451 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.450 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.449 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.448 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.447 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.446 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.445 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.444 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.443 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.442 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.441 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.440 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.439 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.438 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.437 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.436 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.435 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.434 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.433 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.432 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.431 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.430 - - Performance and stability improvements on all platforms. - - -2018-07-18: Version 6.9.429 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.428 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.427 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.426 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.425 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.424 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.423 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.422 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.421 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.420 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.419 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.418 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.417 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.416 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.415 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.414 - - Performance and stability improvements on all platforms. - - -2018-07-17: Version 6.9.413 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.412 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.411 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.410 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.409 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.408 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.407 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.406 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.405 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.404 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.403 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.402 - - Performance and stability improvements on all platforms. - - -2018-07-16: Version 6.9.401 - - Performance and stability improvements on all platforms. - - -2018-07-15: Version 6.9.400 - - Performance and stability improvements on all platforms. - - -2018-07-14: Version 6.9.399 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.398 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.397 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.396 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.395 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.394 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.393 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.392 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.391 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.390 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.389 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.388 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.387 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.386 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.385 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.384 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.383 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.382 - - Performance and stability improvements on all platforms. - - -2018-07-13: Version 6.9.381 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.380 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.379 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.378 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.377 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.376 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.375 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.374 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.373 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.372 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.371 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.370 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.369 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.368 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.367 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.366 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.365 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.364 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.363 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.362 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.361 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.360 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.359 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.358 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.357 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.356 - - Performance and stability improvements on all platforms. - - -2018-07-12: Version 6.9.355 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.354 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.353 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.352 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.351 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.350 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.349 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.348 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.347 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.346 - - Performance and stability improvements on all platforms. - - -2018-07-11: Version 6.9.345 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.344 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.343 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.342 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.341 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.340 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.339 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.338 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.337 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.336 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.335 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.334 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.333 - - Performance and stability improvements on all platforms. - - -2018-07-10: Version 6.9.332 - - Performance and stability improvements on all platforms. - - -2018-07-09: Version 6.9.331 - - Performance and stability improvements on all platforms. - - -2018-07-09: Version 6.9.330 - - Performance and stability improvements on all platforms. - - -2018-07-09: Version 6.9.329 - - Performance and stability improvements on all platforms. - - -2018-07-09: Version 6.9.328 - - Performance and stability improvements on all platforms. - - -2018-07-09: Version 6.9.327 - - Performance and stability improvements on all platforms. - - -2018-07-09: Version 6.9.326 - - Performance and stability improvements on all platforms. - - -2018-07-09: Version 6.9.325 - - Performance and stability improvements on all platforms. - - -2018-07-08: Version 6.9.324 - - Performance and stability improvements on all platforms. - - -2018-07-07: Version 6.9.323 - - Performance and stability improvements on all platforms. - - -2018-07-06: Version 6.9.322 - - Performance and stability improvements on all platforms. - - -2018-07-06: Version 6.9.321 - - Performance and stability improvements on all platforms. - - -2018-07-06: Version 6.9.320 - - Performance and stability improvements on all platforms. - - -2018-07-06: Version 6.9.319 - - Performance and stability improvements on all platforms. - - -2018-07-06: Version 6.9.318 - - Performance and stability improvements on all platforms. - - -2018-07-06: Version 6.9.317 - - Performance and stability improvements on all platforms. - - -2018-07-06: Version 6.9.316 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.315 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.314 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.313 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.312 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.311 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.310 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.309 - - Performance and stability improvements on all platforms. - - -2018-07-05: Version 6.9.308 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.307 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.306 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.305 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.304 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.303 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.302 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.301 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.300 - - Performance and stability improvements on all platforms. - - -2018-07-04: Version 6.9.299 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.298 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.297 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.296 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.295 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.294 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.293 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.292 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.291 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.290 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.289 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.288 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.287 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.286 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.285 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.284 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.283 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.282 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.281 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.280 - - Performance and stability improvements on all platforms. - - -2018-07-03: Version 6.9.279 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.278 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.277 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.276 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.275 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.274 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.273 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.272 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.271 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.270 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.269 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.268 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.267 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.266 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.265 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.264 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.263 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.262 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.261 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.260 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.259 - - Performance and stability improvements on all platforms. - - -2018-07-02: Version 6.9.258 - - Performance and stability improvements on all platforms. - - -2018-07-01: Version 6.9.257 - - Performance and stability improvements on all platforms. - - -2018-06-30: Version 6.9.256 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.255 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.254 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.253 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.252 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.251 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.250 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.249 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.248 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.247 - - Performance and stability improvements on all platforms. - - -2018-06-29: Version 6.9.246 - - Performance and stability improvements on all platforms. - - -2018-06-28: Version 6.9.245 - - Performance and stability improvements on all platforms. - - -2018-06-28: Version 6.9.244 - - Performance and stability improvements on all platforms. - - -2018-06-28: Version 6.9.243 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.242 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.241 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.240 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.239 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.238 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.237 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.236 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.235 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.234 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.233 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.232 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.231 - - Performance and stability improvements on all platforms. - - -2018-06-27: Version 6.9.230 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.229 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.228 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.227 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.226 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.225 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.224 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.223 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.222 - - Performance and stability improvements on all platforms. - - -2018-06-26: Version 6.9.221 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.220 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.219 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.218 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.217 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.216 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.215 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.214 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.213 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.212 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.211 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.210 - - Performance and stability improvements on all platforms. - - -2018-06-25: Version 6.9.209 - - Performance and stability improvements on all platforms. - - -2018-06-24: Version 6.9.208 - - Performance and stability improvements on all platforms. - - -2018-06-23: Version 6.9.207 - - Performance and stability improvements on all platforms. - - -2018-06-23: Version 6.9.206 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.205 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.204 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.203 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.202 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.201 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.200 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.199 - - Performance and stability improvements on all platforms. - - -2018-06-22: Version 6.9.198 - - Performance and stability improvements on all platforms. - - -2018-06-21: Version 6.9.197 - - Performance and stability improvements on all platforms. - - -2018-06-21: Version 6.9.196 - - Performance and stability improvements on all platforms. - - -2018-06-21: Version 6.9.195 - - Performance and stability improvements on all platforms. - - -2018-06-21: Version 6.9.194 - - Performance and stability improvements on all platforms. - - -2018-06-21: Version 6.9.193 - - Performance and stability improvements on all platforms. - - -2018-06-21: Version 6.9.192 - - Performance and stability improvements on all platforms. - - -2018-06-20: Version 6.9.191 - - Performance and stability improvements on all platforms. - - -2018-06-20: Version 6.9.190 - - Performance and stability improvements on all platforms. - - -2018-06-20: Version 6.9.189 - - Performance and stability improvements on all platforms. - - -2018-06-20: Version 6.9.188 - - Performance and stability improvements on all platforms. - - -2018-06-20: Version 6.9.187 - - Performance and stability improvements on all platforms. - - -2018-06-20: Version 6.9.186 - - Performance and stability improvements on all platforms. - - -2018-06-20: Version 6.9.185 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.184 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.183 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.182 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.181 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.180 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.179 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.178 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.177 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.176 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.175 - - Performance and stability improvements on all platforms. - - -2018-06-19: Version 6.9.174 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.173 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.172 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.171 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.170 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.169 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.168 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.167 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.166 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.165 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.164 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.163 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.162 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.161 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.160 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.159 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.158 - - Performance and stability improvements on all platforms. - - -2018-06-18: Version 6.9.157 - - Performance and stability improvements on all platforms. - - -2018-06-14: Version 6.9.156 - - Performance and stability improvements on all platforms. - - -2018-06-14: Version 6.9.155 - - Performance and stability improvements on all platforms. - - -2018-06-14: Version 6.9.154 - - Performance and stability improvements on all platforms. - - -2018-06-14: Version 6.9.153 - - Performance and stability improvements on all platforms. - - -2018-06-14: Version 6.9.152 - - Performance and stability improvements on all platforms. - - -2018-06-14: Version 6.9.151 - - Performance and stability improvements on all platforms. - - -2018-06-14: Version 6.9.150 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.149 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.148 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.147 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.146 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.145 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.144 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.143 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.142 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.141 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.140 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.139 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.138 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.137 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.136 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.135 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.134 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.133 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.132 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.131 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.130 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.129 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.128 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.127 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.126 - - Performance and stability improvements on all platforms. - - -2018-06-13: Version 6.9.125 - - Performance and stability improvements on all platforms. - - -2018-06-12: Version 6.9.124 - - Performance and stability improvements on all platforms. - - -2018-06-12: Version 6.9.123 - - Performance and stability improvements on all platforms. - - -2018-06-12: Version 6.9.122 - - Performance and stability improvements on all platforms. - - -2018-06-12: Version 6.9.121 - - Performance and stability improvements on all platforms. - - -2018-06-12: Version 6.9.120 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.119 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.118 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.117 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.116 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.115 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.114 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.113 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.112 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.111 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.110 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.109 - - Performance and stability improvements on all platforms. - - -2018-06-11: Version 6.9.108 - - Performance and stability improvements on all platforms. - - -2018-06-08: Version 6.9.107 - - Performance and stability improvements on all platforms. - - -2018-06-08: Version 6.9.106 - - Performance and stability improvements on all platforms. - - -2018-06-08: Version 6.9.105 - - Performance and stability improvements on all platforms. - - -2018-06-08: Version 6.9.104 - - Performance and stability improvements on all platforms. - - -2018-06-08: Version 6.9.103 - - Performance and stability improvements on all platforms. - - -2018-06-08: Version 6.9.102 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.101 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.100 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.99 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.98 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.97 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.96 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.95 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.94 - - Performance and stability improvements on all platforms. - - -2018-06-07: Version 6.9.93 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.92 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.91 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.90 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.89 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.88 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.87 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.86 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.85 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.84 - - Performance and stability improvements on all platforms. - - -2018-06-06: Version 6.9.83 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.82 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.81 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.80 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.79 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.78 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.77 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.76 - - Performance and stability improvements on all platforms. - - -2018-06-05: Version 6.9.75 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.74 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.73 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.72 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.71 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.70 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.69 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.68 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.67 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.66 - - Performance and stability improvements on all platforms. - - -2018-06-04: Version 6.9.65 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.64 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.63 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.62 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.61 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.60 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.59 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.58 - - Performance and stability improvements on all platforms. - - -2018-06-01: Version 6.9.57 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.56 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.55 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.54 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.53 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.52 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.51 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.50 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.49 - - Performance and stability improvements on all platforms. - - -2018-05-31: Version 6.9.48 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.47 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.46 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.45 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.44 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.43 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.42 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.41 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.40 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.39 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.38 - - Performance and stability improvements on all platforms. - - -2018-05-30: Version 6.9.37 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.36 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.35 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.34 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.33 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.32 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.31 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.30 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.29 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.28 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.27 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.26 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.25 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.24 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.23 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.22 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.21 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.20 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.19 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.18 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.17 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.16 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.15 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.14 - - Performance and stability improvements on all platforms. - - -2018-05-29: Version 6.9.13 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.12 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.11 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.10 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.9 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.8 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.7 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.6 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.5 - - Performance and stability improvements on all platforms. - - -2018-05-28: Version 6.9.4 - - Performance and stability improvements on all platforms. - - -2018-05-27: Version 6.9.3 - - Performance and stability improvements on all platforms. - - -2018-05-26: Version 6.9.2 - - Performance and stability improvements on all platforms. - - -2018-05-25: Version 6.9.1 - - Performance and stability improvements on all platforms. - - -2018-05-24: Version 6.8.290 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.289 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.288 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.287 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.286 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.285 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.284 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.283 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.282 - - Performance and stability improvements on all platforms. - - -2018-05-23: Version 6.8.281 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.280 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.279 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.278 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.277 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.276 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.275 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.274 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.273 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.272 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.271 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.270 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.269 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.268 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.267 - - Performance and stability improvements on all platforms. - - -2018-05-22: Version 6.8.266 - - Performance and stability improvements on all platforms. - - -2018-05-21: Version 6.8.265 - - Performance and stability improvements on all platforms. - - -2018-05-21: Version 6.8.264 - - Performance and stability improvements on all platforms. - - -2018-05-21: Version 6.8.263 - - Performance and stability improvements on all platforms. - - -2018-05-21: Version 6.8.262 - - Performance and stability improvements on all platforms. - - -2018-05-19: Version 6.8.261 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.260 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.259 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.258 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.257 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.256 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.255 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.254 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.253 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.252 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.251 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.250 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.249 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.248 - - Performance and stability improvements on all platforms. - - -2018-05-18: Version 6.8.247 - - Performance and stability improvements on all platforms. - - -2018-05-17: Version 6.8.246 - - Performance and stability improvements on all platforms. - - -2018-05-17: Version 6.8.245 - - Performance and stability improvements on all platforms. - - -2018-05-17: Version 6.8.244 - - Performance and stability improvements on all platforms. - - -2018-05-17: Version 6.8.243 - - Performance and stability improvements on all platforms. - - -2018-05-17: Version 6.8.242 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.241 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.240 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.239 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.238 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.237 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.236 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.235 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.234 - - Performance and stability improvements on all platforms. - - -2018-05-16: Version 6.8.233 - - Performance and stability improvements on all platforms. - - -2018-05-15: Version 6.8.232 - - Performance and stability improvements on all platforms. - - -2018-05-15: Version 6.8.231 - - Performance and stability improvements on all platforms. - - -2018-05-15: Version 6.8.230 - - Performance and stability improvements on all platforms. - - -2018-05-15: Version 6.8.229 - - Performance and stability improvements on all platforms. - - -2018-05-15: Version 6.8.228 - - Performance and stability improvements on all platforms. - - -2018-05-15: Version 6.8.227 - - Performance and stability improvements on all platforms. - - -2018-05-15: Version 6.8.226 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.225 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.224 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.223 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.222 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.221 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.220 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.219 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.218 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.217 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.216 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.215 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.214 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.213 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.212 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.211 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.210 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.209 - - Performance and stability improvements on all platforms. - - -2018-05-14: Version 6.8.208 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.207 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.206 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.205 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.204 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.203 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.202 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.201 - - Performance and stability improvements on all platforms. - - -2018-05-11: Version 6.8.200 - - Performance and stability improvements on all platforms. - - -2018-05-10: Version 6.8.199 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.198 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.197 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.196 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.195 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.194 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.193 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.192 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.191 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.190 - - Performance and stability improvements on all platforms. - - -2018-05-08: Version 6.8.189 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.188 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.187 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.186 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.185 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.184 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.183 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.182 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.181 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.180 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.179 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.178 - - Performance and stability improvements on all platforms. - - -2018-05-07: Version 6.8.177 - - Performance and stability improvements on all platforms. - - -2018-05-05: Version 6.8.176 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.175 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.174 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.173 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.172 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.171 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.170 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.169 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.168 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.167 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.166 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.165 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.164 - - Performance and stability improvements on all platforms. - - -2018-05-04: Version 6.8.163 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.162 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.161 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.160 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.159 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.158 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.157 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.156 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.155 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.154 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.153 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.152 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.151 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.150 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.149 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.148 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.147 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.146 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.145 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.144 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.143 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.142 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.141 - - Performance and stability improvements on all platforms. - - -2018-05-03: Version 6.8.140 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.139 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.138 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.137 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.136 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.135 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.134 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.133 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.132 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.131 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.130 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.129 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.128 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.127 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.126 - - Performance and stability improvements on all platforms. - - -2018-05-02: Version 6.8.125 - - Performance and stability improvements on all platforms. - - -2018-05-01: Version 6.8.124 - - Performance and stability improvements on all platforms. - - -2018-05-01: Version 6.8.123 - - Performance and stability improvements on all platforms. - - -2018-05-01: Version 6.8.122 - - Performance and stability improvements on all platforms. - - -2018-05-01: Version 6.8.121 - - Performance and stability improvements on all platforms. - - -2018-05-01: Version 6.8.120 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.119 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.118 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.117 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.116 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.115 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.114 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.113 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.112 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.111 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.110 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.109 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.108 - - Performance and stability improvements on all platforms. - - -2018-04-30: Version 6.8.107 - - Performance and stability improvements on all platforms. - - -2018-04-29: Version 6.8.106 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.105 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.104 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.103 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.102 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.101 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.100 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.99 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.98 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.97 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.96 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.95 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.94 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.93 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.92 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.91 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.90 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.89 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.88 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.87 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.86 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.85 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.84 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.83 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.82 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.81 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.80 - - Performance and stability improvements on all platforms. - - -2018-04-27: Version 6.8.79 - - Performance and stability improvements on all platforms. - - -2018-04-26: Version 6.8.78 - - Performance and stability improvements on all platforms. - - -2018-04-26: Version 6.8.77 - - Performance and stability improvements on all platforms. - - -2018-04-26: Version 6.8.76 - - Performance and stability improvements on all platforms. - - -2018-04-26: Version 6.8.75 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.74 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.73 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.72 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.71 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.70 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.69 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.68 - - Performance and stability improvements on all platforms. - - -2018-04-25: Version 6.8.67 - - Performance and stability improvements on all platforms. - - -2018-04-24: Version 6.8.66 - - Performance and stability improvements on all platforms. - - -2018-04-24: Version 6.8.65 - - Performance and stability improvements on all platforms. - - -2018-04-24: Version 6.8.64 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.63 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.62 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.61 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.60 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.59 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.58 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.57 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.56 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.55 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.54 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.53 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.52 - - Performance and stability improvements on all platforms. - - -2018-04-23: Version 6.8.51 - - Performance and stability improvements on all platforms. - - -2018-04-20: Version 6.8.50 - - Performance and stability improvements on all platforms. - - -2018-04-20: Version 6.8.49 - - Performance and stability improvements on all platforms. - - -2018-04-20: Version 6.8.48 - - Performance and stability improvements on all platforms. - - -2018-04-20: Version 6.8.47 - - Performance and stability improvements on all platforms. - - -2018-04-20: Version 6.8.46 - - Performance and stability improvements on all platforms. - - -2018-04-19: Version 6.8.45 - - Performance and stability improvements on all platforms. - - -2018-04-19: Version 6.8.44 - - Performance and stability improvements on all platforms. - - -2018-04-19: Version 6.8.43 - - Performance and stability improvements on all platforms. - - -2018-04-19: Version 6.8.42 - - Performance and stability improvements on all platforms. - - -2018-04-19: Version 6.8.41 - - Performance and stability improvements on all platforms. - - -2018-04-18: Version 6.8.40 - - Performance and stability improvements on all platforms. - - -2018-04-18: Version 6.8.39 - - Performance and stability improvements on all platforms. - - -2018-04-18: Version 6.8.38 - - Performance and stability improvements on all platforms. - - -2018-04-18: Version 6.8.37 - - Performance and stability improvements on all platforms. - - -2018-04-18: Version 6.8.36 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.35 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.34 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.33 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.32 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.31 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.30 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.29 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.28 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.27 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.26 - - Performance and stability improvements on all platforms. - - -2018-04-17: Version 6.8.25 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.24 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.23 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.22 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.21 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.20 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.19 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.18 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.17 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.16 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.15 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.14 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.13 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.12 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.11 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.10 - - Performance and stability improvements on all platforms. - - -2018-04-16: Version 6.8.9 - - Performance and stability improvements on all platforms. - - -2018-04-15: Version 6.8.8 - - Performance and stability improvements on all platforms. - - -2018-04-15: Version 6.8.7 - - Performance and stability improvements on all platforms. - - -2018-04-14: Version 6.8.6 - - Performance and stability improvements on all platforms. - - -2018-04-14: Version 6.8.5 - - Performance and stability improvements on all platforms. - - -2018-04-13: Version 6.8.4 - - Performance and stability improvements on all platforms. - - -2018-04-13: Version 6.8.3 - - Performance and stability improvements on all platforms. - - -2018-04-12: Version 6.8.2 - - Performance and stability improvements on all platforms. - - -2018-04-12: Version 6.8.1 - - Performance and stability improvements on all platforms. - - -2018-04-11: Version 6.7.290 - - Performance and stability improvements on all platforms. - - -2018-04-11: Version 6.7.289 - - Performance and stability improvements on all platforms. - - -2018-04-11: Version 6.7.288 - - Performance and stability improvements on all platforms. - - -2018-04-11: Version 6.7.287 - - Performance and stability improvements on all platforms. - - -2018-04-11: Version 6.7.286 - - Performance and stability improvements on all platforms. - - -2018-04-11: Version 6.7.285 - - Performance and stability improvements on all platforms. - - -2018-04-11: Version 6.7.284 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.283 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.282 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.281 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.280 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.279 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.278 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.277 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.276 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.275 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.274 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.273 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.272 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.271 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.270 - - Performance and stability improvements on all platforms. - - -2018-04-10: Version 6.7.269 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.268 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.267 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.266 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.265 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.264 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.263 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.262 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.261 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.260 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.259 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.258 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.257 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.256 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.255 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.254 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.253 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.252 - - Performance and stability improvements on all platforms. - - -2018-04-09: Version 6.7.251 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.250 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.249 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.248 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.247 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.246 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.245 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.244 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.243 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.242 - - Performance and stability improvements on all platforms. - - -2018-04-06: Version 6.7.241 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.240 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.239 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.238 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.237 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.236 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.235 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.234 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.233 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.232 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.231 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.230 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.229 - - Performance and stability improvements on all platforms. - - -2018-04-05: Version 6.7.228 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.227 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.226 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.225 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.224 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.223 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.222 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.221 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.220 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.219 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.218 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.217 - - Performance and stability improvements on all platforms. - - -2018-04-04: Version 6.7.216 - - Performance and stability improvements on all platforms. - - -2018-04-03: Version 6.7.215 - - Performance and stability improvements on all platforms. - - -2018-04-03: Version 6.7.214 - - Performance and stability improvements on all platforms. - - -2018-03-30: Version 6.7.213 - - Performance and stability improvements on all platforms. - - -2018-03-30: Version 6.7.212 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.211 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.210 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.209 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.208 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.207 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.206 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.205 - - Performance and stability improvements on all platforms. - - -2018-03-29: Version 6.7.204 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.203 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.202 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.201 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.200 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.199 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.198 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.197 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.196 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.195 - - Performance and stability improvements on all platforms. - - -2018-03-28: Version 6.7.194 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.193 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.192 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.191 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.190 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.189 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.188 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.187 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.186 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.185 - - Performance and stability improvements on all platforms. - - -2018-03-27: Version 6.7.184 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.183 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.182 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.181 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.180 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.179 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.178 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.177 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.176 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.175 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.174 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.173 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.172 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.171 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.170 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.169 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.168 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.167 - - Performance and stability improvements on all platforms. - - -2018-03-26: Version 6.7.166 - - Performance and stability improvements on all platforms. - - -2018-03-24: Version 6.7.165 - - Performance and stability improvements on all platforms. - - -2018-03-24: Version 6.7.164 - - Performance and stability improvements on all platforms. - - -2018-03-24: Version 6.7.163 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.162 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.161 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.160 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.159 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.158 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.157 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.156 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.155 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.154 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.153 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.152 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.151 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.150 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.149 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.148 - - Performance and stability improvements on all platforms. - - -2018-03-23: Version 6.7.147 - - Performance and stability improvements on all platforms. - - -2018-03-22: Version 6.7.146 - - Performance and stability improvements on all platforms. - - -2018-03-22: Version 6.7.145 - - Performance and stability improvements on all platforms. - - -2018-03-22: Version 6.7.144 - - Performance and stability improvements on all platforms. - - -2018-03-22: Version 6.7.143 - - Performance and stability improvements on all platforms. - - -2018-03-22: Version 6.7.142 - - Performance and stability improvements on all platforms. - - -2018-03-22: Version 6.7.141 - - Performance and stability improvements on all platforms. - - -2018-03-22: Version 6.7.140 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.139 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.138 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.137 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.136 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.135 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.134 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.133 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.132 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.131 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.130 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.129 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.128 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.127 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.126 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.125 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.124 - - Performance and stability improvements on all platforms. - - -2018-03-21: Version 6.7.123 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.122 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.121 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.120 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.119 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.118 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.117 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.116 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.115 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.114 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.113 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.112 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.111 - - Performance and stability improvements on all platforms. - - -2018-03-20: Version 6.7.110 - - Performance and stability improvements on all platforms. - - -2018-03-19: Version 6.7.109 - - Performance and stability improvements on all platforms. - - -2018-03-19: Version 6.7.108 - - Performance and stability improvements on all platforms. - - -2018-03-19: Version 6.7.107 - - Performance and stability improvements on all platforms. - - -2018-03-19: Version 6.7.106 - - Performance and stability improvements on all platforms. - - -2018-03-19: Version 6.7.105 - - Performance and stability improvements on all platforms. - - -2018-03-19: Version 6.7.104 - - Performance and stability improvements on all platforms. - - -2018-03-19: Version 6.7.103 - - Performance and stability improvements on all platforms. - - -2018-03-17: Version 6.7.102 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.101 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.100 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.99 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.98 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.97 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.96 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.95 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.94 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.93 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.92 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.91 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.90 - - Performance and stability improvements on all platforms. - - -2018-03-16: Version 6.7.89 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.88 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.87 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.86 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.85 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.84 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.83 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.82 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.81 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.80 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.79 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.78 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.77 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.76 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.75 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.74 - - Performance and stability improvements on all platforms. - - -2018-03-15: Version 6.7.73 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.72 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.71 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.70 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.69 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.68 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.67 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.66 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.65 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.64 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.63 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.62 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.61 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.60 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.59 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.58 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.57 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.56 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.55 - - Performance and stability improvements on all platforms. - - -2018-03-14: Version 6.7.54 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.53 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.52 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.51 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.50 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.49 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.48 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.47 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.46 - - Performance and stability improvements on all platforms. - - -2018-03-13: Version 6.7.45 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.44 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.43 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.42 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.41 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.40 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.39 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.38 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.37 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.36 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.35 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.34 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.33 - - Performance and stability improvements on all platforms. - - -2018-03-12: Version 6.7.32 - - Performance and stability improvements on all platforms. - - -2018-03-10: Version 6.7.31 - - Performance and stability improvements on all platforms. - - -2018-03-09: Version 6.7.30 - - Performance and stability improvements on all platforms. - - -2018-03-09: Version 6.7.29 - - Performance and stability improvements on all platforms. - - -2018-03-08: Version 6.7.28 - - Performance and stability improvements on all platforms. - - -2018-03-08: Version 6.7.27 - - Performance and stability improvements on all platforms. - - -2018-03-08: Version 6.7.26 - - Performance and stability improvements on all platforms. - - -2018-03-07: Version 6.7.25 - - Performance and stability improvements on all platforms. - - -2018-03-07: Version 6.7.24 - - Performance and stability improvements on all platforms. - - -2018-03-07: Version 6.7.23 - - Performance and stability improvements on all platforms. - - -2018-03-06: Version 6.7.22 - - Performance and stability improvements on all platforms. - - -2018-03-06: Version 6.7.21 - - Performance and stability improvements on all platforms. - - -2018-03-06: Version 6.7.20 - - Performance and stability improvements on all platforms. - - -2018-03-06: Version 6.7.19 - - Performance and stability improvements on all platforms. - - -2018-03-06: Version 6.7.18 - - Performance and stability improvements on all platforms. - - -2018-03-06: Version 6.7.17 - - Performance and stability improvements on all platforms. - - -2018-03-06: Version 6.7.16 - - Performance and stability improvements on all platforms. - - -2018-03-05: Version 6.7.15 - - Performance and stability improvements on all platforms. - - -2018-03-05: Version 6.7.14 - - Performance and stability improvements on all platforms. - - -2018-03-05: Version 6.7.13 - - Performance and stability improvements on all platforms. - - -2018-03-05: Version 6.7.12 - - Performance and stability improvements on all platforms. - - -2018-03-05: Version 6.7.11 - - Performance and stability improvements on all platforms. - - -2018-03-05: Version 6.7.10 - - Performance and stability improvements on all platforms. - - -2018-03-05: Version 6.7.9 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.8 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.7 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.6 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.5 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.4 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.3 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.2 - - Performance and stability improvements on all platforms. - - -2018-03-02: Version 6.7.1 - - Performance and stability improvements on all platforms. - - -2018-03-01: Version 6.6.356 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.355 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.354 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.353 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.352 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.351 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.350 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.349 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.348 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.347 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.346 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.345 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.344 - - Performance and stability improvements on all platforms. - - -2018-02-28: Version 6.6.343 - - Performance and stability improvements on all platforms. - - -2018-02-27: Version 6.6.342 - - Performance and stability improvements on all platforms. - - -2018-02-27: Version 6.6.341 - - Performance and stability improvements on all platforms. - - -2018-02-27: Version 6.6.340 - - Performance and stability improvements on all platforms. - - -2018-02-27: Version 6.6.339 - - Performance and stability improvements on all platforms. - - -2018-02-27: Version 6.6.338 - - Performance and stability improvements on all platforms. - - -2018-02-27: Version 6.6.337 - - Performance and stability improvements on all platforms. - - -2018-02-27: Version 6.6.336 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.335 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.334 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.333 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.332 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.331 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.330 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.329 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.328 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.327 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.326 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.325 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.324 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.323 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.322 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.321 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.320 - - Performance and stability improvements on all platforms. - - -2018-02-26: Version 6.6.319 - - Performance and stability improvements on all platforms. - - -2018-02-25: Version 6.6.318 - - Performance and stability improvements on all platforms. - - -2018-02-25: Version 6.6.317 - - Performance and stability improvements on all platforms. - - -2018-02-25: Version 6.6.316 - - Performance and stability improvements on all platforms. - - -2018-02-25: Version 6.6.315 - - Performance and stability improvements on all platforms. - - -2018-02-24: Version 6.6.314 - - Performance and stability improvements on all platforms. - - -2018-02-24: Version 6.6.313 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.312 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.311 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.310 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.309 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.308 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.307 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.306 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.305 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.304 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.303 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.302 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.301 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.300 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.299 - - Performance and stability improvements on all platforms. - - -2018-02-23: Version 6.6.298 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.297 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.296 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.295 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.294 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.293 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.292 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.291 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.290 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.289 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.288 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.287 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.286 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.285 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.284 - - Performance and stability improvements on all platforms. - - -2018-02-22: Version 6.6.283 - - Performance and stability improvements on all platforms. - - -2018-02-21: Version 6.6.282 - - Performance and stability improvements on all platforms. - - -2018-02-21: Version 6.6.281 - - Performance and stability improvements on all platforms. - - -2018-02-21: Version 6.6.280 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.279 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.278 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.277 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.276 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.275 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.274 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.273 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.272 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.271 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.270 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.269 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.268 - - Performance and stability improvements on all platforms. - - -2018-02-20: Version 6.6.267 - - Performance and stability improvements on all platforms. - - -2018-02-19: Version 6.6.266 - - Performance and stability improvements on all platforms. - - -2018-02-19: Version 6.6.265 - - Performance and stability improvements on all platforms. - - -2018-02-19: Version 6.6.264 - - Performance and stability improvements on all platforms. - - -2018-02-19: Version 6.6.263 - - Performance and stability improvements on all platforms. - - -2018-02-19: Version 6.6.262 - - Performance and stability improvements on all platforms. - - -2018-02-19: Version 6.6.261 - - Performance and stability improvements on all platforms. - - -2018-02-17: Version 6.6.260 - - Performance and stability improvements on all platforms. - - -2018-02-17: Version 6.6.259 - - Performance and stability improvements on all platforms. - - -2018-02-16: Version 6.6.258 - - Performance and stability improvements on all platforms. - - -2018-02-16: Version 6.6.257 - - Performance and stability improvements on all platforms. - - -2018-02-16: Version 6.6.256 - - Performance and stability improvements on all platforms. - - -2018-02-16: Version 6.6.255 - - Performance and stability improvements on all platforms. - - -2018-02-15: Version 6.6.254 - - Performance and stability improvements on all platforms. - - -2018-02-15: Version 6.6.253 - - Performance and stability improvements on all platforms. - - -2018-02-15: Version 6.6.252 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.251 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.250 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.249 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.248 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.247 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.246 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.245 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.244 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.243 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.242 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.241 - - Performance and stability improvements on all platforms. - - -2018-02-14: Version 6.6.240 - - Performance and stability improvements on all platforms. - - -2018-02-13: Version 6.6.239 - - Performance and stability improvements on all platforms. - - -2018-02-13: Version 6.6.238 - - Performance and stability improvements on all platforms. - - -2018-02-13: Version 6.6.237 - - Performance and stability improvements on all platforms. - - -2018-02-13: Version 6.6.236 - - Performance and stability improvements on all platforms. - - -2018-02-13: Version 6.6.235 - - Performance and stability improvements on all platforms. - - -2018-02-13: Version 6.6.234 - - Performance and stability improvements on all platforms. - - -2018-02-12: Version 6.6.233 - - Performance and stability improvements on all platforms. - - -2018-02-12: Version 6.6.232 - - Performance and stability improvements on all platforms. - - -2018-02-12: Version 6.6.231 - - Performance and stability improvements on all platforms. - - -2018-02-12: Version 6.6.230 - - Performance and stability improvements on all platforms. - - -2018-02-12: Version 6.6.229 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.228 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.227 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.226 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.225 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.224 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.223 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.222 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.221 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.220 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.219 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.218 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.217 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.216 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.215 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.214 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.213 - - Performance and stability improvements on all platforms. - - -2018-02-09: Version 6.6.212 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.211 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.210 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.209 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.208 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.207 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.206 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.205 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.204 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.203 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.202 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.201 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.200 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.199 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.198 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.197 - - Performance and stability improvements on all platforms. - - -2018-02-08: Version 6.6.196 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.195 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.194 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.193 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.192 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.191 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.190 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.189 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.188 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.187 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.186 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.185 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.184 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.183 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.182 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.181 - - Performance and stability improvements on all platforms. - - -2018-02-07: Version 6.6.180 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.179 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.178 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.177 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.176 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.175 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.174 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.173 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.172 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.171 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.170 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.169 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.168 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.167 - - Performance and stability improvements on all platforms. - - -2018-02-06: Version 6.6.166 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.165 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.164 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.163 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.162 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.161 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.160 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.159 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.158 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.157 - - Performance and stability improvements on all platforms. - - -2018-02-05: Version 6.6.156 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.155 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.154 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.153 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.152 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.151 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.150 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.149 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.148 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.147 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.146 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.145 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.144 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.143 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.142 - - Performance and stability improvements on all platforms. - - -2018-02-02: Version 6.6.141 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.140 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.139 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.138 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.137 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.136 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.135 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.134 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.133 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.132 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.131 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.130 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.129 - - Performance and stability improvements on all platforms. - - -2018-02-01: Version 6.6.128 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.127 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.126 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.125 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.124 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.123 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.122 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.121 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.120 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.119 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.118 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.117 - - Performance and stability improvements on all platforms. - - -2018-01-31: Version 6.6.116 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.115 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.114 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.113 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.112 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.111 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.110 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.109 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.108 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.107 - - Performance and stability improvements on all platforms. - - -2018-01-30: Version 6.6.106 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.105 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.104 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.103 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.102 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.101 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.100 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.99 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.98 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.97 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.96 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.95 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.94 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.93 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.92 - - Performance and stability improvements on all platforms. - - -2018-01-29: Version 6.6.91 - - Performance and stability improvements on all platforms. - - -2018-01-27: Version 6.6.90 - - Performance and stability improvements on all platforms. - - -2018-01-27: Version 6.6.89 - - Performance and stability improvements on all platforms. - - -2018-01-26: Version 6.6.88 - - Performance and stability improvements on all platforms. - - -2018-01-26: Version 6.6.87 - - Performance and stability improvements on all platforms. - - -2018-01-26: Version 6.6.86 - - Performance and stability improvements on all platforms. - - -2018-01-26: Version 6.6.85 - - Performance and stability improvements on all platforms. - - -2018-01-26: Version 6.6.84 - - Performance and stability improvements on all platforms. - - -2018-01-26: Version 6.6.83 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.82 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.81 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.80 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.79 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.78 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.77 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.76 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.75 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.74 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.73 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.72 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.71 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.70 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.69 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.68 - - Performance and stability improvements on all platforms. - - -2018-01-25: Version 6.6.67 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.66 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.65 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.64 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.63 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.62 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.61 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.60 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.59 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.58 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.57 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.56 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.55 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.54 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.53 - - Performance and stability improvements on all platforms. - - -2018-01-24: Version 6.6.52 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.51 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.50 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.49 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.48 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.47 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.46 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.45 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.44 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.43 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.42 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.41 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.40 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.39 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.38 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.37 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.36 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.35 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.34 - - Performance and stability improvements on all platforms. - - -2018-01-23: Version 6.6.33 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.32 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.31 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.30 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.29 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.28 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.27 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.26 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.25 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.24 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.23 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.22 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.21 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.20 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.19 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.18 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.17 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.16 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.15 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.14 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.13 - - Performance and stability improvements on all platforms. - - -2018-01-22: Version 6.6.12 - - Performance and stability improvements on all platforms. - - -2018-01-21: Version 6.6.11 - - Performance and stability improvements on all platforms. - - -2018-01-20: Version 6.6.10 - - Performance and stability improvements on all platforms. - - -2018-01-20: Version 6.6.9 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.8 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.7 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.6 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.5 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.4 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.3 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.2 - - Performance and stability improvements on all platforms. - - -2018-01-19: Version 6.6.1 - - Performance and stability improvements on all platforms. - - -2018-01-18: Version 6.5.257 - - Performance and stability improvements on all platforms. - - -2018-01-18: Version 6.5.256 - - Performance and stability improvements on all platforms. - - -2018-01-18: Version 6.5.255 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.254 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.253 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.252 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.251 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.250 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.249 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.248 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.247 - - Performance and stability improvements on all platforms. - - -2018-01-17: Version 6.5.246 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.245 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.244 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.243 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.242 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.241 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.240 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.239 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.238 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.237 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.236 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.235 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.234 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.233 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.232 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.231 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.230 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.229 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.228 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.227 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.226 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.225 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.224 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.223 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.222 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.221 - - Performance and stability improvements on all platforms. - - -2018-01-16: Version 6.5.220 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.219 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.218 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.217 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.216 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.215 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.214 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.213 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.212 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.211 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.210 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.209 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.208 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.207 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.206 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.205 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.204 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.203 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.202 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.201 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.200 - - Performance and stability improvements on all platforms. - - -2018-01-15: Version 6.5.199 - - Performance and stability improvements on all platforms. - - -2018-01-14: Version 6.5.198 - - Performance and stability improvements on all platforms. - - -2018-01-13: Version 6.5.197 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.196 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.195 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.194 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.193 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.192 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.191 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.190 - - Performance and stability improvements on all platforms. - - -2018-01-12: Version 6.5.189 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.188 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.187 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.186 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.185 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.184 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.183 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.182 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.181 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.180 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.179 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.178 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.177 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.176 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.175 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.174 - - Performance and stability improvements on all platforms. - - -2018-01-11: Version 6.5.173 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.172 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.171 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.170 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.169 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.168 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.167 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.166 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.165 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.164 - - Performance and stability improvements on all platforms. - - -2018-01-10: Version 6.5.163 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.162 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.161 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.160 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.159 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.158 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.157 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.156 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.155 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.154 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.153 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.152 - - Performance and stability improvements on all platforms. - - -2018-01-09: Version 6.5.151 - - Performance and stability improvements on all platforms. - - -2018-01-08: Version 6.5.150 - - Performance and stability improvements on all platforms. - - -2018-01-08: Version 6.5.149 - - Performance and stability improvements on all platforms. - - -2018-01-08: Version 6.5.148 - - Performance and stability improvements on all platforms. - - -2018-01-08: Version 6.5.147 - - Performance and stability improvements on all platforms. - - -2018-01-05: Version 6.5.146 - - Performance and stability improvements on all platforms. - - -2018-01-05: Version 6.5.145 - - Performance and stability improvements on all platforms. - - -2018-01-05: Version 6.5.144 - - Performance and stability improvements on all platforms. - - -2018-01-05: Version 6.5.143 - - Performance and stability improvements on all platforms. - - -2018-01-05: Version 6.5.142 - - Performance and stability improvements on all platforms. - - -2018-01-05: Version 6.5.141 - - Performance and stability improvements on all platforms. - - -2018-01-05: Version 6.5.140 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.139 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.138 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.137 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.136 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.135 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.134 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.133 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.132 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.131 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.130 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.129 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.128 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.127 - - Performance and stability improvements on all platforms. - - -2018-01-04: Version 6.5.126 - - Performance and stability improvements on all platforms. - - -2018-01-03: Version 6.5.125 - - Performance and stability improvements on all platforms. - - -2018-01-03: Version 6.5.124 - - Performance and stability improvements on all platforms. - - -2018-01-02: Version 6.5.123 - - Performance and stability improvements on all platforms. - - -2018-01-02: Version 6.5.122 - - Performance and stability improvements on all platforms. - - -2018-01-02: Version 6.5.121 - - Performance and stability improvements on all platforms. - - -2018-01-02: Version 6.5.120 - - Performance and stability improvements on all platforms. - - -2018-01-02: Version 6.5.119 - - Performance and stability improvements on all platforms. - - -2018-01-02: Version 6.5.118 - - Performance and stability improvements on all platforms. - - -2018-01-02: Version 6.5.117 - - Performance and stability improvements on all platforms. - - -2017-12-29: Version 6.5.116 - - Performance and stability improvements on all platforms. - - -2017-12-29: Version 6.5.115 - - Performance and stability improvements on all platforms. - - -2017-12-29: Version 6.5.114 - - Performance and stability improvements on all platforms. - - -2017-12-29: Version 6.5.113 - - Performance and stability improvements on all platforms. - - -2017-12-29: Version 6.5.112 - - Performance and stability improvements on all platforms. - - -2017-12-29: Version 6.5.111 - - Performance and stability improvements on all platforms. - - -2017-12-28: Version 6.5.110 - - Performance and stability improvements on all platforms. - - -2017-12-28: Version 6.5.109 - - Performance and stability improvements on all platforms. - - -2017-12-27: Version 6.5.108 - - Performance and stability improvements on all platforms. - - -2017-12-22: Version 6.5.107 - - Performance and stability improvements on all platforms. - - -2017-12-22: Version 6.5.106 - - Performance and stability improvements on all platforms. - - -2017-12-22: Version 6.5.105 - - Performance and stability improvements on all platforms. - - -2017-12-22: Version 6.5.104 - - Performance and stability improvements on all platforms. - - -2017-12-21: Version 6.5.103 - - Performance and stability improvements on all platforms. - - -2017-12-21: Version 6.5.102 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.101 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.100 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.99 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.98 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.97 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.96 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.95 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.94 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.93 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.92 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.91 - - Performance and stability improvements on all platforms. - - -2017-12-20: Version 6.5.90 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.89 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.88 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.87 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.86 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.85 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.84 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.83 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.82 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.81 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.80 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.79 - - Performance and stability improvements on all platforms. - - -2017-12-19: Version 6.5.78 - - Performance and stability improvements on all platforms. + The ChangeLog file is no longer maintained on master. This + sentinel should stay on top of this list. 2017-12-19: Version 6.5.77 diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 42e7a40baa5980..351a71e800656f 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -13,15 +13,13 @@ vars = { deps = { 'v8/build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + 'dd6b994b32b498e9e766ce60c44da0aec3a2a188', - 'v8/tools/gyp': - Var('chromium_url') + '/external/gyp.git' + '@' + 'd61a9397e668fa9843c4aa7da9e79460fe590bfb', + Var('chromium_url') + '/chromium/src/build.git' + '@' + 'd36c5ed0106904bf211cce082aa066f9993faf7e', 'v8/third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'aaf2cc09c6874e394c6c1e4692360cc400d6b388', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '8e9443f5b7f87fb9b9e7cc38f4a41122f1acdcdd', 'v8/third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'a191af9d025859e8368b8b469120d78006e9f5f6', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'c52a2a250d6c5f5cbdd015dff36af7c5d0ae1150', 'v8/third_party/instrumented_libraries': - Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'd8cf40c4592dcec7fb01fcbdf1f6d4958b3fbf11', + Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'a90cbf3b4216430a437991fb53ede8e048dea454', 'v8/buildtools': Var('chromium_url') + '/chromium/buildtools.git' + '@' + '2dff9c9c74e9d732e6fe57c84ef7fd044cc45d96', 'v8/base/trace_event/common': @@ -35,7 +33,7 @@ deps = { 'condition': 'checkout_android', }, 'v8/third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + 'bc2c0a9307285fa36e03e7cdb6bf8623390ff855', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '3f7d74f7cd026ad3611e089c377b03304277d566', 'condition': 'checkout_android', }, 'v8/third_party/colorama/src': { @@ -43,17 +41,15 @@ deps = { 'condition': 'checkout_android', }, 'v8/third_party/fuchsia-sdk': { - 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-sdk.git' + '@' + '3ec92c896bcbddc46e2a073ebfdd25aa1194656e', + 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-sdk.git' + '@' + '6e1868c9083769d489d3fc25657339d50c22b1d8', 'condition': 'checkout_fuchsia', }, 'v8/third_party/googletest/src': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'd5266326752f0a1dadbd310932d8f4fd8c3c5e7d', + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '2e68926a9d4929e9289373cd49e40ddcb9a628f7', 'v8/third_party/jinja2': Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + 'b41863e42637544c2941b574c7877d3e1f663e25', 'v8/third_party/markupsafe': Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '8f45f5cfa0009d2a70589bcda0349b8cb2b72783', - 'v8/third_party/proguard': - Var('chromium_url') + '/chromium/src/third_party/proguard.git' + '@' + 'a3729bea473bb5ffc5eaf289f5733bc5e2861c07', 'v8/tools/swarming_client': Var('chromium_url') + '/infra/luci/client-py.git' + '@' + '486c9b53c4d54dd4b95bb6ce0e31160e600dfc11', 'v8/test/benchmarks/data': @@ -61,25 +57,25 @@ deps = { 'v8/test/mozilla/data': Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be', 'v8/test/test262/data': - Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'a6c1d05ac4fed084fa047e4c52ab2a8c9c2a8aef', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'ff8b10c448ab0b884deac4e6e5818ed84ab8ecd9', 'v8/test/test262/harness': Var('chromium_url') + '/external/github.com/test262-utils/test262-harness-py.git' + '@' + '0f2acdd882c84cff43b9d60df7574a1901e2cdcd', - 'v8/third_party/qemu': { + 'v8/third_party/qemu-linux-x64': { 'packages': [ { 'package': 'fuchsia/qemu/linux-amd64', 'version': '9cc486c5b18a0be515c39a280ca9a309c54cf994' }, ], - 'condition': 'checkout_fuchsia', + 'condition': 'host_os == "linux" and checkout_fuchsia', 'dep_type': 'cipd', }, 'v8/tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'bb4146fb8a9dde405b71914657bb461dc93912ab', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '7792d28b069af6dd3a86d1ba83b7f5c4ede605dc', 'v8/tools/luci-go': Var('chromium_url') + '/chromium/src/tools/luci-go.git' + '@' + '445d7c4b6a4f10e188edb395b132e3996b127691', 'v8/test/wasm-js': - Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + '240ea673de6e75d78ae472f66127301ecab22a99', + Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + 'db9cd40808a90ecc5f4a23e88fb375c8f60b8d52', } recursedeps = [ @@ -344,13 +340,6 @@ hooks = [ 'condition': 'checkout_win', 'action': ['python', 'v8/build/vs_toolchain.py', 'update'], }, - { - # Update the Mac toolchain if necessary. - 'name': 'mac_toolchain', - 'pattern': '.', - 'condition': 'checkout_mac', - 'action': ['python', 'v8/build/mac_toolchain.py'], - }, # Pull binutils for linux, enabled debug fission for faster linking / # debugging when used with clang on Ubuntu Precise. # https://code.google.com/p/chromium/issues/detail?id=352046 diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index bd780ce62f7a78..0bd0149293c945 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -74,6 +74,7 @@ def _V8PresubmitChecks(input_api, output_api): sys.path.append(input_api.os_path.join( input_api.PresubmitLocalPath(), 'tools')) from presubmit import CppLintProcessor + from presubmit import TorqueFormatProcessor from presubmit import SourceProcessor from presubmit import StatusFilesProcessor @@ -83,10 +84,19 @@ def FilterFile(affected_file): white_list=None, black_list=_NO_LINT_PATHS) + def FilterTorqueFile(affected_file): + return input_api.FilterSourceFile( + affected_file, + white_list=(r'.+\.tq')) + results = [] if not CppLintProcessor().RunOnFiles( input_api.AffectedFiles(file_filter=FilterFile, include_deletes=False)): results.append(output_api.PresubmitError("C++ lint check failed")) + if not TorqueFormatProcessor().RunOnFiles( + input_api.AffectedFiles(file_filter=FilterTorqueFile, + include_deletes=False)): + results.append(output_api.PresubmitError("Torque format check failed")) if not SourceProcessor().RunOnFiles( input_api.AffectedFiles(include_deletes=False)): results.append(output_api.PresubmitError( diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS index bd07d318dadd55..27a86f154b489a 100644 --- a/deps/v8/WATCHLISTS +++ b/deps/v8/WATCHLISTS @@ -33,8 +33,9 @@ { 'WATCHLIST_DEFINITIONS': { - 'public_api': { - 'filepath': 'include/', + 'api': { + 'filepath': 'include/' \ + '|src/api\.(cc|h)$', }, 'snapshot': { 'filepath': 'src/snapshot/', @@ -62,12 +63,29 @@ }, 'merges': { 'filepath': '.', - } + }, + 'inspector': { + 'filepath': 'inspector', + }, + 'wasm': { + 'filepath': 'src/wasm/' \ + '|src/compiler/wasm', + }, + 'value_serializer': { + 'filepath': 'src/value-serializer', + }, + 'parser': { + 'filepath': 'src/ast/' \ + '|src/parsing/', + }, + 'tracing': { + 'filepath': 'src/tracing/', + }, }, 'WATCHLISTS': { - 'public_api': [ - 'phajdan.jr@chromium.org', + 'api': [ + 'adamk+watch@chromium.org', ], 'snapshot': [ 'yangguo@chromium.org', @@ -77,25 +95,37 @@ ], 'interpreter': [ 'rmcilroy@chromium.org', - 'oth@chromium.org', ], 'feature_shipping_status': [ 'hablich@chromium.org', ], 'gc_changes': [ 'hpayer@chromium.org', - 'ulan@chromium.org', ], 'arm': [ 'v8-mips-ports@googlegroups.com', 'v8-ppc-ports@googlegroups.com', ], - 'ia32': [ - 'v8-x87-ports@googlegroups.com', - ], 'merges': [ # Only enabled on branches created with tools/release/create_release.py - 'v8-merges@googlegroups.com', + # 'v8-merges@googlegroups.com', + ], + 'inspector': [ + 'devtools-reviews@chromium.org', + ], + 'wasm': [ + 'wasm-v8@google.com', + ], + 'value_serializer': [ + 'jbroman+watch@chromium.org', + ], + 'parser': [ + 'adamk+watch@chromium.org', + 'marja+watch@chromium.org', + ], + 'tracing': [ + 'lpy+v8tracing@chromium.org', + 'fmeawad@chromium.org', ], }, } diff --git a/deps/v8/gypfiles/features.gypi b/deps/v8/gypfiles/features.gypi index 35a078e8af2fd2..e17011a67405f7 100644 --- a/deps/v8/gypfiles/features.gypi +++ b/deps/v8/gypfiles/features.gypi @@ -31,6 +31,8 @@ 'variables': { 'v8_target_arch%': '<(target_arch)', + 'v8_current_cpu%': '<(target_arch)', + # Emulate GN variables 'conditions': [ ['OS=="android"', { # GYP reverts OS to linux so use `-D OS=android` @@ -104,7 +106,25 @@ 'v8_untrusted_code_mitigations%': 'true', 'v8_enable_handle_zapping%': 1, + + 'v8_enable_pointer_compression%': 'false', + + 'v8_enable_embedded_builtins%': 'true', + + 'v8_perf_prof_unwinding_info%': 0, + + 'v8_enable_fast_mksnapshot%': 0, }, + + 'conditions': [ + # V8's predicate inverted since we default to 'true' and set 'false' for unsupported cases. + # v8_use_snapshot && v8_current_cpu != "x86" && !is_aix && ( !is_win || is_clang) + ['not (v8_use_snapshot=="true" and v8_target_arch !="ia32" and OS!="aix" and (OS!="win" or clang==1))', { + 'variables': { + 'v8_enable_embedded_builtins': 'false', + } + }], + ], 'target_defaults': { 'conditions': [ ['v8_embedder_string!=""', { @@ -167,6 +187,15 @@ ['v8_enable_handle_zapping==1', { 'defines': ['ENABLE_HANDLE_ZAPPING',], }], + ['v8_enable_pointer_compression=="true"', { + 'defines': ['V8_COMPRESS_POINTERS',], + }], + ['v8_enable_embedded_builtins=="true"', { + 'defines': [ + 'V8_EMBEDDED_BUILTINS', + 'V8_EMBEDDED_BYTECODE_HANDLERS', + ], + }], ], # conditions 'defines': [ 'V8_GYP_BUILD', diff --git a/deps/v8/gypfiles/v8-monolithic.gyp b/deps/v8/gypfiles/v8-monolithic.gyp index b5ca0ad150b7a6..b46b4ce678a058 100644 --- a/deps/v8/gypfiles/v8-monolithic.gyp +++ b/deps/v8/gypfiles/v8-monolithic.gyp @@ -7,8 +7,7 @@ 'v8_code': 1, 'v8_random_seed%': 314159265, 'v8_vector_stores%': 0, - 'embed_script%': "", - 'warmup_script%': "", + 'v8_embed_script%': "", 'v8_extra_library_files%': [], 'v8_experimental_extra_library_files%': [], 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)', diff --git a/deps/v8/gypfiles/v8.gyp b/deps/v8/gypfiles/v8.gyp index c71ecded76e733..cf952fee63d8d9 100644 --- a/deps/v8/gypfiles/v8.gyp +++ b/deps/v8/gypfiles/v8.gyp @@ -12,6 +12,47 @@ 'v8_experimental_extra_library_files%': [], 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)', 'v8_os_page_size%': 0, + 'generate_bytecode_builtins_list_output' : '<(SHARED_INTERMEDIATE_DIR)/builtins-generated/bytecodes-builtins-list.h', + 'torque_files': [ + "../src/builtins/base.tq", + "../src/builtins/array.tq", + "../src/builtins/array-copywithin.tq", + "../src/builtins/array-foreach.tq", + "../src/builtins/array-lastindexof.tq", + "../src/builtins/array-reverse.tq", + "../src/builtins/array-splice.tq", + "../src/builtins/array-unshift.tq", + "../src/builtins/typed-array.tq", + "../src/builtins/data-view.tq", + "../test/torque/test-torque.tq", + "../third_party/v8/builtins/array-sort.tq", + ], + 'torque_modules': [ + "base", + "array", + "typed-array", + "data-view", + "test", + ], + # Since there is no foreach in GYP we manualy unroll the following: + # foreach(module, torque_modules) { + # outputs += [ + # "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.cc", + # "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.h", + # ] + # } + 'torque_outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-base-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-base-from-dsl-gen.h', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.h', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.h', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-data-view-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-data-view-from-dsl-gen.h', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-test-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-test-from-dsl-gen.h', + ], 'torque_generated_pure_headers': [ '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtin-definitions-from-dsl.h', ], @@ -77,6 +118,7 @@ 'v8_dump_build_config_args': [ '<(PRODUCT_DIR)/v8_build_config.json', 'dcheck_always_on=<(dcheck_always_on)', + 'is_android=<(is_android)', 'is_asan=<(asan)', 'is_cfi=<(cfi_vptr)', 'is_component_build=<(component)', @@ -161,6 +203,7 @@ ], 'sources': [ '../src/setup-isolate-full.cc', + '<(generate_bytecode_builtins_list_output)', '<@(torque_generated_pure_headers)', ], 'conditions': [ @@ -259,16 +302,7 @@ '../src/interpreter/interpreter-generator.h', '../src/interpreter/interpreter-intrinsics-generator.cc', '../src/interpreter/interpreter-intrinsics-generator.h', - '../src/interpreter/setup-interpreter-internal.cc', - '../src/interpreter/setup-interpreter.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-base-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-base-from-dsl-gen.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-data-view-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-data-view-from-dsl-gen.h', + '<@(torque_outputs)', '<@(torque_generated_pure_headers)', ], 'conditions': [ @@ -327,6 +361,18 @@ '../src/builtins/builtins-intl-gen.cc', ], }], + # Platforms that don't have Compare-And-Swap support need to link atomic + # library to implement atomic memory access + [ 'v8_current_cpu == "mips" or v8_current_cpu == "mipsel" or ' + 'v8_current_cpu == "mips64" or v8_current_cpu == "mips64el" or ' + 'v8_current_cpu == "ppc" or v8_current_cpu == "ppc64" or ' + 'v8_current_cpu == "s390" or v8_current_cpu == "s390x"', + { + 'link_settings': { + 'libraries': [ '-latomic', ], + }, + }, + ], ], }, # v8_initializers { @@ -371,47 +417,63 @@ '..', '<(DEPTH)', ], - 'variables': { - 'mksnapshot_flags': [ '--turbo_instruction_scheduling', ], - 'conditional_snapshot_outputs': [ ], - 'conditional_inputs': [ ], - 'conditions': [ - ['v8_random_seed != 0', { - 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'], - }], - ['v8_os_page_size != 0', { - 'mksnapshot_flags': ['--v8_os_page_size', '<(v8_os_page_size)'], - }], - ['v8_use_external_startup_data !=0 ', { - 'conditional_snapshot_outputs': [ '<(INTERMEDIATE_DIR)/snapshot_blob.bin', ], - 'mksnapshot_flags': [ '--startup_blob', '<(INTERMEDIATE_DIR)/snapshot_blob.bin', ] - }, { - 'conditional_snapshot_outputs': [ "<(INTERMEDIATE_DIR)/snapshot.cc" ], - 'mksnapshot_flags': [ '--startup_src', '<(INTERMEDIATE_DIR)/snapshot.cc', ] - }], - ['v8_embed_script != ""', { - 'conditional_inputs': [ '<(v8_embed_script)' ], - 'mksnapshot_flags': [ '<(v8_embed_script)' ], - }], - ], - }, 'sources': [ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries.cc', '<(SHARED_INTERMEDIATE_DIR)/extras-libraries.cc', '<(SHARED_INTERMEDIATE_DIR)/libraries.cc', '../src/setup-isolate-deserialize.cc', - '../src/snapshot/embedded-empty.cc', ], 'actions': [ { 'action_name': 'run_mksnapshot', - 'message': 'generating: >@(conditional_snapshot_outputs)', + 'message': 'generating: >@(_outputs)', + 'variables': { + 'mksnapshot_flags': [ '--turbo_instruction_scheduling', ], + }, + 'conditions': [ + ['v8_enable_embedded_builtins == "true"', { + # In this case we use `embedded_variant "Default"` + # and `suffix = ''` for the template `embedded${suffix}.cc`. + 'outputs': [ '<(INTERMEDIATE_DIR)/embedded.cc' ], + 'variables': { + 'mksnapshot_flags': [ + '--embedded_src', '<(INTERMEDIATE_DIR)/embedded.cc', + '--embedded_variant', 'Default', + ], + }, + }, { + 'outputs': [ '../src/snapshot/embedded-empty.cc' ] + }], + ['v8_random_seed != 0', { + 'variables': { + 'mksnapshot_flags': [ '--random-seed', '<(v8_random_seed)' ], + }, + }], + ['v8_os_page_size != 0', { + 'variables': { + 'mksnapshot_flags': [ '--v8_os_page_size', '<(v8_os_page_size)' ], + }, + }], + ['v8_use_external_startup_data !=0 ', { + 'outputs': [ '<(INTERMEDIATE_DIR)/snapshot_blob.bin', ], + 'variables': { + 'mksnapshot_flags': [ '--startup_blob', '<(INTERMEDIATE_DIR)/snapshot_blob.bin', ], + }, + }, { + 'outputs': [ "<(INTERMEDIATE_DIR)/snapshot.cc" ], + 'variables': { + 'mksnapshot_flags': [ '--startup_src', '<(INTERMEDIATE_DIR)/snapshot.cc', ], + }, + }], + ['v8_embed_script != ""', { + 'inputs': [ '<(v8_embed_script)' ], + 'variables': { + 'mksnapshot_flags': [ '<(v8_embed_script)' ], + }, + }], + ], 'inputs': [ '<(mksnapshot_exec)', - '>@(conditional_inputs)', - ], - 'outputs': [ - '>@(conditional_snapshot_outputs)', ], 'process_outputs_as_sources': 1, 'action': [ @@ -469,7 +531,9 @@ 'dependencies': [ 'v8_libbase', 'v8_libsampler', - 'v8_torque#host', + # Code generators + 'torque#host', + 'generate_bytecode_builtins_list#host', ], 'direct_dependent_settings': { 'include_dirs': ['<(SHARED_INTERMEDIATE_DIR)'], @@ -487,6 +551,7 @@ '<@(inspector_all_sources)', '../include//v8-inspector-protocol.h', '../include//v8-inspector.h', + '../include//v8-internal.h', '../include//v8-platform.h', '../include//v8-profiler.h', '../include//v8-testing.h', @@ -500,6 +565,7 @@ '../src/accessors.h', '../src/address-map.cc', '../src/address-map.h', + '../src/allocation-site-scopes-inl.h', '../src/allocation-site-scopes.h', '../src/allocation.cc', '../src/allocation.h', @@ -546,6 +612,7 @@ '../src/ast/modules.h', '../src/ast/prettyprinter.cc', '../src/ast/prettyprinter.h', + '../src/ast/scopes-inl.h', '../src/ast/scopes.cc', '../src/ast/scopes.h', '../src/ast/variables.cc', @@ -583,7 +650,6 @@ '../src/builtins/builtins-internal.cc', '../src/builtins/builtins-interpreter.cc', '../src/builtins/builtins-intl.cc', - '../src/builtins/builtins-intl.h', '../src/builtins/builtins-json.cc', '../src/builtins/builtins-math.cc', '../src/builtins/builtins-number.cc', @@ -797,6 +863,7 @@ '../src/compiler/operator.h', '../src/compiler/osr.cc', '../src/compiler/osr.h', + '../src/compiler/per-isolate-compiler-cache.h', '../src/compiler/persistent-map.h', '../src/compiler/pipeline-statistics.cc', '../src/compiler/pipeline-statistics.h', @@ -808,6 +875,8 @@ '../src/compiler/raw-machine-assembler.h', '../src/compiler/redundancy-elimination.cc', '../src/compiler/redundancy-elimination.h', + '../src/compiler/refs-map.cc', + '../src/compiler/refs-map.h', '../src/compiler/register-allocator-verifier.cc', '../src/compiler/register-allocator-verifier.h', '../src/compiler/register-allocator.cc', @@ -1124,6 +1193,8 @@ '../src/macro-assembler.h', '../src/map-updater.cc', '../src/map-updater.h', + '../src/math-random.cc', + '../src/math-random.h', '../src/maybe-handles-inl.h', '../src/maybe-handles.h', '../src/messages.cc', @@ -1142,6 +1213,7 @@ '../src/objects/arguments.h', '../src/objects/bigint.cc', '../src/objects/bigint.h', + '../src/objects/builtin-function-id.h', '../src/objects/code-inl.h', '../src/objects/code.h', '../src/objects/compilation-cache-inl.h', @@ -1165,11 +1237,17 @@ '../src/objects/js-array-buffer.h', '../src/objects/js-array-inl.h', '../src/objects/js-array.h', + '../src/objects/js-break-iterator-inl.h', + '../src/objects/js-break-iterator.cc', + '../src/objects/js-break-iterator.h', '../src/objects/js-collator-inl.h', '../src/objects/js-collator.cc', '../src/objects/js-collator.h', '../src/objects/js-collection-inl.h', '../src/objects/js-collection.h', + '../src/objects/js-date-time-format-inl.h', + '../src/objects/js-date-time-format.cc', + '../src/objects/js-date-time-format.h', '../src/objects/js-generator-inl.h', '../src/objects/js-generator.h', '../src/objects/js-list-format-inl.h', @@ -1178,6 +1256,11 @@ '../src/objects/js-locale-inl.h', '../src/objects/js-locale.cc', '../src/objects/js-locale.h', + '../src/objects/js-number-format-inl.h', + '../src/objects/js-number-format.cc', + '../src/objects/js-number-format.h', + '../src/objects/js-objects-inl.h', + '../src/objects/js-objects.h', '../src/objects/js-plural-rules-inl.h', '../src/objects/js-plural-rules.cc', '../src/objects/js-plural-rules.h', @@ -1192,6 +1275,9 @@ '../src/objects/js-relative-time-format-inl.h', '../src/objects/js-relative-time-format.cc', '../src/objects/js-relative-time-format.h', + '../src/objects/js-segmenter-inl.h', + '../src/objects/js-segmenter.cc', + '../src/objects/js-segmenter.h', '../src/objects/literal-objects-inl.h', '../src/objects/literal-objects.cc', '../src/objects/literal-objects.h', @@ -1202,6 +1288,9 @@ '../src/objects/maybe-object-inl.h', '../src/objects/maybe-object.h', '../src/objects/microtask-inl.h', + '../src/objects/microtask-queue-inl.h', + '../src/objects/microtask-queue.cc', + '../src/objects/microtask-queue.h', '../src/objects/microtask.h', '../src/objects/module-inl.h', '../src/objects/module.cc', @@ -1215,6 +1304,8 @@ '../src/objects/ordered-hash-table.h', '../src/objects/promise-inl.h', '../src/objects/promise.h', + '../src/objects/property-array-inl.h', + '../src/objects/property-array.h', '../src/objects/property-descriptor-object-inl.h', '../src/objects/property-descriptor-object.h', '../src/objects/prototype-info-inl.h', @@ -1226,6 +1317,8 @@ '../src/objects/script.h', '../src/objects/shared-function-info-inl.h', '../src/objects/shared-function-info.h', + '../src/objects/stack-frame-info-inl.h', + '../src/objects/stack-frame-info.h', '../src/objects/string-inl.h', '../src/objects/string-table.h', '../src/objects/string.h', @@ -1251,6 +1344,7 @@ '../src/parsing/parsing.cc', '../src/parsing/parsing.h', '../src/parsing/pattern-rewriter.cc', + '../src/parsing/preparsed-scope-data-impl.h', '../src/parsing/preparsed-scope-data.cc', '../src/parsing/preparsed-scope-data.h', '../src/parsing/preparser-logger.h', @@ -1307,6 +1401,8 @@ '../src/regexp/jsregexp-inl.h', '../src/regexp/jsregexp.cc', '../src/regexp/jsregexp.h', + '../src/regexp/property-sequences.cc', + '../src/regexp/property-sequences.h', '../src/regexp/regexp-ast.cc', '../src/regexp/regexp-ast.h', '../src/regexp/regexp-macro-assembler-irregexp-inl.h', @@ -1328,6 +1424,7 @@ '../src/reloc-info.cc', '../src/reloc-info.h', '../src/roots-inl.h', + '../src/roots.cc', '../src/roots.h', '../src/runtime-profiler.cc', '../src/runtime-profiler.h', @@ -1347,7 +1444,6 @@ '../src/runtime/runtime-interpreter.cc', '../src/runtime/runtime-intl.cc', '../src/runtime/runtime-literals.cc', - '../src/runtime/runtime-maths.cc', '../src/runtime/runtime-module.cc', '../src/runtime/runtime-numbers.cc', '../src/runtime/runtime-object.cc', @@ -1379,8 +1475,6 @@ '../src/snapshot/builtin-serializer-allocator.h', '../src/snapshot/builtin-serializer.cc', '../src/snapshot/builtin-serializer.h', - '../src/snapshot/builtin-snapshot-utils.cc', - '../src/snapshot/builtin-snapshot-utils.h', '../src/snapshot/code-serializer.cc', '../src/snapshot/code-serializer.h', '../src/snapshot/default-deserializer-allocator.cc', @@ -1423,6 +1517,8 @@ '../src/string-builder.cc', '../src/string-case.cc', '../src/string-case.h', + '../src/string-constants.cc', + '../src/string-constants.h', '../src/string-hasher-inl.h', '../src/string-hasher.h', '../src/string-search.h', @@ -1431,6 +1527,7 @@ '../src/strtod.cc', '../src/strtod.h', '../src/third_party/utf8-decoder/utf8-decoder.h', + '../src/torque-assembler.h', '../src/tracing/trace-event.cc', '../src/tracing/trace-event.h', '../src/tracing/traced-value.cc', @@ -1502,6 +1599,7 @@ '../src/wasm/module-compiler.h', '../src/wasm/module-decoder.cc', '../src/wasm/module-decoder.h', + '../src/wasm/object-access.h', '../src/wasm/signature-map.cc', '../src/wasm/signature-map.h', '../src/wasm/streaming-decoder.cc', @@ -1554,6 +1652,7 @@ '../src/zone/zone-segment.h', '../src/zone/zone.cc', '../src/zone/zone.h', + '<(generate_bytecode_builtins_list_output)', '<@(torque_generated_pure_headers)', ], 'conditions': [ @@ -1892,28 +1991,39 @@ }, { # v8_enable_i18n_support==0 'sources!': [ '../src/builtins/builtins-intl.cc', - '../src/builtins/builtins-intl.h', '../src/char-predicates.cc', '../src/intl.cc', '../src/intl.h', '../src/objects/intl-objects-inl.h', '../src/objects/intl-objects.cc', '../src/objects/intl-objects.h', + '../src/objects/js-break-iterator-inl.h', + '../src/objects/js-break-iterator.cc', + '../src/objects/js-break-iterator.h', '../src/objects/js-collator-inl.h', '../src/objects/js-collator.cc', '../src/objects/js-collator.h', + '../src/objects/js-date-time-format-inl.h', + '../src/objects/js-date-time-format.cc', + '../src/objects/js-date-time-format.h', '../src/objects/js-list-format-inl.h', '../src/objects/js-list-format.cc', '../src/objects/js-list-format.h', '../src/objects/js-locale-inl.h', '../src/objects/js-locale.cc', '../src/objects/js-locale.h', + '../src/objects/js-number-format-inl.h', + '../src/objects/js-number-format.cc', + '../src/objects/js-number-format.h', '../src/objects/js-plural-rules-inl.h', '../src/objects/js-plural-rules.cc', '../src/objects/js-plural-rules.h', '../src/objects/js-relative-time-format-inl.h', '../src/objects/js-relative-time-format.cc', '../src/objects/js-relative-time-format.h', + '../src/objects/js-segmenter-inl.h', + '../src/objects/js-segmenter.cc', + '../src/objects/js-segmenter.h', '../src/runtime/runtime-intl.cc', ], }], @@ -1923,6 +2033,23 @@ ], }], ], + 'actions': [ + { + 'action_name': 'run_torque_action', + 'inputs': [ # Order matters. + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', + '<@(torque_files)', + ], + 'outputs': [ + '<@(torque_outputs)', + '<@(torque_generated_pure_headers)', + ], + 'action': [ + '<@(_inputs)', + '-o', '<(SHARED_INTERMEDIATE_DIR)/torque-generated' + ], + }, + ], }, # v8_base { 'target_name': 'v8_libbase', @@ -1939,6 +2066,7 @@ }, 'sources': [ '../src/base/adapters.h', + '../src/base/address-region.h', '../src/base/atomic-utils.h', '../src/base/atomicops.h', '../src/base/atomicops_internals_atomicword_compat.h', @@ -1947,6 +2075,8 @@ '../src/base/base-export.h', '../src/base/bits.cc', '../src/base/bits.h', + '../src/base/bounded-page-allocator.cc', + '../src/base/bounded-page-allocator.h', '../src/base/build_config.h', '../src/base/compiler-specific.h', '../src/base/cpu.cc', @@ -1972,6 +2102,8 @@ '../src/base/list.h', '../src/base/logging.cc', '../src/base/logging.h', + '../src/base/lsan-page-allocator.cc', + '../src/base/lsan-page-allocator.h', '../src/base/macros.h', '../src/base/once.cc', '../src/base/once.h', @@ -1988,6 +2120,8 @@ '../src/base/platform/semaphore.h', '../src/base/platform/time.cc', '../src/base/platform/time.h', + '../src/base/region-allocator.cc', + '../src/base/region-allocator.h', '../src/base/ring-buffer.h', '../src/base/safe_conversions.h', '../src/base/safe_conversions_impl.h', @@ -2531,36 +2665,27 @@ ], }, # js2c { - 'target_name': 'torque', - 'type': 'executable', + 'target_name': 'torque_base', + 'type': '<(component)', 'toolsets': ['host'], - 'dependencies': ['v8_libbase'], + 'dependencies': ['v8_libbase#host'], 'defines!': [ '_HAS_EXCEPTIONS=0', 'BUILDING_V8_SHARED=1', ], - # This is defined trough `configurations` for GYP+ninja compatibility - 'configurations': { - 'Debug': { - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeTypeInfo': 'true', - 'ExceptionHandling': 1, - }, - } - }, - 'Release': { - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeTypeInfo': 'true', - 'ExceptionHandling': 1, - }, - } + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeTypeInfo': 'true', + 'ExceptionHandling': 1, }, }, 'sources': [ '../src/torque/ast.h', + '../src/torque/cfg.cc', + '../src/torque/cfg.h', '../src/torque/contextual.h', + '../src/torque/csa-generator.cc', + '../src/torque/csa-generator.h', '../src/torque/declarable.cc', '../src/torque/declarable.h', '../src/torque/declaration-visitor.cc', @@ -2574,13 +2699,14 @@ '../src/torque/global-context.h', '../src/torque/implementation-visitor.cc', '../src/torque/implementation-visitor.h', + '../src/torque/instructions.cc', + '../src/torque/instructions.h', '../src/torque/scope.cc', '../src/torque/scope.h', '../src/torque/source-positions.cc', '../src/torque/source-positions.h', '../src/torque/torque-parser.cc', '../src/torque/torque-parser.h', - '../src/torque/torque.cc', '../src/torque/type-oracle.cc', '../src/torque/type-oracle.h', '../src/torque/types.cc', @@ -2590,40 +2716,24 @@ ], }, # torque_base { - 'target_name': 'v8_torque', - 'type': 'none', + 'target_name': 'torque', + 'type': 'executable', 'toolsets': ['host'], - 'dependencies': ['torque#host'], - 'direct_dependent_settings': { - 'include_dirs+': ['<(SHARED_INTERMEDIATE_DIR)'], - }, - 'actions': [ - { - 'action_name': 'run_torque', - 'inputs': [ # Order matters. - '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', - '../src/builtins/base.tq', - '../src/builtins/array.tq', - '../src/builtins/array-copywithin.tq', - '../src/builtins/array-foreach.tq', - '../src/builtins/array-reverse.tq', - '../src/builtins/typed-array.tq', - '../src/builtins/data-view.tq', - '../third_party/v8/builtins/array-sort.tq', - ], - 'outputs': [ - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtin-definitions-from-dsl.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-base-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-base-from-dsl-gen.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.h', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-data-view-from-dsl-gen.cc', - '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-data-view-from-dsl-gen.h', - ], - 'action': ['<@(_inputs)', '-o', '<(SHARED_INTERMEDIATE_DIR)/torque-generated'], + 'dependencies': ['torque_base'], + 'defines!': [ + '_HAS_EXCEPTIONS=0', + 'BUILDING_V8_SHARED=1', + ], + # This is defined trough `configurations` for GYP+ninja compatibility + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeTypeInfo': 'true', + 'ExceptionHandling': 1, }, + }, + 'include_dirs': ['..'], + 'sources': [ + "../src/torque/torque.cc", ], }, # torque { @@ -2633,6 +2743,8 @@ 'heapobject_files': [ '../src/objects.h', '../src/objects-inl.h', + '../src/objects/allocation-site-inl.h', + '../src/objects/allocation-site.h', '../src/objects/code-inl.h', '../src/objects/code.h', '../src/objects/data-handler.h', @@ -2643,12 +2755,16 @@ '../src/objects/js-array.h', '../src/objects/js-array-buffer-inl.h', '../src/objects/js-array-buffer.h', + '../src/objects/js-objects-inl.h', + '../src/objects/js-objects.h', '../src/objects/js-regexp-inl.h', '../src/objects/js-regexp.h', '../src/objects/js-regexp-string-iterator-inl.h', '../src/objects/js-regexp-string-iterator.h', '../src/objects/map.h', '../src/objects/map-inl.h', + '../src/objects/name.h', + '../src/objects/name-inl.h', '../src/objects/scope-info.h', '../src/objects/script.h', '../src/objects/script-inl.h', @@ -2708,6 +2824,47 @@ }], ], }, # mksnapshot + { + 'target_name': 'bytecode_builtins_list_generator', + 'type': 'executable', + 'toolsets': ['host'], + 'dependencies': [ + "v8_libbase#host" + ], + 'include_dirs': [".."], + 'sources': [ + "../src/builtins/generate-bytecodes-builtins-list.cc", + "../src/interpreter/bytecode-operands.cc", + "../src/interpreter/bytecode-operands.h", + "../src/interpreter/bytecodes.cc", + "../src/interpreter/bytecodes.h", + ], + }, # bytecode_builtins_list_generator + { + 'target_name': 'generate_bytecode_builtins_list', + 'type': 'none', + 'toolsets': ['host'], + 'dependencies': [ + "bytecode_builtins_list_generator", + ], + 'actions': [ + { + 'action_name': 'generate_bytecode_builtins_list_action', + 'inputs': [ + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)', + ], + 'outputs': [ + '<(generate_bytecode_builtins_list_output)', + ], + 'action': [ + 'python', + '../tools/run.py', + '<@(_inputs)', + '<@(_outputs)', + ], + }, + ], + }, # generate_bytecode_builtins_list { 'includes': [ 'v8_external_snapshot.gypi' ], }, # v8_external_snapshot diff --git a/deps/v8/gypfiles/v8_external_snapshot.gypi b/deps/v8/gypfiles/v8_external_snapshot.gypi index 0a1d7ad5a4b802..8c08e5e32b8c32 100644 --- a/deps/v8/gypfiles/v8_external_snapshot.gypi +++ b/deps/v8/gypfiles/v8_external_snapshot.gypi @@ -3,7 +3,7 @@ 'target_name': 'v8_external_snapshot', 'type': 'static_library', 'conditions': [ - [ 'v8_use_external_startup_data==1', { + ['v8_use_external_startup_data==1', { 'conditions': [ ['want_separate_host_toolset==1', { 'toolsets': ['host', 'target'], @@ -11,14 +11,14 @@ 'mksnapshot#host', 'js2c#host', 'natives_blob', - ]}, { - 'toolsets': ['target'], - 'dependencies': [ - 'mksnapshot', - 'js2c', - 'natives_blob', - ], - }], + ]}, { + 'toolsets': ['target'], + 'dependencies': [ + 'mksnapshot', + 'js2c', + 'natives_blob', + ], + }], ['component=="shared_library"', { 'defines': [ 'BUILDING_V8_SHARED', @@ -33,7 +33,7 @@ 'dependencies': [ 'v8_base', ], - 'include_dirs+': [ + 'include_dirs': [ '..', '<(DEPTH)', ], @@ -42,6 +42,7 @@ '../src/snapshot/embedded-empty.cc', '../src/snapshot/natives-external.cc', '../src/snapshot/snapshot-external.cc', + '<(embedded_builtins_snapshot_src)', ], 'actions': [ { @@ -61,17 +62,23 @@ ['v8_os_page_size!=0', { 'mksnapshot_flags': ['--v8_os_page_size', '<(v8_os_page_size)'], }], + ['v8_enable_embedded_builtins="true"', { + # 'embedded_builtins_snapshot_src': [ "$target_gen_dir/embedded${suffix}.cc" ], + # 'mksnapshot_flags': ["--embedded_src", "$target_gen_dir/embedded${suffix}.cc",], + # if (invoker.embedded_variant != "") { + # args += [ + # "--embedded_variant", + # invoker.embedded_variant, + # ] + # } + }, + ], ], }, 'conditions': [ - ['embed_script!=""', { + ['v8_embed_script!=""', { 'inputs': [ - '<(embed_script)', - ], - }], - ['warmup_script!=""', { - 'inputs': [ - '<(warmup_script)', + '<(v8_embed_script)', ], }], ['want_separate_host_toolset==1', { @@ -79,6 +86,7 @@ ['_toolset=="host"', { 'outputs': [ '<(PRODUCT_DIR)/snapshot_blob_host.bin', + '<(embedded_builtins_snapshot_src)' ], 'action': [ '<(mksnapshot_exec)', @@ -88,30 +96,31 @@ '<(warmup_script)', ], }, { - 'outputs': [ - '<(PRODUCT_DIR)/snapshot_blob.bin', - ], - 'action': [ - '<(mksnapshot_exec)', - '<@(mksnapshot_flags)', - '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob.bin', - '<(embed_script)', - '<(warmup_script)', - ], - }], + 'outputs': [ + '<(PRODUCT_DIR)/snapshot_blob.bin', + ], + 'action': [ + '<(mksnapshot_exec)', + '<@(mksnapshot_flags)', + '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob.bin', + '<(embed_script)', + '<(warmup_script)', + ], + }], ], }, { - 'outputs': [ - '<(PRODUCT_DIR)/snapshot_blob.bin', - ], - 'action': [ - '<(mksnapshot_exec)', - '<@(mksnapshot_flags)', - '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob.bin', - '<(embed_script)', - '<(warmup_script)', - ], - }], + 'outputs': [ + '<(PRODUCT_DIR)/snapshot_blob.bin', + '<(embedded_builtins_snapshot_src)' + ], + 'action': [ + '<(mksnapshot_exec)', + '<@(mksnapshot_flags)', + '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob.bin', + '<(embed_script)', + '<(warmup_script)', + ], + }], ], }, ], diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h index e430e7c3502741..250d5fbdb9f07f 100644 --- a/deps/v8/include/libplatform/v8-tracing.h +++ b/deps/v8/include/libplatform/v8-tracing.h @@ -35,7 +35,7 @@ class V8_PLATFORM_EXPORT TraceObject { const char* as_string; }; - TraceObject() {} + TraceObject() = default; ~TraceObject(); void Initialize( char phase, const uint8_t* category_enabled_flag, const char* name, @@ -106,8 +106,8 @@ class V8_PLATFORM_EXPORT TraceObject { class V8_PLATFORM_EXPORT TraceWriter { public: - TraceWriter() {} - virtual ~TraceWriter() {} + TraceWriter() = default; + virtual ~TraceWriter() = default; virtual void AppendTraceEvent(TraceObject* trace_event) = 0; virtual void Flush() = 0; @@ -147,8 +147,8 @@ class V8_PLATFORM_EXPORT TraceBufferChunk { class V8_PLATFORM_EXPORT TraceBuffer { public: - TraceBuffer() {} - virtual ~TraceBuffer() {} + TraceBuffer() = default; + virtual ~TraceBuffer() = default; virtual TraceObject* AddTraceEvent(uint64_t* handle) = 0; virtual TraceObject* GetEventByHandle(uint64_t handle) = 0; diff --git a/deps/v8/include/v8-inspector.h b/deps/v8/include/v8-inspector.h index e06963949a5620..f0a8b5f1635adf 100644 --- a/deps/v8/include/v8-inspector.h +++ b/deps/v8/include/v8-inspector.h @@ -62,7 +62,7 @@ class V8_EXPORT StringView { class V8_EXPORT StringBuffer { public: - virtual ~StringBuffer() {} + virtual ~StringBuffer() = default; virtual const StringView& string() = 0; // This method copies contents. static std::unique_ptr create(const StringView&); @@ -107,7 +107,7 @@ class V8_EXPORT V8StackTrace { virtual StringView topScriptId() const = 0; virtual StringView topFunctionName() const = 0; - virtual ~V8StackTrace() {} + virtual ~V8StackTrace() = default; virtual std::unique_ptr buildInspectorObject() const = 0; virtual std::unique_ptr toString() const = 0; @@ -118,13 +118,13 @@ class V8_EXPORT V8StackTrace { class V8_EXPORT V8InspectorSession { public: - virtual ~V8InspectorSession() {} + virtual ~V8InspectorSession() = default; // Cross-context inspectable values (DOM nodes in different worlds, etc.). class V8_EXPORT Inspectable { public: virtual v8::Local get(v8::Local) = 0; - virtual ~Inspectable() {} + virtual ~Inspectable() = default; }; virtual void addInspectedObject(std::unique_ptr) = 0; @@ -162,7 +162,7 @@ class V8_EXPORT V8InspectorSession { class V8_EXPORT V8InspectorClient { public: - virtual ~V8InspectorClient() {} + virtual ~V8InspectorClient() = default; virtual void runMessageLoopOnPause(int contextGroupId) {} virtual void quitMessageLoopOnPause() {} @@ -239,7 +239,7 @@ struct V8_EXPORT V8StackTraceId { class V8_EXPORT V8Inspector { public: static std::unique_ptr create(v8::Isolate*, V8InspectorClient*); - virtual ~V8Inspector() {} + virtual ~V8Inspector() = default; // Contexts instrumentation. virtual void contextCreated(const V8ContextInfo&) = 0; @@ -277,7 +277,7 @@ class V8_EXPORT V8Inspector { // Connection. class V8_EXPORT Channel { public: - virtual ~Channel() {} + virtual ~Channel() = default; virtual void sendResponse(int callId, std::unique_ptr message) = 0; virtual void sendNotification(std::unique_ptr message) = 0; diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h new file mode 100644 index 00000000000000..80f7367bfee3e6 --- /dev/null +++ b/deps/v8/include/v8-internal.h @@ -0,0 +1,316 @@ +// Copyright 2018 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 INCLUDE_V8_INTERNAL_H_ +#define INCLUDE_V8_INTERNAL_H_ + +#include +#include +#include + +#include "v8-version.h" // NOLINT(build/include) +#include "v8config.h" // NOLINT(build/include) + +namespace v8 { + +class Context; +class Data; +class Isolate; + +namespace internal { + +class Object; + +/** + * Configuration of tagging scheme. + */ +const int kApiPointerSize = sizeof(void*); // NOLINT +const int kApiDoubleSize = sizeof(double); // NOLINT +const int kApiIntSize = sizeof(int); // NOLINT +const int kApiInt64Size = sizeof(int64_t); // NOLINT + +// Tag information for HeapObject. +const int kHeapObjectTag = 1; +const int kWeakHeapObjectTag = 3; +const int kHeapObjectTagSize = 2; +const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1; + +// Tag information for Smi. +const int kSmiTag = 0; +const int kSmiTagSize = 1; +const intptr_t kSmiTagMask = (1 << kSmiTagSize) - 1; + +template +struct SmiTagging; + +template +V8_INLINE internal::Object* IntToSmi(int value) { + int smi_shift_bits = kSmiTagSize + kSmiShiftSize; + intptr_t tagged_value = + (static_cast(value) << smi_shift_bits) | kSmiTag; + return reinterpret_cast(tagged_value); +} + +// Smi constants for systems where tagged pointer is a 32-bit value. +template <> +struct SmiTagging<4> { + enum { kSmiShiftSize = 0, kSmiValueSize = 31 }; + static int SmiShiftSize() { return kSmiShiftSize; } + static int SmiValueSize() { return kSmiValueSize; } + V8_INLINE static int SmiToInt(const internal::Object* value) { + int shift_bits = kSmiTagSize + kSmiShiftSize; + // Throw away top 32 bits and shift down (requires >> to be sign extending). + return static_cast(reinterpret_cast(value)) >> shift_bits; + } + V8_INLINE static internal::Object* IntToSmi(int value) { + return internal::IntToSmi(value); + } + V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { + // To be representable as an tagged small integer, the two + // most-significant bits of 'value' must be either 00 or 11 due to + // sign-extension. To check this we add 01 to the two + // most-significant bits, and check if the most-significant bit is 0 + // + // CAUTION: The original code below: + // bool result = ((value + 0x40000000) & 0x80000000) == 0; + // may lead to incorrect results according to the C language spec, and + // in fact doesn't work correctly with gcc4.1.1 in some cases: The + // compiler may produce undefined results in case of signed integer + // overflow. The computation must be done w/ unsigned ints. + return static_cast(value) + 0x40000000U < 0x80000000U; + } +}; + +// Smi constants for systems where tagged pointer is a 64-bit value. +template <> +struct SmiTagging<8> { + enum { kSmiShiftSize = 31, kSmiValueSize = 32 }; + static int SmiShiftSize() { return kSmiShiftSize; } + static int SmiValueSize() { return kSmiValueSize; } + V8_INLINE static int SmiToInt(const internal::Object* value) { + int shift_bits = kSmiTagSize + kSmiShiftSize; + // Shift down and throw away top 32 bits. + return static_cast(reinterpret_cast(value) >> shift_bits); + } + V8_INLINE static internal::Object* IntToSmi(int value) { + return internal::IntToSmi(value); + } + V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { + // To be representable as a long smi, the value must be a 32-bit integer. + return (value == static_cast(value)); + } +}; + +#if V8_COMPRESS_POINTERS +static_assert( + kApiPointerSize == kApiInt64Size, + "Pointer compression can be enabled only for 64-bit architectures"); +typedef SmiTagging<4> PlatformSmiTagging; +#else +typedef SmiTagging PlatformSmiTagging; +#endif + +const int kSmiShiftSize = PlatformSmiTagging::kSmiShiftSize; +const int kSmiValueSize = PlatformSmiTagging::kSmiValueSize; +const int kSmiMinValue = (static_cast(-1)) << (kSmiValueSize - 1); +const int kSmiMaxValue = -(kSmiMinValue + 1); +constexpr bool SmiValuesAre31Bits() { return kSmiValueSize == 31; } +constexpr bool SmiValuesAre32Bits() { return kSmiValueSize == 32; } + +/** + * This class exports constants and functionality from within v8 that + * is necessary to implement inline functions in the v8 api. Don't + * depend on functions and constants defined here. + */ +class Internals { + public: + // These values match non-compiler-dependent values defined within + // the implementation of v8. + static const int kHeapObjectMapOffset = 0; + static const int kMapInstanceTypeOffset = 1 * kApiPointerSize + kApiIntSize; + static const int kStringResourceOffset = + 1 * kApiPointerSize + 2 * kApiIntSize; + + static const int kOddballKindOffset = 4 * kApiPointerSize + kApiDoubleSize; + static const int kForeignAddressOffset = kApiPointerSize; + static const int kJSObjectHeaderSize = 3 * kApiPointerSize; + static const int kFixedArrayHeaderSize = 2 * kApiPointerSize; + static const int kContextHeaderSize = 2 * kApiPointerSize; + static const int kContextEmbedderDataIndex = 5; + static const int kFullStringRepresentationMask = 0x0f; + static const int kStringEncodingMask = 0x8; + static const int kExternalTwoByteRepresentationTag = 0x02; + static const int kExternalOneByteRepresentationTag = 0x0a; + + static const int kIsolateEmbedderDataOffset = 0 * kApiPointerSize; + static const int kExternalMemoryOffset = 4 * kApiPointerSize; + static const int kExternalMemoryLimitOffset = + kExternalMemoryOffset + kApiInt64Size; + static const int kExternalMemoryAtLastMarkCompactOffset = + kExternalMemoryLimitOffset + kApiInt64Size; + static const int kIsolateRootsOffset = kExternalMemoryLimitOffset + + kApiInt64Size + kApiInt64Size + + kApiPointerSize + kApiPointerSize; + static const int kUndefinedValueRootIndex = 4; + static const int kTheHoleValueRootIndex = 5; + static const int kNullValueRootIndex = 6; + static const int kTrueValueRootIndex = 7; + static const int kFalseValueRootIndex = 8; + static const int kEmptyStringRootIndex = 9; + + static const int kNodeClassIdOffset = 1 * kApiPointerSize; + static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; + static const int kNodeStateMask = 0x7; + static const int kNodeStateIsWeakValue = 2; + static const int kNodeStateIsPendingValue = 3; + static const int kNodeStateIsNearDeathValue = 4; + static const int kNodeIsIndependentShift = 3; + static const int kNodeIsActiveShift = 4; + + static const int kFirstNonstringType = 0x80; + static const int kOddballType = 0x83; + static const int kForeignType = 0x87; + static const int kJSSpecialApiObjectType = 0x410; + static const int kJSApiObjectType = 0x420; + static const int kJSObjectType = 0x421; + + static const int kUndefinedOddballKind = 5; + static const int kNullOddballKind = 3; + + static const uint32_t kNumIsolateDataSlots = 4; + + // Soft limit for AdjustAmountofExternalAllocatedMemory. Trigger an + // incremental GC once the external memory reaches this limit. + static constexpr int kExternalAllocationSoftLimit = 64 * 1024 * 1024; + + V8_EXPORT static void CheckInitializedImpl(v8::Isolate* isolate); + V8_INLINE static void CheckInitialized(v8::Isolate* isolate) { +#ifdef V8_ENABLE_CHECKS + CheckInitializedImpl(isolate); +#endif + } + + V8_INLINE static bool HasHeapObjectTag(const internal::Object* value) { + return ((reinterpret_cast(value) & kHeapObjectTagMask) == + kHeapObjectTag); + } + + V8_INLINE static int SmiValue(const internal::Object* value) { + return PlatformSmiTagging::SmiToInt(value); + } + + V8_INLINE static internal::Object* IntToSmi(int value) { + return PlatformSmiTagging::IntToSmi(value); + } + + V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { + return PlatformSmiTagging::IsValidSmi(value); + } + + V8_INLINE static int GetInstanceType(const internal::Object* obj) { + typedef internal::Object O; + O* map = ReadField(obj, kHeapObjectMapOffset); + return ReadField(map, kMapInstanceTypeOffset); + } + + V8_INLINE static int GetOddballKind(const internal::Object* obj) { + typedef internal::Object O; + return SmiValue(ReadField(obj, kOddballKindOffset)); + } + + V8_INLINE static bool IsExternalTwoByteString(int instance_type) { + int representation = (instance_type & kFullStringRepresentationMask); + return representation == kExternalTwoByteRepresentationTag; + } + + V8_INLINE static uint8_t GetNodeFlag(internal::Object** obj, int shift) { + uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; + return *addr & static_cast(1U << shift); + } + + V8_INLINE static void UpdateNodeFlag(internal::Object** obj, bool value, + int shift) { + uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; + uint8_t mask = static_cast(1U << shift); + *addr = static_cast((*addr & ~mask) | (value << shift)); + } + + V8_INLINE static uint8_t GetNodeState(internal::Object** obj) { + uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; + return *addr & kNodeStateMask; + } + + V8_INLINE static void UpdateNodeState(internal::Object** obj, uint8_t value) { + uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; + *addr = static_cast((*addr & ~kNodeStateMask) | value); + } + + V8_INLINE static void SetEmbedderData(v8::Isolate* isolate, uint32_t slot, + void* data) { + uint8_t* addr = reinterpret_cast(isolate) + + kIsolateEmbedderDataOffset + slot * kApiPointerSize; + *reinterpret_cast(addr) = data; + } + + V8_INLINE static void* GetEmbedderData(const v8::Isolate* isolate, + uint32_t slot) { + const uint8_t* addr = reinterpret_cast(isolate) + + kIsolateEmbedderDataOffset + slot * kApiPointerSize; + return *reinterpret_cast(addr); + } + + V8_INLINE static internal::Object** GetRoot(v8::Isolate* isolate, int index) { + uint8_t* addr = reinterpret_cast(isolate) + kIsolateRootsOffset; + return reinterpret_cast(addr + index * kApiPointerSize); + } + + template + V8_INLINE static T ReadField(const internal::Object* ptr, int offset) { + const uint8_t* addr = + reinterpret_cast(ptr) + offset - kHeapObjectTag; + return *reinterpret_cast(addr); + } + + template + V8_INLINE static T ReadEmbedderData(const v8::Context* context, int index) { + typedef internal::Object O; + typedef internal::Internals I; + O* ctx = *reinterpret_cast(context); + int embedder_data_offset = + I::kContextHeaderSize + + (internal::kApiPointerSize * I::kContextEmbedderDataIndex); + O* embedder_data = I::ReadField(ctx, embedder_data_offset); + int value_offset = + I::kFixedArrayHeaderSize + (internal::kApiPointerSize * index); + return I::ReadField(embedder_data, value_offset); + } +}; + +// Only perform cast check for types derived from v8::Data since +// other types do not implement the Cast method. +template +struct CastCheck { + template + static void Perform(T* data); +}; + +template <> +template +void CastCheck::Perform(T* data) { + T::Cast(data); +} + +template <> +template +void CastCheck::Perform(T* data) {} + +template +V8_INLINE void PerformCastCheck(T* data) { + CastCheck::value>::Perform(data); +} + +} // namespace internal +} // namespace v8 + +#endif // INCLUDE_V8_INTERNAL_H_ diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 9981061a44bf06..c034518defdd96 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -445,7 +445,7 @@ class V8_EXPORT OutputStream { // NOLINT kContinue = 0, kAbort = 1 }; - virtual ~OutputStream() {} + virtual ~OutputStream() = default; /** Notify about the end of stream. */ virtual void EndOfStream() = 0; /** Get preferred output chunk size. Called only once. */ @@ -539,7 +539,7 @@ class V8_EXPORT ActivityControl { // NOLINT kContinue = 0, kAbort = 1 }; - virtual ~ActivityControl() {} + virtual ~ActivityControl() = default; /** * Notify about current progress. The activity can be stopped by * returning kAbort as the callback result. @@ -625,7 +625,7 @@ class V8_EXPORT AllocationProfile { */ virtual Node* GetRootNode() = 0; - virtual ~AllocationProfile() {} + virtual ~AllocationProfile() = default; static const int kNoLineNumberInfo = Message::kNoLineNumberInfo; static const int kNoColumnNumberInfo = Message::kNoColumnInfo; @@ -793,15 +793,15 @@ class V8_EXPORT HeapProfiler { virtual const char* GetName(Local object) = 0; protected: - virtual ~ObjectNameResolver() {} + virtual ~ObjectNameResolver() = default; }; /** * Takes a heap snapshot and returns it. */ const HeapSnapshot* TakeHeapSnapshot( - ActivityControl* control = NULL, - ObjectNameResolver* global_object_name_resolver = NULL); + ActivityControl* control = nullptr, + ObjectNameResolver* global_object_name_resolver = nullptr); /** * Starts tracking of heap objects population statistics. After calling @@ -828,7 +828,7 @@ class V8_EXPORT HeapProfiler { * method. */ SnapshotObjectId GetHeapStats(OutputStream* stream, - int64_t* timestamp_us = NULL); + int64_t* timestamp_us = nullptr); /** * Stops tracking of heap objects population statistics, cleans up all @@ -985,8 +985,8 @@ class V8_EXPORT RetainedObjectInfo { // NOLINT virtual intptr_t GetSizeInBytes() { return -1; } protected: - RetainedObjectInfo() {} - virtual ~RetainedObjectInfo() {} + RetainedObjectInfo() = default; + virtual ~RetainedObjectInfo() = default; private: RetainedObjectInfo(const RetainedObjectInfo&); diff --git a/deps/v8/include/v8-util.h b/deps/v8/include/v8-util.h index a3069651222ee0..96c9acbbdc2b29 100644 --- a/deps/v8/include/v8-util.h +++ b/deps/v8/include/v8-util.h @@ -94,11 +94,11 @@ class DefaultPersistentValueMapTraits : public StdMapTraits { static WeakCallbackDataType* WeakCallbackParameter( MapType* map, const K& key, Local value) { - return NULL; + return nullptr; } static MapType* MapFromWeakCallbackInfo( const WeakCallbackInfo& data) { - return NULL; + return nullptr; } static K KeyFromWeakCallbackInfo( const WeakCallbackInfo& data) { @@ -302,7 +302,7 @@ class PersistentValueMapBase { static PersistentContainerValue ClearAndLeak(Global* persistent) { V* v = persistent->val_; - persistent->val_ = 0; + persistent->val_ = nullptr; return reinterpret_cast(v); } @@ -633,7 +633,7 @@ class PersistentValueVector { private: static PersistentContainerValue ClearAndLeak(Global* persistent) { V* v = persistent->val_; - persistent->val_ = 0; + persistent->val_ = nullptr; return reinterpret_cast(v); } diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index a93cd9be0c6bed..efe0d9b9dcc556 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,12 +9,12 @@ // 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 7 -#define V8_MINOR_VERSION 0 -#define V8_BUILD_NUMBER 276 -#define V8_PATCH_LEVEL 22 +#define V8_MINOR_VERSION 1 +#define V8_BUILD_NUMBER 0 +#define V8_PATCH_LEVEL 0 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) -#define V8_IS_CANDIDATE_VERSION 0 +#define V8_IS_CANDIDATE_VERSION 1 #endif // V8_INCLUDE_VERSION_H_ diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 63edc67edfd95f..a4bbe1b0c43d66 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -22,42 +22,13 @@ #include #include -#include "v8-version.h" // NOLINT(build/include) -#include "v8config.h" // NOLINT(build/include) +#include "v8-internal.h" // NOLINT(build/include) +#include "v8-version.h" // NOLINT(build/include) +#include "v8config.h" // NOLINT(build/include) // We reserve the V8_* prefix for macros defined in V8 public API and // assume there are no name conflicts with the embedder's code. -#ifdef V8_OS_WIN - -// Setup for Windows DLL export/import. When building the V8 DLL the -// BUILDING_V8_SHARED needs to be defined. When building a program which uses -// 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. -#ifdef BUILDING_V8_SHARED -# define V8_EXPORT __declspec(dllexport) -#elif USING_V8_SHARED -# define V8_EXPORT __declspec(dllimport) -#else -# define V8_EXPORT -#endif // BUILDING_V8_SHARED - -#else // V8_OS_WIN - -// Setup for Linux shared library export. -#if V8_HAS_ATTRIBUTE_VISIBILITY -# ifdef BUILDING_V8_SHARED -# define V8_EXPORT __attribute__ ((visibility("default"))) -# else -# define V8_EXPORT -# endif -#else -# define V8_EXPORT -#endif - -#endif // V8_OS_WIN - /** * The v8 JavaScript engine. */ @@ -153,108 +124,13 @@ template class CustomArguments; class PropertyCallbackArguments; class FunctionCallbackArguments; class GlobalHandles; +class ScopedExternalStringLock; namespace wasm { class NativeModule; class StreamingDecoder; } // namespace wasm -/** - * Configuration of tagging scheme. - */ -const int kApiPointerSize = sizeof(void*); // NOLINT -const int kApiDoubleSize = sizeof(double); // NOLINT -const int kApiIntSize = sizeof(int); // NOLINT -const int kApiInt64Size = sizeof(int64_t); // NOLINT - -// Tag information for HeapObject. -const int kHeapObjectTag = 1; -const int kWeakHeapObjectTag = 3; -const int kHeapObjectTagSize = 2; -const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1; - -// Tag information for Smi. -const int kSmiTag = 0; -const int kSmiTagSize = 1; -const intptr_t kSmiTagMask = (1 << kSmiTagSize) - 1; - -template -struct SmiTagging; - -template -V8_INLINE internal::Object* IntToSmi(int value) { - int smi_shift_bits = kSmiTagSize + kSmiShiftSize; - intptr_t tagged_value = - (static_cast(value) << smi_shift_bits) | kSmiTag; - return reinterpret_cast(tagged_value); -} - -// Smi constants for systems where tagged pointer is a 32-bit value. -template <> -struct SmiTagging<4> { - enum { kSmiShiftSize = 0, kSmiValueSize = 31 }; - static int SmiShiftSize() { return kSmiShiftSize; } - static int SmiValueSize() { return kSmiValueSize; } - V8_INLINE static int SmiToInt(const internal::Object* value) { - int shift_bits = kSmiTagSize + kSmiShiftSize; - // Throw away top 32 bits and shift down (requires >> to be sign extending). - return static_cast(reinterpret_cast(value)) >> shift_bits; - } - V8_INLINE static internal::Object* IntToSmi(int value) { - return internal::IntToSmi(value); - } - V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { - // To be representable as an tagged small integer, the two - // most-significant bits of 'value' must be either 00 or 11 due to - // sign-extension. To check this we add 01 to the two - // most-significant bits, and check if the most-significant bit is 0 - // - // CAUTION: The original code below: - // bool result = ((value + 0x40000000) & 0x80000000) == 0; - // may lead to incorrect results according to the C language spec, and - // in fact doesn't work correctly with gcc4.1.1 in some cases: The - // compiler may produce undefined results in case of signed integer - // overflow. The computation must be done w/ unsigned ints. - return static_cast(value) + 0x40000000U < 0x80000000U; - } -}; - -// Smi constants for systems where tagged pointer is a 64-bit value. -template <> -struct SmiTagging<8> { - enum { kSmiShiftSize = 31, kSmiValueSize = 32 }; - static int SmiShiftSize() { return kSmiShiftSize; } - static int SmiValueSize() { return kSmiValueSize; } - V8_INLINE static int SmiToInt(const internal::Object* value) { - int shift_bits = kSmiTagSize + kSmiShiftSize; - // Shift down and throw away top 32 bits. - return static_cast(reinterpret_cast(value) >> shift_bits); - } - V8_INLINE static internal::Object* IntToSmi(int value) { - return internal::IntToSmi(value); - } - V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { - // To be representable as a long smi, the value must be a 32-bit integer. - return (value == static_cast(value)); - } -}; - -#if V8_COMPRESS_POINTERS -static_assert( - kApiPointerSize == kApiInt64Size, - "Pointer compression can be enabled only for 64-bit architectures"); -typedef SmiTagging<4> PlatformSmiTagging; -#else -typedef SmiTagging PlatformSmiTagging; -#endif - -const int kSmiShiftSize = PlatformSmiTagging::kSmiShiftSize; -const int kSmiValueSize = PlatformSmiTagging::kSmiValueSize; -const int kSmiMinValue = (static_cast(-1)) << (kSmiValueSize - 1); -const int kSmiMaxValue = -(kSmiMinValue + 1); -constexpr bool SmiValuesAre31Bits() { return kSmiValueSize == 31; } -constexpr bool SmiValuesAre32Bits() { return kSmiValueSize == 32; } - } // namespace internal namespace debug { @@ -302,7 +178,7 @@ class ConsoleCallArguments; template class Local { public: - V8_INLINE Local() : val_(0) {} + V8_INLINE Local() : val_(nullptr) {} template V8_INLINE Local(Local that) : val_(reinterpret_cast(*that)) { @@ -317,12 +193,12 @@ class Local { /** * Returns true if the handle is empty. */ - V8_INLINE bool IsEmpty() const { return val_ == 0; } + V8_INLINE bool IsEmpty() const { return val_ == nullptr; } /** * Sets the handle to be empty. IsEmpty() will then return true. */ - V8_INLINE void Clear() { val_ = 0; } + V8_INLINE void Clear() { val_ = nullptr; } V8_INLINE T* operator->() const { return val_; } @@ -338,8 +214,8 @@ class Local { V8_INLINE bool operator==(const Local& that) const { internal::Object** a = reinterpret_cast(this->val_); internal::Object** b = reinterpret_cast(that.val_); - if (a == 0) return b == 0; - if (b == 0) return false; + if (a == nullptr) return b == nullptr; + if (b == nullptr) return false; return *a == *b; } @@ -347,8 +223,8 @@ class Local { const PersistentBase& that) const { internal::Object** a = reinterpret_cast(this->val_); internal::Object** b = reinterpret_cast(that.val_); - if (a == 0) return b == 0; - if (b == 0) return false; + if (a == nullptr) return b == nullptr; + if (b == nullptr) return false; return *a == *b; } @@ -592,7 +468,7 @@ template class PersistentBase { template V8_INLINE void Reset(Isolate* isolate, const PersistentBase& other); - V8_INLINE bool IsEmpty() const { return val_ == NULL; } + V8_INLINE bool IsEmpty() const { return val_ == nullptr; } V8_INLINE void Empty() { val_ = 0; } V8_INLINE Local Get(Isolate* isolate) const { @@ -603,8 +479,8 @@ template class PersistentBase { V8_INLINE bool operator==(const PersistentBase& that) const { internal::Object** a = reinterpret_cast(this->val_); internal::Object** b = reinterpret_cast(that.val_); - if (a == NULL) return b == NULL; - if (b == NULL) return false; + if (a == nullptr) return b == nullptr; + if (b == nullptr) return false; return *a == *b; } @@ -612,8 +488,8 @@ template class PersistentBase { V8_INLINE bool operator==(const Local& that) const { internal::Object** a = reinterpret_cast(this->val_); internal::Object** b = reinterpret_cast(that.val_); - if (a == NULL) return b == NULL; - if (b == NULL) return false; + if (a == nullptr) return b == nullptr; + if (b == nullptr) return false; return *a == *b; } @@ -786,7 +662,7 @@ template class Persistent : public PersistentBase { /** * A Persistent with no storage cell. */ - V8_INLINE Persistent() : PersistentBase(0) { } + V8_INLINE Persistent() : PersistentBase(nullptr) {} /** * Construct a Persistent from a Local. * When the Local is non-empty, a new storage cell is created @@ -813,7 +689,7 @@ template class Persistent : public PersistentBase { * traits class is called, allowing the setting of flags based on the * copied Persistent. */ - V8_INLINE Persistent(const Persistent& that) : PersistentBase(0) { + V8_INLINE Persistent(const Persistent& that) : PersistentBase(nullptr) { Copy(that); } template @@ -979,7 +855,7 @@ class V8_EXPORT HandleScope { void operator=(const HandleScope&) = delete; protected: - V8_INLINE HandleScope() {} + V8_INLINE HandleScope() = default; void Initialize(Isolate* isolate); @@ -1019,7 +895,7 @@ class V8_EXPORT HandleScope { class V8_EXPORT EscapableHandleScope : public HandleScope { public: explicit EscapableHandleScope(Isolate* isolate); - V8_INLINE ~EscapableHandleScope() {} + V8_INLINE ~EscapableHandleScope() = default; /** * Pushes the value into the previous scope and returns a handle to it. @@ -1389,7 +1265,7 @@ class V8_EXPORT ScriptCompiler { }; CachedData() - : data(NULL), + : data(nullptr), length(0), rejected(false), buffer_policy(BufferNotOwned) {} @@ -1420,9 +1296,9 @@ class V8_EXPORT ScriptCompiler { public: // Source takes ownership of CachedData. V8_INLINE Source(Local source_string, const ScriptOrigin& origin, - CachedData* cached_data = NULL); + CachedData* cached_data = nullptr); V8_INLINE Source(Local source_string, - CachedData* cached_data = NULL); + CachedData* cached_data = nullptr); V8_INLINE ~Source(); // Ownership of the CachedData or its buffers is *not* transferred to the @@ -1461,7 +1337,7 @@ class V8_EXPORT ScriptCompiler { */ class V8_EXPORT ExternalSourceStream { public: - virtual ~ExternalSourceStream() {} + virtual ~ExternalSourceStream() = default; /** * V8 calls this to request the next chunk of data from the embedder. This @@ -1504,12 +1380,11 @@ class V8_EXPORT ScriptCompiler { virtual void ResetToBookmark(); }; - /** * Source code which can be streamed into V8 in pieces. It will be parsed - * while streaming. It can be compiled after the streaming is complete. - * StreamedSource must be kept alive while the streaming task is ran (see - * ScriptStreamingTask below). + * while streaming and compiled after parsing has completed. StreamedSource + * must be kept alive while the streaming task is run (see ScriptStreamingTask + * below). */ class V8_EXPORT StreamedSource { public: @@ -1518,29 +1393,35 @@ class V8_EXPORT ScriptCompiler { StreamedSource(ExternalSourceStream* source_stream, Encoding encoding); ~StreamedSource(); - // Ownership of the CachedData or its buffers is *not* transferred to the - // caller. The CachedData object is alive as long as the StreamedSource - // object is alive. - const CachedData* GetCachedData() const; + V8_DEPRECATED("No longer used", const CachedData* GetCachedData() const) { + return nullptr; + } - internal::ScriptStreamingData* impl() const { return impl_; } + internal::ScriptStreamingData* impl() const { return impl_.get(); } // Prevent copying. StreamedSource(const StreamedSource&) = delete; StreamedSource& operator=(const StreamedSource&) = delete; private: - internal::ScriptStreamingData* impl_; + std::unique_ptr impl_; }; /** * A streaming task which the embedder must run on a background thread to * stream scripts into V8. Returned by ScriptCompiler::StartStreamingScript. */ - class ScriptStreamingTask { + class V8_EXPORT ScriptStreamingTask final { public: - virtual ~ScriptStreamingTask() {} - virtual void Run() = 0; + void Run(); + + private: + friend class ScriptCompiler; + + explicit ScriptStreamingTask(internal::ScriptStreamingData* data) + : data_(data) {} + + internal::ScriptStreamingData* data_; }; enum CompileOptions { @@ -1945,6 +1826,11 @@ struct SampleInfo { // executing an external callback. }; +struct MemoryRange { + const void* start; + size_t length_in_bytes; +}; + /** * A JSON Parser and Stringifier. */ @@ -1957,9 +1843,9 @@ class V8_EXPORT JSON { * \param json_string The string to parse. * \return The corresponding value if successfully parsed. */ - static V8_DEPRECATE_SOON("Use the maybe version taking context", - MaybeLocal Parse(Isolate* isolate, - Local json_string)); + static V8_DEPRECATED("Use the maybe version taking context", + MaybeLocal Parse(Isolate* isolate, + Local json_string)); static V8_WARN_UNUSED_RESULT MaybeLocal Parse( Local context, Local json_string); @@ -1987,7 +1873,7 @@ class V8_EXPORT ValueSerializer { public: class V8_EXPORT Delegate { public: - virtual ~Delegate() {} + virtual ~Delegate() = default; /** * Handles the case where a DataCloneError would be thrown in the structured @@ -2059,7 +1945,7 @@ 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. */ - V8_DEPRECATE_SOON("Use Release()", std::vector ReleaseBuffer()); + V8_DEPRECATED("Use Release()", std::vector ReleaseBuffer()); /** * Returns the stored data (allocated using the delegate's @@ -2080,10 +1966,10 @@ class V8_EXPORT ValueSerializer { /** * Similar to TransferArrayBuffer, but for SharedArrayBuffer. */ - V8_DEPRECATE_SOON("Use Delegate::GetSharedArrayBufferId", - void TransferSharedArrayBuffer( - uint32_t transfer_id, - Local shared_array_buffer)); + V8_DEPRECATED("Use Delegate::GetSharedArrayBufferId", + void TransferSharedArrayBuffer( + uint32_t transfer_id, + Local shared_array_buffer)); /** * Indicate whether to treat ArrayBufferView objects as host objects, @@ -2124,7 +2010,7 @@ class V8_EXPORT ValueDeserializer { public: class V8_EXPORT Delegate { public: - virtual ~Delegate() {} + virtual ~Delegate() = default; /** * The embedder overrides this method to read some kind of host object, if @@ -2508,8 +2394,9 @@ class V8_EXPORT Value : public Data { V8_WARN_UNUSED_RESULT MaybeLocal ToBigInt( Local context) const; - V8_WARN_UNUSED_RESULT MaybeLocal ToBoolean( - Local context) const; + V8_DEPRECATE_SOON("ToBoolean can never throw. Use Local version.", + V8_WARN_UNUSED_RESULT MaybeLocal ToBoolean( + Local context) const); V8_WARN_UNUSED_RESULT MaybeLocal ToNumber( Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal ToString( @@ -2524,8 +2411,7 @@ class V8_EXPORT Value : public Data { Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal ToInt32(Local context) const; - V8_DEPRECATE_SOON("Use maybe version", - Local ToBoolean(Isolate* isolate) const); + Local ToBoolean(Isolate* isolate) const; V8_DEPRECATE_SOON("Use maybe version", Local ToNumber(Isolate* isolate) const); V8_DEPRECATE_SOON("Use maybe version", @@ -2544,7 +2430,11 @@ class V8_EXPORT Value : public Data { V8_WARN_UNUSED_RESULT MaybeLocal ToArrayIndex( Local context) const; - V8_WARN_UNUSED_RESULT Maybe BooleanValue(Local context) const; + bool BooleanValue(Isolate* isolate) const; + + V8_DEPRECATE_SOON("BooleanValue can never throw. Use Isolate version.", + V8_WARN_UNUSED_RESULT Maybe BooleanValue( + Local context) const); V8_WARN_UNUSED_RESULT Maybe NumberValue(Local context) const; V8_WARN_UNUSED_RESULT Maybe IntegerValue( Local context) const; @@ -2720,7 +2610,7 @@ class V8_EXPORT String : public Name { int length = -1, int options = NO_OPTIONS) const; // UTF-8 encoded characters. int WriteUtf8(Isolate* isolate, char* buffer, int length = -1, - int* nchars_ref = NULL, int options = NO_OPTIONS) const; + int* nchars_ref = nullptr, int options = NO_OPTIONS) const; /** * A zero length string. @@ -2739,12 +2629,31 @@ class V8_EXPORT String : public Name { class V8_EXPORT ExternalStringResourceBase { // NOLINT public: - virtual ~ExternalStringResourceBase() {} + virtual ~ExternalStringResourceBase() = default; + + V8_DEPRECATE_SOON("Use IsCacheable().", + virtual bool IsCompressible() const) { + return false; + } - virtual bool IsCompressible() const { return false; } + /** + * If a string is cacheable, the value returned by + * ExternalStringResource::data() may be cached, otherwise it is not + * expected to be stable beyond the current top-level task. + */ + virtual bool IsCacheable() const { +#if __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif + return !IsCompressible(); +#if __clang__ +#pragma clang diagnostic pop +#endif + } protected: - ExternalStringResourceBase() {} + ExternalStringResourceBase() = default; /** * Internally V8 will call this Dispose method when the external string @@ -2754,6 +2663,24 @@ class V8_EXPORT String : public Name { */ virtual void Dispose() { delete this; } + /** + * For a non-cacheable string, the value returned by + * |ExternalStringResource::data()| has to be stable between |Lock()| and + * |Unlock()|, that is the string must behave as is |IsCacheable()| returned + * true. + * + * These two functions must be thread-safe, and can be called from anywhere. + * They also must handle lock depth, in the sense that each can be called + * several times, from different threads, and unlocking should only happen + * when the balance of Lock() and Unlock() calls is 0. + */ + virtual void Lock() const {} + + /** + * Unlocks the string. + */ + virtual void Unlock() const {} + // Disallow copying and assigning. ExternalStringResourceBase(const ExternalStringResourceBase&) = delete; void operator=(const ExternalStringResourceBase&) = delete; @@ -2761,6 +2688,7 @@ class V8_EXPORT String : public Name { private: friend class internal::Heap; friend class v8::String; + friend class internal::ScopedExternalStringLock; }; /** @@ -2776,7 +2704,7 @@ class V8_EXPORT String : public Name { * Override the destructor to manage the life cycle of the underlying * buffer. */ - virtual ~ExternalStringResource() {} + ~ExternalStringResource() override = default; /** * The string data from the underlying buffer. @@ -2789,7 +2717,7 @@ class V8_EXPORT String : public Name { virtual size_t length() const = 0; protected: - ExternalStringResource() {} + ExternalStringResource() = default; }; /** @@ -2809,13 +2737,13 @@ class V8_EXPORT String : public Name { * Override the destructor to manage the life cycle of the underlying * buffer. */ - virtual ~ExternalOneByteStringResource() {} + ~ExternalOneByteStringResource() override = default; /** The string data from the underlying buffer.*/ virtual const char* data() const = 0; /** The number of Latin-1 characters in the string.*/ virtual size_t length() const = 0; protected: - ExternalOneByteStringResource() {} + ExternalOneByteStringResource() = default; }; /** @@ -3036,6 +2964,7 @@ class V8_EXPORT Symbol : public Name { static Local ForApi(Isolate *isolate, Local name); // Well-known symbols + static Local GetAsyncIterator(Isolate* isolate); static Local GetHasInstance(Isolate* isolate); static Local GetIsConcatSpreadable(Isolate* isolate); static Local GetIterator(Isolate* isolate); @@ -3273,10 +3202,17 @@ enum PropertyFilter { * Options for marking whether callbacks may trigger JS-observable side effects. * Side-effect-free callbacks are whitelisted during debug evaluation with * throwOnSideEffect. It applies when calling a Function, FunctionTemplate, - * or an Accessor's getter callback. For Interceptors, please see + * or an Accessor callback. For Interceptors, please see * PropertyHandlerFlags's kHasNoSideEffect. + * Callbacks that only cause side effects to the receiver are whitelisted if + * invoked on receiver objects that are created within the same debug-evaluate + * call, as these objects are temporary and the side effect does not escape. */ -enum class SideEffectType { kHasSideEffect, kHasNoSideEffect }; +enum class SideEffectType { + kHasSideEffect, + kHasNoSideEffect, + kHasSideEffectToReceiver +}; /** * Keys/Properties filter enums: @@ -3414,10 +3350,12 @@ class V8_EXPORT Object : public Value { */ V8_WARN_UNUSED_RESULT Maybe SetAccessor( Local context, Local name, - AccessorNameGetterCallback getter, AccessorNameSetterCallback setter = 0, + AccessorNameGetterCallback getter, + AccessorNameSetterCallback setter = nullptr, MaybeLocal data = MaybeLocal(), AccessControl settings = DEFAULT, PropertyAttribute attribute = None, - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); void SetAccessorProperty(Local name, Local getter, Local setter = Local(), @@ -3433,7 +3371,8 @@ class V8_EXPORT Object : public Value { AccessorNameGetterCallback getter, AccessorNameSetterCallback setter = nullptr, Local data = Local(), PropertyAttribute attributes = None, - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); /** * Attempts to create a property with the given name which behaves like a data @@ -3447,7 +3386,8 @@ class V8_EXPORT Object : public Value { Local context, Local name, AccessorNameGetterCallback getter, Local data = Local(), PropertyAttribute attributes = None, - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); /** * Functionality for private properties. @@ -4323,13 +4263,6 @@ class V8_EXPORT WasmCompiledModule : public Object { public: typedef std::pair, size_t> SerializedModule; -// The COMMA macro allows us to use ',' inside of the V8_DEPRECATED macro. -#define COMMA , - V8_DEPRECATED( - "Use BufferReference.", - typedef std::pair CallerOwnedBuffer); -#undef COMMA - /** * A unowned reference to a byte buffer. */ @@ -4338,12 +4271,6 @@ class V8_EXPORT WasmCompiledModule : public Object { size_t size; BufferReference(const uint8_t* start, size_t size) : start(start), size(size) {} - // Temporarily allow conversion to and from CallerOwnedBuffer. - V8_DEPRECATED( - "Use BufferReference directly.", - inline BufferReference(CallerOwnedBuffer)); // NOLINT(runtime/explicit) - V8_DEPRECATED("Use BufferReference directly.", - inline operator CallerOwnedBuffer()); }; /** @@ -4390,8 +4317,6 @@ class V8_EXPORT WasmCompiledModule : public Object { * Get the wasm-encoded bytes that were used to compile this module. */ BufferReference GetWasmWireBytesRef(); - V8_DEPRECATED("Use GetWasmWireBytesRef version.", - Local GetWasmWireBytes()); /** * Serialize the compiled module. The serialized data does not include the @@ -4424,15 +4349,6 @@ class V8_EXPORT WasmCompiledModule : public Object { static void CheckCast(Value* obj); }; -// TODO(clemensh): Remove after M70 branch. -WasmCompiledModule::BufferReference::BufferReference( - WasmCompiledModule::CallerOwnedBuffer buf) - : BufferReference(buf.first, buf.second) {} -WasmCompiledModule::BufferReference:: -operator WasmCompiledModule::CallerOwnedBuffer() { - return {start, size}; -} - /** * The V8 interface for WebAssembly streaming compilation. When streaming * compilation is initiated, V8 passes a {WasmStreaming} object to the embedder @@ -4497,7 +4413,7 @@ class V8_EXPORT WasmModuleObjectBuilderStreaming final { void Abort(MaybeLocal exception); Local GetPromise(); - ~WasmModuleObjectBuilderStreaming(); + ~WasmModuleObjectBuilderStreaming() = default; private: WasmModuleObjectBuilderStreaming(const WasmModuleObjectBuilderStreaming&) = @@ -4556,7 +4472,7 @@ class V8_EXPORT ArrayBuffer : public Object { */ class V8_EXPORT Allocator { // NOLINT public: - virtual ~Allocator() {} + virtual ~Allocator() = default; /** * Allocate |length| bytes. Return NULL if allocation is not successful. @@ -5133,8 +5049,8 @@ class V8_EXPORT SharedArrayBuffer : public Object { */ class V8_EXPORT Date : public Object { public: - static V8_DEPRECATE_SOON("Use maybe version.", - Local New(Isolate* isolate, double time)); + static V8_DEPRECATED("Use maybe version.", + Local New(Isolate* isolate, double time)); static V8_WARN_UNUSED_RESULT MaybeLocal New(Local context, double time); @@ -5377,20 +5293,22 @@ class V8_EXPORT Template : public Data { */ void SetNativeDataProperty( Local name, AccessorGetterCallback getter, - AccessorSetterCallback setter = 0, + AccessorSetterCallback setter = nullptr, // TODO(dcarney): gcc can't handle Local below Local data = Local(), PropertyAttribute attribute = None, Local signature = Local(), AccessControl settings = DEFAULT, - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); void SetNativeDataProperty( Local name, AccessorNameGetterCallback getter, - AccessorNameSetterCallback setter = 0, + AccessorNameSetterCallback setter = nullptr, // TODO(dcarney): gcc can't handle Local below Local data = Local(), PropertyAttribute attribute = None, Local signature = Local(), AccessControl settings = DEFAULT, - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); /** * Like SetNativeDataProperty, but V8 will replace the native data property @@ -5399,7 +5317,8 @@ class V8_EXPORT Template : public Data { void SetLazyDataProperty( Local name, AccessorNameGetterCallback getter, Local data = Local(), PropertyAttribute attribute = None, - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); /** * During template instantiation, sets the value with the intrinsic property @@ -5760,7 +5679,7 @@ class V8_EXPORT FunctionTemplate : public Template { public: /** Creates a function template.*/ static Local New( - Isolate* isolate, FunctionCallback callback = 0, + Isolate* isolate, FunctionCallback callback = nullptr, Local data = Local(), Local signature = Local(), int length = 0, ConstructorBehavior behavior = ConstructorBehavior::kAllow, @@ -5941,11 +5860,11 @@ struct NamedPropertyHandlerConfiguration { NamedPropertyHandlerConfiguration( /** Note: getter is required */ - GenericNamedPropertyGetterCallback getter = 0, - GenericNamedPropertySetterCallback setter = 0, - GenericNamedPropertyQueryCallback query = 0, - GenericNamedPropertyDeleterCallback deleter = 0, - GenericNamedPropertyEnumeratorCallback enumerator = 0, + GenericNamedPropertyGetterCallback getter = nullptr, + GenericNamedPropertySetterCallback setter = nullptr, + GenericNamedPropertyQueryCallback query = nullptr, + GenericNamedPropertyDeleterCallback deleter = nullptr, + GenericNamedPropertyEnumeratorCallback enumerator = nullptr, Local data = Local(), PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) : getter(getter), @@ -5953,8 +5872,8 @@ struct NamedPropertyHandlerConfiguration { query(query), deleter(deleter), enumerator(enumerator), - definer(0), - descriptor(0), + definer(nullptr), + descriptor(nullptr), data(data), flags(flags) {} @@ -5969,7 +5888,7 @@ struct NamedPropertyHandlerConfiguration { PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) : getter(getter), setter(setter), - query(0), + query(nullptr), deleter(deleter), enumerator(enumerator), definer(definer), @@ -6011,11 +5930,11 @@ struct IndexedPropertyHandlerConfiguration { IndexedPropertyHandlerConfiguration( /** Note: getter is required */ - IndexedPropertyGetterCallback getter = 0, - IndexedPropertySetterCallback setter = 0, - IndexedPropertyQueryCallback query = 0, - IndexedPropertyDeleterCallback deleter = 0, - IndexedPropertyEnumeratorCallback enumerator = 0, + IndexedPropertyGetterCallback getter = nullptr, + IndexedPropertySetterCallback setter = nullptr, + IndexedPropertyQueryCallback query = nullptr, + IndexedPropertyDeleterCallback deleter = nullptr, + IndexedPropertyEnumeratorCallback enumerator = nullptr, Local data = Local(), PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) : getter(getter), @@ -6023,8 +5942,8 @@ struct IndexedPropertyHandlerConfiguration { query(query), deleter(deleter), enumerator(enumerator), - definer(0), - descriptor(0), + definer(nullptr), + descriptor(nullptr), data(data), flags(flags) {} @@ -6039,7 +5958,7 @@ struct IndexedPropertyHandlerConfiguration { PropertyHandlerFlags flags = PropertyHandlerFlags::kNone) : getter(getter), setter(setter), - query(0), + query(nullptr), deleter(deleter), enumerator(enumerator), definer(definer), @@ -6111,16 +6030,20 @@ class V8_EXPORT ObjectTemplate : public Template { */ void SetAccessor( Local name, AccessorGetterCallback getter, - AccessorSetterCallback setter = 0, Local data = Local(), - AccessControl settings = DEFAULT, PropertyAttribute attribute = None, + AccessorSetterCallback setter = nullptr, + Local data = Local(), AccessControl settings = DEFAULT, + PropertyAttribute attribute = None, Local signature = Local(), - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); void SetAccessor( Local name, AccessorNameGetterCallback getter, - AccessorNameSetterCallback setter = 0, Local data = Local(), - AccessControl settings = DEFAULT, PropertyAttribute attribute = None, + AccessorNameSetterCallback setter = nullptr, + Local data = Local(), AccessControl settings = DEFAULT, + PropertyAttribute attribute = None, Local signature = Local(), - SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect); + SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect, + SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect); /** * Sets a named property handler on the object template. @@ -6154,10 +6077,10 @@ class V8_EXPORT ObjectTemplate : public Template { // TODO(dcarney): deprecate void SetIndexedPropertyHandler( IndexedPropertyGetterCallback getter, - IndexedPropertySetterCallback setter = 0, - IndexedPropertyQueryCallback query = 0, - IndexedPropertyDeleterCallback deleter = 0, - IndexedPropertyEnumeratorCallback enumerator = 0, + IndexedPropertySetterCallback setter = nullptr, + IndexedPropertyQueryCallback query = nullptr, + IndexedPropertyDeleterCallback deleter = nullptr, + IndexedPropertyEnumeratorCallback enumerator = nullptr, Local data = Local()) { SetHandler(IndexedPropertyHandlerConfiguration(getter, setter, query, deleter, enumerator, data)); @@ -6297,11 +6220,11 @@ V8_DEPRECATE_SOON("Implementation detail", class) V8_EXPORT ExternalOneByteStringResourceImpl : public String::ExternalOneByteStringResource { public: - ExternalOneByteStringResourceImpl() : data_(0), length_(0) {} + ExternalOneByteStringResourceImpl() : data_(nullptr), length_(0) {} ExternalOneByteStringResourceImpl(const char* data, size_t length) : data_(data), length_(length) {} - const char* data() const { return data_; } - size_t length() const { return length_; } + const char* data() const override { return data_; } + size_t length() const override { return length_; } private: const char* data_; @@ -6315,11 +6238,8 @@ class V8_EXPORT Extension { // NOLINT public: // Note that the strings passed into this constructor must live as long // as the Extension itself. - Extension(const char* name, - const char* source = 0, - int dep_count = 0, - const char** deps = 0, - int source_length = -1); + Extension(const char* name, const char* source = nullptr, int dep_count = 0, + const char** deps = nullptr, int source_length = -1); virtual ~Extension() { delete source_; } virtual Local GetNativeFunctionTemplate( Isolate* isolate, Local name) { @@ -6391,14 +6311,14 @@ class V8_EXPORT ResourceConstraints { uint64_t virtual_memory_limit); // Returns the max semi-space size in MB. - V8_DEPRECATE_SOON("Use max_semi_space_size_in_kb()", - size_t max_semi_space_size()) { + V8_DEPRECATED("Use max_semi_space_size_in_kb()", + size_t max_semi_space_size()) { return max_semi_space_size_in_kb_ / 1024; } // Sets the max semi-space size in MB. - V8_DEPRECATE_SOON("Use set_max_semi_space_size_in_kb(size_t limit_in_kb)", - void set_max_semi_space_size(size_t limit_in_mb)) { + V8_DEPRECATED("Use set_max_semi_space_size_in_kb(size_t limit_in_kb)", + void set_max_semi_space_size(size_t limit_in_mb)) { max_semi_space_size_in_kb_ = limit_in_mb * 1024; } @@ -6416,12 +6336,12 @@ class V8_EXPORT ResourceConstraints { void set_max_old_space_size(size_t limit_in_mb) { max_old_space_size_ = limit_in_mb; } - V8_DEPRECATE_SOON("max_executable_size_ is subsumed by max_old_space_size_", - size_t max_executable_size() const) { + V8_DEPRECATED("max_executable_size_ is subsumed by max_old_space_size_", + size_t max_executable_size() const) { return max_executable_size_; } - V8_DEPRECATE_SOON("max_executable_size_ is subsumed by max_old_space_size_", - void set_max_executable_size(size_t limit_in_mb)) { + V8_DEPRECATED("max_executable_size_ is subsumed by max_old_space_size_", + void set_max_executable_size(size_t limit_in_mb)) { max_executable_size_ = limit_in_mb; } uint32_t* stack_limit() const { return stack_limit_; } @@ -6543,6 +6463,15 @@ typedef void (*HostInitializeImportMetaObjectCallback)(Local context, Local module, Local meta); +/** + * PrepareStackTraceCallback is called when the stack property of an error is + * first accessed. The return value will be used as the stack value. If this + * callback is registed, the |Error.prepareStackTrace| API will be disabled. + */ +typedef MaybeLocal (*PrepareStackTraceCallback)(Local context, + Local error, + Local trace); + /** * PromiseHook with type kInit is called when a new promise is * created. When a new promise is created as part of the chain in the @@ -6971,7 +6900,7 @@ typedef void (*JitCodeEventHandler)(const JitCodeEvent* event); */ class V8_EXPORT ExternalResourceVisitor { // NOLINT public: - virtual ~ExternalResourceVisitor() {} + virtual ~ExternalResourceVisitor() = default; virtual void VisitExternalString(Local string) {} }; @@ -6981,7 +6910,7 @@ class V8_EXPORT ExternalResourceVisitor { // NOLINT */ class V8_EXPORT PersistentHandleVisitor { // NOLINT public: - virtual ~PersistentHandleVisitor() {} + virtual ~PersistentHandleVisitor() = default; virtual void VisitPersistentHandle(Persistent* value, uint16_t class_id) {} }; @@ -7050,9 +6979,9 @@ class V8_EXPORT EmbedderHeapTracer { * Note: Only one of the AdvanceTracing methods needs to be overriden by the * embedder. */ - V8_DEPRECATE_SOON("Use void AdvanceTracing(deadline_in_ms)", - virtual bool AdvanceTracing( - double deadline_in_ms, AdvanceTracingActions actions)) { + V8_DEPRECATED("Use void AdvanceTracing(deadline_in_ms)", + virtual bool AdvanceTracing(double deadline_in_ms, + AdvanceTracingActions actions)) { return false; } @@ -7091,8 +7020,8 @@ class V8_EXPORT EmbedderHeapTracer { * Note: Only one of the EnterFinalPause methods needs to be overriden by the * embedder. */ - V8_DEPRECATE_SOON("Use void EnterFinalPause(EmbedderStackState)", - virtual void EnterFinalPause()) {} + V8_DEPRECATED("Use void EnterFinalPause(EmbedderStackState)", + virtual void EnterFinalPause()) {} virtual void EnterFinalPause(EmbedderStackState stack_state); /** @@ -7101,7 +7030,8 @@ class V8_EXPORT EmbedderHeapTracer { * The embedder is expected to throw away all intermediate data and reset to * the initial state. */ - virtual void AbortTracing() = 0; + V8_DEPRECATE_SOON("Obsolete as V8 will not abort tracing anymore.", + virtual void AbortTracing()) {} /* * Called by the embedder to request immediate finalization of the currently @@ -7130,8 +7060,7 @@ class V8_EXPORT EmbedderHeapTracer { /** * Returns the number of wrappers that are still to be traced by the embedder. */ - V8_DEPRECATE_SOON("Use IsTracingDone", - virtual size_t NumberOfWrappersToTrace()) { + V8_DEPRECATED("Use IsTracingDone", virtual size_t NumberOfWrappersToTrace()) { return 0; } @@ -7435,6 +7364,23 @@ class V8_EXPORT Isolate { kFunctionTokenOffsetTooLongForToString = 49, kWasmSharedMemory = 50, kWasmThreadOpcodes = 51, + kAtomicsNotify = 52, + kAtomicsWake = 53, + kCollator = 54, + kNumberFormat = 55, + kDateTimeFormat = 56, + kPluralRules = 57, + kRelativeTimeFormat = 58, + kLocale = 59, + kListFormat = 60, + kSegmenter = 61, + kStringLocaleCompare = 62, + kStringToLocaleUpperCase = 63, + kStringToLocaleLowerCase = 64, + kNumberToLocaleString = 65, + kDateToLocaleString = 66, + kDateToLocaleDateString = 67, + kDateToLocaleTimeString = 68, // If you add new values here, you'll also need to update Chromium's: // web_feature.mojom, UseCounterCallback.cpp, and enums.xml. V8 changes to @@ -7522,6 +7468,12 @@ class V8_EXPORT Isolate { void SetHostInitializeImportMetaObjectCallback( HostInitializeImportMetaObjectCallback callback); + /** + * This specifies the callback called when the stack property of Error + * is accessed. + */ + void SetPrepareStackTraceCallback(PrepareStackTraceCallback callback); + /** * Optional notification that the system is running low on memory. * V8 uses these notifications to guide heuristics. @@ -7759,6 +7711,11 @@ class V8_EXPORT Isolate { */ void SetEmbedderHeapTracer(EmbedderHeapTracer* tracer); + /* + * Gets the currently active heap tracer for the isolate. + */ + EmbedderHeapTracer* GetEmbedderHeapTracer(); + /** * Use for |AtomicsWaitCallback| to indicate the type of event it receives. */ @@ -8157,7 +8114,9 @@ class V8_EXPORT Isolate { void SetStackLimit(uintptr_t stack_limit); /** - * Returns a memory range that can potentially contain jitted code. + * Returns a memory range that can potentially contain jitted code. Code for + * V8's 'builtins' will not be in this range if embedded builtins is enabled. + * Instead, see GetEmbeddedCodeRange. * * On Win64, embedders are advised to install function table callbacks for * these ranges, as default SEH won't be able to unwind through jitted code. @@ -8171,6 +8130,15 @@ class V8_EXPORT Isolate { */ void GetCodeRange(void** start, size_t* length_in_bytes); + /** + * Returns a memory range containing the code for V8's embedded functions + * (e.g. builtins) which are shared across isolates. + * + * If embedded builtins are disabled, then the memory range will be a null + * pointer with 0 length. + */ + MemoryRange GetEmbeddedCodeRange(); + /** Set the callback to invoke in case of fatal errors. */ void SetFatalErrorHandler(FatalErrorCallback that); @@ -8910,7 +8878,7 @@ class V8_EXPORT TryCatch { * of the C++ try catch handler itself. */ static void* JSStackComparableAddress(TryCatch* handler) { - if (handler == NULL) return NULL; + if (handler == nullptr) return nullptr; return handler->js_stack_comparable_address_; } @@ -8950,7 +8918,7 @@ class V8_EXPORT TryCatch { */ class V8_EXPORT ExtensionConfiguration { public: - ExtensionConfiguration() : name_count_(0), names_(NULL) { } + ExtensionConfiguration() : name_count_(0), names_(nullptr) {} ExtensionConfiguration(int name_count, const char* names[]) : name_count_(name_count), names_(names) { } @@ -9007,7 +8975,7 @@ class V8_EXPORT Context { * and only object identify will remain. */ static Local New( - Isolate* isolate, ExtensionConfiguration* extensions = NULL, + Isolate* isolate, ExtensionConfiguration* extensions = nullptr, MaybeLocal global_template = MaybeLocal(), MaybeLocal global_object = MaybeLocal(), DeserializeInternalFieldsCallback internal_fields_deserializer = @@ -9346,201 +9314,6 @@ class V8_EXPORT Locker { // --- Implementation --- - -namespace internal { - -/** - * This class exports constants and functionality from within v8 that - * is necessary to implement inline functions in the v8 api. Don't - * depend on functions and constants defined here. - */ -class Internals { - public: - // These values match non-compiler-dependent values defined within - // the implementation of v8. - static const int kHeapObjectMapOffset = 0; - static const int kMapInstanceTypeOffset = 1 * kApiPointerSize + kApiIntSize; - static const int kStringResourceOffset = 3 * kApiPointerSize; - - static const int kOddballKindOffset = 4 * kApiPointerSize + kApiDoubleSize; - static const int kForeignAddressOffset = kApiPointerSize; - static const int kJSObjectHeaderSize = 3 * kApiPointerSize; - static const int kFixedArrayHeaderSize = 2 * kApiPointerSize; - static const int kContextHeaderSize = 2 * kApiPointerSize; - static const int kContextEmbedderDataIndex = 5; - static const int kFullStringRepresentationMask = 0x0f; - static const int kStringEncodingMask = 0x8; - static const int kExternalTwoByteRepresentationTag = 0x02; - static const int kExternalOneByteRepresentationTag = 0x0a; - - static const int kIsolateEmbedderDataOffset = 0 * kApiPointerSize; - static const int kExternalMemoryOffset = 4 * kApiPointerSize; - static const int kExternalMemoryLimitOffset = - kExternalMemoryOffset + kApiInt64Size; - static const int kExternalMemoryAtLastMarkCompactOffset = - kExternalMemoryLimitOffset + kApiInt64Size; - static const int kIsolateRootsOffset = kExternalMemoryLimitOffset + - kApiInt64Size + kApiInt64Size + - kApiPointerSize + kApiPointerSize; - static const int kUndefinedValueRootIndex = 4; - static const int kTheHoleValueRootIndex = 5; - static const int kNullValueRootIndex = 6; - static const int kTrueValueRootIndex = 7; - static const int kFalseValueRootIndex = 8; - static const int kEmptyStringRootIndex = 9; - - static const int kNodeClassIdOffset = 1 * kApiPointerSize; - static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; - static const int kNodeStateMask = 0x7; - static const int kNodeStateIsWeakValue = 2; - static const int kNodeStateIsPendingValue = 3; - static const int kNodeStateIsNearDeathValue = 4; - static const int kNodeIsIndependentShift = 3; - static const int kNodeIsActiveShift = 4; - - static const int kFirstNonstringType = 0x80; - static const int kOddballType = 0x83; - static const int kForeignType = 0x87; - static const int kJSSpecialApiObjectType = 0x410; - static const int kJSApiObjectType = 0x420; - static const int kJSObjectType = 0x421; - - static const int kUndefinedOddballKind = 5; - static const int kNullOddballKind = 3; - - static const uint32_t kNumIsolateDataSlots = 4; - - V8_EXPORT static void CheckInitializedImpl(v8::Isolate* isolate); - V8_INLINE static void CheckInitialized(v8::Isolate* isolate) { -#ifdef V8_ENABLE_CHECKS - CheckInitializedImpl(isolate); -#endif - } - - V8_INLINE static bool HasHeapObjectTag(const internal::Object* value) { - return ((reinterpret_cast(value) & kHeapObjectTagMask) == - kHeapObjectTag); - } - - V8_INLINE static int SmiValue(const internal::Object* value) { - return PlatformSmiTagging::SmiToInt(value); - } - - V8_INLINE static internal::Object* IntToSmi(int value) { - return PlatformSmiTagging::IntToSmi(value); - } - - V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { - return PlatformSmiTagging::IsValidSmi(value); - } - - V8_INLINE static int GetInstanceType(const internal::Object* obj) { - typedef internal::Object O; - O* map = ReadField(obj, kHeapObjectMapOffset); - return ReadField(map, kMapInstanceTypeOffset); - } - - V8_INLINE static int GetOddballKind(const internal::Object* obj) { - typedef internal::Object O; - return SmiValue(ReadField(obj, kOddballKindOffset)); - } - - V8_INLINE static bool IsExternalTwoByteString(int instance_type) { - int representation = (instance_type & kFullStringRepresentationMask); - return representation == kExternalTwoByteRepresentationTag; - } - - V8_INLINE static uint8_t GetNodeFlag(internal::Object** obj, int shift) { - uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; - return *addr & static_cast(1U << shift); - } - - V8_INLINE static void UpdateNodeFlag(internal::Object** obj, - bool value, int shift) { - uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; - uint8_t mask = static_cast(1U << shift); - *addr = static_cast((*addr & ~mask) | (value << shift)); - } - - V8_INLINE static uint8_t GetNodeState(internal::Object** obj) { - uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; - return *addr & kNodeStateMask; - } - - V8_INLINE static void UpdateNodeState(internal::Object** obj, - uint8_t value) { - uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; - *addr = static_cast((*addr & ~kNodeStateMask) | value); - } - - V8_INLINE static void SetEmbedderData(v8::Isolate* isolate, - uint32_t slot, - void* data) { - uint8_t* addr = reinterpret_cast(isolate) + - kIsolateEmbedderDataOffset + slot * kApiPointerSize; - *reinterpret_cast(addr) = data; - } - - V8_INLINE static void* GetEmbedderData(const v8::Isolate* isolate, - uint32_t slot) { - const uint8_t* addr = reinterpret_cast(isolate) + - kIsolateEmbedderDataOffset + slot * kApiPointerSize; - return *reinterpret_cast(addr); - } - - V8_INLINE static internal::Object** GetRoot(v8::Isolate* isolate, - int index) { - uint8_t* addr = reinterpret_cast(isolate) + kIsolateRootsOffset; - return reinterpret_cast(addr + index * kApiPointerSize); - } - - template - V8_INLINE static T ReadField(const internal::Object* ptr, int offset) { - const uint8_t* addr = - reinterpret_cast(ptr) + offset - kHeapObjectTag; - return *reinterpret_cast(addr); - } - - template - V8_INLINE static T ReadEmbedderData(const v8::Context* context, int index) { - typedef internal::Object O; - typedef internal::Internals I; - O* ctx = *reinterpret_cast(context); - int embedder_data_offset = I::kContextHeaderSize + - (internal::kApiPointerSize * I::kContextEmbedderDataIndex); - O* embedder_data = I::ReadField(ctx, embedder_data_offset); - int value_offset = - I::kFixedArrayHeaderSize + (internal::kApiPointerSize * index); - return I::ReadField(embedder_data, value_offset); - } -}; - -// Only perform cast check for types derived from v8::Data since -// other types do not implement the Cast method. -template -struct CastCheck { - template - static void Perform(T* data); -}; - -template <> -template -void CastCheck::Perform(T* data) { - T::Cast(data); -} - -template <> -template -void CastCheck::Perform(T* data) {} - -template -V8_INLINE void PerformCastCheck(T* data) { - CastCheck::value>::Perform(data); -} - -} // namespace internal - - template Local Local::New(Isolate* isolate, Local that) { return New(isolate, that.val_); @@ -9554,7 +9327,7 @@ Local Local::New(Isolate* isolate, const PersistentBase& that) { template Local Local::New(Isolate* isolate, T* that) { - if (that == NULL) return Local(); + if (that == nullptr) return Local(); T* that_ptr = that; internal::Object** p = reinterpret_cast(that_ptr); return Local(reinterpret_cast(HandleScope::CreateHandle( @@ -9598,7 +9371,7 @@ void* WeakCallbackInfo::GetInternalField(int index) const { template T* PersistentBase::New(Isolate* isolate, T* that) { - if (that == NULL) return NULL; + if (that == nullptr) return nullptr; internal::Object** p = reinterpret_cast(that); return reinterpret_cast( V8::GlobalizeReference(reinterpret_cast(isolate), @@ -9649,7 +9422,7 @@ template void PersistentBase::Reset() { if (this->IsEmpty()) return; V8::DisposeGlobal(reinterpret_cast(this->val_)); - val_ = 0; + val_ = nullptr; } @@ -10664,10 +10437,10 @@ int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( } if (change_in_bytes < 0) { - *external_memory_limit += change_in_bytes; - } - - if (change_in_bytes > 0 && amount > *external_memory_limit) { + const int64_t lower_limit = *external_memory_limit + change_in_bytes; + if (lower_limit > I::kExternalAllocationSoftLimit) + *external_memory_limit = lower_limit; + } else if (change_in_bytes > 0 && amount > *external_memory_limit) { ReportExternalAllocationLimitReached(); } return *external_memory; diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 75fd5aa7e743f7..93c4629825b255 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -420,6 +420,36 @@ namespace v8 { template class AlignOfHelper { char c; T t; }; } #define V8_WARN_UNUSED_RESULT /* NOT SUPPORTED */ #endif +#ifdef V8_OS_WIN + +// Setup for Windows DLL export/import. When building the V8 DLL the +// BUILDING_V8_SHARED needs to be defined. When building a program which uses +// 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. +#ifdef BUILDING_V8_SHARED +# define V8_EXPORT __declspec(dllexport) +#elif USING_V8_SHARED +# define V8_EXPORT __declspec(dllimport) +#else +# define V8_EXPORT +#endif // BUILDING_V8_SHARED + +#else // V8_OS_WIN + +// Setup for Linux shared library export. +#if V8_HAS_ATTRIBUTE_VISIBILITY +# ifdef BUILDING_V8_SHARED +# define V8_EXPORT __attribute__ ((visibility("default"))) +# else +# define V8_EXPORT +# endif +#else +# define V8_EXPORT +#endif + +#endif // V8_OS_WIN + // clang-format on #endif // V8CONFIG_H_ diff --git a/deps/v8/infra/config/cq.cfg b/deps/v8/infra/config/cq.cfg index a0ede58b911a79..53ea0cdd44182d 100644 --- a/deps/v8/infra/config/cq.cfg +++ b/deps/v8/infra/config/cq.cfg @@ -108,6 +108,23 @@ verifiers { triggered_by: "v8_win_rel_ng" } } + # TODO(machenbach): Remove after testing in practice and migrate to + # PRESUBMIT.py scripts. + buckets { + name: "luci.chromium.try" + builders { + name: "cast_shell_android" + experiment_percentage: 20 + } + builders { + name: "cast_shell_linux" + experiment_percentage: 20 + } + builders { + name: "linux-chromeos-rel" + experiment_percentage: 20 + } + } } } diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 095aeefc5c4631..de0443f3da7743 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -27,24 +27,12 @@ 'mips64el.debug': 'default_debug_mips64el', 'mips64el.optdebug': 'default_optdebug_mips64el', 'mips64el.release': 'default_release_mips64el', - 'ppc.debug': 'default_debug_ppc', - 'ppc.optdebug': 'default_optdebug_ppc', - 'ppc.release': 'default_release_ppc', - 'ppc.debug.sim': 'default_debug_ppc_sim', - 'ppc.optdebug.sim': 'default_optdebug_ppc_sim', - 'ppc.release.sim': 'default_release_ppc_sim', 'ppc64.debug': 'default_debug_ppc64', 'ppc64.optdebug': 'default_optdebug_ppc64', 'ppc64.release': 'default_release_ppc64', 'ppc64.debug.sim': 'default_debug_ppc64_sim', 'ppc64.optdebug.sim': 'default_optdebug_ppc64_sim', 'ppc64.release.sim': 'default_release_ppc64_sim', - 's390.debug': 'default_debug_s390', - 's390.optdebug': 'default_optdebug_s390', - 's390.release': 'default_release_s390', - 's390.debug.sim': 'default_debug_s390_sim', - 's390.optdebug.sim': 'default_optdebug_s390_sim', - 's390.release.sim': 'default_release_s390_sim', 's390x.debug': 'default_debug_s390x', 's390x.optdebug': 'default_optdebug_s390x', 's390x.release': 'default_release_s390x', @@ -54,6 +42,7 @@ 'x64.debug': 'default_debug_x64', 'x64.optdebug': 'default_optdebug_x64', 'x64.release': 'default_release_x64', + 'x64.release.sample': 'release_x64_sample', }, 'client.dynamorio': { 'linux-v8-dr': 'release_x64', @@ -138,8 +127,6 @@ 'debug_simulate_arm64_asan_edge', 'V8 Clusterfuzz Linux ASAN arm - debug builder': 'debug_simulate_arm_asan_edge', - 'V8 Clusterfuzz Linux ASAN mipsel - debug builder': - 'debug_simulate_mipsel_asan_edge', 'V8 Clusterfuzz Linux64 CFI - release builder': 'release_x64_cfi_clusterfuzz', 'V8 Clusterfuzz Linux MSAN no origins': @@ -169,11 +156,8 @@ 'V8 Mips - builder': 'release_mips_no_snap_no_i18n', 'V8 Linux - mipsel - sim - builder': 'release_simulate_mipsel', 'V8 Linux - mips64el - sim - builder': 'release_simulate_mips64el', - # PPC. - 'V8 Linux - ppc - sim': 'release_simulate_ppc', + # IBM. 'V8 Linux - ppc64 - sim': 'release_simulate_ppc64', - # S390. - 'V8 Linux - s390 - sim': 'release_simulate_s390', 'V8 Linux - s390x - sim': 'release_simulate_s390x', }, 'client.v8.branches': { @@ -193,12 +177,8 @@ 'V8 mips64el - sim - stable branch': 'release_simulate_mips64el', 'V8 mipsel - sim - beta branch': 'release_simulate_mipsel', 'V8 mipsel - sim - stable branch': 'release_simulate_mipsel', - 'V8 ppc - sim - beta branch': 'release_simulate_ppc', - 'V8 ppc - sim - stable branch': 'release_simulate_ppc', 'V8 ppc64 - sim - beta branch': 'release_simulate_ppc64', 'V8 ppc64 - sim - stable branch': 'release_simulate_ppc64', - 'V8 s390 - sim - beta branch': 'release_simulate_s390', - 'V8 s390 - sim - stable branch': 'release_simulate_s390', 'V8 s390x - sim - beta branch': 'release_simulate_s390x', 'V8 s390x - sim - stable branch': 'release_simulate_s390x', }, @@ -208,6 +188,7 @@ 'v8_android_arm64_n5x_rel_ng': 'release_android_arm64', 'v8_fuchsia_rel_ng': 'release_x64_fuchsia_trybot', 'v8_linux_rel_ng': 'release_x86_gcmole_trybot', + 'v8_linux_optional_rel_ng': 'release_x86_trybot', 'v8_linux_verify_csa_rel_ng': 'release_x86_verify_csa', 'v8_linux_nodcheck_rel_ng': 'release_x86_minimal_symbols', 'v8_linux_dbg_ng': 'debug_x86_trybot', @@ -218,6 +199,7 @@ 'v8_linux_gcc_compile_rel': 'release_x86_gcc_minimal_symbols', 'v8_linux_gcc_rel': 'release_x86_gcc_minimal_symbols', 'v8_linux_shared_compile_rel': 'release_x86_shared_verify_heap', + 'v8_linux64_compile_rel_xg': 'release_x64_test_features_trybot', 'v8_linux64_dbg_ng': 'debug_x64_trybot', 'v8_linux64_gcc_compile_dbg': 'debug_x64_gcc', 'v8_linux64_header_includes_dbg': 'debug_x64_header_includes', @@ -235,6 +217,7 @@ 'v8_linux64_tsan_isolates_rel_ng': 'release_x64_tsan_minimal_symbols', 'v8_linux64_ubsan_rel_ng': 'release_x64_ubsan_vptr_minimal_symbols', + 'v8_odroid_arm_rel_ng': 'release_arm', # TODO(machenbach): Remove after switching to x64 on infra side. 'v8_win_dbg': 'debug_x86_trybot', 'v8_win_compile_dbg': 'debug_x86_trybot', @@ -280,7 +263,7 @@ 'default_optdebug_android_arm': [ 'debug', 'arm', 'android', 'v8_enable_slow_dchecks' ], 'default_release_android_arm': [ - 'release', 'arm', 'android'], + 'release', 'arm', 'android', 'android_strip_outputs'], 'default_debug_arm64': [ 'debug', 'simulate_arm64', 'v8_enable_slow_dchecks', 'v8_full_debug'], 'default_optdebug_arm64': [ @@ -299,18 +282,6 @@ 'debug', 'simulate_mips64el', 'v8_enable_slow_dchecks'], 'default_release_mips64el': [ 'release', 'simulate_mips64el'], - 'default_debug_ppc': [ - 'debug', 'ppc', 'v8_enable_slow_dchecks', 'v8_full_debug'], - 'default_optdebug_ppc': [ - 'debug', 'ppc', 'v8_enable_slow_dchecks'], - 'default_release_ppc': [ - 'release', 'ppc'], - 'default_debug_ppc_sim': [ - 'debug', 'simulate_ppc', 'v8_enable_slow_dchecks', 'v8_full_debug'], - 'default_optdebug_ppc_sim': [ - 'debug', 'simulate_ppc', 'v8_enable_slow_dchecks'], - 'default_release_ppc_sim': [ - 'release', 'simulate_ppc'], 'default_debug_ppc64': [ 'debug', 'ppc64', 'gcc', 'v8_enable_slow_dchecks', 'v8_full_debug'], 'default_optdebug_ppc64': [ @@ -323,18 +294,6 @@ 'debug', 'simulate_ppc64', 'v8_enable_slow_dchecks'], 'default_release_ppc64_sim': [ 'release', 'simulate_ppc64'], - 'default_debug_s390': [ - 'debug', 's390', 'v8_enable_slow_dchecks', 'v8_full_debug'], - 'default_optdebug_s390': [ - 'debug', 's390', 'v8_enable_slow_dchecks'], - 'default_release_s390': [ - 'release', 's390'], - 'default_debug_s390_sim': [ - 'debug', 'simulate_s390', 'v8_enable_slow_dchecks', 'v8_full_debug'], - 'default_optdebug_s390_sim': [ - 'debug', 'simulate_s390', 'v8_enable_slow_dchecks'], - 'default_release_s390_sim': [ - 'release', 'simulate_s390'], 'default_debug_s390x': [ 'debug', 's390x', 'v8_enable_slow_dchecks', 'v8_full_debug'], 'default_optdebug_s390x': [ @@ -353,6 +312,8 @@ 'debug', 'x64', 'v8_enable_slow_dchecks'], 'default_release_x64': [ 'release', 'x64'], + 'release_x64_sample': [ + 'release', 'x64', 'sample'], 'default_debug_x86': [ 'debug', 'x86', 'v8_enable_slow_dchecks', 'v8_full_debug'], 'default_optdebug_x86': [ @@ -373,8 +334,6 @@ 'debug_simulate_arm64_no_snap': [ 'debug', 'simulate_arm64', 'shared', 'goma', 'v8_optimized_debug', 'v8_snapshot_none'], - 'debug_simulate_mipsel_asan_edge': [ - 'debug_bot', 'simulate_mipsel', 'asan', 'edge'], # Release configs for simulators. 'release_simulate_arm': [ @@ -397,12 +356,8 @@ 'release_bot', 'simulate_mipsel'], 'release_simulate_mips64el': [ 'release_bot', 'simulate_mips64el'], - 'release_simulate_ppc': [ - 'release_bot', 'simulate_ppc'], 'release_simulate_ppc64': [ 'release_bot', 'simulate_ppc64'], - 'release_simulate_s390': [ - 'release_bot', 'simulate_s390'], 'release_simulate_s390x': [ 'release_bot', 'simulate_s390x'], @@ -416,9 +371,11 @@ 'release_arm': [ 'release_bot', 'arm', 'hard_float'], 'release_android_arm': [ - 'release_bot', 'arm', 'android', 'minimal_symbols'], + 'release_bot', 'arm', 'android', 'minimal_symbols', + 'android_strip_outputs'], 'release_android_arm64': [ - 'release_bot', 'arm64', 'android', 'minimal_symbols'], + 'release_bot', 'arm64', 'android', 'minimal_symbols', + 'android_strip_outputs'], # Release configs for x64. 'release_x64': [ @@ -580,6 +537,10 @@ 'gn_args': 'target_os="android" v8_android_log_stdout=true', }, + 'android_strip_outputs': { + 'gn_args': 'android_unstripped_runtime_outputs=false', + }, + 'arm': { 'gn_args': 'target_cpu="arm"', }, @@ -625,14 +586,10 @@ 'gn_args': 'is_debug=true v8_enable_backtrace=true', }, - 'v8_use_multi_snapshots': { - 'gn_args': 'v8_use_multi_snapshots=true', - }, - 'debug_bot': { 'mixins': [ 'debug', 'shared', 'goma', 'v8_enable_slow_dchecks', - 'v8_use_multi_snapshots', 'v8_optimized_debug'], + 'v8_optimized_debug'], }, 'debug_trybot': { @@ -715,11 +672,11 @@ }, 'release': { - 'gn_args': 'is_debug=false android_unstripped_runtime_outputs=false', + 'gn_args': 'is_debug=false', }, 'release_bot': { - 'mixins': ['release', 'static', 'goma', 'v8_use_multi_snapshots'], + 'mixins': ['release', 'static', 'goma'], }, 'release_trybot': { @@ -747,18 +704,10 @@ 'gn_args': 'target_cpu="x64" v8_target_cpu="mips64el"', }, - 'simulate_ppc': { - 'gn_args': 'target_cpu="x86" v8_target_cpu="ppc"', - }, - 'simulate_ppc64': { 'gn_args': 'target_cpu="x64" v8_target_cpu="ppc64"', }, - 'simulate_s390': { - 'gn_args': 'target_cpu="x86" v8_target_cpu="s390"', - }, - 'simulate_s390x': { 'gn_args': 'target_cpu="x64" v8_target_cpu="s390x"', }, @@ -861,18 +810,10 @@ 'gn_args': 'v8_enable_verify_csa=true', }, - 's390': { - 'gn_args': 'target_cpu="s390x" v8_target_cpu="s390"', - }, - 's390x': { 'gn_args': 'target_cpu="s390x" v8_target_cpu="s390x"', }, - 'ppc': { - 'gn_args': 'target_cpu="ppc"', - }, - 'ppc64': { 'gn_args': 'target_cpu="ppc64" use_custom_libcxx=false', }, @@ -885,5 +826,9 @@ 'gn_args': 'target_cpu="x86"', }, + 'sample': { + 'gn_args': 'v8_monolithic=true is_component_build=false ' + 'v8_use_external_startup_data=false use_custom_libcxx=false', + }, }, } diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index b2cd7618170c39..4dc5236db42da8 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -39,7 +39,10 @@ 'os': 'Android', }, 'tests': [ - {'name': 'mjsunit', 'variant': 'default', 'shards': 2}, + {'name': 'benchmarks', 'variant': 'default'}, + {'name': 'v8testing', 'variant': 'default', 'shards': 4}, + {'name': 'mozilla', 'variant': 'default'}, + {'name': 'test262_variants', 'variant': 'default', 'shards': 6}, ], }, ############################################################################## @@ -82,7 +85,7 @@ {'name': 'mozilla', 'variant': 'extra'}, {'name': 'test262_variants', 'shards': 2}, {'name': 'test262_variants', 'variant': 'extra', 'shards': 2}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, ], }, @@ -120,14 +123,69 @@ {'name': 'optimize_for_size'}, {'name': 'test262_variants', 'shards': 4}, {'name': 'test262_variants', 'variant': 'extra', 'shards': 2}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'suffix': 'isolates', 'test_args': ['--isolates'], 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, ], }, + 'v8_linux_optional_rel_ng_triggered': { + 'swarming_dimensions' : { + 'cpu': 'x86-64-avx2', + }, + 'tests': [ + # Code serializer. + {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, + {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 1}, + {'name': 'mozilla', 'variant': 'code_serializer', 'shards': 1}, + {'name': 'test262_variants', 'variant': 'code_serializer', 'shards': 1}, + # No SSE3. + { + 'name': 'mozilla', + 'suffix': 'nosse3', + 'test_args': [ + '--extra-flags', + '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx', + ], + }, + { + 'name': 'test262', + 'suffix': 'nosse3', + 'test_args': [ + '--extra-flags', + '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx', + ], + }, + { + 'name': 'v8testing', + 'suffix': 'nosse3', + 'test_args': [ + '--extra-flags', + '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx', + ], + 'shards': 3, + }, + # No SSE4. + { + 'name': 'mozilla', + 'suffix': 'nosse4', + 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'], + }, + { + 'name': 'test262', + 'suffix': 'nosse4', + 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'], + }, + { + 'name': 'v8testing', + 'suffix': 'nosse4', + 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'], + 'shards': 3, + }, + ], + }, 'v8_linux_verify_csa_rel_ng_triggered': { 'tests': [ - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, ], }, ############################################################################## @@ -144,9 +202,9 @@ 'v8_linux_arm_rel_ng_triggered': { 'tests': [ {'name': 'mjsunit_sp_frame_access'}, - {'name': 'mozilla'}, - {'name': 'test262'}, - {'name': 'v8testing', 'shards': 7}, + {'name': 'mozilla', 'shards': 2}, + {'name': 'test262', 'shards': 2}, + {'name': 'v8testing', 'shards': 8}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, ], }, @@ -214,12 +272,23 @@ {'name': 'test262_variants', 'shards': 4}, {'name': 'test262_variants', 'variant': 'extra', 'shards': 2}, {'name': 'v8initializers'}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, {'name': 'v8testing', 'variant': 'minor_mc'}, {'name': 'v8testing', 'variant': 'slow_path'}, ], }, + # TODO(machenbach): Experimental builder with incomplete configs. Should be + # similar to v8_linux64_rel_ng_triggered after testing. + 'v8_linux64_rel_xg': { + 'swarming_dimensions' : { + 'cpu': 'x86-64-avx2', + }, + 'tests': [ + {'name': 'v8initializers'}, + {'name': 'v8testing', 'shards': 2}, + ], + }, 'v8_linux64_tsan_rel': { 'tests': [ {'name': 'benchmarks'}, @@ -242,7 +311,7 @@ }, 'v8_linux64_verify_csa_rel_ng_triggered': { 'tests': [ - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, ], }, ############################################################################## @@ -264,13 +333,31 @@ 'v8_linux_arm64_rel_ng_triggered': { 'tests': [ {'name': 'mjsunit_sp_frame_access'}, - {'name': 'mozilla'}, - {'name': 'test262'}, + {'name': 'mozilla', 'shards': 2}, + {'name': 'test262', 'shards': 2}, {'name': 'v8testing', 'shards': 9}, {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, ], }, ############################################################################## + # Odroids with native arm + 'v8_odroid_arm_rel_ng_triggered': { + 'swarming_dimensions' : { + 'cores': '8', + 'cpu': 'armv7l-32-ODROID-XU4', + 'os': 'Ubuntu-16.04', + }, + 'swarming_task_attrs': { + # Use same prio as CI due to limited resources. + 'priority': 25, + }, + 'tests': [ + {'name': 'benchmarks'}, + {'name': 'optimize_for_size'}, + {'name': 'v8testing', 'shards': 2}, + ], + }, + ############################################################################## # Win32 'v8_win_dbg': { 'swarming_dimensions' : { @@ -298,7 +385,7 @@ }, 'tests': [ {'name': 'test262'}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, ], }, ############################################################################## @@ -331,7 +418,7 @@ 'tests': [ {'name': 'mozilla'}, {'name': 'test262'}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, ], }, 'v8_win64_rel_ng_triggered': { @@ -341,7 +428,7 @@ }, 'tests': [ {'name': 'test262'}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, ], }, @@ -385,7 +472,7 @@ 'tests': [ {'name': 'mozilla'}, {'name': 'test262'}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, ], }, diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index 90cfd737f21bd6..99873803c99fc1 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -13,6 +13,7 @@ include_rules = [ "+src/heap/heap.h", "+src/heap/heap-inl.h", "+src/heap/heap-write-barrier-inl.h", + "+src/heap/heap-write-barrier.h", "-src/inspector", "-src/interpreter", "+src/interpreter/bytecode-array-accessor.h", @@ -30,6 +31,7 @@ include_rules = [ "+testing/gtest/include/gtest/gtest_prod.h", "-src/libplatform", "-include/libplatform", + "+builtins-generated", "+torque-generated" ] diff --git a/deps/v8/src/accessors.cc b/deps/v8/src/accessors.cc index da935f3652812c..226178394db1bf 100644 --- a/deps/v8/src/accessors.cc +++ b/deps/v8/src/accessors.cc @@ -31,7 +31,8 @@ Handle Accessors::MakeAccessor( info->set_is_special_data_property(true); info->set_is_sloppy(false); info->set_replace_on_access(false); - info->set_has_no_side_effect(false); + info->set_getter_side_effect_type(SideEffectType::kHasSideEffect); + info->set_setter_side_effect_type(SideEffectType::kHasSideEffect); name = factory->InternalizeName(name); info->set_name(*name); Handle get = v8::FromCData(isolate, getter); @@ -70,7 +71,7 @@ bool Accessors::IsJSObjectFieldAccessor(Isolate* isolate, Handle map, default: if (map->instance_type() < FIRST_NONSTRING_TYPE) { return CheckForName(isolate, name, isolate->factory()->length_string(), - String::kLengthOffset, FieldIndex::kTagged, index); + String::kLengthOffset, FieldIndex::kWord32, index); } return false; diff --git a/deps/v8/src/accessors.h b/deps/v8/src/accessors.h index 69fdbbb74e329a..15c4773ec3cc3d 100644 --- a/deps/v8/src/accessors.h +++ b/deps/v8/src/accessors.h @@ -22,27 +22,28 @@ class JavaScriptFrame; // The list of accessor descriptors. This is a second-order macro // taking a macro to be applied to all accessor descriptor names. -#define ACCESSOR_INFO_LIST(V) \ - V(arguments_iterator, ArgumentsIterator) \ - V(array_length, ArrayLength) \ - V(bound_function_length, BoundFunctionLength) \ - V(bound_function_name, BoundFunctionName) \ - V(error_stack, ErrorStack) \ - V(function_arguments, FunctionArguments) \ - V(function_caller, FunctionCaller) \ - V(function_name, FunctionName) \ - V(function_length, FunctionLength) \ - V(function_prototype, FunctionPrototype) \ - V(string_length, StringLength) - -#define SIDE_EFFECT_FREE_ACCESSOR_INFO_LIST(V) \ - V(ArrayLength) \ - V(BoundFunctionLength) \ - V(BoundFunctionName) \ - V(FunctionName) \ - V(FunctionLength) \ - V(FunctionPrototype) \ - V(StringLength) +// V(accessor_name, AccessorName, GetterSideEffectType, SetterSideEffectType) +#define ACCESSOR_INFO_LIST_GENERATOR(V, _) \ + V(_, arguments_iterator, ArgumentsIterator, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, array_length, ArrayLength, kHasNoSideEffect, kHasSideEffectToReceiver) \ + V(_, bound_function_length, BoundFunctionLength, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, bound_function_name, BoundFunctionName, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, error_stack, ErrorStack, kHasSideEffectToReceiver, \ + kHasSideEffectToReceiver) \ + V(_, function_arguments, FunctionArguments, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, function_caller, FunctionCaller, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, function_name, FunctionName, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, function_length, FunctionLength, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, function_prototype, FunctionPrototype, kHasNoSideEffect, \ + kHasSideEffectToReceiver) \ + V(_, string_length, StringLength, kHasNoSideEffect, kHasSideEffectToReceiver) #define ACCESSOR_SETTER_LIST(V) \ V(ArrayLengthSetter) \ @@ -55,11 +56,11 @@ class JavaScriptFrame; class Accessors : public AllStatic { public: -#define ACCESSOR_GETTER_DECLARATION(accessor_name, AccessorName) \ - static void AccessorName##Getter( \ - v8::Local name, \ +#define ACCESSOR_GETTER_DECLARATION(_, accessor_name, AccessorName, ...) \ + static void AccessorName##Getter( \ + v8::Local name, \ const v8::PropertyCallbackInfo& info); - ACCESSOR_INFO_LIST(ACCESSOR_GETTER_DECLARATION) + ACCESSOR_INFO_LIST_GENERATOR(ACCESSOR_GETTER_DECLARATION, /* not used */) #undef ACCESSOR_GETTER_DECLARATION #define ACCESSOR_SETTER_DECLARATION(accessor_name) \ @@ -71,7 +72,7 @@ class Accessors : public AllStatic { static constexpr int kAccessorInfoCount = #define COUNT_ACCESSOR(...) +1 - ACCESSOR_INFO_LIST(COUNT_ACCESSOR); + ACCESSOR_INFO_LIST_GENERATOR(COUNT_ACCESSOR, /* not used */); #undef COUNT_ACCESSOR static constexpr int kAccessorSetterCount = @@ -118,9 +119,9 @@ class Accessors : public AllStatic { AccessorNameBooleanSetterCallback setter); private: -#define ACCESSOR_INFO_DECLARATION(accessor_name, AccessorName) \ +#define ACCESSOR_INFO_DECLARATION(_, accessor_name, AccessorName, ...) \ static Handle Make##AccessorName##Info(Isolate* isolate); - ACCESSOR_INFO_LIST(ACCESSOR_INFO_DECLARATION) + ACCESSOR_INFO_LIST_GENERATOR(ACCESSOR_INFO_DECLARATION, /* not used */) #undef ACCESSOR_INFO_DECLARATION friend class Heap; diff --git a/deps/v8/src/address-map.cc b/deps/v8/src/address-map.cc index 2b0bf727e5b31a..ad71a25a99de0c 100644 --- a/deps/v8/src/address-map.cc +++ b/deps/v8/src/address-map.cc @@ -14,8 +14,8 @@ RootIndexMap::RootIndexMap(Isolate* isolate) { map_ = isolate->root_index_map(); if (map_ != nullptr) return; map_ = new HeapObjectToIndexHashMap(); - for (uint32_t i = 0; i < Heap::kStrongRootListLength; i++) { - Heap::RootListIndex root_index = static_cast(i); + for (RootIndex root_index = RootIndex::kFirstStrongRoot; + root_index <= RootIndex::kLastStrongRoot; ++root_index) { Object* root = isolate->heap()->root(root_index); if (!root->IsHeapObject()) continue; // Omit root entries that can be written after initialization. They must @@ -25,11 +25,12 @@ RootIndexMap::RootIndexMap(Isolate* isolate) { if (isolate->heap()->RootCanBeTreatedAsConstant(root_index)) { HeapObject* heap_object = HeapObject::cast(root); Maybe maybe_index = map_->Get(heap_object); + uint32_t index = static_cast(root_index); if (maybe_index.IsJust()) { // Some are initialized to a previous value in the root list. - DCHECK_LT(maybe_index.FromJust(), i); + DCHECK_LT(maybe_index.FromJust(), index); } else { - map_->Set(heap_object, i); + map_->Set(heap_object, index); } } else { // Immortal immovable root objects are constant and allocated on the first diff --git a/deps/v8/src/address-map.h b/deps/v8/src/address-map.h index 599e44724ab1d9..f7a1cc2ad9aabd 100644 --- a/deps/v8/src/address-map.h +++ b/deps/v8/src/address-map.h @@ -56,11 +56,14 @@ class RootIndexMap { public: explicit RootIndexMap(Isolate* isolate); - static const int kInvalidRootIndex = -1; - - int Lookup(HeapObject* obj) { + // Returns true on successful lookup and sets *|out_root_list|. + bool Lookup(HeapObject* obj, RootIndex* out_root_list) { Maybe maybe_index = map_->Get(obj); - return maybe_index.IsJust() ? maybe_index.FromJust() : kInvalidRootIndex; + if (maybe_index.IsJust()) { + *out_root_list = static_cast(maybe_index.FromJust()); + return true; + } + return false; } private: diff --git a/deps/v8/src/allocation-site-scopes-inl.h b/deps/v8/src/allocation-site-scopes-inl.h new file mode 100644 index 00000000000000..e114bb3885c202 --- /dev/null +++ b/deps/v8/src/allocation-site-scopes-inl.h @@ -0,0 +1,52 @@ +// Copyright 2018 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_ALLOCATION_SITE_SCOPES_INL_H_ +#define V8_ALLOCATION_SITE_SCOPES_INL_H_ + +#include "src/allocation-site-scopes.h" + +#include "src/objects/allocation-site-inl.h" + +namespace v8 { +namespace internal { + +Handle AllocationSiteUsageContext::EnterNewScope() { + if (top().is_null()) { + InitializeTraversal(top_site_); + } else { + // Advance current site + Object* nested_site = current()->nested_site(); + // Something is wrong if we advance to the end of the list here. + update_current_site(AllocationSite::cast(nested_site)); + } + return Handle(*current(), isolate()); +} + +void AllocationSiteUsageContext::ExitScope(Handle scope_site, + Handle object) { + // This assert ensures that we are pointing at the right sub-object in a + // recursive walk of a nested literal. + DCHECK(object.is_null() || *object == scope_site->boilerplate()); +} + +bool AllocationSiteUsageContext::ShouldCreateMemento(Handle object) { + if (activated_ && AllocationSite::CanTrack(object->map()->instance_type())) { + if (FLAG_allocation_site_pretenuring || + AllocationSite::ShouldTrack(object->GetElementsKind())) { + if (FLAG_trace_creation_allocation_sites) { + PrintF("*** Creating Memento for %s %p\n", + object->IsJSArray() ? "JSArray" : "JSObject", + static_cast(*object)); + } + return true; + } + } + return false; +} + +} // namespace internal +} // namespace v8 + +#endif // V8_ALLOCATION_SITE_SCOPES_INL_H_ diff --git a/deps/v8/src/allocation-site-scopes.h b/deps/v8/src/allocation-site-scopes.h index 60614c5e01cd12..0a729948db2f59 100644 --- a/deps/v8/src/allocation-site-scopes.h +++ b/deps/v8/src/allocation-site-scopes.h @@ -56,40 +56,12 @@ class AllocationSiteUsageContext : public AllocationSiteContext { top_site_(site), activated_(activated) { } - inline Handle EnterNewScope() { - if (top().is_null()) { - InitializeTraversal(top_site_); - } else { - // Advance current site - Object* nested_site = current()->nested_site(); - // Something is wrong if we advance to the end of the list here. - update_current_site(AllocationSite::cast(nested_site)); - } - return Handle(*current(), isolate()); - } + inline Handle EnterNewScope(); inline void ExitScope(Handle scope_site, - Handle object) { - // This assert ensures that we are pointing at the right sub-object in a - // recursive walk of a nested literal. - DCHECK(object.is_null() || *object == scope_site->boilerplate()); - } + Handle object); - bool ShouldCreateMemento(Handle object) { - if (activated_ && - AllocationSite::CanTrack(object->map()->instance_type())) { - if (FLAG_allocation_site_pretenuring || - AllocationSite::ShouldTrack(object->GetElementsKind())) { - if (FLAG_trace_creation_allocation_sites) { - PrintF("*** Creating Memento for %s %p\n", - object->IsJSArray() ? "JSArray" : "JSObject", - static_cast(*object)); - } - return true; - } - } - return false; - } + inline bool ShouldCreateMemento(Handle object); static const bool kCopying = true; diff --git a/deps/v8/src/allocation.cc b/deps/v8/src/allocation.cc index 55c68dea89482e..6327a9c965abe7 100644 --- a/deps/v8/src/allocation.cc +++ b/deps/v8/src/allocation.cc @@ -8,6 +8,7 @@ #include "src/base/bits.h" #include "src/base/lazy-instance.h" #include "src/base/logging.h" +#include "src/base/lsan-page-allocator.h" #include "src/base/page-allocator.h" #include "src/base/platform/platform.h" #include "src/utils.h" @@ -17,10 +18,6 @@ #include // NOLINT #endif -#if defined(LEAK_SANITIZER) -#include -#endif - namespace v8 { namespace internal { @@ -51,21 +48,29 @@ struct InitializePageAllocator { static v8::base::PageAllocator default_allocator; page_allocator = &default_allocator; } +#if defined(LEAK_SANITIZER) + { + static v8::base::LsanPageAllocator lsan_allocator(page_allocator); + page_allocator = &lsan_allocator; + } +#endif *page_allocator_ptr = page_allocator; } }; static base::LazyInstance::type page_allocator = LAZY_INSTANCE_INITIALIZER; - -v8::PageAllocator* GetPageAllocator() { return page_allocator.Get(); } - // We will attempt allocation this many times. After each failure, we call // OnCriticalMemoryPressure to try to free some memory. const int kAllocationTries = 2; } // namespace +v8::PageAllocator* GetPlatformPageAllocator() { + DCHECK_NOT_NULL(page_allocator.Get()); + return page_allocator.Get(); +} + void* Malloced::New(size_t size) { void* result = AllocWithRetry(size); if (result == nullptr) { @@ -131,68 +136,62 @@ void AlignedFree(void *ptr) { #endif } -size_t AllocatePageSize() { return GetPageAllocator()->AllocatePageSize(); } +size_t AllocatePageSize() { + return GetPlatformPageAllocator()->AllocatePageSize(); +} -size_t CommitPageSize() { return GetPageAllocator()->CommitPageSize(); } +size_t CommitPageSize() { return GetPlatformPageAllocator()->CommitPageSize(); } void SetRandomMmapSeed(int64_t seed) { - GetPageAllocator()->SetRandomMmapSeed(seed); + GetPlatformPageAllocator()->SetRandomMmapSeed(seed); } -void* GetRandomMmapAddr() { return GetPageAllocator()->GetRandomMmapAddr(); } +void* GetRandomMmapAddr() { + return GetPlatformPageAllocator()->GetRandomMmapAddr(); +} -void* AllocatePages(void* address, size_t size, size_t alignment, +void* AllocatePages(v8::PageAllocator* page_allocator, void* address, + size_t size, size_t alignment, PageAllocator::Permission access) { + DCHECK_NOT_NULL(page_allocator); DCHECK_EQ(address, AlignedAddress(address, alignment)); - DCHECK_EQ(0UL, size & (GetPageAllocator()->AllocatePageSize() - 1)); + DCHECK_EQ(0UL, size & (page_allocator->AllocatePageSize() - 1)); void* result = nullptr; for (int i = 0; i < kAllocationTries; ++i) { - result = - GetPageAllocator()->AllocatePages(address, size, alignment, access); + result = page_allocator->AllocatePages(address, size, alignment, access); if (result != nullptr) break; - size_t request_size = size + alignment - AllocatePageSize(); + size_t request_size = size + alignment - page_allocator->AllocatePageSize(); if (!OnCriticalMemoryPressure(request_size)) break; } -#if defined(LEAK_SANITIZER) - if (result != nullptr) { - __lsan_register_root_region(result, size); - } -#endif return result; } -bool FreePages(void* address, const size_t size) { - DCHECK_EQ(0UL, size & (GetPageAllocator()->AllocatePageSize() - 1)); - bool result = GetPageAllocator()->FreePages(address, size); -#if defined(LEAK_SANITIZER) - if (result) { - __lsan_unregister_root_region(address, size); - } -#endif - return result; +bool FreePages(v8::PageAllocator* page_allocator, void* address, + const size_t size) { + DCHECK_NOT_NULL(page_allocator); + DCHECK_EQ(0UL, size & (page_allocator->AllocatePageSize() - 1)); + return page_allocator->FreePages(address, size); } -bool ReleasePages(void* address, size_t size, size_t new_size) { +bool ReleasePages(v8::PageAllocator* page_allocator, void* address, size_t size, + size_t new_size) { + DCHECK_NOT_NULL(page_allocator); DCHECK_LT(new_size, size); - bool result = GetPageAllocator()->ReleasePages(address, size, new_size); -#if defined(LEAK_SANITIZER) - if (result) { - __lsan_unregister_root_region(address, size); - __lsan_register_root_region(address, new_size); - } -#endif - return result; + return page_allocator->ReleasePages(address, size, new_size); } -bool SetPermissions(void* address, size_t size, - PageAllocator::Permission access) { - return GetPageAllocator()->SetPermissions(address, size, access); +bool SetPermissions(v8::PageAllocator* page_allocator, void* address, + size_t size, PageAllocator::Permission access) { + DCHECK_NOT_NULL(page_allocator); + return page_allocator->SetPermissions(address, size, access); } -byte* AllocatePage(void* address, size_t* allocated) { - size_t page_size = AllocatePageSize(); - void* result = - AllocatePages(address, page_size, page_size, PageAllocator::kReadWrite); +byte* AllocatePage(v8::PageAllocator* page_allocator, void* address, + size_t* allocated) { + DCHECK_NOT_NULL(page_allocator); + size_t page_size = page_allocator->AllocatePageSize(); + void* result = AllocatePages(page_allocator, address, page_size, page_size, + PageAllocator::kReadWrite); if (result != nullptr) *allocated = page_size; return static_cast(result); } @@ -206,16 +205,17 @@ bool OnCriticalMemoryPressure(size_t length) { return true; } -VirtualMemory::VirtualMemory() : address_(kNullAddress), size_(0) {} - -VirtualMemory::VirtualMemory(size_t size, void* hint, size_t alignment) - : address_(kNullAddress), size_(0) { - size_t page_size = AllocatePageSize(); - size_t alloc_size = RoundUp(size, page_size); - address_ = reinterpret_cast
( - AllocatePages(hint, alloc_size, alignment, PageAllocator::kNoAccess)); - if (address_ != kNullAddress) { - size_ = alloc_size; +VirtualMemory::VirtualMemory(v8::PageAllocator* page_allocator, size_t size, + void* hint, size_t alignment) + : page_allocator_(page_allocator) { + DCHECK_NOT_NULL(page_allocator); + size_t page_size = page_allocator_->AllocatePageSize(); + alignment = RoundUp(alignment, page_size); + size = RoundUp(size, page_size); + Address address = reinterpret_cast
(AllocatePages( + page_allocator_, hint, size, alignment, PageAllocator::kNoAccess)); + if (address != kNullAddress) { + region_ = base::AddressRegion(address, size); } } @@ -226,30 +226,31 @@ VirtualMemory::~VirtualMemory() { } void VirtualMemory::Reset() { - address_ = kNullAddress; - size_ = 0; + page_allocator_ = nullptr; + region_ = base::AddressRegion(); } bool VirtualMemory::SetPermissions(Address address, size_t size, PageAllocator::Permission access) { CHECK(InVM(address, size)); - bool result = v8::internal::SetPermissions(address, size, access); + bool result = + v8::internal::SetPermissions(page_allocator_, address, size, access); DCHECK(result); return result; } size_t VirtualMemory::Release(Address free_start) { DCHECK(IsReserved()); - DCHECK(IsAddressAligned(free_start, CommitPageSize())); + DCHECK(IsAddressAligned(free_start, page_allocator_->CommitPageSize())); // Notice: Order is important here. The VirtualMemory object might live // inside the allocated region. - const size_t free_size = size_ - (free_start - address_); + + const size_t old_size = region_.size(); + const size_t free_size = old_size - (free_start - region_.begin()); CHECK(InVM(free_start, free_size)); - DCHECK_LT(address_, free_start); - DCHECK_LT(free_start, address_ + size_); - CHECK(ReleasePages(reinterpret_cast(address_), size_, - size_ - free_size)); - size_ -= free_size; + region_.set_size(old_size - free_size); + CHECK(ReleasePages(page_allocator_, reinterpret_cast(region_.begin()), + old_size, region_.size())); return free_size; } @@ -257,41 +258,21 @@ void VirtualMemory::Free() { DCHECK(IsReserved()); // Notice: Order is important here. The VirtualMemory object might live // inside the allocated region. - Address address = address_; - size_t size = size_; - CHECK(InVM(address, size)); + v8::PageAllocator* page_allocator = page_allocator_; + base::AddressRegion region = region_; Reset(); - // FreePages expects size to be aligned to allocation granularity. Trimming - // may leave size at only commit granularity. Align it here. - CHECK(FreePages(reinterpret_cast(address), - RoundUp(size, AllocatePageSize()))); + // FreePages expects size to be aligned to allocation granularity however + // ReleasePages may leave size at only commit granularity. Align it here. + CHECK(FreePages(page_allocator, reinterpret_cast(region.begin()), + RoundUp(region.size(), page_allocator->AllocatePageSize()))); } void VirtualMemory::TakeControl(VirtualMemory* from) { DCHECK(!IsReserved()); - address_ = from->address_; - size_ = from->size_; + page_allocator_ = from->page_allocator_; + region_ = from->region_; from->Reset(); } -bool AllocVirtualMemory(size_t size, void* hint, VirtualMemory* result) { - VirtualMemory vm(size, hint); - if (vm.IsReserved()) { - result->TakeControl(&vm); - return true; - } - return false; -} - -bool AlignedAllocVirtualMemory(size_t size, size_t alignment, void* hint, - VirtualMemory* result) { - VirtualMemory vm(size, hint, alignment); - if (vm.IsReserved()) { - result->TakeControl(&vm); - return true; - } - return false; -} - } // namespace internal } // namespace v8 diff --git a/deps/v8/src/allocation.h b/deps/v8/src/allocation.h index 8e17a35514e4bf..3a21310af8e698 100644 --- a/deps/v8/src/allocation.h +++ b/deps/v8/src/allocation.h @@ -6,6 +6,7 @@ #define V8_ALLOCATION_H_ #include "include/v8-platform.h" +#include "src/base/address-region.h" #include "src/base/compiler-specific.h" #include "src/base/platform/platform.h" #include "src/globals.h" @@ -82,6 +83,9 @@ void* AllocWithRetry(size_t size); void* AlignedAlloc(size_t size, size_t alignment); void AlignedFree(void *ptr); +// Returns platfrom page allocator instance. Guaranteed to be a valid pointer. +V8_EXPORT_PRIVATE v8::PageAllocator* GetPlatformPageAllocator(); + // Gets the page granularity for AllocatePages and FreePages. Addresses returned // by AllocatePages and AllocatePage are aligned to this size. V8_EXPORT_PRIVATE size_t AllocatePageSize(); @@ -101,14 +105,16 @@ V8_EXPORT_PRIVATE void* GetRandomMmapAddr(); // AllocatePageSize(). Returns the address of the allocated memory, with the // specified size and alignment, or nullptr on failure. V8_EXPORT_PRIVATE -V8_WARN_UNUSED_RESULT void* AllocatePages(void* address, size_t size, +V8_WARN_UNUSED_RESULT void* AllocatePages(v8::PageAllocator* page_allocator, + void* address, size_t size, size_t alignment, PageAllocator::Permission access); // Frees memory allocated by a call to AllocatePages. |address| and |size| must // be multiples of AllocatePageSize(). Returns true on success, otherwise false. V8_EXPORT_PRIVATE -V8_WARN_UNUSED_RESULT bool FreePages(void* address, const size_t size); +V8_WARN_UNUSED_RESULT bool FreePages(v8::PageAllocator* page_allocator, + void* address, const size_t size); // Releases memory that is no longer needed. The range specified by |address| // and |size| must be an allocated memory region. |size| and |new_size| must be @@ -116,7 +122,8 @@ V8_WARN_UNUSED_RESULT bool FreePages(void* address, const size_t size); // Released memory is left in an undefined state, so it should not be accessed. // Returns true on success, otherwise false. V8_EXPORT_PRIVATE -V8_WARN_UNUSED_RESULT bool ReleasePages(void* address, size_t size, +V8_WARN_UNUSED_RESULT bool ReleasePages(v8::PageAllocator* page_allocator, + void* address, size_t size, size_t new_size); // Sets permissions according to |access|. |address| and |size| must be @@ -124,18 +131,21 @@ V8_WARN_UNUSED_RESULT bool ReleasePages(void* address, size_t size, // cause the memory contents to be lost. Returns true on success, otherwise // false. V8_EXPORT_PRIVATE -V8_WARN_UNUSED_RESULT bool SetPermissions(void* address, size_t size, +V8_WARN_UNUSED_RESULT bool SetPermissions(v8::PageAllocator* page_allocator, + void* address, size_t size, PageAllocator::Permission access); -inline bool SetPermissions(Address address, size_t size, - PageAllocator::Permission access) { - return SetPermissions(reinterpret_cast(address), size, access); +inline bool SetPermissions(v8::PageAllocator* page_allocator, Address address, + size_t size, PageAllocator::Permission access) { + return SetPermissions(page_allocator, reinterpret_cast(address), size, + access); } // Convenience function that allocates a single system page with read and write // permissions. |address| is a hint. Returns the base address of the memory and // the page size via |allocated| on success. Returns nullptr on failure. V8_EXPORT_PRIVATE -V8_WARN_UNUSED_RESULT byte* AllocatePage(void* address, size_t* allocated); +V8_WARN_UNUSED_RESULT byte* AllocatePage(v8::PageAllocator* page_allocator, + void* address, size_t* allocated); // Function that may release reserved memory regions to allow failed allocations // to succeed. |length| is the amount of memory needed. Returns |true| if memory @@ -143,50 +153,67 @@ V8_WARN_UNUSED_RESULT byte* AllocatePage(void* address, size_t* allocated); V8_EXPORT_PRIVATE bool OnCriticalMemoryPressure(size_t length); // Represents and controls an area of reserved memory. -class V8_EXPORT_PRIVATE VirtualMemory { +class V8_EXPORT_PRIVATE VirtualMemory final { public: // Empty VirtualMemory object, controlling no reserved memory. - VirtualMemory(); + VirtualMemory() = default; // Reserves virtual memory containing an area of the given size that is - // aligned per alignment. This may not be at the position returned by - // address(). - VirtualMemory(size_t size, void* hint, size_t alignment = AllocatePageSize()); + // aligned per |alignment| rounded up to the |page_allocator|'s allocate page + // size. + // This may not be at the position returned by address(). + VirtualMemory(v8::PageAllocator* page_allocator, size_t size, void* hint, + size_t alignment = 1); // Construct a virtual memory by assigning it some already mapped address // and size. - VirtualMemory(Address address, size_t size) - : address_(address), size_(size) {} + VirtualMemory(v8::PageAllocator* page_allocator, Address address, size_t size) + : page_allocator_(page_allocator), region_(address, size) { + DCHECK_NOT_NULL(page_allocator); + } // Releases the reserved memory, if any, controlled by this VirtualMemory // object. ~VirtualMemory(); + // Move constructor. + VirtualMemory(VirtualMemory&& other) V8_NOEXCEPT { TakeControl(&other); } + + // Move assignment operator. + VirtualMemory& operator=(VirtualMemory&& other) V8_NOEXCEPT { + TakeControl(&other); + return *this; + } + // Returns whether the memory has been reserved. - bool IsReserved() const { return address_ != kNullAddress; } + bool IsReserved() const { return region_.begin() != kNullAddress; } // Initialize or resets an embedded VirtualMemory object. void Reset(); + v8::PageAllocator* page_allocator() { return page_allocator_; } + + const base::AddressRegion& region() const { return region_; } + // Returns the start address of the reserved memory. // If the memory was reserved with an alignment, this address is not // necessarily aligned. The user might need to round it up to a multiple of // the alignment to get the start of the aligned block. Address address() const { DCHECK(IsReserved()); - return address_; + return region_.begin(); } Address end() const { DCHECK(IsReserved()); - return address_ + size_; + return region_.end(); } // Returns the size of the reserved memory. The returned value is only // meaningful when IsReserved() returns true. // If the memory was reserved with an alignment, this size may be larger // than the requested size. - size_t size() const { return size_; } + size_t size() const { return region_.size(); } // Sets permissions according to the access argument. address and size must be // multiples of CommitPageSize(). Returns true on success, otherwise false. @@ -204,17 +231,16 @@ class V8_EXPORT_PRIVATE VirtualMemory { void TakeControl(VirtualMemory* from); bool InVM(Address address, size_t size) { - return (address_ <= address) && ((address_ + size_) >= (address + size)); + return region_.contains(address, size); } private: - Address address_; // Start address of the virtual memory. - size_t size_; // Size of the virtual memory. -}; + // Page allocator that controls the virtual memory. + v8::PageAllocator* page_allocator_ = nullptr; + base::AddressRegion region_; -bool AllocVirtualMemory(size_t size, void* hint, VirtualMemory* result); -bool AlignedAllocVirtualMemory(size_t size, size_t alignment, void* hint, - VirtualMemory* result); + DISALLOW_COPY_AND_ASSIGN(VirtualMemory); +}; } // namespace internal } // namespace v8 diff --git a/deps/v8/src/api-arguments-inl.h b/deps/v8/src/api-arguments-inl.h index 89f606ed410a51..1e5d6b2aaa7ceb 100644 --- a/deps/v8/src/api-arguments-inl.h +++ b/deps/v8/src/api-arguments-inl.h @@ -8,6 +8,7 @@ #include "src/api-arguments.h" #include "src/api-inl.h" +#include "src/debug/debug.h" #include "src/objects/api-callbacks.h" #include "src/tracing/trace-event.h" #include "src/vm-state-inl.h" @@ -34,6 +35,10 @@ inline JSObject* PropertyCallbackArguments::holder() { return JSObject::cast(this->begin()[T::kHolderIndex]); } +inline Object* PropertyCallbackArguments::receiver() { + return Object::cast(this->begin()[T::kThisIndex]); +} + inline JSObject* FunctionCallbackArguments::holder() { return JSObject::cast(this->begin()[T::kHolderIndex]); } @@ -47,14 +52,24 @@ inline JSObject* FunctionCallbackArguments::holder() { DCHECK(!name->IsPrivate()); \ DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); -#define PREPARE_CALLBACK_INFO(ISOLATE, F, RETURN_VALUE, API_RETURN_TYPE, \ - CALLBACK_INFO) \ - if (ISOLATE->debug_execution_mode() == DebugInfo::kSideEffects && \ - !ISOLATE->debug()->PerformSideEffectCheckForCallback(CALLBACK_INFO)) { \ - return RETURN_VALUE(); \ - } \ - VMState state(ISOLATE); \ - ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ +#define PREPARE_CALLBACK_INFO(ISOLATE, F, RETURN_VALUE, API_RETURN_TYPE, \ + CALLBACK_INFO, RECEIVER, ACCESSOR_KIND) \ + if (ISOLATE->debug_execution_mode() == DebugInfo::kSideEffects && \ + !ISOLATE->debug()->PerformSideEffectCheckForCallback( \ + CALLBACK_INFO, RECEIVER, Debug::k##ACCESSOR_KIND)) { \ + return RETURN_VALUE(); \ + } \ + VMState state(ISOLATE); \ + ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ + PropertyCallbackInfo callback_info(begin()); + +#define PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(ISOLATE, F, RETURN_VALUE, \ + API_RETURN_TYPE) \ + if (ISOLATE->debug_execution_mode() == DebugInfo::kSideEffects) { \ + return RETURN_VALUE(); \ + } \ + VMState state(ISOLATE); \ + ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ PropertyCallbackInfo callback_info(begin()); #define CREATE_NAMED_CALLBACK(FUNCTION, TYPE, RETURN_TYPE, API_RETURN_TYPE, \ @@ -65,11 +80,13 @@ inline JSObject* FunctionCallbackArguments::holder() { Isolate* isolate = this->isolate(); \ RuntimeCallTimerScope timer( \ isolate, RuntimeCallCounterId::kNamed##FUNCTION##Callback); \ + Handle receiver_check_unsupported; \ GenericNamedProperty##FUNCTION##Callback f = \ ToCData( \ interceptor->TYPE()); \ PREPARE_CALLBACK_INFO(isolate, f, Handle, API_RETURN_TYPE, \ - INFO_FOR_SIDE_EFFECT); \ + INFO_FOR_SIDE_EFFECT, receiver_check_unsupported, \ + NotAccessor); \ LOG(isolate, \ ApiNamedPropertyAccess("interceptor-named-" #TYPE, holder(), *name)); \ f(v8::Utils::ToLocal(name), callback_info); \ @@ -87,10 +104,12 @@ FOR_EACH_CALLBACK(CREATE_NAMED_CALLBACK) Isolate* isolate = this->isolate(); \ RuntimeCallTimerScope timer( \ isolate, RuntimeCallCounterId::kIndexed##FUNCTION##Callback); \ + Handle receiver_check_unsupported; \ IndexedProperty##FUNCTION##Callback f = \ ToCData(interceptor->TYPE()); \ PREPARE_CALLBACK_INFO(isolate, f, Handle, API_RETURN_TYPE, \ - INFO_FOR_SIDE_EFFECT); \ + INFO_FOR_SIDE_EFFECT, receiver_check_unsupported, \ + NotAccessor); \ LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-" #TYPE, \ holder(), index)); \ f(index, callback_info); \ @@ -108,9 +127,11 @@ Handle FunctionCallbackArguments::Call(CallHandlerInfo* handler) { RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback); v8::FunctionCallback f = v8::ToCData(handler->callback()); + Handle receiver_check_unsupported; if (isolate->debug_execution_mode() == DebugInfo::kSideEffects && !isolate->debug()->PerformSideEffectCheckForCallback( - handle(handler, isolate))) { + handle(handler, isolate), receiver_check_unsupported, + Debug::kNotAccessor)) { return Handle(); } VMState state(isolate); @@ -167,10 +188,11 @@ Handle PropertyCallbackArguments::CallNamedDescriptor( Handle PropertyCallbackArguments::BasicCallNamedGetterCallback( GenericNamedPropertyGetterCallback f, Handle name, - Handle info) { + Handle info, Handle receiver) { DCHECK(!name->IsPrivate()); Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info); + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info, receiver, + Getter); f(v8::Utils::ToLocal(name), callback_info); return GetReturnValue(isolate); } @@ -184,9 +206,8 @@ Handle PropertyCallbackArguments::CallNamedSetter( Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedSetterCallback); - Handle side_effect_check_not_supported; - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, - side_effect_check_not_supported); + PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle, + v8::Value); LOG(isolate, ApiNamedPropertyAccess("interceptor-named-set", holder(), *name)); f(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), callback_info); @@ -202,9 +223,8 @@ Handle PropertyCallbackArguments::CallNamedDefiner( RuntimeCallCounterId::kNamedDefinerCallback); GenericNamedPropertyDefinerCallback f = ToCData(interceptor->definer()); - Handle side_effect_check_not_supported; - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, - side_effect_check_not_supported); + PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle, + v8::Value); LOG(isolate, ApiNamedPropertyAccess("interceptor-named-define", holder(), *name)); f(v8::Utils::ToLocal(name), desc, callback_info); @@ -219,9 +239,8 @@ Handle PropertyCallbackArguments::CallIndexedSetter( RuntimeCallCounterId::kIndexedSetterCallback); IndexedPropertySetterCallback f = ToCData(interceptor->setter()); - Handle side_effect_check_not_supported; - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, - side_effect_check_not_supported); + PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle, + v8::Value); LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-set", holder(), index)); f(index, v8::Utils::ToLocal(value), callback_info); @@ -237,9 +256,8 @@ Handle PropertyCallbackArguments::CallIndexedDefiner( RuntimeCallCounterId::kIndexedDefinerCallback); IndexedPropertyDefinerCallback f = ToCData(interceptor->definer()); - Handle side_effect_check_not_supported; - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, - side_effect_check_not_supported); + PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle, + v8::Value); LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-define", holder(), index)); f(index, desc, callback_info); @@ -275,7 +293,9 @@ Handle PropertyCallbackArguments::CallIndexedDescriptor( Handle PropertyCallbackArguments::BasicCallIndexedGetterCallback( IndexedPropertyGetterCallback f, uint32_t index, Handle info) { Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info); + Handle receiver_check_unsupported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info, + receiver_check_unsupported, Getter); f(index, callback_info); return GetReturnValue(isolate); } @@ -287,7 +307,9 @@ Handle PropertyCallbackArguments::CallPropertyEnumerator( v8::ToCData(interceptor->enumerator()); // TODO(cbruni): assert same type for indexed and named callback. Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Array, interceptor); + Handle receiver_check_unsupported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Array, interceptor, + receiver_check_unsupported, NotAccessor); f(callback_info); return GetReturnValue(isolate); } @@ -303,7 +325,8 @@ Handle PropertyCallbackArguments::CallAccessorGetter( LOG(isolate, ApiNamedPropertyAccess("accessor-getter", holder(), *name)); AccessorNameGetterCallback f = ToCData(info->getter()); - return BasicCallNamedGetterCallback(f, name, info); + return BasicCallNamedGetterCallback(f, name, info, + handle(receiver(), isolate)); } Handle PropertyCallbackArguments::CallAccessorSetter( @@ -314,15 +337,15 @@ Handle PropertyCallbackArguments::CallAccessorSetter( RuntimeCallCounterId::kAccessorSetterCallback); AccessorNameSetterCallback f = ToCData(accessor_info->setter()); - Handle side_effect_check_not_supported; - PREPARE_CALLBACK_INFO(isolate, f, Handle, void, - side_effect_check_not_supported); + PREPARE_CALLBACK_INFO(isolate, f, Handle, void, accessor_info, + handle(receiver(), isolate), Setter); LOG(isolate, ApiNamedPropertyAccess("accessor-setter", holder(), *name)); f(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), callback_info); return GetReturnValue(isolate); } #undef PREPARE_CALLBACK_INFO +#undef PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK } // namespace internal } // namespace v8 diff --git a/deps/v8/src/api-arguments.h b/deps/v8/src/api-arguments.h index 0a0a7362c7c687..d8fc2b49ab2824 100644 --- a/deps/v8/src/api-arguments.h +++ b/deps/v8/src/api-arguments.h @@ -26,12 +26,12 @@ class CustomArguments : public CustomArgumentsBase { public: static const int kReturnValueOffset = T::kReturnValueIndex; - ~CustomArguments() { + ~CustomArguments() override { this->begin()[kReturnValueOffset] = reinterpret_cast(kHandleZapValue); } - virtual inline void IterateInstance(RootVisitor* v) { + inline void IterateInstance(RootVisitor* v) override { v->VisitRootPointers(Root::kRelocatable, nullptr, values_, values_ + T::kArgsLength); } @@ -133,9 +133,10 @@ class PropertyCallbackArguments IndexedPropertyGetterCallback f, uint32_t index, Handle info); inline Handle BasicCallNamedGetterCallback( GenericNamedPropertyGetterCallback f, Handle name, - Handle info); + Handle info, Handle receiver = Handle()); inline JSObject* holder(); + inline Object* receiver(); // Don't copy PropertyCallbackArguments, because they would both have the // same prev_ pointer. diff --git a/deps/v8/src/api-inl.h b/deps/v8/src/api-inl.h index 50586814d8d1a3..5758729dd32e7f 100644 --- a/deps/v8/src/api-inl.h +++ b/deps/v8/src/api-inl.h @@ -7,6 +7,7 @@ #include "src/api.h" #include "src/objects-inl.h" +#include "src/objects/stack-frame-info.h" namespace v8 { diff --git a/deps/v8/src/api-natives.cc b/deps/v8/src/api-natives.cc index 977d6cdafc95fc..11b63d56d8da2c 100644 --- a/deps/v8/src/api-natives.cc +++ b/deps/v8/src/api-natives.cc @@ -114,9 +114,8 @@ MaybeHandle DefineDataProperty(Isolate* isolate, } #endif - MAYBE_RETURN_NULL( - Object::AddDataProperty(&it, value, attributes, kThrowOnError, - Object::CERTAINLY_NOT_STORE_FROM_KEYED)); + MAYBE_RETURN_NULL(Object::AddDataProperty( + &it, value, attributes, kThrowOnError, StoreOrigin::kNamed)); return value; } @@ -403,8 +402,10 @@ MaybeHandle InstantiateObject(Isolate* isolate, } Handle object; - ASSIGN_RETURN_ON_EXCEPTION(isolate, object, - JSObject::New(constructor, new_target), JSObject); + ASSIGN_RETURN_ON_EXCEPTION( + isolate, object, + JSObject::New(constructor, new_target, Handle::null()), + JSObject); if (is_prototype) JSObject::OptimizeAsPrototype(object); @@ -495,8 +496,15 @@ MaybeHandle InstantiateFunction(Isolate* isolate, parent_prototype); } } + InstanceType function_type = + (!data->needs_access_check() && + data->named_property_handler()->IsUndefined(isolate) && + data->indexed_property_handler()->IsUndefined(isolate)) + ? JS_API_OBJECT_TYPE + : JS_SPECIAL_API_OBJECT_TYPE; + Handle function = ApiNatives::CreateApiFunction( - isolate, data, prototype, ApiNatives::JavaScriptObjectType, maybe_name); + isolate, data, prototype, function_type, maybe_name); if (serial_number) { // Cache the function. CacheTemplateInstantiation(isolate, serial_number, CachingMode::kUnlimited, @@ -625,8 +633,7 @@ void ApiNatives::AddNativeDataProperty(Isolate* isolate, Handle ApiNatives::CreateApiFunction( Isolate* isolate, Handle obj, - Handle prototype, ApiInstanceType instance_type, - MaybeHandle maybe_name) { + Handle prototype, InstanceType type, MaybeHandle maybe_name) { Handle shared = FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(isolate, obj, maybe_name); @@ -670,33 +677,10 @@ Handle ApiNatives::CreateApiFunction( immutable_proto = instance_template->immutable_proto(); } - // TODO(svenpanne) Kill ApiInstanceType and refactor things by generalizing - // JSObject::GetHeaderSize. - int instance_size = kPointerSize * embedder_field_count; - InstanceType type; - switch (instance_type) { - case JavaScriptObjectType: - if (!obj->needs_access_check() && - obj->named_property_handler()->IsUndefined(isolate) && - obj->indexed_property_handler()->IsUndefined(isolate)) { - type = JS_API_OBJECT_TYPE; - } else { - type = JS_SPECIAL_API_OBJECT_TYPE; - } - instance_size += JSObject::kHeaderSize; - break; - case GlobalObjectType: - type = JS_GLOBAL_OBJECT_TYPE; - instance_size += JSGlobalObject::kSize; - break; - case GlobalProxyType: - type = JS_GLOBAL_PROXY_TYPE; - instance_size += JSGlobalProxy::kSize; - break; - default: - UNREACHABLE(); - break; - } + // JS_FUNCTION_TYPE requires information about the prototype slot. + DCHECK_NE(JS_FUNCTION_TYPE, type); + int instance_size = + JSObject::GetHeaderSize(type) + kPointerSize * embedder_field_count; Handle map = isolate->factory()->NewMap(type, instance_size, TERMINAL_FAST_ELEMENTS_KIND); diff --git a/deps/v8/src/api-natives.h b/deps/v8/src/api-natives.h index e8bb32d40a02fb..ff6cdc6c864537 100644 --- a/deps/v8/src/api-natives.h +++ b/deps/v8/src/api-natives.h @@ -9,6 +9,7 @@ #include "src/base/macros.h" #include "src/handles.h" #include "src/maybe-handles.h" +#include "src/objects.h" #include "src/property-details.h" namespace v8 { @@ -33,15 +34,9 @@ class ApiNatives { V8_WARN_UNUSED_RESULT static MaybeHandle InstantiateRemoteObject( Handle data); - enum ApiInstanceType { - JavaScriptObjectType, - GlobalObjectType, - GlobalProxyType - }; - static Handle CreateApiFunction( Isolate* isolate, Handle obj, - Handle prototype, ApiInstanceType instance_type, + Handle prototype, InstanceType type, MaybeHandle name = MaybeHandle()); static void AddDataProperty(Isolate* isolate, Handle info, diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index d141496c5749cc..171c7fc0efc31e 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -58,7 +58,9 @@ #include "src/objects/js-regexp-inl.h" #include "src/objects/module-inl.h" #include "src/objects/ordered-hash-table-inl.h" +#include "src/objects/stack-frame-info-inl.h" #include "src/objects/templates.h" +#include "src/parsing/parse-info.h" #include "src/parsing/parser.h" #include "src/parsing/scanner-character-streams.h" #include "src/pending-compilation-error-handler.h" @@ -834,6 +836,7 @@ StartupData SnapshotCreator::CreateBlob( } data->created_ = true; + DCHECK(i::Snapshot::VerifyChecksum(&result)); return result; } @@ -876,12 +879,12 @@ void RegisteredExtension::UnregisterAll() { namespace { class ExtensionResource : public String::ExternalOneByteStringResource { public: - ExtensionResource() : data_(0), length_(0) {} + ExtensionResource() : data_(nullptr), length_(0) {} ExtensionResource(const char* data, size_t length) : data_(data), length_(length) {} - const char* data() const { return data_; } - size_t length() const { return length_; } - virtual void Dispose() {} + const char* data() const override { return data_; } + size_t length() const override { return length_; } + void Dispose() override {} private: const char* data_; @@ -1391,7 +1394,7 @@ static Local FunctionTemplateNew( next_serial_number = isolate->heap()->GetNextTemplateSerialNumber(); } obj->set_serial_number(i::Smi::FromInt(next_serial_number)); - if (callback != 0) { + if (callback != nullptr) { Utils::ToLocal(obj)->SetCallHandler(callback, data, side_effect_type); } obj->set_length(length); @@ -1676,7 +1679,8 @@ static void TemplateSetAccessor( Template* template_obj, v8::Local name, Getter getter, Setter setter, Data data, AccessControl settings, PropertyAttribute attribute, v8::Local signature, bool is_special_data_property, - bool replace_on_access, SideEffectType getter_side_effect_type) { + bool replace_on_access, SideEffectType getter_side_effect_type, + SideEffectType setter_side_effect_type) { auto info = Utils::OpenHandle(template_obj); auto isolate = info->GetIsolate(); ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate); @@ -1686,8 +1690,8 @@ static void TemplateSetAccessor( is_special_data_property, replace_on_access); accessor_info->set_initial_property_attributes( static_cast(attribute)); - accessor_info->set_has_no_side_effect(getter_side_effect_type == - SideEffectType::kHasNoSideEffect); + accessor_info->set_getter_side_effect_type(getter_side_effect_type); + accessor_info->set_setter_side_effect_type(setter_side_effect_type); i::ApiNatives::AddNativeDataProperty(isolate, info, accessor_info); } @@ -1695,29 +1699,34 @@ void Template::SetNativeDataProperty( v8::Local name, AccessorGetterCallback getter, AccessorSetterCallback setter, v8::Local data, PropertyAttribute attribute, v8::Local signature, - AccessControl settings, SideEffectType getter_side_effect_type) { + AccessControl settings, SideEffectType getter_side_effect_type, + SideEffectType setter_side_effect_type) { TemplateSetAccessor(this, name, getter, setter, data, settings, attribute, - signature, true, false, getter_side_effect_type); + signature, true, false, getter_side_effect_type, + setter_side_effect_type); } void Template::SetNativeDataProperty( v8::Local name, AccessorNameGetterCallback getter, AccessorNameSetterCallback setter, v8::Local data, PropertyAttribute attribute, v8::Local signature, - AccessControl settings, SideEffectType getter_side_effect_type) { + AccessControl settings, SideEffectType getter_side_effect_type, + SideEffectType setter_side_effect_type) { TemplateSetAccessor(this, name, getter, setter, data, settings, attribute, - signature, true, false, getter_side_effect_type); + signature, true, false, getter_side_effect_type, + setter_side_effect_type); } void Template::SetLazyDataProperty(v8::Local name, AccessorNameGetterCallback getter, v8::Local data, PropertyAttribute attribute, - SideEffectType getter_side_effect_type) { + SideEffectType getter_side_effect_type, + SideEffectType setter_side_effect_type) { TemplateSetAccessor(this, name, getter, static_cast(nullptr), data, DEFAULT, attribute, Local(), true, - true, getter_side_effect_type); + true, getter_side_effect_type, setter_side_effect_type); } void Template::SetIntrinsicDataProperty(Local name, Intrinsic intrinsic, @@ -1737,10 +1746,11 @@ void ObjectTemplate::SetAccessor(v8::Local name, v8::Local data, AccessControl settings, PropertyAttribute attribute, v8::Local signature, - SideEffectType getter_side_effect_type) { + SideEffectType getter_side_effect_type, + SideEffectType setter_side_effect_type) { TemplateSetAccessor(this, name, getter, setter, data, settings, attribute, signature, i::FLAG_disable_old_api_accessors, false, - getter_side_effect_type); + getter_side_effect_type, setter_side_effect_type); } void ObjectTemplate::SetAccessor(v8::Local name, @@ -1749,10 +1759,11 @@ void ObjectTemplate::SetAccessor(v8::Local name, v8::Local data, AccessControl settings, PropertyAttribute attribute, v8::Local signature, - SideEffectType getter_side_effect_type) { + SideEffectType getter_side_effect_type, + SideEffectType setter_side_effect_type) { TemplateSetAccessor(this, name, getter, setter, data, settings, attribute, signature, i::FLAG_disable_old_api_accessors, false, - getter_side_effect_type); + getter_side_effect_type, setter_side_effect_type); } template CreateInterceptorInfo( isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE, i::TENURED)); obj->set_flags(0); - if (getter != 0) SET_FIELD_WRAPPED(isolate, obj, set_getter, getter); - if (setter != 0) SET_FIELD_WRAPPED(isolate, obj, set_setter, setter); - if (query != 0) SET_FIELD_WRAPPED(isolate, obj, set_query, query); - if (descriptor != 0) + if (getter != nullptr) SET_FIELD_WRAPPED(isolate, obj, set_getter, getter); + if (setter != nullptr) SET_FIELD_WRAPPED(isolate, obj, set_setter, setter); + if (query != nullptr) SET_FIELD_WRAPPED(isolate, obj, set_query, query); + if (descriptor != nullptr) SET_FIELD_WRAPPED(isolate, obj, set_descriptor, descriptor); - if (remover != 0) SET_FIELD_WRAPPED(isolate, obj, set_deleter, remover); - if (enumerator != 0) + if (remover != nullptr) SET_FIELD_WRAPPED(isolate, obj, set_deleter, remover); + if (enumerator != nullptr) SET_FIELD_WRAPPED(isolate, obj, set_enumerator, enumerator); - if (definer != 0) SET_FIELD_WRAPPED(isolate, obj, set_definer, definer); + if (definer != nullptr) SET_FIELD_WRAPPED(isolate, obj, set_definer, definer); obj->set_can_intercept_symbols( !(static_cast(flags) & static_cast(PropertyHandlerFlags::kOnlyInterceptStrings))); @@ -2001,24 +2012,15 @@ ScriptCompiler::CachedData::~CachedData() { } } - bool ScriptCompiler::ExternalSourceStream::SetBookmark() { return false; } - void ScriptCompiler::ExternalSourceStream::ResetToBookmark() { UNREACHABLE(); } ScriptCompiler::StreamedSource::StreamedSource(ExternalSourceStream* stream, Encoding encoding) : impl_(new i::ScriptStreamingData(stream, encoding)) {} -ScriptCompiler::StreamedSource::~StreamedSource() { delete impl_; } - - -const ScriptCompiler::CachedData* -ScriptCompiler::StreamedSource::GetCachedData() const { - return impl_->cached_data.get(); -} - +ScriptCompiler::StreamedSource::~StreamedSource() = default; Local