diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 5b976b8b79f103..b0a9765b4436a5 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -76,6 +76,7 @@ Maxim Mossienko Michael Lutz Michael Smith Mike Gilbert +Mike Pennisi Nicolas Antonius Ernst Leopold Maria Kaiser Paolo Giarrusso Patrick Gansterer diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index fc0ea8eb6802bf..feaec2505e8359 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -32,9 +32,14 @@ v8_toolset_for_d8 = "host" # TODO(GYP): For now we only support 32-bit little-endian target builds from an # x64 Linux host. Eventually we need to support all of the host/target # configurations v8 runs on. -if (host_cpu == "x64" && host_os == "linux" && - (target_cpu == "arm" || target_cpu == "mipsel" || target_cpu == "x86")) { - snapshot_toolchain = "//build/toolchain/linux:clang_x86" +if (host_cpu == "x64" && host_os == "linux") { + if (target_cpu == "arm" || target_cpu == "mipsel" || target_cpu == "x86") { + snapshot_toolchain = "//build/toolchain/linux:clang_x86" + } else if (target_cpu == "x64") { + snapshot_toolchain = "//build/toolchain/linux:clang_x64" + } else { + assert(false, "Need environment for this arch") + } } else { snapshot_toolchain = default_toolchain } @@ -196,6 +201,8 @@ action("js2c") { inputs = [ "tools/jsmin.py" ] sources = [ + "src/macros.py", + "src/messages.h", "src/runtime.js", "src/v8natives.js", "src/symbol.js", @@ -222,7 +229,6 @@ action("js2c") { "src/mirror-debugger.js", "src/liveedit-debugger.js", "src/templates.js", - "src/macros.py", ] outputs = [ @@ -258,6 +264,7 @@ action("js2c_experimental") { sources = [ "src/macros.py", + "src/messages.h", "src/proxy.js", "src/generator.js", "src/harmony-array.js", @@ -265,7 +272,9 @@ action("js2c_experimental") { "src/harmony-typedarray.js", "src/harmony-tostring.js", "src/harmony-regexp.js", - "src/harmony-reflect.js" + "src/harmony-reflect.js", + "src/harmony-spread.js", + "src/harmony-object.js" ] outputs = [ @@ -287,6 +296,36 @@ action("js2c_experimental") { } } +action("js2c_extras") { + visibility = [ ":*" ] # Only targets in this file can depend on this. + + script = "tools/js2c.py" + + # The script depends on this other script, this rule causes a rebuild if it + # changes. + inputs = [ "tools/jsmin.py" ] + + sources = v8_extra_library_files + + outputs = [ + "$target_gen_dir/extras-libraries.cc", + ] + + args = [ + rebase_path("$target_gen_dir/extras-libraries.cc", + root_build_dir), + "EXTRAS", + ] + rebase_path(sources, root_build_dir) + + if (v8_use_external_startup_data) { + outputs += [ "$target_gen_dir/libraries_extras.bin" ] + args += [ + "--startup_blob", + rebase_path("$target_gen_dir/libraries_extras.bin", root_build_dir), + ] + } +} + action("d8_js2c") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -312,11 +351,13 @@ if (v8_use_external_startup_data) { deps = [ ":js2c", ":js2c_experimental", + ":js2c_extras", ] sources = [ "$target_gen_dir/libraries.bin", "$target_gen_dir/libraries_experimental.bin", + "$target_gen_dir/libraries_extras.bin", ] outputs = [ @@ -330,7 +371,12 @@ if (v8_use_external_startup_data) { } action("postmortem-metadata") { - visibility = [ ":*" ] # Only targets in this file can depend on this. + # Only targets in this file and the top-level visibility target can + # depend on this. + visibility = [ + ":*", + "//:gn_visibility", + ] script = "tools/gen-postmortem-metadata.py" @@ -396,12 +442,14 @@ source_set("v8_nosnapshot") { deps = [ ":js2c", ":js2c_experimental", + ":js2c_extras", ":v8_base", ] sources = [ "$target_gen_dir/libraries.cc", "$target_gen_dir/experimental-libraries.cc", + "$target_gen_dir/extras-libraries.cc", "src/snapshot/snapshot-empty.cc", ] @@ -415,11 +463,17 @@ source_set("v8_nosnapshot") { } source_set("v8_snapshot") { - visibility = [ ":*" ] # Only targets in this file can depend on this. + # Only targets in this file and the top-level visibility target can + # depend on this. + visibility = [ + ":*", + "//:gn_visibility", + ] deps = [ ":js2c", ":js2c_experimental", + ":js2c_extras", ":run_mksnapshot", ":v8_base", ] @@ -427,6 +481,7 @@ source_set("v8_snapshot") { sources = [ "$target_gen_dir/libraries.cc", "$target_gen_dir/experimental-libraries.cc", + "$target_gen_dir/extras-libraries.cc", "$target_gen_dir/snapshot.cc", ] @@ -446,6 +501,7 @@ if (v8_use_external_startup_data) { deps = [ ":js2c", ":js2c_experimental", + ":js2c_extras", ":run_mksnapshot", ":v8_base", ":natives_blob", @@ -530,6 +586,8 @@ source_set("v8_base") { "src/codegen.h", "src/compilation-cache.cc", "src/compilation-cache.h", + "src/compilation-dependencies.cc", + "src/compilation-dependencies.h", "src/compilation-statistics.cc", "src/compilation-statistics.h", "src/compiler/access-builder.cc", @@ -555,6 +613,7 @@ source_set("v8_base") { "src/compiler/common-operator.h", "src/compiler/control-builders.cc", "src/compiler/control-builders.h", + "src/compiler/control-equivalence.cc", "src/compiler/control-equivalence.h", "src/compiler/control-flow-optimizer.cc", "src/compiler/control-flow-optimizer.h", @@ -562,6 +621,10 @@ source_set("v8_base") { "src/compiler/control-reducer.h", "src/compiler/diamond.h", "src/compiler/frame.h", + "src/compiler/frame-elider.cc", + "src/compiler/frame-elider.h", + "src/compiler/frame-states.cc", + "src/compiler/frame-states.h", "src/compiler/gap-resolver.cc", "src/compiler/gap-resolver.h", "src/compiler/graph-builder.h", @@ -665,6 +728,8 @@ source_set("v8_base") { "src/compiler/source-position.h", "src/compiler/state-values-utils.cc", "src/compiler/state-values-utils.h", + "src/compiler/tail-call-optimization.cc", + "src/compiler/tail-call-optimization.h", "src/compiler/typer.cc", "src/compiler/typer.h", "src/compiler/value-numbering-reducer.cc", @@ -758,6 +823,8 @@ source_set("v8_base") { "src/heap/heap-inl.h", "src/heap/heap.cc", "src/heap/heap.h", + "src/heap/identity-map.cc", + "src/heap/identity-map.h", "src/heap/incremental-marking.cc", "src/heap/incremental-marking.h", "src/heap/mark-compact-inl.h", @@ -887,8 +954,8 @@ source_set("v8_base") { "src/objects-printer.cc", "src/objects.cc", "src/objects.h", - "src/optimizing-compiler-thread.cc", - "src/optimizing-compiler-thread.h", + "src/optimizing-compile-dispatcher.cc", + "src/optimizing-compile-dispatcher.h", "src/ostreams.cc", "src/ostreams.h", "src/parser.cc", @@ -964,6 +1031,7 @@ source_set("v8_base") { "src/scopeinfo.h", "src/scopes.cc", "src/scopes.h", + "src/signature.h", "src/small-pointer-list.h", "src/smart-pointers.h", "src/snapshot/natives.h", @@ -1006,7 +1074,6 @@ source_set("v8_base") { "src/unicode-decoder.cc", "src/unicode-decoder.h", "src/unique.h", - "src/utils-inl.h", "src/utils.cc", "src/utils.h", "src/v8.cc", @@ -1325,6 +1392,7 @@ source_set("v8_libbase") { visibility = [ ":*" ] # Only targets in this file can depend on this. sources = [ + "src/base/adapters.h", "src/base/atomicops.h", "src/base/atomicops_internals_arm64_gcc.h", "src/base/atomicops_internals_arm_gcc.h", @@ -1398,17 +1466,15 @@ source_set("v8_libbase") { } else if (is_android) { defines += [ "CAN_USE_VFP_INSTRUCTIONS" ] - if (host_os == "mac") { - if (current_toolchain == host_toolchain) { + if (current_toolchain == host_toolchain) { + libs = [ "dl", "rt" ] + if (host_os == "mac") { sources += [ "src/base/platform/platform-macos.cc" ] } else { sources += [ "src/base/platform/platform-linux.cc" ] } } else { sources += [ "src/base/platform/platform-linux.cc" ] - if (current_toolchain == host_toolchain) { - defines += [ "V8_LIBRT_NOT_AVAILABLE" ] - } } } else if (is_mac) { sources += [ "src/base/platform/platform-macos.cc" ] @@ -1524,7 +1590,7 @@ if (component_mode == "shared_library") { ":toolchain", ] - direct_dependent_configs = [ ":external_config" ] + public_configs = [ ":external_config" ] libs = [] if (is_android && current_toolchain != host_toolchain) { @@ -1551,7 +1617,7 @@ if (component_mode == "shared_library") { ] } - direct_dependent_configs = [ ":external_config" ] + public_configs = [ ":external_config" ] } } @@ -1568,7 +1634,10 @@ if ((current_toolchain == host_toolchain && v8_toolset_for_d8 == "host") || configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] configs += [ - ":internal_config", + # Note: don't use :internal_config here because this target will get + # the :external_config applied to it by virtue of depending on :v8, and + # you can't have both applied to the same target. + ":internal_config_base", ":features", ":toolchain", ] diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index 69ecd92ba61c8e..c665f1763eb431 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,481 @@ +2015-05-11: Version 4.4.63 + + Let Runtime_GrowArrayElements accept non-Smi numbers as |key| (Chromium + issue 485410). + + Make one copy for all TypedArray methods (issue 4085). + + Performance and stability improvements on all platforms. + + +2015-05-09: Version 4.4.62 + + [turbofan] Fix handling of OsrLoopEntry in ControlReducer::ConnectNTL() + (Chromium issue 485908). + + Performance and stability improvements on all platforms. + + +2015-05-08: Version 4.4.61 + + Performance and stability improvements on all platforms. + + +2015-05-08: Version 4.4.60 + + Performance and stability improvements on all platforms. + + +2015-05-08: Version 4.4.59 + + Performance and stability improvements on all platforms. + + +2015-05-07: Version 4.4.58 + + TypedArray.prototype.every method (issue 3578). + + [V8] Reland https://codereview.chromium.org/1121833003/ (Chromium issue + 480652). + + Performance and stability improvements on all platforms. + + +2015-05-07: Version 4.4.57 + + Performance and stability improvements on all platforms. + + +2015-05-06: Version 4.4.56 + + Shard v8_base.lib on Windows to avoid 2G .lib limit (Chromium issue + 485155). + + Implement a 'trial parse' step, that will abort pre-parsing excessively + long and trivial functions, so that they can be eagerly compiled after + all. This essentially allows the parser to renege on its earlier + decision to lazy-parse, if additional information suggests it was a bad + decision (Chromium issue 470930). + + Performance and stability improvements on all platforms. + + +2015-05-06: Version 4.4.55 + + Handle the case when derived constructor is [[Call]]ed with 0 args + (Chromium issue 474783). + + freed_nodes in global-handles should be addititive (Chromium issues + 479796, 484671). + + [V8] Reland https://codereview.chromium.org/1100993003/ (Chromium issue + 480652). + + [es6] When comparing two symbols we may need to throw a TypeError (issue + 4073). + + Performance and stability improvements on all platforms. + + +2015-05-06: Version 4.4.54 + + Performance and stability improvements on all platforms. + + +2015-05-05: Version 4.4.53 + + Performance and stability improvements on all platforms. + + +2015-05-05: Version 4.4.52 + + Performance and stability improvements on all platforms. + + +2015-05-04: Version 4.4.51 + + Performance and stability improvements on all platforms. + + +2015-05-04: Version 4.4.50 + + Performance and stability improvements on all platforms. + + +2015-05-01: Version 4.4.49 + + Performance and stability improvements on all platforms. + + +2015-05-01: Version 4.4.48 + + [V8] Use previous token location as EOS token location (Chromium issue + 480652). + + Implement kToBeExecutedOnceCodeAge (Chromium issue 470930). + + Performance and stability improvements on all platforms. + + +2015-04-30: Version 4.4.47 + + Performance and stability improvements on all platforms. + + +2015-04-30: Version 4.4.46 + + Performance and stability improvements on all platforms. + + +2015-04-29: Version 4.4.45 + + Performance and stability improvements on all platforms. + + +2015-04-29: Version 4.4.44 + + Pass ArrayBuffer::Allocator via Isolate::CreateParams. + + Fix unobservable constructor replacement on prototype maps (Chromium + issue 478522). + + Performance and stability improvements on all platforms. + + +2015-04-29: Version 4.4.43 + + Performance and stability improvements on all platforms. + + +2015-04-28: Version 4.4.42 + + MIPS: Fix FP load/store with large offsets from base register (Chromium + issue 481519). + + Extending v8::GetHeapStatistics to return total available size (Chromium + issue 476013). + + Performance and stability improvements on all platforms. + + +2015-04-28: Version 4.4.41 + + Performance and stability improvements on all platforms. + + +2015-04-28: Version 4.4.40 + + Do more to avoid last-resort stop-the-world GC (Chromium issue 481433). + + Performance and stability improvements on all platforms. + + +2015-04-27: Version 4.4.39 + + Performance and stability improvements on all platforms. + + +2015-04-27: Version 4.4.38 + + Performance and stability improvements on all platforms. + + +2015-04-25: Version 4.4.37 + + Performance and stability improvements on all platforms. + + +2015-04-24: Version 4.4.36 + + Performance and stability improvements on all platforms. + + +2015-04-24: Version 4.4.35 + + Performance and stability improvements on all platforms. + + +2015-04-24: Version 4.4.34 + + Performance and stability improvements on all platforms. + + +2015-04-23: Version 4.4.33 + + Performance and stability improvements on all platforms. + + +2015-04-23: Version 4.4.32 + + Performance and stability improvements on all platforms. + + +2015-04-23: Version 4.4.31 + + Performance and stability improvements on all platforms. + + +2015-04-22: Version 4.4.30 + + Performance and stability improvements on all platforms. + + +2015-04-22: Version 4.4.29 + + Performance and stability improvements on all platforms. + + +2015-04-21: Version 4.4.28 + + Performance and stability improvements on all platforms. + + +2015-04-21: Version 4.4.27 + + Performance and stability improvements on all platforms. + + +2015-04-20: Version 4.4.26 + + Allow for accessing an ArrayBuffer contents without externalizing it. + + Remove support for externally backed elements from the API (issue 3996). + + Deprecate 3-args ResourceConstraints::ConfigureDefaults. + + Indicate that low-memory-notificatin triggered GCs are "forced". + + Adding missing V8_EXPORT flag in SpaceStatistics class in v8.h (Chromium + issues 466141, 476013). + + Performance and stability improvements on all platforms. + + +2015-04-20: Version 4.4.25 + + Turn off SupportsFlexibleFloorAndRound for Arm64 due to a bug (Chromium + issue 476477). + + Adding V8 api to get memory statistics of spaces in V8::Heap (Chromium + issues 466141, 476013). + + Performance and stability improvements on all platforms. + + +2015-04-17: Version 4.4.24 + + Performance and stability improvements on all platforms. + + +2015-04-17: Version 4.4.23 + + Don't crash when reporting an access check failure for a detached global + proxy (Chromium issue 475884). + + Use smaller heap growing factor in idle notification to start + incremental marking when there is idle time >16ms (Chromium issue + 477323). + + Performance and stability improvements on all platforms. + + +2015-04-16: Version 4.4.22 + + Reduce regexp compiler stack size when not optimizing regexps (Chromium + issue 475705). + + Performance and stability improvements on all platforms. + + +2015-04-15: Version 4.4.21 + + Remove support for specifying the number of available threads. + + When converting Maybe and MaybeLocal values with a check, always check. + + Performance and stability improvements on all platforms. + + +2015-04-15: Version 4.4.20 + + Performance and stability improvements on all platforms. + + +2015-04-15: Version 4.4.19 + + Reland "Remove support for thread-based recompilation" (issue 3608). + + Performance and stability improvements on all platforms. + + +2015-04-14: Version 4.4.18 + + Reland "Remove support for thread-based recompilation" (issue 3608). + + Performance and stability improvements on all platforms. + + +2015-04-14: Version 4.4.17 + + Performance and stability improvements on all platforms. + + +2015-04-13: Version 4.4.16 + + Expose ArrayBufferView::HasBuffer (issue 3996). + + Performance and stability improvements on all platforms. + + +2015-04-13: Version 4.4.15 + + Performance and stability improvements on all platforms. + + +2015-04-12: Version 4.4.14 + + Performance and stability improvements on all platforms. + + +2015-04-12: Version 4.4.13 + + Performance and stability improvements on all platforms. + + +2015-04-10: Version 4.4.12 + + Performance and stability improvements on all platforms. + + +2015-04-10: Version 4.4.11 + + Performance and stability improvements on all platforms. + + +2015-04-10: Version 4.4.10 + + Don't #define snprintf in VS2015 - it's illegal and unneeded (Chromium + issue 440500). + + Performance and stability improvements on all platforms. + + +2015-04-09: Version 4.4.9 + + Performance and stability improvements on all platforms. + + +2015-04-09: Version 4.4.8 + + Performance and stability improvements on all platforms. + + +2015-04-08: Version 4.4.7 + + Make GetDebugContext a bit more robust (Chromium issue 474538). + + Performance and stability improvements on all platforms. + + +2015-04-08: Version 4.4.6 + + Performance and stability improvements on all platforms. + + +2015-04-08: Version 4.4.5 + + More robust when allocation fails during compaction (Chromium issue + 473307). + + MIPS: JSEntryTrampoline: check for stack space before pushing arguments + (Chromium issue 469768). + + Performance and stability improvements on all platforms. + + +2015-04-07: Version 4.4.4 + + Debugger: remove debug command API. + + Remove support for thread-based recompilation (issue 3608). + + JSEntryTrampoline: check for stack space before pushing arguments + (Chromium issue 469768). + + Performance and stability improvements on all platforms. + + +2015-04-07: Version 4.4.3 + + Performance and stability improvements on all platforms. + + +2015-04-06: Version 4.4.2 + + Performance and stability improvements on all platforms. + + +2015-04-06: Version 4.4.1 + + Support for typed arrays added to Heap::RightTrimFixedArray() (Chromium + issue 472513). + + Expose an API on ArrayBufferView to copy out content w/o changing the + buffer (issue 3996). + + Performance and stability improvements on all platforms. + + +2015-04-02: Version 4.3.66 + + Reland: Fix JSON parser Handle leak (previous CL 1041483004) (issue + 3976, Chromium issue 472504). + + Turn off overapproximation of the weak closure again (issue 3862). + + Performance and stability improvements on all platforms. + + +2015-04-01: Version 4.3.65 + + Performance and stability improvements on all platforms. + + +2015-04-01: Version 4.3.64 + + Performance and stability improvements on all platforms. + + +2015-04-01: Version 4.3.63 + + [V8] Don't ignore sourceURL comment in inline scripts in .stack (issue + 3920). + + Deprecate IdleNotification(). + + Remove --harmony-numeric-literal flag. + + Performance and stability improvements on all platforms. + + +2015-03-31: Version 4.3.62 + + Put newspace evacuation in an EvacuationScope (Chromium issue 471554). + + Fix libdl dependency on Android and remove librt hack (Chromium issue + 469973). + + Ensure that GC idle notifications either make progress or stop + requesting more GCs (Chromium issue 470615). + + Layout descriptor must be trimmed when corresponding descriptors array + is trimmed to stay in sync (Chromium issue 470804). + + Fix JSON parser Handle leak (issue 3976). + + Performance and stability improvements on all platforms. + + 2015-03-30: Version 4.3.61 Performance and stability improvements on all platforms. diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 42606acfcfbbf0..711cc53b7e3574 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -8,17 +8,17 @@ vars = { deps = { "v8/build/gyp": - Var("git_url") + "/external/gyp.git" + "@" + "d174d75bf69c682cb62af9187879e01513b35e52", + Var("git_url") + "/external/gyp.git" + "@" + "0bb67471bca068996e15b56738fa4824dfa19de0", "v8/third_party/icu": - Var("git_url") + "/chromium/deps/icu.git" + "@" + "7c81740601355556e630da515b74d889ba2f8d08", + Var("git_url") + "/chromium/deps/icu.git" + "@" + "f8c0e585b0a046d83d72b5d37356cb50d5b2031a", "v8/buildtools": - Var("git_url") + "/chromium/buildtools.git" + "@" + "3b302fef93f7cc58d9b8168466905237484b2772", + Var("git_url") + "/chromium/buildtools.git" + "@" + "b0ede9c89f9d5fbe5387d961ad4c0ec665b6c821", "v8/testing/gtest": Var("git_url") + "/external/googletest.git" + "@" + "be1868139ffe0ccd0e8e3b37292b84c821d9c8ad", "v8/testing/gmock": Var("git_url") + "/external/googlemock.git" + "@" + "29763965ab52f24565299976b936d1265cb6a271", # from svn revision 501 "v8/tools/clang": - Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "ea2f0a2d96ffc6f5a51c034db704ccc1a6543156", + Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "5bab78c6ced45a71a8e095a09697ca80492e57e1", } deps_os = { diff --git a/deps/v8/Makefile b/deps/v8/Makefile index 055a57d286c9ce..db6cf3b7da534a 100644 --- a/deps/v8/Makefile +++ b/deps/v8/Makefile @@ -97,6 +97,10 @@ endif ifeq ($(slowdchecks), off) GYPFLAGS += -Dv8_enable_slow_dchecks=0 endif +# debugsymbols=on +ifeq ($(debugsymbols), on) + GYPFLAGS += -Drelease_extra_cflags=-ggdb3 +endif # gdbjit=on/off ifeq ($(gdbjit), on) GYPFLAGS += -Dv8_enable_gdbjit=1 diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 5b3d58d3ba50d8..34e09b8ec51b25 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -249,12 +249,16 @@ def GetPreferredTryMasters(project, change): 'v8_linux_gcc_compile_rel': set(['defaulttests']), 'v8_linux64_rel': set(['defaulttests']), 'v8_linux64_asan_rel': set(['defaulttests']), + 'v8_linux64_avx2_rel': set(['defaulttests']), 'v8_win_rel': set(['defaulttests']), 'v8_win_compile_dbg': set(['defaulttests']), + 'v8_win_nosnap_shared_compile_rel': set(['defaulttests']), 'v8_win64_rel': set(['defaulttests']), 'v8_mac_rel': set(['defaulttests']), 'v8_linux_arm_rel': set(['defaulttests']), 'v8_linux_arm64_rel': set(['defaulttests']), + 'v8_linux_mipsel_compile_rel': set(['defaulttests']), + 'v8_linux_mips64el_compile_rel': set(['defaulttests']), 'v8_android_arm_compile_rel': set(['defaulttests']), 'v8_linux_chromium_gn_rel': set(['defaulttests']), }, diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS index 9c2bce9c5589c2..64771bc27dc61e 100644 --- a/deps/v8/WATCHLISTS +++ b/deps/v8/WATCHLISTS @@ -36,11 +36,23 @@ 'public_api': { 'filepath': 'include/', }, + 'snapshot': { + 'filepath': 'src/snapshot/', + }, + 'debugger': { + 'filepath': 'src/debug\.(cc|h)|src/.*-debugger\.js|src/runtime/runtime-debug\.cc', + }, }, 'WATCHLISTS': { 'public_api': [ 'phajdan.jr@chromium.org', ], + 'snapshot': [ + 'yangguo@chromium.org', + ], + 'debugger': [ + 'yangguo@chromium.org', + ], }, } diff --git a/deps/v8/build/OWNERS b/deps/v8/build/OWNERS new file mode 100644 index 00000000000000..0e56af312942fa --- /dev/null +++ b/deps/v8/build/OWNERS @@ -0,0 +1 @@ +machenbach@chromium.org diff --git a/deps/v8/build/android.gypi b/deps/v8/build/android.gypi index 533250e7f56f96..7bbf12eed6d99b 100644 --- a/deps/v8/build/android.gypi +++ b/deps/v8/build/android.gypi @@ -69,9 +69,6 @@ 'android_stlport_libs': '<(android_stlport)/libs', }], ], - # Enable to use the system stlport, otherwise statically - # link the NDK one? - 'use_system_stlport%': '<(android_webview_build)', 'android_stlport_library': 'stlport_static', }, # variables 'target_defaults': { @@ -108,6 +105,7 @@ # Note: This include is in cflags to ensure that it comes after # all of the includes. '-I<(android_include)', + '-I<(android_stlport_include)', ], 'cflags_cc': [ '-Wno-error=non-virtual-dtor', # TODO(michaelbai): Fix warnings. @@ -127,6 +125,8 @@ 'ldflags': [ '-nostdlib', '-Wl,--no-undefined', + '-Wl,-rpath-link=<(android_lib)', + '-L<(android_lib)', ], 'libraries!': [ '-lrt', # librt is built into Bionic. @@ -146,12 +146,6 @@ '-lm', ], 'conditions': [ - ['android_webview_build==0', { - 'ldflags': [ - '-Wl,-rpath-link=<(android_lib)', - '-L<(android_lib)', - ], - }], ['target_arch == "arm"', { 'ldflags': [ # Enable identical code folding to reduce size. @@ -164,48 +158,23 @@ '-mtune=cortex-a8', '-mfpu=vfp3', ], + 'ldflags': [ + '-L<(android_stlport_libs)/armeabi-v7a', + ], }], - # NOTE: The stlport header include paths below are specified in - # cflags rather than include_dirs because they need to come - # after include_dirs. Think of them like system headers, but - # don't use '-isystem' because the arm-linux-androideabi-4.4.3 - # toolchain (circa Gingerbread) will exhibit strange errors. - # The include ordering here is important; change with caution. - ['use_system_stlport==0', { - 'cflags': [ - '-I<(android_stlport_include)', + ['target_arch=="arm" and arm_version < 7', { + 'ldflags': [ + '-L<(android_stlport_libs)/armeabi', ], - 'conditions': [ - ['target_arch=="arm" and arm_version==7', { - 'ldflags': [ - '-L<(android_stlport_libs)/armeabi-v7a', - ], - }], - ['target_arch=="arm" and arm_version < 7', { - 'ldflags': [ - '-L<(android_stlport_libs)/armeabi', - ], - }], - ['target_arch=="mipsel"', { - 'ldflags': [ - '-L<(android_stlport_libs)/mips', - ], - }], - ['target_arch=="ia32" or target_arch=="x87"', { - 'ldflags': [ - '-L<(android_stlport_libs)/x86', - ], - }], - ['target_arch=="x64"', { - 'ldflags': [ - '-L<(android_stlport_libs)/x86_64', - ], - }], - ['target_arch=="arm64"', { - 'ldflags': [ - '-L<(android_stlport_libs)/arm64-v8a', - ], - }], + }], + ['target_arch=="x64"', { + 'ldflags': [ + '-L<(android_stlport_libs)/x86_64', + ], + }], + ['target_arch=="arm64"', { + 'ldflags': [ + '-L<(android_stlport_libs)/arm64-v8a', ], }], ['target_arch=="ia32" or target_arch=="x87"', { @@ -216,6 +185,9 @@ 'cflags': [ '-fno-stack-protector', ], + 'ldflags': [ + '-L<(android_stlport_libs)/x86', + ], }], ['target_arch=="mipsel"', { # The mips toolchain currently has problems with stack-protector. @@ -226,6 +198,9 @@ 'cflags': [ '-fno-stack-protector', ], + 'ldflags': [ + '-L<(android_stlport_libs)/mips', + ], }], ['(target_arch=="arm" or target_arch=="arm64" or target_arch=="x64") and component!="shared_library"', { 'cflags': [ diff --git a/deps/v8/build/features.gypi b/deps/v8/build/features.gypi index 5c60273a61bc6f..2eadca338438dc 100644 --- a/deps/v8/build/features.gypi +++ b/deps/v8/build/features.gypi @@ -102,7 +102,7 @@ 'DebugBaseCommon': { 'abstract': 1, 'variables': { - 'v8_enable_handle_zapping%': 0, + 'v8_enable_handle_zapping%': 1, }, 'conditions': [ ['v8_enable_handle_zapping==1', { @@ -112,7 +112,7 @@ }, # Debug 'Release': { 'variables': { - 'v8_enable_handle_zapping%': 1, + 'v8_enable_handle_zapping%': 0, }, 'conditions': [ ['v8_enable_handle_zapping==1', { diff --git a/deps/v8/build/standalone.gypi b/deps/v8/build/standalone.gypi index d95cb7a0a25304..7c967206734d77 100644 --- a/deps/v8/build/standalone.gypi +++ b/deps/v8/build/standalone.gypi @@ -35,12 +35,17 @@ 'component%': 'static_library', 'clang_dir%': 'third_party/llvm-build/Release+Asserts', 'clang_xcode%': 0, + # Track where uninitialized memory originates from. From fastest to + # slowest: 0 - no tracking, 1 - track only the initial allocation site, 2 + # - track the chain of stores leading from allocation site to use site. + 'msan_track_origins%': 1, 'visibility%': 'hidden', 'v8_enable_backtrace%': 0, 'v8_enable_i18n_support%': 1, 'v8_deprecation_warnings': 1, 'msvs_multi_core_compile%': '1', 'mac_deployment_target%': '10.5', + 'release_extra_cflags%': '', 'variables': { 'variables': { 'variables': { @@ -65,6 +70,10 @@ 'host_arch%': '<(host_arch)', 'target_arch%': '<(target_arch)', 'v8_target_arch%': '<(target_arch)', + 'asan%': 0, + 'lsan%': 0, + 'msan%': 0, + 'tsan%': 0, # goma settings. # 1 to use goma. @@ -86,6 +95,10 @@ 'werror%': '-Werror', 'use_goma%': '<(use_goma)', 'gomadir%': '<(gomadir)', + 'asan%': '<(asan)', + 'lsan%': '<(lsan)', + 'msan%': '<(msan)', + 'tsan%': '<(tsan)', # .gyp files or targets should set v8_code to 1 if they build V8 specific # code, as opposed to external code. This variable is used to control such @@ -157,6 +170,10 @@ }, { 'host_clang%': '0', }], + ['asan==1 or lsan==1 or msan==1 or tsan==1', { + 'clang%': 1, + 'use_allocator%': 'none', + }], ], # Default ARM variable settings. 'arm_version%': 'default', @@ -196,7 +213,7 @@ # Xcode insists on this empty entry. }, 'Release': { - # Xcode insists on this empty entry. + 'cflags+': ['<@(release_extra_cflags)'], }, }, 'conditions':[ @@ -226,6 +243,7 @@ '-Wall', '-Werror', '-Wextra', + '-Wshorten-64-to-32', ], 'cflags+': [ # Clang considers the `register` keyword as deprecated, but @@ -302,6 +320,36 @@ ], }, }], + ['msan==1 and OS!="mac"', { + 'target_defaults': { + 'cflags_cc+': [ + '-fno-omit-frame-pointer', + '-gline-tables-only', + '-fsanitize=memory', + '-fsanitize-memory-track-origins=<(msan_track_origins)', + '-fPIC', + ], + 'cflags+': [ + '-fPIC', + ], + 'cflags!': [ + '-fno-exceptions', + '-fomit-frame-pointer', + ], + 'ldflags': [ + '-fsanitize=memory', + ], + 'defines': [ + 'MEMORY_SANITIZER', + ], + 'dependencies': [ + # Use libc++ (third_party/libc++ and third_party/libc++abi) instead of + # stdlibc++ as standard library. This is intended to use for instrumented + # builds. + '<(DEPTH)/buildtools/third_party/libc++/libc++.gyp:libcxx_proxy', + ], + }, + }], ['asan==1 and OS=="mac"', { 'target_defaults': { 'xcode_settings': { @@ -342,6 +390,11 @@ 'cflags_cc': [ '-Wnon-virtual-dtor', '-fno-rtti', '-std=gnu++0x' ], 'ldflags': [ '-pthread', ], 'conditions': [ + # TODO(arm64): It'd be nice to enable this for arm64 as well, + # but the Assembler requires some serious fixing first. + [ 'clang==1 and v8_target_arch=="x64"', { + 'cflags': [ '-Wshorten-64-to-32' ], + }], [ 'host_arch=="ppc64" and OS!="aix"', { 'cflags': [ '-mminimal-toc' ], }], diff --git a/deps/v8/build/toolchain.gypi b/deps/v8/build/toolchain.gypi index f1f46c89c71830..ed2616bbdb92b3 100644 --- a/deps/v8/build/toolchain.gypi +++ b/deps/v8/build/toolchain.gypi @@ -131,14 +131,6 @@ # Link-Time Optimizations 'use_lto%': 0, - - 'variables': { - # This is set when building the Android WebView inside the Android build - # system, using the 'android' gyp backend. - 'android_webview_build%': 0, - }, - # Copy it out one scope. - 'android_webview_build%': '<(android_webview_build)', }, 'conditions': [ ['host_arch=="ia32" or host_arch=="x64" or \ @@ -203,7 +195,7 @@ 'target_conditions': [ ['_toolset=="host"', { 'conditions': [ - ['v8_target_arch==host_arch and android_webview_build==0', { + ['v8_target_arch==host_arch', { # Host built with an Arm CXX compiler. 'conditions': [ [ 'arm_version==7', { @@ -246,7 +238,7 @@ }], # _toolset=="host" ['_toolset=="target"', { 'conditions': [ - ['v8_target_arch==target_arch and android_webview_build==0', { + ['v8_target_arch==target_arch', { # Target built with an Arm CXX compiler. 'conditions': [ [ 'arm_version==7', { @@ -370,7 +362,7 @@ 'target_conditions': [ ['_toolset=="target"', { 'conditions': [ - ['v8_target_arch==target_arch and android_webview_build==0', { + ['v8_target_arch==target_arch', { # Target built with a Mips CXX compiler. 'cflags': [ '-EB', @@ -557,7 +549,7 @@ 'target_conditions': [ ['_toolset=="target"', { 'conditions': [ - ['v8_target_arch==target_arch and android_webview_build==0', { + ['v8_target_arch==target_arch', { # Target built with a Mips CXX compiler. 'cflags': [ '-EL', @@ -761,7 +753,7 @@ 'target_conditions': [ ['_toolset=="target"', { 'conditions': [ - ['v8_target_arch==target_arch and android_webview_build==0', { + ['v8_target_arch==target_arch', { 'cflags': [ '-EL', '-Wno-error=array-bounds', # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273 @@ -929,12 +921,6 @@ 'cflags': [ '-m32' ], 'ldflags': [ '-m32' ], }], - # Enable feedback-directed optimisation when building in android. - [ 'android_webview_build == 1', { - 'aosp_build_settings': { - 'LOCAL_FDO_SUPPORT': 'true', - }, - }], ], 'xcode_settings': { 'ARCHS': [ 'i386' ], @@ -960,12 +946,6 @@ 'cflags': [ '-m64' ], 'ldflags': [ '-m64' ], }], - # Enable feedback-directed optimisation when building in android. - [ 'android_webview_build == 1', { - 'aosp_build_settings': { - 'LOCAL_FDO_SUPPORT': 'true', - }, - }], ] }], ], diff --git a/deps/v8/include/OWNERS b/deps/v8/include/OWNERS new file mode 100644 index 00000000000000..efa3b936d525df --- /dev/null +++ b/deps/v8/include/OWNERS @@ -0,0 +1,2 @@ +danno@chromium.org +jochen@chromium.org diff --git a/deps/v8/include/v8-debug.h b/deps/v8/include/v8-debug.h index ae11a2aeea74fa..4074b938d2c0ed 100644 --- a/deps/v8/include/v8-debug.h +++ b/deps/v8/include/v8-debug.h @@ -22,7 +22,6 @@ enum DebugEvent { CompileError = 6, PromiseEvent = 7, AsyncTaskEvent = 8, - BreakForCommand = 9 }; @@ -170,13 +169,6 @@ class V8_EXPORT Debug { // Check if a debugger break is scheduled in the given isolate. static bool CheckDebugBreak(Isolate* isolate); - // Break execution of JavaScript in the given isolate (this method - // can be invoked from a non-VM thread) for further client command - // execution on a VM thread. Client data is then passed in - // EventDetails to EventCallback2 at the moment when the VM actually - // stops. - static void DebugBreakForCommand(Isolate* isolate, ClientData* data); - // Message based interface. The message protocol is JSON. static void SetMessageHandler(MessageHandler handler); diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index f9439c2e629445..82a14d66003001 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -5,6 +5,7 @@ #ifndef V8_V8_PROFILER_H_ #define V8_V8_PROFILER_H_ +#include #include "v8.h" /** @@ -17,6 +18,34 @@ struct HeapStatsUpdate; typedef uint32_t SnapshotObjectId; + +struct CpuProfileDeoptFrame { + int script_id; + size_t position; +}; + +} // namespace v8 + +#ifdef V8_OS_WIN +template class V8_EXPORT std::vector; +#endif + +namespace v8 { + +struct V8_EXPORT CpuProfileDeoptInfo { + /** A pointer to a static string owned by v8. */ + const char* deopt_reason; + std::vector stack; +}; + +} // namespace v8 + +#ifdef V8_OS_WIN +template class V8_EXPORT std::vector; +#endif + +namespace v8 { + /** * CpuProfileNode represents a node in a call graph. */ @@ -85,6 +114,9 @@ class V8_EXPORT CpuProfileNode { /** Retrieves a child node by index. */ const CpuProfileNode* GetChild(int index) const; + /** Retrieves deopt infos for the node. */ + const std::vector& GetDeoptInfos() const; + static const int kNoLineNumberInfo = Message::kNoLineNumberInfo; static const int kNoColumnNumberInfo = Message::kNoColumnInfo; }; diff --git a/deps/v8/include/v8-util.h b/deps/v8/include/v8-util.h index b01d527754b5ce..6454a19b7e4fe1 100644 --- a/deps/v8/include/v8-util.h +++ b/deps/v8/include/v8-util.h @@ -117,26 +117,25 @@ class DefaultGlobalMapTraits : public StdMapTraits { public: // Weak callback & friends: static const PersistentContainerCallbackType kCallbackType = kNotWeak; - typedef PersistentValueMap > MapType; - typedef void WeakCallbackInfoType; + typedef GlobalValueMap > MapType; + typedef void WeakCallbackDataType; - static WeakCallbackInfoType* WeakCallbackParameter(MapType* map, const K& key, + static WeakCallbackDataType* WeakCallbackParameter(MapType* map, const K& key, Local value) { return nullptr; } static MapType* MapFromWeakCallbackInfo( - const WeakCallbackInfo& data) { + const WeakCallbackInfo& data) { return nullptr; } static K KeyFromWeakCallbackInfo( - const WeakCallbackInfo& data) { + const WeakCallbackInfo& data) { return K(); } - static void DisposeCallbackData(WeakCallbackInfoType* data) {} + static void DisposeCallbackData(WeakCallbackDataType* data) {} static void Dispose(Isolate* isolate, Global value, K key) {} - static void DisposeWeak(Isolate* isolate, - const WeakCallbackInfo& data, - K key) {} + // This is a second pass callback, so SetSecondPassCallback cannot be called. + static void DisposeWeak(const WeakCallbackInfo& data) {} private: template @@ -453,7 +452,7 @@ class GlobalValueMap : public PersistentValueMapBase { : WeakCallbackType::kParameter; Local value(Local::New(this->isolate(), *persistent)); persistent->template SetWeak( - Traits::WeakCallbackParameter(this, key, value), WeakCallback, + Traits::WeakCallbackParameter(this, key, value), FirstWeakCallback, callback_type); } PersistentContainerValue old_value = @@ -472,16 +471,20 @@ class GlobalValueMap : public PersistentValueMapBase { } private: - static void WeakCallback( + static void FirstWeakCallback( const WeakCallbackInfo& data) { if (Traits::kCallbackType != kNotWeak) { - GlobalValueMap* persistentValueMap = - Traits::MapFromWeakCallbackInfo(data); + auto map = Traits::MapFromWeakCallbackInfo(data); K key = Traits::KeyFromWeakCallbackInfo(data); - persistentValueMap->RemoveWeak(key); - Traits::DisposeWeak(data.GetIsolate(), data, key); + map->RemoveWeak(key); + data.SetSecondPassCallback(SecondWeakCallback); } } + + static void SecondWeakCallback( + const WeakCallbackInfo& data) { + Traits::DisposeWeak(data); + } }; @@ -501,6 +504,22 @@ class StdPersistentValueMap : public PersistentValueMap { }; +/** + * A map that uses Global as value and std::map as the backing + * implementation. Globals are held non-weak. + * + * C++11 embedders don't need this class, as they can use + * Global directly in std containers. + */ +template > +class StdGlobalValueMap : public GlobalValueMap { + public: + explicit StdGlobalValueMap(Isolate* isolate) + : GlobalValueMap(isolate) {} +}; + + class DefaultPersistentValueVectorTraits { public: typedef std::vector Impl; diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 9cdb1259216c19..35bfeb71087663 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 4 -#define V8_MINOR_VERSION 3 -#define V8_BUILD_NUMBER 61 -#define V8_PATCH_LEVEL 21 +#define V8_MINOR_VERSION 4 +#define V8_BUILD_NUMBER 63 +#define V8_PATCH_LEVEL 9 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index d3543f282fd19e..910279b52e6b29 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -106,7 +106,6 @@ class Private; class Uint32; class Utils; class Value; -template class Handle; template class Local; template class MaybeLocal; @@ -203,28 +202,16 @@ class UniqueId { * * It is safe to extract the object stored in the handle by * dereferencing the handle (for instance, to extract the Object* from - * a Handle); the value will still be governed by a handle + * a Local); the value will still be governed by a handle * behind the scenes and the same rules apply to these values as to * their handles. */ -template class Handle { +template +class Local { public: - /** - * Creates an empty handle. - */ - V8_INLINE Handle() : val_(0) {} - - /** - * Creates a handle for the contents of the specified handle. This - * constructor allows you to pass handles as arguments by value and - * to assign between handles. However, if you try to assign between - * incompatible handles, for instance from a Handle to a - * Handle it will cause a compile-time error. Assigning - * between compatible handles, for instance assigning a - * Handle to a variable declared as Handle, is legal - * because String is a subclass of Value. - */ - template V8_INLINE Handle(Handle that) + V8_INLINE Local() : val_(0) {} + template + V8_INLINE Local(Local that) : val_(reinterpret_cast(*that)) { /** * This check fails when trying to convert between incompatible @@ -254,7 +241,8 @@ template class Handle { * to which they refer are identical. * The handles' references are not checked. */ - template V8_INLINE bool operator==(const Handle& that) const { + template + 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; @@ -277,7 +265,8 @@ template class Handle { * the objects to which they refer are different. * The handles' references are not checked. */ - template V8_INLINE bool operator!=(const Handle& that) const { + template + V8_INLINE bool operator!=(const Local& that) const { return !operator==(that); } @@ -286,79 +275,6 @@ template class Handle { return !operator==(that); } - template V8_INLINE static Handle Cast(Handle that) { -#ifdef V8_ENABLE_CHECKS - // If we're going to perform the type check then we have to check - // that the handle isn't empty before doing the checked cast. - if (that.IsEmpty()) return Handle(); -#endif - return Handle(T::Cast(*that)); - } - - template V8_INLINE Handle As() { - return Handle::Cast(*this); - } - - V8_INLINE static Handle New(Isolate* isolate, Handle that) { - return New(isolate, that.val_); - } - V8_INLINE static Handle New(Isolate* isolate, - const PersistentBase& that) { - return New(isolate, that.val_); - } - - private: - friend class Utils; - template friend class Persistent; - template friend class PersistentBase; - template friend class Handle; - template friend class Local; - template - friend class MaybeLocal; - template friend class FunctionCallbackInfo; - template friend class PropertyCallbackInfo; - template friend class internal::CustomArguments; - friend Handle Undefined(Isolate* isolate); - friend Handle Null(Isolate* isolate); - friend Handle True(Isolate* isolate); - friend Handle False(Isolate* isolate); - friend class Context; - friend class HandleScope; - friend class Object; - friend class Private; - - /** - * Creates a new handle for the specified value. - */ - V8_INLINE explicit Handle(T* val) : val_(val) {} - - V8_INLINE static Handle New(Isolate* isolate, T* that); - - T* val_; -}; - - -/** - * A light-weight stack-allocated object handle. All operations - * that return objects from within v8 return them in local handles. They - * are created within HandleScopes, and all local handles allocated within a - * handle scope are destroyed when the handle scope is destroyed. Hence it - * is not necessary to explicitly deallocate local handles. - */ -template class Local : public Handle { - public: - V8_INLINE Local(); - template V8_INLINE Local(Local that) - : Handle(reinterpret_cast(*that)) { - /** - * This check fails when trying to convert between incompatible - * handles. For example, converting from a Handle to a - * Handle. - */ - TYPE_CHECK(T, S); - } - - template V8_INLINE static Local Cast(Local that) { #ifdef V8_ENABLE_CHECKS // If we're going to perform the type check then we have to check @@ -367,10 +283,7 @@ template class Local : public Handle { #endif return Local(T::Cast(*that)); } - template V8_INLINE Local(Handle that) - : Handle(reinterpret_cast(*that)) { - TYPE_CHECK(T, S); - } + template V8_INLINE Local As() { return Local::Cast(*this); @@ -381,7 +294,7 @@ template class Local : public Handle { * The referee is kept alive by the local handle even when * the original handle is destroyed/disposed. */ - V8_INLINE static Local New(Isolate* isolate, Handle that); + V8_INLINE static Local New(Isolate* isolate, Local that); V8_INLINE static Local New(Isolate* isolate, const PersistentBase& that); @@ -390,7 +303,6 @@ template class Local : public Handle { template friend class Eternal; template friend class PersistentBase; template friend class Persistent; - template friend class Handle; template friend class Local; template friend class MaybeLocal; @@ -399,18 +311,31 @@ template class Local : public Handle { friend class String; friend class Object; friend class Context; + friend class Private; template friend class internal::CustomArguments; + friend Local Undefined(Isolate* isolate); + friend Local Null(Isolate* isolate); + friend Local True(Isolate* isolate); + friend Local False(Isolate* isolate); friend class HandleScope; friend class EscapableHandleScope; template friend class PersistentValueMapBase; template friend class PersistentValueVector; - template V8_INLINE Local(S* that) : Handle(that) { } + template + V8_INLINE Local(S* that) + : val_(that) {} V8_INLINE static Local New(Isolate* isolate, T* that); + T* val_; }; +// Handle is an alias for Local for historical reasons. +template +using Handle = Local; + + /** * A MaybeLocal<> is a wrapper around Local<> that enforces a check whether * the Local<> is empty before it can be used. @@ -439,7 +364,7 @@ class MaybeLocal { return !IsEmpty(); } - // Will crash when checks are enabled if the MaybeLocal<> is empty. + // Will crash if the MaybeLocal<> is empty. V8_INLINE Local ToLocalChecked(); template @@ -694,7 +619,6 @@ template class PersistentBase { private: friend class Isolate; friend class Utils; - template friend class Handle; template friend class Local; template friend class Persistent; template @@ -837,7 +761,6 @@ template class Persistent : public PersistentBase { private: friend class Isolate; friend class Utils; - template friend class Handle; template friend class Local; template friend class Persistent; template friend class ReturnValue; @@ -1136,9 +1059,9 @@ class V8_EXPORT Script { "Use maybe version", Local