From bc1fe3a21d72c2af4781bf93cfb761796717a5e9 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sat, 21 Mar 2015 14:37:46 +0100 Subject: [PATCH 1/5] Working on v2.0.0 --- src/node_version.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/node_version.h b/src/node_version.h index 42136cbfa3805e..ba1b52ef18ede3 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -1,9 +1,9 @@ #ifndef SRC_NODE_VERSION_H_ #define SRC_NODE_VERSION_H_ -#define NODE_MAJOR_VERSION 1 -#define NODE_MINOR_VERSION 6 -#define NODE_PATCH_VERSION 2 +#define NODE_MAJOR_VERSION 2 +#define NODE_MINOR_VERSION 0 +#define NODE_PATCH_VERSION 0 #define NODE_VERSION_IS_RELEASE 0 @@ -45,6 +45,6 @@ * an API is broken in the C++ side, including in v8 or * other dependencies. */ -#define NODE_MODULE_VERSION 43 /* io.js v1.1.0 */ +#define NODE_MODULE_VERSION 44 /* io.js v2.x */ #endif /* SRC_NODE_VERSION_H_ */ From bb97b70eb709b0e0470a5164b3722c292859618a Mon Sep 17 00:00:00 2001 From: Christian Tellnes Date: Fri, 6 Feb 2015 23:27:22 +0100 Subject: [PATCH 2/5] os: remove trailing slash from os.tmpdir() This commit makes `os.tmpdir()` behave consistently on all platforms. It changes `os.tmpdir()` to always return a path without trailing slash. Semver: major Fixes: https://github.com/iojs/io.js/issues/715 PR-URL: https://github.com/iojs/io.js/pull/747 Reviewed-By: Ben Noordhuis --- lib/os.js | 8 ++++++-- test/parallel/test-os.js | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/os.js b/lib/os.js index 75a863e2f72d1e..cd4eb1c12f49bc 100644 --- a/lib/os.js +++ b/lib/os.js @@ -23,16 +23,20 @@ exports.platform = function() { }; exports.tmpdir = function() { + var path; if (isWindows) { - return process.env.TEMP || + path = process.env.TEMP || process.env.TMP || (process.env.SystemRoot || process.env.windir) + '\\temp'; } else { - return process.env.TMPDIR || + path = process.env.TMPDIR || process.env.TMP || process.env.TEMP || '/tmp'; } + if (/[\\\/]$/.test(path)) + path = path.slice(0, -1); + return path; }; exports.tmpDir = exports.tmpdir; diff --git a/test/parallel/test-os.js b/test/parallel/test-os.js index ae57353435333a..b5f39973a6f71f 100644 --- a/test/parallel/test-os.js +++ b/test/parallel/test-os.js @@ -13,6 +13,8 @@ if (process.platform === 'win32') { process.env.TMP = ''; var expected = (process.env.SystemRoot || process.env.windir) + '\\temp'; assert.equal(os.tmpdir(), expected); + process.env.TEMP = '\\temp\\'; + assert.equal(os.tmpdir(), '\\temp'); } else { assert.equal(os.tmpdir(), '/tmpdir'); process.env.TMPDIR = ''; @@ -21,6 +23,8 @@ if (process.platform === 'win32') { assert.equal(os.tmpdir(), '/temp'); process.env.TEMP = ''; assert.equal(os.tmpdir(), '/tmp'); + process.env.TMPDIR = '/tmpdir/'; + assert.equal(os.tmpdir(), '/tmpdir'); } var endianness = os.endianness(); From 336dc08f5150427b880211b9fde851f095684918 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 27 Mar 2015 12:04:12 +0100 Subject: [PATCH 3/5] deps: upgrade v8 to 4.2.77.13 This commit applies some secondary changes in order to make `make test` pass cleanly: * disable broken postmortem debugging in common.gypi * drop obsolete strict mode test in parallel/test-repl * drop obsolete test parallel/test-v8-features PR-URL: https://github.com/iojs/io.js/pull/1232 Reviewed-By: Fedor Indutny --- common.gypi | 5 +- deps/v8/.gitignore | 1 + deps/v8/.ycm_extra_conf.py | 193 + deps/v8/AUTHORS | 87 +- deps/v8/BUILD.gn | 389 +- deps/v8/ChangeLog | 530 + deps/v8/DEPS | 21 +- deps/v8/Makefile | 85 +- deps/v8/OWNERS | 1 + deps/v8/PRESUBMIT.py | 22 +- deps/v8/build/features.gypi | 8 - deps/v8/build/mac/asan.gyp | 31 + deps/v8/build/standalone.gypi | 119 +- deps/v8/build/toolchain.gypi | 271 +- deps/v8/codereview.settings | 1 - deps/v8/include/v8-util.h | 256 +- deps/v8/include/v8-version.h | 20 + deps/v8/include/v8.h | 297 +- deps/v8/include/v8config.h | 6 + deps/v8/samples/shell.cc | 1 + deps/v8/src/accessors.cc | 77 +- deps/v8/src/accessors.h | 5 +- deps/v8/src/allocation-tracker.cc | 4 +- deps/v8/src/allocation.cc | 10 +- deps/v8/src/allocation.h | 3 +- deps/v8/src/api-natives.cc | 588 + deps/v8/src/api-natives.h | 53 + deps/v8/src/api.cc | 851 +- deps/v8/src/api.h | 101 +- deps/v8/src/apinatives.js | 119 - deps/v8/src/arguments.h | 4 + deps/v8/src/arm/assembler-arm.cc | 120 +- deps/v8/src/arm/assembler-arm.h | 5 + deps/v8/src/arm/builtins-arm.cc | 155 +- deps/v8/src/arm/code-stubs-arm.cc | 401 +- deps/v8/src/arm/constants-arm.h | 1 + deps/v8/src/arm/deoptimizer-arm.cc | 3 + deps/v8/src/arm/full-codegen-arm.cc | 351 +- deps/v8/src/arm/interface-descriptors-arm.cc | 49 +- deps/v8/src/arm/lithium-arm.cc | 32 +- deps/v8/src/arm/lithium-arm.h | 15 +- deps/v8/src/arm/lithium-codegen-arm.cc | 283 +- deps/v8/src/arm/lithium-codegen-arm.h | 18 +- deps/v8/src/arm/macro-assembler-arm.cc | 169 +- deps/v8/src/arm/macro-assembler-arm.h | 22 +- deps/v8/src/arm/regexp-macro-assembler-arm.cc | 11 +- deps/v8/src/arm/regexp-macro-assembler-arm.h | 3 +- deps/v8/src/arm/simulator-arm.cc | 50 +- deps/v8/src/arm64/assembler-arm64.cc | 31 +- deps/v8/src/arm64/assembler-arm64.h | 5 + deps/v8/src/arm64/builtins-arm64.cc | 150 +- deps/v8/src/arm64/code-stubs-arm64.cc | 456 +- deps/v8/src/arm64/deoptimizer-arm64.cc | 3 + deps/v8/src/arm64/full-codegen-arm64.cc | 356 +- .../src/arm64/interface-descriptors-arm64.cc | 53 +- deps/v8/src/arm64/lithium-arm64.cc | 28 +- deps/v8/src/arm64/lithium-arm64.h | 14 +- deps/v8/src/arm64/lithium-codegen-arm64.cc | 333 +- deps/v8/src/arm64/lithium-codegen-arm64.h | 45 +- deps/v8/src/arm64/macro-assembler-arm64.cc | 176 +- deps/v8/src/arm64/macro-assembler-arm64.h | 22 +- .../src/arm64/regexp-macro-assembler-arm64.cc | 11 +- .../src/arm64/regexp-macro-assembler-arm64.h | 3 +- deps/v8/src/arm64/simulator-arm64.cc | 3 +- deps/v8/src/array.js | 2 +- deps/v8/src/assembler.cc | 147 +- deps/v8/src/assembler.h | 63 +- deps/v8/src/ast-numbering.cc | 89 +- deps/v8/src/ast-numbering.h | 2 +- deps/v8/src/ast-this-access-visitor.cc | 239 - deps/v8/src/ast-this-access-visitor.h | 34 - deps/v8/src/ast-value-factory.h | 11 +- deps/v8/src/ast.cc | 165 +- deps/v8/src/ast.h | 301 +- deps/v8/src/background-parsing-task.cc | 16 +- deps/v8/src/bailout-reason.h | 14 +- deps/v8/src/base/atomicops.h | 4 +- .../v8/src/base/atomicops_internals_ppc_gcc.h | 168 + deps/v8/src/base/build_config.h | 21 +- deps/v8/src/base/compiler-specific.h | 23 + deps/v8/src/base/cpu.cc | 90 +- deps/v8/src/base/cpu.h | 17 + deps/v8/src/base/logging.cc | 38 +- deps/v8/src/base/logging.h | 257 +- deps/v8/src/base/macros.h | 6 +- .../src/base/platform/condition-variable.cc | 2 +- deps/v8/src/base/platform/platform-aix.cc | 292 + deps/v8/src/base/platform/platform-posix.cc | 52 +- deps/v8/src/base/platform/platform-win32.cc | 5 - deps/v8/src/base/platform/platform.h | 3 - deps/v8/src/base/platform/time.cc | 8 +- deps/v8/src/base/platform/time.h | 5 +- deps/v8/src/base/sys-info.cc | 3 + deps/v8/src/bit-vector.h | 8 +- deps/v8/src/bootstrapper.cc | 533 +- deps/v8/src/bootstrapper.h | 13 +- deps/v8/src/builtins.cc | 196 +- deps/v8/src/builtins.h | 67 +- deps/v8/src/checks.cc | 83 +- deps/v8/src/checks.h | 32 +- deps/v8/src/code-factory.cc | 35 +- deps/v8/src/code-factory.h | 11 +- deps/v8/src/code-stubs-hydrogen.cc | 211 +- deps/v8/src/code-stubs.cc | 30 +- deps/v8/src/code-stubs.h | 269 +- deps/v8/src/code.h | 3 +- deps/v8/src/codegen.cc | 18 +- deps/v8/src/codegen.h | 2 + deps/v8/src/compilation-cache.cc | 75 +- deps/v8/src/compilation-cache.h | 28 +- deps/v8/src/compiler.cc | 395 +- deps/v8/src/compiler.h | 201 +- deps/v8/src/compiler/DEPS | 3 + deps/v8/src/compiler/STYLE | 29 + deps/v8/src/compiler/all-nodes.cc | 48 + deps/v8/src/compiler/all-nodes.h | 41 + .../v8/src/compiler/arm/code-generator-arm.cc | 248 +- .../compiler/arm/instruction-selector-arm.cc | 242 +- deps/v8/src/compiler/arm/linkage-arm.cc | 22 +- .../compiler/arm64/code-generator-arm64.cc | 253 +- .../arm64/instruction-selector-arm64.cc | 151 +- deps/v8/src/compiler/arm64/linkage-arm64.cc | 22 +- deps/v8/src/compiler/ast-graph-builder.cc | 1514 +- deps/v8/src/compiler/ast-graph-builder.h | 437 +- .../compiler/ast-loop-assignment-analyzer.cc | 8 +- .../compiler/ast-loop-assignment-analyzer.h | 1 - .../src/compiler/basic-block-instrumentor.cc | 1 + .../src/compiler/basic-block-instrumentor.h | 2 - deps/v8/src/compiler/change-lowering.cc | 17 +- deps/v8/src/compiler/change-lowering.h | 5 +- deps/v8/src/compiler/code-generator-impl.h | 2 + deps/v8/src/compiler/code-generator.cc | 74 +- deps/v8/src/compiler/code-generator.h | 18 +- .../src/compiler/common-operator-reducer.cc | 1 + deps/v8/src/compiler/common-operator.cc | 166 +- deps/v8/src/compiler/common-operator.h | 21 +- deps/v8/src/compiler/control-builders.cc | 72 +- deps/v8/src/compiler/control-builders.h | 84 +- deps/v8/src/compiler/control-equivalence.h | 8 +- .../v8/src/compiler/control-flow-optimizer.cc | 142 + deps/v8/src/compiler/control-flow-optimizer.h | 52 + deps/v8/src/compiler/control-reducer.cc | 265 +- deps/v8/src/compiler/control-reducer.h | 15 +- deps/v8/src/compiler/diamond.h | 4 +- deps/v8/src/compiler/frame.h | 17 +- deps/v8/src/compiler/graph-builder.cc | 279 - deps/v8/src/compiler/graph-builder.h | 182 +- deps/v8/src/compiler/graph-inl.h | 2 +- deps/v8/src/compiler/graph-reducer.cc | 14 +- deps/v8/src/compiler/graph-reducer.h | 7 +- deps/v8/src/compiler/graph-replay.cc | 32 +- deps/v8/src/compiler/graph-replay.h | 6 +- deps/v8/src/compiler/graph-visualizer.cc | 152 +- deps/v8/src/compiler/graph-visualizer.h | 5 +- deps/v8/src/compiler/graph.cc | 50 +- deps/v8/src/compiler/graph.h | 82 +- .../src/compiler/ia32/code-generator-ia32.cc | 109 +- .../ia32/instruction-selector-ia32.cc | 165 +- deps/v8/src/compiler/ia32/linkage-ia32.cc | 22 +- deps/v8/src/compiler/instruction-codes.h | 10 +- .../src/compiler/instruction-selector-impl.h | 196 +- deps/v8/src/compiler/instruction-selector.cc | 303 +- deps/v8/src/compiler/instruction-selector.h | 85 +- deps/v8/src/compiler/instruction.cc | 143 +- deps/v8/src/compiler/instruction.h | 368 +- deps/v8/src/compiler/js-builtin-reducer.cc | 7 +- .../src/compiler/js-context-specialization.cc | 17 +- .../src/compiler/js-context-specialization.h | 6 +- deps/v8/src/compiler/js-generic-lowering.cc | 233 +- deps/v8/src/compiler/js-generic-lowering.h | 13 +- deps/v8/src/compiler/js-graph.cc | 26 +- deps/v8/src/compiler/js-graph.h | 29 +- deps/v8/src/compiler/js-inlining.cc | 225 +- deps/v8/src/compiler/js-inlining.h | 9 +- deps/v8/src/compiler/js-intrinsic-builder.cc | 140 - deps/v8/src/compiler/js-intrinsic-builder.h | 40 - deps/v8/src/compiler/js-intrinsic-lowering.cc | 194 + deps/v8/src/compiler/js-intrinsic-lowering.h | 52 + deps/v8/src/compiler/js-operator.cc | 39 +- deps/v8/src/compiler/js-operator.h | 15 +- deps/v8/src/compiler/js-typed-lowering.cc | 104 +- deps/v8/src/compiler/jump-threading.cc | 2 +- deps/v8/src/compiler/linkage-impl.h | 41 +- deps/v8/src/compiler/linkage.cc | 179 +- deps/v8/src/compiler/linkage.h | 53 +- deps/v8/src/compiler/load-elimination.cc | 2 +- deps/v8/src/compiler/loop-analysis.cc | 330 +- deps/v8/src/compiler/loop-analysis.h | 28 +- deps/v8/src/compiler/loop-peeling.cc | 339 + deps/v8/src/compiler/loop-peeling.h | 42 + .../src/compiler/machine-operator-reducer.cc | 165 +- .../src/compiler/machine-operator-reducer.h | 1 + deps/v8/src/compiler/machine-operator.cc | 2 - .../src/compiler/mips/code-generator-mips.cc | 362 +- .../mips/instruction-selector-mips.cc | 171 +- deps/v8/src/compiler/mips/linkage-mips.cc | 22 +- .../compiler/mips64/code-generator-mips64.cc | 475 +- .../mips64/instruction-selector-mips64.cc | 178 +- deps/v8/src/compiler/mips64/linkage-mips64.cc | 22 +- deps/v8/src/compiler/move-optimizer.cc | 232 +- deps/v8/src/compiler/move-optimizer.h | 8 +- deps/v8/src/compiler/node-aux-data-inl.h | 43 - deps/v8/src/compiler/node-aux-data.h | 25 +- deps/v8/src/compiler/node-cache.cc | 4 +- deps/v8/src/compiler/node-marker.cc | 40 + deps/v8/src/compiler/node-marker.h | 62 + deps/v8/src/compiler/node-properties-inl.h | 226 - deps/v8/src/compiler/node-properties.cc | 247 + deps/v8/src/compiler/node-properties.h | 141 +- deps/v8/src/compiler/node.cc | 236 +- deps/v8/src/compiler/node.h | 547 +- deps/v8/src/compiler/opcodes.cc | 2 +- deps/v8/src/compiler/opcodes.h | 91 +- deps/v8/src/compiler/operator-properties.cc | 18 +- deps/v8/src/compiler/operator.cc | 13 +- deps/v8/src/compiler/operator.h | 22 +- deps/v8/src/compiler/osr.cc | 286 + deps/v8/src/compiler/osr.h | 127 + deps/v8/src/compiler/pipeline-statistics.cc | 2 +- deps/v8/src/compiler/pipeline.cc | 582 +- deps/v8/src/compiler/pipeline.h | 16 +- .../v8/src/compiler/ppc/code-generator-ppc.cc | 1363 ++ .../src/compiler/ppc/instruction-codes-ppc.h | 125 + .../compiler/ppc/instruction-selector-ppc.cc | 1383 ++ deps/v8/src/compiler/ppc/linkage-ppc.cc | 69 + deps/v8/src/compiler/raw-machine-assembler.cc | 40 +- deps/v8/src/compiler/raw-machine-assembler.h | 12 +- .../compiler/register-allocator-verifier.cc | 548 +- .../compiler/register-allocator-verifier.h | 7 +- deps/v8/src/compiler/register-allocator.cc | 209 +- deps/v8/src/compiler/register-allocator.h | 62 +- .../v8/src/compiler/register-configuration.cc | 1 + deps/v8/src/compiler/register-configuration.h | 2 +- deps/v8/src/compiler/representation-change.h | 41 +- deps/v8/src/compiler/schedule.cc | 90 +- deps/v8/src/compiler/schedule.h | 76 +- deps/v8/src/compiler/scheduler.cc | 370 +- deps/v8/src/compiler/scheduler.h | 20 +- deps/v8/src/compiler/select-lowering.cc | 2 +- deps/v8/src/compiler/simplified-lowering.cc | 155 +- deps/v8/src/compiler/simplified-lowering.h | 14 +- .../compiler/simplified-operator-reducer.cc | 3 +- .../compiler/simplified-operator-reducer.h | 1 + deps/v8/src/compiler/simplified-operator.cc | 55 +- deps/v8/src/compiler/simplified-operator.h | 2 + deps/v8/src/compiler/source-position.cc | 4 +- deps/v8/src/compiler/typer.cc | 388 +- deps/v8/src/compiler/typer.h | 11 +- .../src/compiler/value-numbering-reducer.cc | 4 +- deps/v8/src/compiler/verifier.cc | 175 +- deps/v8/src/compiler/verifier.h | 2 +- .../v8/src/compiler/x64/code-generator-x64.cc | 139 +- .../compiler/x64/instruction-selector-x64.cc | 189 +- deps/v8/src/compiler/x64/linkage-x64.cc | 22 +- deps/v8/src/compiler/zone-pool.cc | 9 +- deps/v8/src/compiler/zone-pool.h | 5 +- deps/v8/src/contexts.cc | 4 - deps/v8/src/contexts.h | 25 +- deps/v8/src/counters.cc | 22 +- deps/v8/src/counters.h | 153 +- deps/v8/src/cpu-profiler-inl.h | 6 + deps/v8/src/cpu-profiler.cc | 27 + deps/v8/src/cpu-profiler.h | 26 +- deps/v8/src/d8.cc | 272 +- deps/v8/src/d8.gyp | 4 +- deps/v8/src/d8.h | 16 +- deps/v8/src/date.cc | 4 +- deps/v8/src/date.js | 6 + deps/v8/src/debug.cc | 8 +- deps/v8/src/deoptimizer.cc | 106 +- deps/v8/src/deoptimizer.h | 116 +- deps/v8/src/disassembler.cc | 29 +- deps/v8/src/elements.cc | 118 +- deps/v8/src/elements.h | 16 +- deps/v8/src/execution.cc | 107 +- deps/v8/src/execution.h | 6 - .../v8/src/extensions/statistics-extension.cc | 141 +- deps/v8/src/factory.cc | 250 +- deps/v8/src/factory.h | 25 +- deps/v8/src/field-index-inl.h | 13 +- deps/v8/src/flag-definitions.h | 79 +- deps/v8/src/flags.cc | 3 + deps/v8/src/frames-inl.h | 2 + deps/v8/src/frames.cc | 4 +- deps/v8/src/full-codegen.cc | 118 +- deps/v8/src/full-codegen.h | 41 +- deps/v8/src/gdb-jit.cc | 6 +- deps/v8/src/global-handles.cc | 193 +- deps/v8/src/global-handles.h | 41 +- deps/v8/src/globals.h | 126 +- deps/v8/src/harmony-array.js | 42 +- deps/v8/src/harmony-classes.js | 35 - deps/v8/src/harmony-tostring.js | 19 +- deps/v8/src/heap-snapshot-generator.cc | 24 +- deps/v8/src/heap/gc-tracer.cc | 16 +- deps/v8/src/heap/gc-tracer.h | 11 +- deps/v8/src/heap/heap-inl.h | 21 - deps/v8/src/heap/heap.cc | 264 +- deps/v8/src/heap/heap.h | 265 +- deps/v8/src/heap/incremental-marking.cc | 37 +- deps/v8/src/heap/incremental-marking.h | 17 + deps/v8/src/heap/mark-compact.cc | 367 +- deps/v8/src/heap/mark-compact.h | 20 +- deps/v8/src/heap/objects-visiting-inl.h | 43 +- deps/v8/src/heap/objects-visiting.cc | 9 +- deps/v8/src/heap/spaces-inl.h | 14 +- deps/v8/src/heap/spaces.cc | 216 +- deps/v8/src/heap/spaces.h | 91 +- deps/v8/src/heap/store-buffer.cc | 28 +- deps/v8/src/hydrogen-bce.cc | 3 +- deps/v8/src/hydrogen-bch.cc | 6 +- deps/v8/src/hydrogen-check-elimination.cc | 19 +- deps/v8/src/hydrogen-dce.cc | 3 +- deps/v8/src/hydrogen-escape-analysis.cc | 8 +- deps/v8/src/hydrogen-gvn.h | 1 - deps/v8/src/hydrogen-instructions.cc | 370 +- deps/v8/src/hydrogen-instructions.h | 597 +- deps/v8/src/hydrogen-types.cc | 3 +- deps/v8/src/hydrogen-types.h | 33 +- deps/v8/src/hydrogen.cc | 731 +- deps/v8/src/hydrogen.h | 326 +- deps/v8/src/ia32/assembler-ia32.cc | 140 +- deps/v8/src/ia32/assembler-ia32.h | 32 +- deps/v8/src/ia32/builtins-ia32.cc | 155 +- deps/v8/src/ia32/code-stubs-ia32.cc | 488 +- deps/v8/src/ia32/deoptimizer-ia32.cc | 6 +- deps/v8/src/ia32/disasm-ia32.cc | 4 +- deps/v8/src/ia32/full-codegen-ia32.cc | 344 +- .../v8/src/ia32/interface-descriptors-ia32.cc | 47 +- deps/v8/src/ia32/lithium-codegen-ia32.cc | 373 +- deps/v8/src/ia32/lithium-codegen-ia32.h | 21 +- deps/v8/src/ia32/lithium-ia32.cc | 32 +- deps/v8/src/ia32/lithium-ia32.h | 16 +- deps/v8/src/ia32/macro-assembler-ia32.cc | 219 +- deps/v8/src/ia32/macro-assembler-ia32.h | 26 +- .../src/ia32/regexp-macro-assembler-ia32.cc | 11 +- .../v8/src/ia32/regexp-macro-assembler-ia32.h | 3 +- deps/v8/src/ic/arm/handler-compiler-arm.cc | 149 +- deps/v8/src/ic/arm/ic-arm.cc | 174 +- deps/v8/src/ic/arm/ic-compiler-arm.cc | 17 +- .../v8/src/ic/arm64/handler-compiler-arm64.cc | 151 +- deps/v8/src/ic/arm64/ic-arm64.cc | 195 +- deps/v8/src/ic/arm64/ic-compiler-arm64.cc | 17 +- deps/v8/src/ic/call-optimization.cc | 32 +- deps/v8/src/ic/call-optimization.h | 7 +- deps/v8/src/ic/handler-compiler.cc | 119 +- deps/v8/src/ic/handler-compiler.h | 81 +- deps/v8/src/ic/ia32/handler-compiler-ia32.cc | 166 +- deps/v8/src/ic/ia32/ic-compiler-ia32.cc | 17 +- deps/v8/src/ic/ia32/ic-ia32.cc | 166 +- deps/v8/src/ic/ic-compiler.cc | 61 +- deps/v8/src/ic/ic-compiler.h | 21 +- deps/v8/src/ic/ic-inl.h | 42 +- deps/v8/src/ic/ic-state.cc | 348 +- deps/v8/src/ic/ic-state.h | 27 +- deps/v8/src/ic/ic.cc | 549 +- deps/v8/src/ic/ic.h | 116 +- deps/v8/src/ic/mips/handler-compiler-mips.cc | 158 +- deps/v8/src/ic/mips/ic-compiler-mips.cc | 17 +- deps/v8/src/ic/mips/ic-mips.cc | 174 +- .../src/ic/mips64/handler-compiler-mips64.cc | 158 +- deps/v8/src/ic/mips64/ic-compiler-mips64.cc | 17 +- deps/v8/src/ic/mips64/ic-mips64.cc | 181 +- deps/v8/src/ic/ppc/handler-compiler-ppc.cc | 253 +- deps/v8/src/ic/ppc/ic-compiler-ppc.cc | 29 +- deps/v8/src/ic/ppc/ic-ppc.cc | 230 +- deps/v8/src/ic/ppc/stub-cache-ppc.cc | 78 +- deps/v8/src/ic/x64/handler-compiler-x64.cc | 158 +- deps/v8/src/ic/x64/ic-compiler-x64.cc | 17 +- deps/v8/src/ic/x64/ic-x64.cc | 166 +- deps/v8/src/ic/x64/stub-cache-x64.cc | 2 +- deps/v8/src/ic/x87/handler-compiler-x87.cc | 166 +- deps/v8/src/ic/x87/ic-compiler-x87.cc | 17 +- deps/v8/src/ic/x87/ic-x87.cc | 168 +- deps/v8/src/interface-descriptors.h | 32 +- deps/v8/src/interface.cc | 266 - deps/v8/src/interface.h | 215 - deps/v8/src/isolate-inl.h | 5 - deps/v8/src/isolate.cc | 120 +- deps/v8/src/isolate.h | 62 +- deps/v8/src/json-parser.h | 12 +- deps/v8/src/json-stringifier.h | 2 +- deps/v8/src/jsregexp.cc | 136 +- deps/v8/src/jsregexp.h | 26 +- deps/v8/src/layout-descriptor-inl.h | 2 +- deps/v8/src/layout-descriptor.cc | 31 +- deps/v8/src/layout-descriptor.h | 10 +- deps/v8/src/list.h | 2 +- deps/v8/src/lithium-allocator-inl.h | 2 + deps/v8/src/lithium-allocator.cc | 7 +- deps/v8/src/lithium-allocator.h | 2 +- deps/v8/src/lithium-codegen.cc | 71 +- deps/v8/src/lithium-codegen.h | 2 +- deps/v8/src/lithium-inl.h | 2 + deps/v8/src/lithium.cc | 55 + deps/v8/src/lithium.h | 1 + deps/v8/src/liveedit.cc | 21 +- deps/v8/src/log-utils.h | 8 +- deps/v8/src/log.cc | 19 +- deps/v8/src/log.h | 3 +- deps/v8/src/lookup-inl.h | 4 +- deps/v8/src/lookup.cc | 53 +- deps/v8/src/lookup.h | 23 +- deps/v8/src/macro-assembler.h | 7 + deps/v8/src/macros.py | 18 - deps/v8/src/messages.h | 10 +- deps/v8/src/messages.js | 22 +- deps/v8/src/mips/assembler-mips-inl.h | 4 +- deps/v8/src/mips/assembler-mips.cc | 185 +- deps/v8/src/mips/assembler-mips.h | 21 +- deps/v8/src/mips/builtins-mips.cc | 153 +- deps/v8/src/mips/code-stubs-mips.cc | 413 +- deps/v8/src/mips/codegen-mips.cc | 11 +- deps/v8/src/mips/constants-mips.h | 1 + deps/v8/src/mips/deoptimizer-mips.cc | 3 + deps/v8/src/mips/full-codegen-mips.cc | 357 +- .../v8/src/mips/interface-descriptors-mips.cc | 45 +- deps/v8/src/mips/lithium-codegen-mips.cc | 323 +- deps/v8/src/mips/lithium-codegen-mips.h | 23 +- deps/v8/src/mips/lithium-mips.cc | 32 +- deps/v8/src/mips/lithium-mips.h | 15 +- deps/v8/src/mips/macro-assembler-mips.cc | 169 +- deps/v8/src/mips/macro-assembler-mips.h | 21 +- .../src/mips/regexp-macro-assembler-mips.cc | 11 +- .../v8/src/mips/regexp-macro-assembler-mips.h | 3 +- deps/v8/src/mips/simulator-mips.cc | 3 +- deps/v8/src/mips64/assembler-mips64-inl.h | 4 +- deps/v8/src/mips64/assembler-mips64.cc | 105 +- deps/v8/src/mips64/assembler-mips64.h | 23 +- deps/v8/src/mips64/builtins-mips64.cc | 154 +- deps/v8/src/mips64/code-stubs-mips64.cc | 416 +- deps/v8/src/mips64/codegen-mips64.cc | 8 +- deps/v8/src/mips64/constants-mips64.h | 1 + deps/v8/src/mips64/deoptimizer-mips64.cc | 3 + deps/v8/src/mips64/full-codegen-mips64.cc | 359 +- .../mips64/interface-descriptors-mips64.cc | 45 +- deps/v8/src/mips64/lithium-codegen-mips64.cc | 350 +- deps/v8/src/mips64/lithium-codegen-mips64.h | 23 +- deps/v8/src/mips64/lithium-mips64.cc | 32 +- deps/v8/src/mips64/lithium-mips64.h | 14 +- deps/v8/src/mips64/macro-assembler-mips64.cc | 175 +- deps/v8/src/mips64/macro-assembler-mips64.h | 21 +- .../mips64/regexp-macro-assembler-mips64.cc | 11 +- .../mips64/regexp-macro-assembler-mips64.h | 3 +- deps/v8/src/mips64/simulator-mips64.cc | 5 +- deps/v8/src/mirror-debugger.js | 28 +- deps/v8/src/mksnapshot.cc | 32 +- deps/v8/src/modules.cc | 38 + deps/v8/src/modules.h | 99 + deps/v8/src/objects-debug.cc | 129 +- deps/v8/src/objects-inl.h | 333 +- deps/v8/src/objects-printer.cc | 51 +- deps/v8/src/objects.cc | 2476 ++- deps/v8/src/objects.h | 670 +- deps/v8/src/optimizing-compiler-thread.cc | 35 +- deps/v8/src/ostreams.cc | 19 +- deps/v8/src/ostreams.h | 24 +- deps/v8/src/parser.cc | 1680 +- deps/v8/src/parser.h | 183 +- deps/v8/src/perf-jit.cc | 2 +- deps/v8/src/ppc/assembler-ppc.cc | 191 +- deps/v8/src/ppc/assembler-ppc.h | 86 +- deps/v8/src/ppc/builtins-ppc.cc | 151 +- deps/v8/src/ppc/code-stubs-ppc.cc | 728 +- deps/v8/src/ppc/code-stubs-ppc.h | 8 +- deps/v8/src/ppc/codegen-ppc.cc | 95 +- deps/v8/src/ppc/constants-ppc.h | 54 +- deps/v8/src/ppc/deoptimizer-ppc.cc | 11 +- deps/v8/src/ppc/disasm-ppc.cc | 145 +- deps/v8/src/ppc/full-codegen-ppc.cc | 360 +- deps/v8/src/ppc/interface-descriptors-ppc.cc | 54 +- deps/v8/src/ppc/lithium-codegen-ppc.cc | 757 +- deps/v8/src/ppc/lithium-codegen-ppc.h | 12 +- deps/v8/src/ppc/lithium-ppc.cc | 94 +- deps/v8/src/ppc/lithium-ppc.h | 35 +- deps/v8/src/ppc/macro-assembler-ppc.cc | 378 +- deps/v8/src/ppc/macro-assembler-ppc.h | 89 +- deps/v8/src/ppc/regexp-macro-assembler-ppc.cc | 12 +- deps/v8/src/ppc/regexp-macro-assembler-ppc.h | 3 +- deps/v8/src/ppc/simulator-ppc.cc | 387 +- deps/v8/src/ppc/simulator-ppc.h | 20 +- deps/v8/src/preparse-data-format.h | 2 +- deps/v8/src/preparse-data.cc | 3 +- deps/v8/src/preparse-data.h | 41 +- deps/v8/src/preparser.cc | 299 +- deps/v8/src/preparser.h | 869 +- deps/v8/src/prettyprinter.cc | 441 +- deps/v8/src/prettyprinter.h | 43 +- deps/v8/src/profile-generator-inl.h | 2 + deps/v8/src/profile-generator.cc | 56 +- deps/v8/src/profile-generator.h | 32 +- deps/v8/src/property-details.h | 21 +- deps/v8/src/property.cc | 35 +- deps/v8/src/property.h | 177 +- .../v8/src/regexp-macro-assembler-irregexp.cc | 7 +- deps/v8/src/regexp-macro-assembler-irregexp.h | 3 +- deps/v8/src/regexp-macro-assembler-tracer.cc | 5 +- deps/v8/src/regexp-macro-assembler-tracer.h | 2 +- deps/v8/src/regexp-macro-assembler.cc | 16 +- deps/v8/src/regexp-macro-assembler.h | 7 +- deps/v8/src/regexp.js | 3 + deps/v8/src/rewriter.cc | 8 +- deps/v8/src/runtime-profiler.cc | 8 +- deps/v8/src/runtime.js | 18 +- deps/v8/src/runtime/runtime-api.cc | 127 - deps/v8/src/runtime/runtime-array.cc | 50 +- deps/v8/src/runtime/runtime-classes.cc | 149 +- deps/v8/src/runtime/runtime-collections.cc | 58 +- deps/v8/src/runtime/runtime-compiler.cc | 51 +- deps/v8/src/runtime/runtime-date.cc | 2 +- deps/v8/src/runtime/runtime-debug.cc | 16 +- deps/v8/src/runtime/runtime-function.cc | 45 +- deps/v8/src/runtime/runtime-i18n.cc | 9 +- deps/v8/src/runtime/runtime-internal.cc | 33 + deps/v8/src/runtime/runtime-maths.cc | 20 +- deps/v8/src/runtime/runtime-numbers.cc | 5 +- deps/v8/src/runtime/runtime-object.cc | 197 +- deps/v8/src/runtime/runtime-regexp.cc | 14 +- deps/v8/src/runtime/runtime-scopes.cc | 86 +- deps/v8/src/runtime/runtime-test.cc | 56 +- deps/v8/src/runtime/runtime-typedarray.cc | 2 + deps/v8/src/runtime/runtime-utils.h | 23 +- deps/v8/src/runtime/runtime.cc | 4 +- deps/v8/src/runtime/runtime.h | 46 +- deps/v8/src/safepoint-table.cc | 1 - deps/v8/src/sampler.cc | 20 +- deps/v8/src/scanner-character-streams.cc | 87 +- deps/v8/src/scanner-character-streams.h | 53 +- deps/v8/src/scanner.cc | 11 +- deps/v8/src/scanner.h | 19 +- deps/v8/src/scopeinfo.cc | 41 +- deps/v8/src/scopeinfo.h | 6 +- deps/v8/src/scopes.cc | 264 +- deps/v8/src/scopes.h | 134 +- deps/v8/src/serialize.cc | 411 +- deps/v8/src/serialize.h | 182 +- deps/v8/src/simulator.h | 2 + deps/v8/src/snapshot-common.cc | 153 +- deps/v8/src/snapshot-external.cc | 14 +- deps/v8/src/snapshot.h | 54 +- deps/v8/src/startup-data-util.cc | 91 + deps/v8/src/startup-data-util.h | 51 + deps/v8/src/string-stream.cc | 2 +- deps/v8/src/third_party/fdlibm/fdlibm.cc | 12 +- deps/v8/src/third_party/fdlibm/fdlibm.js | 11 +- deps/v8/src/token.h | 7 +- deps/v8/src/transitions.cc | 2 +- deps/v8/src/type-feedback-vector-inl.h | 5 - deps/v8/src/type-feedback-vector.cc | 87 +- deps/v8/src/type-feedback-vector.h | 24 +- deps/v8/src/type-info.cc | 21 +- deps/v8/src/type-info.h | 9 +- deps/v8/src/types-inl.h | 139 +- deps/v8/src/types.cc | 566 +- deps/v8/src/types.h | 233 +- deps/v8/src/typing.cc | 23 +- deps/v8/src/typing.h | 5 +- deps/v8/src/unicode-decoder.cc | 12 +- deps/v8/src/unicode-decoder.h | 45 +- deps/v8/src/unicode-inl.h | 2 +- deps/v8/src/unicode.cc | 4 +- deps/v8/src/unicode.h | 8 +- deps/v8/src/unique.h | 2 +- deps/v8/src/utils.cc | 4 +- deps/v8/src/utils.h | 184 +- deps/v8/src/v8.cc | 3 - deps/v8/src/v8.h | 4 +- deps/v8/src/v8natives.js | 9 + deps/v8/src/variables.cc | 6 +- deps/v8/src/variables.h | 15 +- deps/v8/src/vector.h | 4 +- deps/v8/src/version.cc | 66 +- deps/v8/src/x64/assembler-x64-inl.h | 9 +- deps/v8/src/x64/assembler-x64.cc | 190 +- deps/v8/src/x64/assembler-x64.h | 26 +- deps/v8/src/x64/builtins-x64.cc | 149 +- deps/v8/src/x64/code-stubs-x64.cc | 472 +- deps/v8/src/x64/deoptimizer-x64.cc | 2 + deps/v8/src/x64/disasm-x64.cc | 6 +- deps/v8/src/x64/full-codegen-x64.cc | 341 +- deps/v8/src/x64/interface-descriptors-x64.cc | 47 +- deps/v8/src/x64/lithium-codegen-x64.cc | 359 +- deps/v8/src/x64/lithium-codegen-x64.h | 19 +- deps/v8/src/x64/lithium-x64.cc | 29 +- deps/v8/src/x64/lithium-x64.h | 25 +- deps/v8/src/x64/macro-assembler-x64.cc | 262 +- deps/v8/src/x64/macro-assembler-x64.h | 24 +- deps/v8/src/x64/regexp-macro-assembler-x64.cc | 11 +- deps/v8/src/x64/regexp-macro-assembler-x64.h | 3 +- deps/v8/src/x87/assembler-x87.cc | 71 +- deps/v8/src/x87/assembler-x87.h | 32 +- deps/v8/src/x87/builtins-x87.cc | 155 +- deps/v8/src/x87/code-stubs-x87.cc | 488 +- deps/v8/src/x87/deoptimizer-x87.cc | 6 +- deps/v8/src/x87/disasm-x87.cc | 4 +- deps/v8/src/x87/full-codegen-x87.cc | 344 +- deps/v8/src/x87/interface-descriptors-x87.cc | 47 +- deps/v8/src/x87/lithium-codegen-x87.cc | 385 +- deps/v8/src/x87/lithium-codegen-x87.h | 20 +- deps/v8/src/x87/lithium-x87.cc | 26 +- deps/v8/src/x87/lithium-x87.h | 16 +- deps/v8/src/x87/macro-assembler-x87.cc | 212 +- deps/v8/src/x87/macro-assembler-x87.h | 25 +- deps/v8/src/x87/regexp-macro-assembler-x87.cc | 11 +- deps/v8/src/x87/regexp-macro-assembler-x87.h | 3 +- deps/v8/src/zone-containers.h | 31 +- deps/v8/src/zone-inl.h | 70 - deps/v8/src/zone.cc | 141 +- deps/v8/src/zone.h | 104 +- deps/v8/test/benchmarks/testcfg.py | 2 +- deps/v8/test/cctest/cctest.cc | 7 + deps/v8/test/cctest/cctest.gyp | 28 +- deps/v8/test/cctest/cctest.h | 62 +- deps/v8/test/cctest/cctest.status | 45 +- deps/v8/test/cctest/compiler/call-tester.h | 5 +- .../v8/test/cctest/compiler/codegen-tester.cc | 10 +- deps/v8/test/cctest/compiler/codegen-tester.h | 16 +- .../v8/test/cctest/compiler/function-tester.h | 6 +- .../cctest/compiler/graph-builder-tester.cc | 12 +- .../cctest/compiler/graph-builder-tester.h | 12 +- .../compiler/simplified-graph-builder.cc | 4 +- .../compiler/simplified-graph-builder.h | 4 +- .../compiler/test-basic-block-profiler.cc | 2 +- .../cctest/compiler/test-branch-combine.cc | 8 +- .../cctest/compiler/test-changes-lowering.cc | 15 +- .../cctest/compiler/test-codegen-deopt.cc | 7 +- .../cctest/compiler/test-control-reducer.cc | 259 +- .../test/cctest/compiler/test-gap-resolver.cc | 10 +- .../cctest/compiler/test-graph-reducer.cc | 622 - .../cctest/compiler/test-graph-visualizer.cc | 13 +- .../test/cctest/compiler/test-instruction.cc | 113 +- .../cctest/compiler/test-js-constant-cache.cc | 26 +- .../test-js-context-specialization.cc | 17 +- .../cctest/compiler/test-js-typed-lowering.cc | 81 +- .../cctest/compiler/test-jump-threading.cc | 24 +- deps/v8/test/cctest/compiler/test-linkage.cc | 34 +- .../cctest/compiler/test-loop-analysis.cc | 165 +- .../compiler/test-loop-assignment-analysis.cc | 8 +- .../compiler/test-machine-operator-reducer.cc | 146 +- .../test/cctest/compiler/test-node-cache.cc | 14 +- deps/v8/test/cctest/compiler/test-node.cc | 216 +- deps/v8/test/cctest/compiler/test-operator.cc | 20 +- deps/v8/test/cctest/compiler/test-osr.cc | 486 + .../compiler/test-representation-change.cc | 24 +- .../cctest/compiler/test-run-intrinsics.cc | 18 - .../cctest/compiler/test-run-jsbranches.cc | 27 + .../test/cctest/compiler/test-run-jscalls.cc | 20 - .../cctest/compiler/test-run-jsexceptions.cc | 115 + .../v8/test/cctest/compiler/test-run-jsops.cc | 23 +- .../test/cctest/compiler/test-run-machops.cc | 335 +- deps/v8/test/cctest/compiler/test-schedule.cc | 177 - .../v8/test/cctest/compiler/test-scheduler.cc | 2124 -- .../compiler/test-simplified-lowering.cc | 66 +- deps/v8/test/cctest/compiler/value-helper.h | 6 +- deps/v8/test/cctest/test-accessors.cc | 18 +- deps/v8/test/cctest/test-alloc.cc | 4 +- deps/v8/test/cctest/test-api-interceptors.cc | 3110 +++ deps/v8/test/cctest/test-api.cc | 17319 +++++++--------- deps/v8/test/cctest/test-api.h | 34 + deps/v8/test/cctest/test-assembler-arm.cc | 224 +- deps/v8/test/cctest/test-assembler-arm64.cc | 8 +- deps/v8/test/cctest/test-assembler-ia32.cc | 106 +- deps/v8/test/cctest/test-assembler-mips.cc | 364 +- deps/v8/test/cctest/test-assembler-mips64.cc | 333 +- deps/v8/test/cctest/test-assembler-ppc.cc | 1060 + deps/v8/test/cctest/test-assembler-x64.cc | 151 +- deps/v8/test/cctest/test-assembler-x87.cc | 96 +- deps/v8/test/cctest/test-ast.cc | 3 +- deps/v8/test/cctest/test-bignum-dtoa.cc | 72 +- deps/v8/test/cctest/test-bignum.cc | 620 +- deps/v8/test/cctest/test-bit-vector.cc | 2 +- deps/v8/test/cctest/test-checks.cc | 26 - deps/v8/test/cctest/test-circular-queue.cc | 42 +- deps/v8/test/cctest/test-code-stubs.cc | 33 +- deps/v8/test/cctest/test-compiler.cc | 122 +- deps/v8/test/cctest/test-conversions.cc | 16 +- deps/v8/test/cctest/test-cpu-profiler.cc | 511 +- deps/v8/test/cctest/test-debug.cc | 25 +- .../test/cctest/test-declarative-accessors.cc | 302 - deps/v8/test/cctest/test-decls.cc | 32 +- deps/v8/test/cctest/test-deoptimization.cc | 2 +- deps/v8/test/cctest/test-disasm-ppc.cc | 155 + deps/v8/test/cctest/test-double.cc | 4 +- deps/v8/test/cctest/test-dtoa.cc | 74 +- deps/v8/test/cctest/test-fast-dtoa.cc | 48 +- deps/v8/test/cctest/test-feedback-vector.cc | 98 +- deps/v8/test/cctest/test-fixed-dtoa.cc | 220 +- deps/v8/test/cctest/test-flags.cc | 2 +- .../test/cctest/test-func-name-inference.cc | 2 +- deps/v8/test/cctest/test-global-object.cc | 2 +- deps/v8/test/cctest/test-hashing.cc | 8 + deps/v8/test/cctest/test-hashmap.cc | 16 +- deps/v8/test/cctest/test-heap-profiler.cc | 537 +- deps/v8/test/cctest/test-heap.cc | 128 +- deps/v8/test/cctest/test-liveedit.cc | 2 +- deps/v8/test/cctest/test-lockers.cc | 45 +- deps/v8/test/cctest/test-log-stack-tracer.cc | 8 +- deps/v8/test/cctest/test-log.cc | 17 +- .../test/cctest/test-macro-assembler-arm.cc | 2 +- .../test/cctest/test-macro-assembler-mips.cc | 3 +- deps/v8/test/cctest/test-migrations.cc | 2032 ++ deps/v8/test/cctest/test-object-observe.cc | 5 +- deps/v8/test/cctest/test-parsing.cc | 1386 +- deps/v8/test/cctest/test-platform.cc | 7 +- deps/v8/test/cctest/test-profile-generator.cc | 272 +- deps/v8/test/cctest/test-regexp.cc | 174 +- deps/v8/test/cctest/test-reloc-info.cc | 7 + deps/v8/test/cctest/test-sampler-api.cc | 12 +- deps/v8/test/cctest/test-serialize.cc | 443 +- deps/v8/test/cctest/test-spaces.cc | 18 +- deps/v8/test/cctest/test-strings.cc | 18 +- deps/v8/test/cctest/test-symbols.cc | 2 +- .../v8/test/cctest/test-thread-termination.cc | 59 +- deps/v8/test/cctest/test-transitions.cc | 29 +- deps/v8/test/cctest/test-types.cc | 269 +- deps/v8/test/cctest/test-unboxed-doubles.cc | 218 +- deps/v8/test/cctest/test-unique.cc | 24 +- deps/v8/test/cctest/test-utils.cc | 2 +- deps/v8/test/cctest/test-version.cc | 8 +- deps/v8/test/cctest/test-weakmaps.cc | 30 +- deps/v8/test/cctest/test-weaksets.cc | 25 +- deps/v8/test/cctest/trace-extension.cc | 17 +- deps/v8/test/cctest/types-fuzz.h | 34 +- deps/v8/test/js-perf-test/Classes/super.js | 42 +- .../super-constructor-extra-statement.out | 10 +- deps/v8/test/message/super-constructor.out | 7 +- deps/v8/test/message/super-in-function.js | 10 + deps/v8/test/message/super-in-function.out | 7 + .../v8/test/mjsunit/accessors-no-prototype.js | 51 + deps/v8/test/mjsunit/array-push12.js | 23 + deps/v8/test/mjsunit/asm/int32modb.js | 26 + deps/v8/test/mjsunit/asm/redundancy1.js | 26 + deps/v8/test/mjsunit/asm/redundancy2.js | 29 + deps/v8/test/mjsunit/asm/switch.js | 120 + deps/v8/test/mjsunit/big-array-literal.js | 1 + .../mjsunit/compiler/opt-next-call-turbo.js | 22 + .../v8/test/mjsunit/compiler/opt-next-call.js | 9 + .../test/mjsunit/compiler/optimized-for-in.js | 12 +- .../v8/test/mjsunit/compiler/osr-alignment.js | 17 +- .../test/mjsunit/compiler/osr-backedges1.js | 31 + .../mjsunit/compiler/osr-block-scope-func.js | 27 + .../mjsunit/compiler/osr-block-scope-id.js | 40 + .../test/mjsunit/compiler/osr-block-scope.js | 116 + deps/v8/test/mjsunit/compiler/osr-follow.js | 61 + deps/v8/test/mjsunit/compiler/osr-for-let.js | 82 + deps/v8/test/mjsunit/compiler/osr-forin.js | 26 + deps/v8/test/mjsunit/compiler/osr-forof.js | 35 + .../test/mjsunit/compiler/osr-function-id.js | 33 + .../test/mjsunit/compiler/osr-function-id2.js | 28 + deps/v8/test/mjsunit/compiler/osr-function.js | 31 + deps/v8/test/mjsunit/compiler/osr-manual1.js | 35 + deps/v8/test/mjsunit/compiler/osr-manual2.js | 35 + deps/v8/test/mjsunit/compiler/osr-maze1.js | 51 + deps/v8/test/mjsunit/compiler/osr-maze2.js | 63 + deps/v8/test/mjsunit/compiler/osr-multiple.js | 44 + .../v8/test/mjsunit/compiler/osr-multiple2.js | 51 + .../v8/test/mjsunit/compiler/osr-multiple3.js | 57 + deps/v8/test/mjsunit/compiler/osr-nested2.js | 24 + deps/v8/test/mjsunit/compiler/osr-nested2b.js | 25 + deps/v8/test/mjsunit/compiler/osr-nested3.js | 26 + deps/v8/test/mjsunit/compiler/osr-nested3b.js | 28 + deps/v8/test/mjsunit/compiler/osr-regex-id.js | 54 + deps/v8/test/mjsunit/compiler/osr-sar.js | 2 +- deps/v8/test/mjsunit/compiler/osr-simple.js | 34 +- deps/v8/test/mjsunit/compiler/osr-top1.js | 16 + deps/v8/test/mjsunit/compiler/osr-top2.js | 19 + deps/v8/test/mjsunit/compiler/osr-top3.js | 22 + deps/v8/test/mjsunit/compiler/osr-warm.js | 2 +- .../v8/test/mjsunit/compiler/osr-while-let.js | 58 + deps/v8/test/mjsunit/compiler/regress-3812.js | 19 + .../test/mjsunit/compiler/regress-416359.js | 10 + .../test/mjsunit/compiler/regress-445907.js | 14 + .../test/mjsunit/compiler/regress-446647.js | 11 + .../test/mjsunit/compiler/regress-447567.js | 15 + .../test/mjsunit/compiler/regress-451012.js | 12 + .../test/mjsunit/compiler/regress-452427.js | 18 + .../test/mjsunit/compiler/regress-468162.js | 11 + .../compiler/regress-to-number-binop-deopt.js | 25 + deps/v8/test/mjsunit/count-based-osr.js | 5 +- deps/v8/test/mjsunit/d8-os.js | 2 +- deps/v8/test/mjsunit/debug-script.js | 6 +- deps/v8/test/mjsunit/es6/array-tostring.js | 157 + deps/v8/test/mjsunit/es6/iteration-syntax.js | 48 +- deps/v8/test/mjsunit/es6/object-tostring.js | 14 +- deps/v8/test/mjsunit/harmony/array-concat.js | 4 +- deps/v8/test/mjsunit/harmony/array-from.js | 54 +- deps/v8/test/mjsunit/harmony/array-of.js | 24 +- .../class-computed-property-names-super.js | 76 + .../class-property-name-eval-arguments.js | 79 + .../mjsunit/harmony/classes-experimental.js | 339 + .../mjsunit/harmony/classes-lazy-parsing.js | 21 + .../harmony/classes-subclass-arrays.js | 150 + deps/v8/test/mjsunit/harmony/classes.js | 76 +- .../computed-property-names-classes.js | 390 + ...-property-names-object-literals-methods.js | 121 + .../harmony/computed-property-names-super.js | 79 + .../harmony/computed-property-names.js | 279 + .../harmony/method-name-eval-arguments.js | 35 + .../module-parsing-eval.js} | 35 +- .../v8/test/mjsunit/harmony/module-parsing.js | 190 - deps/v8/test/mjsunit/harmony/modules.js | 8 + .../mjsunit/harmony/object-literals-method.js | 24 + .../object-literals-property-shorthand.js | 22 + .../mjsunit/harmony/object-literals-super.js | 35 - deps/v8/test/mjsunit/harmony/regexp-flags.js | 11 +- .../mjsunit/harmony/regress/regress-455141.js | 15 + .../regress-typedarray-out-of-bounds.js | 10 + .../harmony/rest-params-lazy-parsing.js | 17 + deps/v8/test/mjsunit/harmony/rest-params.js | 182 + deps/v8/test/mjsunit/harmony/super.js | 2497 +-- deps/v8/test/mjsunit/harmony/templates.js | 13 + deps/v8/test/mjsunit/harmony/toMethod.js | 23 +- .../harmony/unicode-escapes-in-regexps.js | 212 + deps/v8/test/mjsunit/mirror-object.js | 6 +- deps/v8/test/mjsunit/mirror-regexp.js | 4 +- deps/v8/test/mjsunit/mjsunit.js | 28 +- deps/v8/test/mjsunit/mjsunit.status | 63 +- .../mjsunit/object-literal-multiple-fields.js | 96 + .../object-literal-multiple-proto-fields.js | 21 + deps/v8/test/mjsunit/osr-elements-kind.js | 3 +- .../mjsunit/property-name-eval-arguments.js | 59 + .../mjsunit/regress-sync-optimized-lists.js | 4 +- .../regress/binop-in-effect-context-deopt.js | 2 +- .../call-function-in-effect-context-deopt.js | 2 +- deps/v8/test/mjsunit/regress/regress-1118.js | 18 +- deps/v8/test/mjsunit/regress/regress-2618.js | 6 +- deps/v8/test/mjsunit/regress/regress-2825.js | 40 + deps/v8/test/mjsunit/regress/regress-3032.js | 4 +- deps/v8/test/mjsunit/regress/regress-3501.js | 11 + .../v8/test/mjsunit/regress/regress-379770.js | 4 +- deps/v8/test/mjsunit/regress/regress-3859.js | 6 + deps/v8/test/mjsunit/regress/regress-3865.js | 14 + deps/v8/test/mjsunit/regress/regress-3884.js | 27 + .../v8/test/mjsunit/regress/regress-437713.js | 26 + .../v8/test/mjsunit/regress/regress-444805.js | 8 + .../mjsunit/regress/regress-444805.js-script | 11 + .../v8/test/mjsunit/regress/regress-446389.js | 12 + .../v8/test/mjsunit/regress/regress-447526.js | 25 + .../v8/test/mjsunit/regress/regress-447561.js | 10 + .../v8/test/mjsunit/regress/regress-448711.js | 15 + .../v8/test/mjsunit/regress/regress-449070.js | 10 + .../v8/test/mjsunit/regress/regress-449291.js | 19 + .../v8/test/mjsunit/regress/regress-450895.js | 9 + .../v8/test/mjsunit/regress/regress-451322.js | 17 + .../v8/test/mjsunit/regress/regress-451958.js | 31 + .../v8/test/mjsunit/regress/regress-453481.js | 127 + .../v8/test/mjsunit/regress/regress-454725.js | 42 + .../{regress-634.js => regress-455212.js} | 13 +- .../v8/test/mjsunit/regress/regress-457935.js | 26 + .../v8/test/mjsunit/regress/regress-458876.js | 16 + .../v8/test/mjsunit/regress/regress-458987.js | 16 + .../v8/test/mjsunit/regress/regress-459955.js | 10 + .../v8/test/mjsunit/regress/regress-460917.js | 35 + .../v8/test/mjsunit/regress/regress-467481.js | 22 + .../regress/regress-arg-materialize-store.js | 22 + .../mjsunit/regress/regress-bce-underflow.js | 35 + .../mjsunit/regress/regress-crbug-150545.js | 5 +- .../mjsunit/regress/regress-crbug-387599.js | 4 +- .../mjsunit/regress/regress-crbug-448730.js | 14 + .../mjsunit/regress/regress-crbug-450642.js | 5 + .../mjsunit/regress/regress-crbug-450960.js | 20 + .../mjsunit/regress/regress-crbug-451013.js | 11 + .../mjsunit/regress/regress-crbug-451016.js | 10 + .../mjsunit/regress/regress-crbug-451770.js | 15 + .../mjsunit/regress/regress-crbug-454091.js | 9 + .../mjsunit/regress/regress-crbug-455644.js | 12 + .../regress-deoptimize-constant-keyed-load.js | 22 + .../regress/regress-merge-descriptors.js | 2 +- .../mjsunit/regress/regress-undefined-nan.js | 35 + .../mjsunit/regress/regress-undefined-nan2.js | 12 + .../mjsunit/regress/regress-undefined-nan3.js | 32 + .../mjsunit/regress/string-set-char-deopt.js | 2 +- deps/v8/test/mjsunit/strict-mode.js | 89 +- deps/v8/test/mjsunit/strong/classes.js | 17 + deps/v8/test/mjsunit/strong/delete.js | 11 + .../v8/test/mjsunit/strong/empty-statement.js | 18 + deps/v8/test/mjsunit/strong/equality.js | 10 + deps/v8/test/mjsunit/strong/for-in.js | 17 + deps/v8/test/mjsunit/strong/functions.js | 33 + .../strong/mutually-recursive-funcs.js | 25 + deps/v8/test/mjsunit/strong/use-strong.js | 27 + deps/v8/test/mjsunit/strong/var-let-const.js | 22 + deps/v8/test/mjsunit/testcfg.py | 8 +- .../mjsunit/tools/tickprocessor-test.default | 10 +- .../tools/tickprocessor-test.ignore-unknown | 10 +- .../tools/tickprocessor-test.separate-ic | 10 +- deps/v8/test/mjsunit/tools/tickprocessor.js | 8 +- deps/v8/test/mozilla/mozilla.status | 15 +- deps/v8/test/test262-es6/test262-es6.status | 19 +- deps/v8/test/test262/test262.status | 11 + deps/v8/test/unittests/base/cpu-unittest.cc | 2 + .../test/unittests/base/logging-unittest.cc | 19 + .../base/platform/platform-unittest.cc | 18 - .../arm/instruction-selector-arm-unittest.cc | 79 + .../instruction-selector-arm64-unittest.cc | 59 +- .../compiler/change-lowering-unittest.cc | 10 +- .../common-operator-reducer-unittest.cc | 1 + .../compiler/common-operator-unittest.cc | 81 +- .../compiler/control-equivalence-unittest.cc | 2 +- .../control-flow-optimizer-unittest.cc | 70 + .../compiler/control-reducer-unittest.cc | 124 + .../compiler/graph-reducer-unittest.cc | 574 +- .../test/unittests/compiler/graph-unittest.cc | 32 +- .../test/unittests/compiler/graph-unittest.h | 6 +- .../compiler/instruction-selector-unittest.cc | 47 +- .../compiler/instruction-selector-unittest.h | 12 +- .../compiler/instruction-sequence-unittest.cc | 113 +- .../compiler/instruction-sequence-unittest.h | 45 +- .../compiler/js-builtin-reducer-unittest.cc | 16 +- .../js-intrinsic-lowering-unittest.cc | 215 + .../compiler/js-operator-unittest.cc | 20 +- .../compiler/js-typed-lowering-unittest.cc | 68 +- .../compiler/loop-peeling-unittest.cc | 451 + .../machine-operator-reducer-unittest.cc | 45 +- .../instruction-selector-mips-unittest.cc | 10 +- .../instruction-selector-mips64-unittest.cc | 10 +- .../compiler/move-optimizer-unittest.cc | 14 +- .../compiler/node-properties-unittest.cc | 59 + .../unittests/compiler/node-test-utils.cc | 334 +- .../test/unittests/compiler/node-test-utils.h | 27 + .../test/unittests/compiler/node-unittest.cc | 170 + .../unittests/compiler/opcodes-unittest.cc | 122 + .../ppc/instruction-selector-ppc-unittest.cc | 11 + .../compiler/register-allocator-unittest.cc | 42 +- .../unittests/compiler/schedule-unittest.cc | 218 + .../unittests/compiler/scheduler-unittest.cc | 2018 ++ .../simplified-operator-reducer-unittest.cc | 202 +- .../compiler/simplified-operator-unittest.cc | 1 + .../compiler/typer-unittest.cc} | 242 +- .../value-numbering-reducer-unittest.cc | 16 +- .../x64/instruction-selector-x64-unittest.cc | 187 +- .../unittests/compiler/zone-pool-unittest.cc | 8 +- deps/v8/test/unittests/run-all-unittests.cc | 7 + deps/v8/test/unittests/test-utils.cc | 1 + deps/v8/test/unittests/test-utils.h | 21 +- deps/v8/test/unittests/unittests.gyp | 18 + .../exception-for-nonobject-expected.txt | 2 +- .../fast/js/toString-overrides-expected.txt | 5 +- .../webkit/object-literal-syntax-expected.txt | 29 +- deps/v8/test/webkit/object-literal-syntax.js | 28 +- .../webkit/run-json-stringify-expected.txt | 4 +- deps/v8/test/webkit/webkit.status | 6 +- deps/v8/testing/gmock-support.h | 29 +- deps/v8/testing/gtest-support.h | 19 +- deps/v8/tools/gcmole/gcmole.lua | 80 +- deps/v8/tools/gcmole/parallel.py | 44 + deps/v8/tools/grokdump.py | 55 +- deps/v8/tools/gyp/v8.gyp | 101 +- deps/v8/tools/logreader.js | 39 +- deps/v8/tools/ninja/ninja_output.py | 44 + deps/v8/tools/parser-shell.cc | 4 +- deps/v8/tools/presubmit.py | 27 + deps/v8/tools/profile.js | 28 +- .../v8/tools/push-to-trunk/bump_up_version.py | 247 - .../tools/push-to-trunk/generate_version.py | 78 - .../{push-to-trunk => release}/auto_push.py | 65 +- .../{push-to-trunk => release}/auto_roll.py | 34 +- .../{push-to-trunk => release}/auto_tag.py | 0 .../check_clusterfuzz.py | 0 .../chromium_roll.py | 44 +- .../common_includes.py | 121 +- deps/v8/tools/release/create_release.py | 313 + .../{push-to-trunk => release}/git_recipes.py | 0 .../merge_to_branch.py | 26 +- .../push_to_candidates.py} | 208 +- .../{push-to-trunk => release}/releases.py | 165 +- .../{push-to-trunk => release}/script_test.py | 0 .../test_scripts.py | 598 +- deps/v8/tools/run-deopt-fuzzer.py | 6 +- deps/v8/tools/run-tests.py | 82 +- deps/v8/tools/testrunner/local/statusfile.py | 5 +- deps/v8/tools/testrunner/local/testsuite.py | 2 +- deps/v8/tools/testrunner/local/utils.py | 4 + deps/v8/tools/testrunner/objects/context.py | 8 +- deps/v8/tools/tickprocessor-driver.js | 3 +- deps/v8/tools/tickprocessor.js | 16 +- deps/v8/tools/v8heapconst.py | 422 +- deps/v8/tools/vim/ninja-build.vim | 119 + deps/v8/tools/whitespace.txt | 4 +- test/parallel/test-repl.js | 2 - test/parallel/test-v8-features.js | 31 - 981 files changed, 74763 insertions(+), 46156 deletions(-) create mode 100644 deps/v8/.ycm_extra_conf.py create mode 100644 deps/v8/build/mac/asan.gyp create mode 100644 deps/v8/include/v8-version.h create mode 100644 deps/v8/src/api-natives.cc create mode 100644 deps/v8/src/api-natives.h delete mode 100644 deps/v8/src/apinatives.js delete mode 100644 deps/v8/src/ast-this-access-visitor.cc delete mode 100644 deps/v8/src/ast-this-access-visitor.h create mode 100644 deps/v8/src/base/atomicops_internals_ppc_gcc.h create mode 100644 deps/v8/src/base/platform/platform-aix.cc create mode 100644 deps/v8/src/compiler/DEPS create mode 100644 deps/v8/src/compiler/STYLE create mode 100644 deps/v8/src/compiler/all-nodes.cc create mode 100644 deps/v8/src/compiler/all-nodes.h create mode 100644 deps/v8/src/compiler/control-flow-optimizer.cc create mode 100644 deps/v8/src/compiler/control-flow-optimizer.h delete mode 100644 deps/v8/src/compiler/graph-builder.cc delete mode 100644 deps/v8/src/compiler/js-intrinsic-builder.cc delete mode 100644 deps/v8/src/compiler/js-intrinsic-builder.h create mode 100644 deps/v8/src/compiler/js-intrinsic-lowering.cc create mode 100644 deps/v8/src/compiler/js-intrinsic-lowering.h create mode 100644 deps/v8/src/compiler/loop-peeling.cc create mode 100644 deps/v8/src/compiler/loop-peeling.h delete mode 100644 deps/v8/src/compiler/node-aux-data-inl.h create mode 100644 deps/v8/src/compiler/node-marker.cc create mode 100644 deps/v8/src/compiler/node-marker.h delete mode 100644 deps/v8/src/compiler/node-properties-inl.h create mode 100644 deps/v8/src/compiler/node-properties.cc create mode 100644 deps/v8/src/compiler/osr.cc create mode 100644 deps/v8/src/compiler/osr.h create mode 100644 deps/v8/src/compiler/ppc/code-generator-ppc.cc create mode 100644 deps/v8/src/compiler/ppc/instruction-codes-ppc.h create mode 100644 deps/v8/src/compiler/ppc/instruction-selector-ppc.cc create mode 100644 deps/v8/src/compiler/ppc/linkage-ppc.cc delete mode 100644 deps/v8/src/harmony-classes.js delete mode 100644 deps/v8/src/interface.cc delete mode 100644 deps/v8/src/interface.h create mode 100644 deps/v8/src/modules.cc create mode 100644 deps/v8/src/modules.h delete mode 100644 deps/v8/src/runtime/runtime-api.cc create mode 100644 deps/v8/src/startup-data-util.cc create mode 100644 deps/v8/src/startup-data-util.h delete mode 100644 deps/v8/src/zone-inl.h delete mode 100644 deps/v8/test/cctest/compiler/test-graph-reducer.cc create mode 100644 deps/v8/test/cctest/compiler/test-osr.cc delete mode 100644 deps/v8/test/cctest/compiler/test-schedule.cc delete mode 100644 deps/v8/test/cctest/compiler/test-scheduler.cc create mode 100644 deps/v8/test/cctest/test-api-interceptors.cc create mode 100644 deps/v8/test/cctest/test-api.h create mode 100644 deps/v8/test/cctest/test-assembler-ppc.cc delete mode 100644 deps/v8/test/cctest/test-checks.cc delete mode 100644 deps/v8/test/cctest/test-declarative-accessors.cc create mode 100644 deps/v8/test/cctest/test-disasm-ppc.cc create mode 100644 deps/v8/test/cctest/test-migrations.cc create mode 100644 deps/v8/test/message/super-in-function.js create mode 100644 deps/v8/test/message/super-in-function.out create mode 100644 deps/v8/test/mjsunit/accessors-no-prototype.js create mode 100644 deps/v8/test/mjsunit/array-push12.js create mode 100644 deps/v8/test/mjsunit/asm/int32modb.js create mode 100644 deps/v8/test/mjsunit/asm/redundancy1.js create mode 100644 deps/v8/test/mjsunit/asm/redundancy2.js create mode 100644 deps/v8/test/mjsunit/asm/switch.js create mode 100644 deps/v8/test/mjsunit/compiler/opt-next-call-turbo.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-backedges1.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-block-scope-func.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-block-scope-id.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-block-scope.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-follow.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-for-let.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-forin.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-forof.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-function-id.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-function-id2.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-function.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-manual1.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-manual2.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-maze1.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-maze2.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-multiple.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-multiple2.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-multiple3.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-nested2.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-nested2b.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-nested3.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-nested3b.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-regex-id.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-top1.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-top2.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-top3.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-while-let.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-3812.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-416359.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-445907.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-446647.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-447567.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-451012.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-452427.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-468162.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-to-number-binop-deopt.js create mode 100644 deps/v8/test/mjsunit/es6/array-tostring.js create mode 100644 deps/v8/test/mjsunit/harmony/class-computed-property-names-super.js create mode 100644 deps/v8/test/mjsunit/harmony/class-property-name-eval-arguments.js create mode 100644 deps/v8/test/mjsunit/harmony/classes-experimental.js create mode 100644 deps/v8/test/mjsunit/harmony/classes-lazy-parsing.js create mode 100644 deps/v8/test/mjsunit/harmony/classes-subclass-arrays.js create mode 100644 deps/v8/test/mjsunit/harmony/computed-property-names-classes.js create mode 100644 deps/v8/test/mjsunit/harmony/computed-property-names-object-literals-methods.js create mode 100644 deps/v8/test/mjsunit/harmony/computed-property-names-super.js create mode 100644 deps/v8/test/mjsunit/harmony/computed-property-names.js create mode 100644 deps/v8/test/mjsunit/harmony/method-name-eval-arguments.js rename deps/v8/test/mjsunit/{regress/regress-1145.js => harmony/module-parsing-eval.js} (62%) delete mode 100644 deps/v8/test/mjsunit/harmony/module-parsing.js create mode 100644 deps/v8/test/mjsunit/harmony/modules.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-455141.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-typedarray-out-of-bounds.js create mode 100644 deps/v8/test/mjsunit/harmony/rest-params-lazy-parsing.js create mode 100644 deps/v8/test/mjsunit/harmony/rest-params.js create mode 100644 deps/v8/test/mjsunit/harmony/unicode-escapes-in-regexps.js create mode 100644 deps/v8/test/mjsunit/object-literal-multiple-fields.js create mode 100644 deps/v8/test/mjsunit/object-literal-multiple-proto-fields.js create mode 100644 deps/v8/test/mjsunit/property-name-eval-arguments.js create mode 100644 deps/v8/test/mjsunit/regress/regress-2825.js create mode 100644 deps/v8/test/mjsunit/regress/regress-3501.js create mode 100644 deps/v8/test/mjsunit/regress/regress-3859.js create mode 100644 deps/v8/test/mjsunit/regress/regress-3865.js create mode 100644 deps/v8/test/mjsunit/regress/regress-3884.js create mode 100644 deps/v8/test/mjsunit/regress/regress-437713.js create mode 100644 deps/v8/test/mjsunit/regress/regress-444805.js create mode 100644 deps/v8/test/mjsunit/regress/regress-444805.js-script create mode 100644 deps/v8/test/mjsunit/regress/regress-446389.js create mode 100644 deps/v8/test/mjsunit/regress/regress-447526.js create mode 100644 deps/v8/test/mjsunit/regress/regress-447561.js create mode 100644 deps/v8/test/mjsunit/regress/regress-448711.js create mode 100644 deps/v8/test/mjsunit/regress/regress-449070.js create mode 100644 deps/v8/test/mjsunit/regress/regress-449291.js create mode 100644 deps/v8/test/mjsunit/regress/regress-450895.js create mode 100644 deps/v8/test/mjsunit/regress/regress-451322.js create mode 100644 deps/v8/test/mjsunit/regress/regress-451958.js create mode 100644 deps/v8/test/mjsunit/regress/regress-453481.js create mode 100644 deps/v8/test/mjsunit/regress/regress-454725.js rename deps/v8/test/mjsunit/regress/{regress-634.js => regress-455212.js} (82%) create mode 100644 deps/v8/test/mjsunit/regress/regress-457935.js create mode 100644 deps/v8/test/mjsunit/regress/regress-458876.js create mode 100644 deps/v8/test/mjsunit/regress/regress-458987.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459955.js create mode 100644 deps/v8/test/mjsunit/regress/regress-460917.js create mode 100644 deps/v8/test/mjsunit/regress/regress-467481.js create mode 100644 deps/v8/test/mjsunit/regress/regress-arg-materialize-store.js create mode 100644 deps/v8/test/mjsunit/regress/regress-bce-underflow.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-448730.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-450642.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-450960.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-451013.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-451016.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-451770.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-454091.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-455644.js create mode 100644 deps/v8/test/mjsunit/regress/regress-deoptimize-constant-keyed-load.js create mode 100644 deps/v8/test/mjsunit/regress/regress-undefined-nan.js create mode 100644 deps/v8/test/mjsunit/regress/regress-undefined-nan2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-undefined-nan3.js create mode 100644 deps/v8/test/mjsunit/strong/classes.js create mode 100644 deps/v8/test/mjsunit/strong/delete.js create mode 100644 deps/v8/test/mjsunit/strong/empty-statement.js create mode 100644 deps/v8/test/mjsunit/strong/equality.js create mode 100644 deps/v8/test/mjsunit/strong/for-in.js create mode 100644 deps/v8/test/mjsunit/strong/functions.js create mode 100644 deps/v8/test/mjsunit/strong/mutually-recursive-funcs.js create mode 100644 deps/v8/test/mjsunit/strong/use-strong.js create mode 100644 deps/v8/test/mjsunit/strong/var-let-const.js create mode 100644 deps/v8/test/unittests/base/logging-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/control-flow-optimizer-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/control-reducer-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/js-intrinsic-lowering-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/loop-peeling-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/node-properties-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/node-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/opcodes-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/ppc/instruction-selector-ppc-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/schedule-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/scheduler-unittest.cc rename deps/v8/test/{cctest/compiler/test-typer.cc => unittests/compiler/typer-unittest.cc} (57%) create mode 100755 deps/v8/tools/gcmole/parallel.py create mode 100644 deps/v8/tools/ninja/ninja_output.py delete mode 100755 deps/v8/tools/push-to-trunk/bump_up_version.py delete mode 100755 deps/v8/tools/push-to-trunk/generate_version.py rename deps/v8/tools/{push-to-trunk => release}/auto_push.py (60%) rename deps/v8/tools/{push-to-trunk => release}/auto_roll.py (84%) rename deps/v8/tools/{push-to-trunk => release}/auto_tag.py (100%) rename deps/v8/tools/{push-to-trunk => release}/check_clusterfuzz.py (100%) rename deps/v8/tools/{push-to-trunk => release}/chromium_roll.py (74%) rename deps/v8/tools/{push-to-trunk => release}/common_includes.py (86%) create mode 100755 deps/v8/tools/release/create_release.py rename deps/v8/tools/{push-to-trunk => release}/git_recipes.py (100%) rename deps/v8/tools/{push-to-trunk => release}/merge_to_branch.py (93%) rename deps/v8/tools/{push-to-trunk/push_to_trunk.py => release/push_to_candidates.py} (68%) rename deps/v8/tools/{push-to-trunk => release}/releases.py (76%) rename deps/v8/tools/{push-to-trunk => release}/script_test.py (100%) rename deps/v8/tools/{push-to-trunk => release}/test_scripts.py (77%) create mode 100644 deps/v8/tools/vim/ninja-build.vim delete mode 100644 test/parallel/test-v8-features.js diff --git a/common.gypi b/common.gypi index ea7779ee097a69..8aee4eaaf749c1 100644 --- a/common.gypi +++ b/common.gypi @@ -20,16 +20,17 @@ # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, + # Disable support for postmortem debugging, continuously broken. + 'v8_postmortem_support%': 'false', + # Don't bake anything extra into the snapshot. 'v8_use_external_startup_data%': 0, 'conditions': [ ['OS == "win"', { 'os_posix': 0, - 'v8_postmortem_support%': 'false', }, { 'os_posix': 1, - 'v8_postmortem_support%': 'true', }], ['GENERATOR == "ninja" or OS== "mac"', { 'OBJ_DIR': '<(PRODUCT_DIR)/obj', diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index f720bee948660a..2eac3035c33dbb 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -29,6 +29,7 @@ .settings .*.sw? bsuite +compile_commands.json d8 d8_g gccauses diff --git a/deps/v8/.ycm_extra_conf.py b/deps/v8/.ycm_extra_conf.py new file mode 100644 index 00000000000000..e065a0896bdb82 --- /dev/null +++ b/deps/v8/.ycm_extra_conf.py @@ -0,0 +1,193 @@ +# Copyright 2015 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. + +# Autocompletion config for YouCompleteMe in V8. +# +# USAGE: +# +# 1. Install YCM [https://github.com/Valloric/YouCompleteMe] +# (Googlers should check out [go/ycm]) +# +# 2. Profit +# +# +# Usage notes: +# +# * You must use ninja & clang to build V8. +# +# * You must have run gyp_v8 and built V8 recently. +# +# +# Hacking notes: +# +# * The purpose of this script is to construct an accurate enough command line +# for YCM to pass to clang so it can build and extract the symbols. +# +# * Right now, we only pull the -I and -D flags. That seems to be sufficient +# for everything I've used it for. +# +# * That whole ninja & clang thing? We could support other configs if someone +# were willing to write the correct commands and a parser. +# +# * This has only been tested on gTrusty. + + +import os +import os.path +import subprocess +import sys + + +# Flags from YCM's default config. +flags = [ +'-DUSE_CLANG_COMPLETER', +'-std=gnu++0x', +'-x', +'c++', +] + + +def PathExists(*args): + return os.path.exists(os.path.join(*args)) + + +def FindV8SrcFromFilename(filename): + """Searches for the root of the V8 checkout. + + Simply checks parent directories until it finds .gclient and v8/. + + Args: + filename: (String) Path to source file being edited. + + Returns: + (String) Path of 'v8/', or None if unable to find. + """ + curdir = os.path.normpath(os.path.dirname(filename)) + while not (PathExists(curdir, 'v8') and PathExists(curdir, 'v8', 'DEPS') + and (PathExists(curdir, '.gclient') + or PathExists(curdir, 'v8', '.git'))): + nextdir = os.path.normpath(os.path.join(curdir, '..')) + if nextdir == curdir: + return None + curdir = nextdir + return os.path.join(curdir, 'v8') + + +def GetClangCommandFromNinjaForFilename(v8_root, filename): + """Returns the command line to build |filename|. + + Asks ninja how it would build the source file. If the specified file is a + header, tries to find its companion source file first. + + Args: + v8_root: (String) Path to v8/. + filename: (String) Path to source file being edited. + + Returns: + (List of Strings) Command line arguments for clang. + """ + if not v8_root: + return [] + + # Generally, everyone benefits from including V8's root, because all of + # V8's includes are relative to that. + v8_flags = ['-I' + os.path.join(v8_root)] + + # Version of Clang used to compile V8 can be newer then version of + # libclang that YCM uses for completion. So it's possible that YCM's libclang + # doesn't know about some used warning options, which causes compilation + # warnings (and errors, because of '-Werror'); + v8_flags.append('-Wno-unknown-warning-option') + + # Header files can't be built. Instead, try to match a header file to its + # corresponding source file. + if filename.endswith('.h'): + alternates = ['.cc', '.cpp'] + for alt_extension in alternates: + alt_name = filename[:-2] + alt_extension + if os.path.exists(alt_name): + filename = alt_name + break + else: + if filename.endswith('-inl.h'): + for alt_extension in alternates: + alt_name = filename[:-6] + alt_extension + if os.path.exists(alt_name): + filename = alt_name + break; + else: + # If this is a standalone -inl.h file with no source, the best we can + # do is try to use the default flags. + return v8_flags + else: + # If this is a standalone .h file with no source, the best we can do is + # try to use the default flags. + return v8_flags + + sys.path.append(os.path.join(v8_root, 'tools', 'ninja')) + from ninja_output import GetNinjaOutputDirectory + out_dir = os.path.realpath(GetNinjaOutputDirectory(v8_root)) + + # Ninja needs the path to the source file relative to the output build + # directory. + rel_filename = os.path.relpath(os.path.realpath(filename), out_dir) + + # Ask ninja how it would build our source file. + p = subprocess.Popen(['ninja', '-v', '-C', out_dir, '-t', + 'commands', rel_filename + '^'], + stdout=subprocess.PIPE) + stdout, stderr = p.communicate() + if p.returncode: + return v8_flags + + # Ninja might execute several commands to build something. We want the last + # clang command. + clang_line = None + for line in reversed(stdout.split('\n')): + if 'clang' in line: + clang_line = line + break + else: + return v8_flags + + # Parse flags that are important for YCM's purposes. + for flag in clang_line.split(' '): + if flag.startswith('-I'): + # Relative paths need to be resolved, because they're relative to the + # output dir, not the source. + if flag[2] == '/': + v8_flags.append(flag) + else: + abs_path = os.path.normpath(os.path.join(out_dir, flag[2:])) + v8_flags.append('-I' + abs_path) + elif flag.startswith('-std'): + v8_flags.append(flag) + elif flag.startswith('-') and flag[1] in 'DWFfmO': + if flag == '-Wno-deprecated-register' or flag == '-Wno-header-guard': + # These flags causes libclang (3.3) to crash. Remove it until things + # are fixed. + continue + v8_flags.append(flag) + + return v8_flags + + +def FlagsForFile(filename): + """This is the main entry point for YCM. Its interface is fixed. + + Args: + filename: (String) Path to source file being edited. + + Returns: + (Dictionary) + 'flags': (List of Strings) Command line flags. + 'do_cache': (Boolean) True if the result should be cached. + """ + v8_root = FindV8SrcFromFilename(filename) + v8_flags = GetClangCommandFromNinjaForFilename(v8_root, filename) + final_flags = flags + v8_flags + return { + 'flags': final_flags, + 'do_cache': True + } diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 89caae648c6286..39fb88c57b7975 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -3,77 +3,96 @@ # # Name/Organization -Google Inc. -Sigma Designs Inc. -ARM Ltd. -Hewlett-Packard Development Company, LP -Igalia, S.L. -Joyent, Inc. -Bloomberg Finance L.P. -NVIDIA Corporation -BlackBerry Limited -Opera Software ASA -Intel Corporation -MIPS Technologies, Inc. -Imagination Technologies, LLC -Loongson Technology Corporation Limited +Google Inc. <*@google.com> +The Chromium Authors <*@chromium.org> +Sigma Designs Inc. <*@sdesigns.com> +ARM Ltd. <*@arm.com> +Hewlett-Packard Development Company, LP <*@palm.com> +Igalia, S.L. <*@igalia.com> +Joyent, Inc. <*@joyent.com> +Bloomberg Finance L.P. <*@bloomberg.net> +NVIDIA Corporation <*@nvidia.com> +BlackBerry Limited <*@blackberry.com> +Opera Software ASA <*@opera.com> +Intel Corporation <*@intel.com> +MIPS Technologies, Inc. <*@mips.com> +Imagination Technologies, LLC <*@imgtec.com> +Loongson Technology Corporation Limited <*@loongson.cn> +Code Aurora Forum <*@codeaurora.org> +Home Jinni Inc. <*@homejinni.com> +IBM Inc. <*@*.ibm.com> +Samsung <*@*.samsung.com> +Joyent, Inc <*@joyent.com> +RT-RK Computer Based System <*@rt-rk.com> +Amazon, Inc <*@amazon.com> +ST Microelectronics <*@st.com> +Yandex LLC <*@yandex-team.ru> +StrongLoop, Inc. <*@strongloop.com> +Aaron Bieber +Abdulla Kamar Akinori MUSHA Alexander Botero-Lowry Alexander Karpinsky -Alexandre Rames Alexandre Vassalotti +Alexis Campailla Andreas Anyuru -Baptiste Afsa +Andrew Paprocki +Andrei Kashcha +Ben Noordhuis Bert Belder Burcu Dogan Caitlin Potter Craig Schlenter -Chunyang Dai +Christopher A. Taylor Daniel Andersson Daniel James -Derek J Conrod -Dineel D Sule +Douglas Crosher Erich Ocean Fedor Indutny +Felix Geisendörfer Filipe David Manana -Haitao Feng +Geoffrey Garside +Han Choongwoo +Hirofumi Mako Ioseb Dzmanashvili Isiah Meadows -Jacob Bramley Jan de Mooij Jay Freeman James Pike -Joel Stanley -John Jozwiak +Jianghua Yang +Joel Stanley +Johan Bergström Jonathan Liu -Kun Zhang +Kang-Hao (Kenny) Lu Luis Reis -Martyn Capewell +Luke Zarko +Maciej Małecki Mathias Bynens Matt Hanselman +Matthew Sporleder Maxim Mossienko Michael Lutz Michael Smith Mike Gilbert +Nicolas Antonius Ernst Leopold Maria Kaiser Paolo Giarrusso Patrick Gansterer Peter Varga +Paul Lind Rafal Krypa -Rajeev R Krithivasan Refael Ackermann Rene Rebe Robert Mustacchi -Rodolph Perfetta -Ryan Dahl +Robert Nagy +Ryan Dahl Sandro Santilli Sanjoy Das -Subrato K De +Seo Sanghyeon Tobias Burnus -Vincent Belliard +Victor Costan Vlad Burlik -Weiliang Lin -Xi Qian -Yuqiang Xian -Zaheer Ahmad +Vladimir Shutoff +Yu Yin Zhongping Wang +柳荣一 diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 6534eea8594810..713ab6de57d461 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -18,10 +18,9 @@ v8_interpreted_regexp = false v8_object_print = false v8_postmortem_support = false v8_use_snapshot = true -v8_enable_extra_checks = is_debug v8_target_arch = cpu_arch v8_random_seed = "314159265" - +v8_toolset_for_d8 = "host" ############################################################################### # Configurations @@ -63,54 +62,31 @@ config("features") { defines = [] if (v8_enable_disassembler == true) { - defines += [ - "ENABLE_DISASSEMBLER", - ] + defines += [ "ENABLE_DISASSEMBLER" ] } if (v8_enable_gdbjit == true) { - defines += [ - "ENABLE_GDB_JIT_INTERFACE", - ] + defines += [ "ENABLE_GDB_JIT_INTERFACE" ] } if (v8_object_print == true) { - defines += [ - "OBJECT_PRINT", - ] + defines += [ "OBJECT_PRINT" ] } if (v8_enable_verify_heap == true) { - defines += [ - "VERIFY_HEAP", - ] + defines += [ "VERIFY_HEAP" ] } if (v8_interpreted_regexp == true) { - defines += [ - "V8_INTERPRETED_REGEXP", - ] + defines += [ "V8_INTERPRETED_REGEXP" ] } if (v8_deprecation_warnings == true) { - defines += [ - "V8_DEPRECATION_WARNINGS", - ] + defines += [ "V8_DEPRECATION_WARNINGS" ] } if (v8_enable_i18n_support == true) { - defines += [ - "V8_I18N_SUPPORT", - ] - } - if (v8_enable_extra_checks == true) { - defines += [ - "ENABLE_EXTRA_CHECKS", - ] + defines += [ "V8_I18N_SUPPORT" ] } if (v8_enable_handle_zapping == true) { - defines += [ - "ENABLE_HANDLE_ZAPPING", - ] + defines += [ "ENABLE_HANDLE_ZAPPING" ] } if (v8_use_external_startup_data == true) { - defines += [ - "V8_USE_EXTERNAL_STARTUP_DATA", - ] + defines += [ "V8_USE_EXTERNAL_STARTUP_DATA" ] } } @@ -120,27 +96,45 @@ config("toolchain") { defines = [] cflags = [] - # TODO(jochen): Add support for arm, mips, mipsel. + # TODO(jochen): Add support for arm subarchs, mips, mipsel. + + if (v8_target_arch == "arm") { + defines += [ "V8_TARGET_ARCH_ARM" ] + if (arm_version == 7) { + defines += [ "CAN_USE_ARMV7_INSTRUCTIONS" ] + } + if (arm_fpu == "vfpv3-d16") { + defines += [ "CAN_USE_VFP3_INSTRUCTIONS" ] + } + if (arm_fpu == "vfpv3") { + defines += [ + "CAN_USE_VFP3_INSTRUCTIONS", + "CAN_USE_VFP32DREGS", + ] + } + if (arm_fpu == "neon") { + defines += [ + "CAN_USE_VFP3_INSTRUCTIONS", + "CAN_USE_VFP32DREGS", + "CAN_USE_NEON", + ] + } + + # TODO(jochen): Add support for arm_test_noprobe. + # TODO(jochen): Add support for cpu_arch != v8_target_arch/ + } if (v8_target_arch == "arm64") { - defines += [ - "V8_TARGET_ARCH_ARM64", - ] + defines += [ "V8_TARGET_ARCH_ARM64" ] } if (v8_target_arch == "x86") { - defines += [ - "V8_TARGET_ARCH_IA32", - ] + defines += [ "V8_TARGET_ARCH_IA32" ] } if (v8_target_arch == "x64") { - defines += [ - "V8_TARGET_ARCH_X64", - ] + defines += [ "V8_TARGET_ARCH_X64" ] } if (is_win) { - defines += [ - "WIN32", - ] + defines += [ "WIN32" ] # TODO(jochen): Support v8_enable_prof. } @@ -170,7 +164,7 @@ action("js2c") { # The script depends on this other script, this rule causes a rebuild if it # changes. - source_prereqs = [ "tools/jsmin.py" ] + inputs = [ "tools/jsmin.py" ] sources = [ "src/runtime.js", @@ -181,7 +175,6 @@ action("js2c") { "src/uri.js", "src/third_party/fdlibm/fdlibm.js", "src/math.js", - "src/apinatives.js", "src/date.js", "src/regexp.js", "src/arraybuffer.js", @@ -203,7 +196,7 @@ action("js2c") { ] outputs = [ - "$target_gen_dir/libraries.cc" + "$target_gen_dir/libraries.cc", ] if (v8_enable_i18n_support) { @@ -211,15 +204,15 @@ action("js2c") { } args = [ - rebase_path("$target_gen_dir/libraries.cc", root_build_dir), - "CORE", - ] + rebase_path(sources, root_build_dir) + rebase_path("$target_gen_dir/libraries.cc", root_build_dir), + "CORE", + ] + rebase_path(sources, root_build_dir) if (v8_use_external_startup_data) { outputs += [ "$target_gen_dir/libraries.bin" ] args += [ "--startup_blob", - rebase_path("$target_gen_dir/libraries.bin", root_build_dir) + rebase_path("$target_gen_dir/libraries.bin", root_build_dir), ] } } @@ -231,7 +224,7 @@ action("js2c_experimental") { # The script depends on this other script, this rule causes a rebuild if it # changes. - source_prereqs = [ "tools/jsmin.py" ] + inputs = [ "tools/jsmin.py" ] sources = [ "src/macros.py", @@ -241,46 +234,64 @@ action("js2c_experimental") { "src/harmony-array.js", "src/harmony-array-includes.js", "src/harmony-typedarray.js", - "src/harmony-classes.js", "src/harmony-tostring.js", "src/harmony-templates.js", - "src/harmony-regexp.js" + "src/harmony-regexp.js", ] outputs = [ - "$target_gen_dir/experimental-libraries.cc" + "$target_gen_dir/experimental-libraries.cc", ] args = [ - rebase_path("$target_gen_dir/experimental-libraries.cc", root_build_dir), - "EXPERIMENTAL", - ] + rebase_path(sources, root_build_dir) + rebase_path("$target_gen_dir/experimental-libraries.cc", + root_build_dir), + "EXPERIMENTAL", + ] + rebase_path(sources, root_build_dir) if (v8_use_external_startup_data) { outputs += [ "$target_gen_dir/libraries_experimental.bin" ] args += [ "--startup_blob", - rebase_path("$target_gen_dir/libraries_experimental.bin", root_build_dir) + rebase_path("$target_gen_dir/libraries_experimental.bin", root_build_dir), ] } } +action("d8_js2c") { + visibility = [ ":*" ] # Only targets in this file can depend on this. + + script = "tools/js2c.py" + + inputs = [ + "src/d8.js", + "src/macros.py", + ] + + outputs = [ + "$target_gen_dir/d8-js.cc", + ] + + args = rebase_path(outputs, root_build_dir) + [ "D8" ] + + rebase_path(inputs, root_build_dir) +} + if (v8_use_external_startup_data) { action("natives_blob") { visibility = [ ":*" ] # Only targets in this file can depend on this. deps = [ ":js2c", - ":js2c_experimental" + ":js2c_experimental", ] sources = [ "$target_gen_dir/libraries.bin", - "$target_gen_dir/libraries_experimental.bin" + "$target_gen_dir/libraries_experimental.bin", ] outputs = [ - "$root_out_dir/natives_blob.bin" + "$root_out_dir/natives_blob.bin", ] script = "tools/concatenate-files.py" @@ -300,23 +311,24 @@ action("postmortem-metadata") { ] outputs = [ - "$target_gen_dir/debug-support.cc" + "$target_gen_dir/debug-support.cc", ] - args = - rebase_path(outputs, root_build_dir) + - rebase_path(sources, root_build_dir) + args = rebase_path(outputs, root_build_dir) + + rebase_path(sources, root_build_dir) } action("run_mksnapshot") { visibility = [ ":*" ] # Only targets in this file can depend on this. - deps = [ ":mksnapshot($host_toolchain)" ] + deps = [ + ":mksnapshot($host_toolchain)", + ] script = "tools/run.py" outputs = [ - "$target_gen_dir/snapshot.cc" + "$target_gen_dir/snapshot.cc", ] args = [ @@ -324,24 +336,27 @@ action("run_mksnapshot") { "root_out_dir") + "/mksnapshot", root_build_dir), "--log-snapshot-positions", - "--logfile", rebase_path("$target_gen_dir/snapshot.log", root_build_dir), - rebase_path("$target_gen_dir/snapshot.cc", root_build_dir) + "--logfile", + rebase_path("$target_gen_dir/snapshot.log", root_build_dir), + rebase_path("$target_gen_dir/snapshot.cc", root_build_dir), ] if (v8_random_seed != "0") { - args += [ "--random-seed", v8_random_seed ] + args += [ + "--random-seed", + v8_random_seed, + ] } if (v8_use_external_startup_data) { outputs += [ "$root_out_dir/snapshot_blob.bin" ] args += [ "--startup_blob", - rebase_path("$root_out_dir/snapshot_blob.bin", root_build_dir) + rebase_path("$root_out_dir/snapshot_blob.bin", root_build_dir), ] } } - ############################################################################### # Source Sets (aka static libraries) # @@ -363,7 +378,11 @@ source_set("v8_nosnapshot") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features", ":toolchain" ] + configs += [ + ":internal_config", + ":features", + ":toolchain", + ] } source_set("v8_snapshot") { @@ -384,7 +403,11 @@ source_set("v8_snapshot") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features", ":toolchain" ] + configs += [ + ":internal_config", + ":features", + ":toolchain", + ] } if (v8_use_external_startup_data) { @@ -406,7 +429,11 @@ if (v8_use_external_startup_data) { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features", ":toolchain" ] + configs += [ + ":internal_config", + ":features", + ":toolchain", + ] } } @@ -424,6 +451,8 @@ source_set("v8_base") { "src/allocation-tracker.h", "src/api.cc", "src/api.h", + "src/api-natives.cc", + "src/api-natives.h", "src/arguments.cc", "src/arguments.h", "src/assembler.cc", @@ -432,8 +461,6 @@ source_set("v8_base") { "src/assert-scope.cc", "src/ast-numbering.cc", "src/ast-numbering.h", - "src/ast-this-access-visitor.cc", - "src/ast-this-access-visitor.h", "src/ast-value-factory.cc", "src/ast-value-factory.h", "src/ast.cc", @@ -478,6 +505,8 @@ source_set("v8_base") { "src/compilation-statistics.h", "src/compiler/access-builder.cc", "src/compiler/access-builder.h", + "src/compiler/all-nodes.cc", + "src/compiler/all-nodes.h", "src/compiler/ast-graph-builder.cc", "src/compiler/ast-graph-builder.h", "src/compiler/ast-loop-assignment-analyzer.cc", @@ -498,6 +527,8 @@ source_set("v8_base") { "src/compiler/control-builders.cc", "src/compiler/control-builders.h", "src/compiler/control-equivalence.h", + "src/compiler/control-flow-optimizer.cc", + "src/compiler/control-flow-optimizer.h", "src/compiler/control-reducer.cc", "src/compiler/control-reducer.h", "src/compiler/diamond.h", @@ -505,7 +536,6 @@ source_set("v8_base") { "src/compiler/gap-resolver.cc", "src/compiler/gap-resolver.h", "src/compiler/generic-algorithm.h", - "src/compiler/graph-builder.cc", "src/compiler/graph-builder.h", "src/compiler/graph-inl.h", "src/compiler/graph-reducer.cc", @@ -532,8 +562,8 @@ source_set("v8_base") { "src/compiler/js-graph.h", "src/compiler/js-inlining.cc", "src/compiler/js-inlining.h", - "src/compiler/js-intrinsic-builder.cc", - "src/compiler/js-intrinsic-builder.h", + "src/compiler/js-intrinsic-lowering.cc", + "src/compiler/js-intrinsic-lowering.h", "src/compiler/js-operator.cc", "src/compiler/js-operator.h", "src/compiler/js-typed-lowering.cc", @@ -545,6 +575,7 @@ source_set("v8_base") { "src/compiler/linkage.h", "src/compiler/load-elimination.cc", "src/compiler/load-elimination.h", + "src/compiler/loop-peeling.cc", "src/compiler/loop-analysis.cc", "src/compiler/loop-analysis.h", "src/compiler/machine-operator-reducer.cc", @@ -555,12 +586,13 @@ source_set("v8_base") { "src/compiler/machine-type.h", "src/compiler/move-optimizer.cc", "src/compiler/move-optimizer.h", - "src/compiler/node-aux-data-inl.h", "src/compiler/node-aux-data.h", "src/compiler/node-cache.cc", "src/compiler/node-cache.h", + "src/compiler/node-marker.cc", + "src/compiler/node-marker.h", "src/compiler/node-matchers.h", - "src/compiler/node-properties-inl.h", + "src/compiler/node-properties.cc", "src/compiler/node-properties.h", "src/compiler/node.cc", "src/compiler/node.h", @@ -570,6 +602,8 @@ source_set("v8_base") { "src/compiler/operator-properties.h", "src/compiler/operator.cc", "src/compiler/operator.h", + "src/compiler/osr.cc", + "src/compiler/osr.h", "src/compiler/pipeline.cc", "src/compiler/pipeline.h", "src/compiler/pipeline-statistics.cc", @@ -775,8 +809,6 @@ source_set("v8_base") { "src/ic/ic-compiler.h", "src/ic/stub-cache.cc", "src/ic/stub-cache.h", - "src/interface.cc", - "src/interface.h", "src/interface-descriptors.cc", "src/interface-descriptors.h", "src/interpreter-irregexp.cc", @@ -813,6 +845,8 @@ source_set("v8_base") { "src/macro-assembler.h", "src/messages.cc", "src/messages.h", + "src/modules.cc", + "src/modules.h", "src/msan.h", "src/natives.h", "src/objects-debug.cc", @@ -855,7 +889,6 @@ source_set("v8_base") { "src/rewriter.h", "src/runtime-profiler.cc", "src/runtime-profiler.h", - "src/runtime/runtime-api.cc", "src/runtime/runtime-array.cc", "src/runtime/runtime-classes.cc", "src/runtime/runtime-collections.cc", @@ -949,7 +982,6 @@ source_set("v8_base") { "src/version.h", "src/vm-state-inl.h", "src/vm-state.h", - "src/zone-inl.h", "src/zone.cc", "src/zone.h", "src/third_party/fdlibm/fdlibm.cc", @@ -1209,7 +1241,11 @@ source_set("v8_base") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features", ":toolchain" ] + configs += [ + ":internal_config", + ":features", + ":toolchain", + ] if (!is_debug) { configs -= [ "//build/config/compiler:optimize" ] @@ -1217,7 +1253,9 @@ source_set("v8_base") { } defines = [] - deps = [ ":v8_libbase" ] + deps = [ + ":v8_libbase", + ] if (is_win) { # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. @@ -1229,6 +1267,7 @@ source_set("v8_base") { if (is_win) { deps += [ "//third_party/icu:icudata" ] } + # TODO(jochen): Add support for icu_use_data_file_flag defines += [ "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE" ] } else { @@ -1297,7 +1336,11 @@ source_set("v8_libbase") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config_base", ":features", ":toolchain" ] + configs += [ + ":internal_config_base", + ":features", + ":toolchain", + ] if (!is_debug) { configs -= [ "//build/config/compiler:optimize" ] @@ -1307,15 +1350,11 @@ source_set("v8_libbase") { defines = [] if (is_posix) { - sources += [ - "src/base/platform/platform-posix.cc" - ] + sources += [ "src/base/platform/platform-posix.cc" ] } if (is_linux) { - sources += [ - "src/base/platform/platform-linux.cc" - ] + sources += [ "src/base/platform/platform-linux.cc" ] libs = [ "rt" ] } else if (is_android) { @@ -1344,7 +1383,10 @@ source_set("v8_libbase") { defines += [ "_CRT_RAND_S" ] # for rand_s() - libs = [ "winmm.lib", "ws2_32.lib" ] + libs = [ + "winmm.lib", + "ws2_32.lib", + ] } # TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris. @@ -1363,7 +1405,11 @@ source_set("v8_libplatform") { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config_base", ":features", ":toolchain" ] + configs += [ + ":internal_config_base", + ":features", + ":toolchain", + ] if (!is_debug) { configs -= [ "//build/config/compiler:optimize" ] @@ -1389,7 +1435,11 @@ if (current_toolchain == host_toolchain) { configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features", ":toolchain" ] + configs += [ + ":internal_config", + ":features", + ":toolchain", + ] deps = [ ":v8_base", @@ -1405,64 +1455,109 @@ if (current_toolchain == host_toolchain) { # if (component_mode == "shared_library") { + component("v8") { + sources = [ + "src/v8dll-main.cc", + ] -component("v8") { - sources = [ - "src/v8dll-main.cc", - ] + if (v8_use_snapshot && v8_use_external_startup_data) { + deps = [ + ":v8_base", + ":v8_external_snapshot", + ] + } else if (v8_use_snapshot) { + deps = [ + ":v8_base", + ":v8_snapshot", + ] + } else { + assert(!v8_use_external_startup_data) + deps = [ + ":v8_base", + ":v8_nosnapshot", + ] + } - if (v8_use_snapshot && v8_use_external_startup_data) { - deps = [ - ":v8_base", - ":v8_external_snapshot", - ] - } else if (v8_use_snapshot) { - deps = [ - ":v8_base", - ":v8_snapshot", - ] - } else { - assert(!v8_use_external_startup_data) - deps = [ - ":v8_base", - ":v8_nosnapshot", + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ + ":internal_config", + ":features", + ":toolchain", ] - } - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":internal_config", ":features", ":toolchain" ] + direct_dependent_configs = [ ":external_config" ] - direct_dependent_configs = [ ":external_config" ] + libs = [] + if (is_android && current_toolchain != host_toolchain) { + libs += [ "log" ] + } + } +} else { + group("v8") { + if (v8_use_snapshot && v8_use_external_startup_data) { + deps = [ + ":v8_base", + ":v8_external_snapshot", + ] + } else if (v8_use_snapshot) { + deps = [ + ":v8_base", + ":v8_snapshot", + ] + } else { + assert(!v8_use_external_startup_data) + deps = [ + ":v8_base", + ":v8_nosnapshot", + ] + } - libs = [] - if (is_android && current_toolchain != host_toolchain) { - libs += [ "log" ] + direct_dependent_configs = [ ":external_config" ] } } -} else { - -group("v8") { - if (v8_use_snapshot && v8_use_external_startup_data) { - deps = [ - ":v8_base", - ":v8_external_snapshot", +if ((current_toolchain == host_toolchain && v8_toolset_for_d8 == "host") || + (current_toolchain != host_toolchain && v8_toolset_for_d8 == "target")) { + executable("d8") { + sources = [ + "src/d8.cc", + "src/d8.h", + "src/startup-data-util.h", + "src/startup-data-util.cc", ] - } else if (v8_use_snapshot) { - deps = [ - ":v8_base", - ":v8_snapshot", + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ + ":internal_config", + ":features", + ":toolchain", ] - } else { - assert(!v8_use_external_startup_data) + deps = [ - ":v8_base", - ":v8_nosnapshot", + ":d8_js2c", + ":v8", + ":v8_libplatform", + "//build/config/sanitizers:deps", ] - } - direct_dependent_configs = [ ":external_config" ] -} + # TODO(jochen): Add support for readline and vtunejit. + + if (is_posix) { + sources += [ "src/d8-posix.cc" ] + } else if (is_win) { + sources += [ "src/d8-windows.cc" ] + } + if (component_mode != "shared_library") { + sources += [ + "src/d8-debug.cc", + "$target_gen_dir/d8-js.cc", + ] + } + if (v8_enable_i18n_support) { + deps += [ "//third_party/icu" ] + } + } } diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index d42a2f1564de79..0f835dc8c43f90 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,533 @@ +2015-02-19: Version 4.2.77 + + Make generator constructors configurable (issue 3902). + + Performance and stability improvements on all platforms. + + +2015-02-19: Version 4.2.76 + + Performance and stability improvements on all platforms. + + +2015-02-18: Version 4.2.75 + + Performance and stability improvements on all platforms. + + +2015-02-18: Version 4.2.74 + + Correctly propagate terminate exception in TryCall (issue 3892). + + Performance and stability improvements on all platforms. + + +2015-02-17: Version 4.2.73 + + Performance and stability improvements on all platforms. + + +2015-02-17: Version 4.2.72 + + [turbofan] Fix control reducer with re-reducing branches (Chromium issue + 458876). + + Performance and stability improvements on all platforms. + + +2015-02-16: Version 4.2.71 + + Implement ES6 rest parameters (issue 2159). + + Performance and stability improvements on all platforms. + + +2015-02-13: Version 4.2.70 + + new classes: no longer experimental (issue 3834). + + Make it possible to define arguments for CompileFunctionInContext. + + Performance and stability improvements on all platforms. + + +2015-02-12: Version 4.2.69 + + Performance and stability improvements on all platforms. + + +2015-02-11: Version 4.2.68 + + Performance and stability improvements on all platforms. + + +2015-02-11: Version 4.2.67 + + Throw on range error when creating a string via API (issue 3853). + + Performance and stability improvements on all platforms. + + +2015-02-11: Version 4.2.66 + + Performance and stability improvements on all platforms. + + +2015-02-10: Version 4.2.65 + + Performance and stability improvements on all platforms. + + +2015-02-10: Version 4.2.64 + + Performance and stability improvements on all platforms. + + +2015-02-10: Version 4.2.63 + + Introduce a compile method that takes context extensions (Chromium issue + 456192). + + Performance and stability improvements on all platforms. + + +2015-02-09: Version 4.2.62 + + Performance and stability improvements on all platforms. + + +2015-02-09: Version 4.2.61 + + Performance and stability improvements on all platforms. + + +2015-02-07: Version 4.2.60 + + Performance and stability improvements on all platforms. + + +2015-02-07: Version 4.2.59 + + Performance and stability improvements on all platforms. + + +2015-02-07: Version 4.2.58 + + Performance and stability improvements on all platforms. + + +2015-02-06: Version 4.2.57 + + Performance and stability improvements on all platforms. + + +2015-02-06: Version 4.2.56 + + Performance and stability improvements on all platforms. + + +2015-02-06: Version 4.2.55 + + Protect against uninitialized lexical variables at top-level (Chromium + issue 452510). + + Performance and stability improvements on all platforms. + + +2015-02-05: Version 4.2.54 + + Fix HConstant(double, ...) constructor (issue 3865). + + Add NativeWeakMap to v8.h (Chromium issue 437416). + + Performance and stability improvements on all platforms. + + +2015-02-05: Version 4.2.53 + + Fix issue with multiple properties and emit store (issue 3856). + + Class methods should be non enumerable (issue 3330). + + Performance and stability improvements on all platforms. + + +2015-02-04: Version 4.2.52 + + Add WeakKeyMap to v8.h (Chromium issue 437416). + + Performance and stability improvements on all platforms. + + +2015-02-04: Version 4.2.51 + + Performance and stability improvements on all platforms. + + +2015-02-03: Version 4.2.50 + + Reset inlining limits due to overly long compilation times in + Speedometer, Dart2JS (Chromium issue 454625). + + Add WeakMap to v8.h (Chromium issue 437416). + + [V8] Added line, column and script symbols for SyntaxError (Chromium + issue 443140). + + Performance and stability improvements on all platforms. + + +2015-02-03: Version 4.2.49 + + Compute the same hash for all NaN values (issue 3859). + + Performance and stability improvements on all platforms. + + +2015-02-03: Version 4.2.48 + + Performance and stability improvements on all platforms. + + +2015-02-02: Version 4.2.47 + + Check global object behind global proxy for extensibility (Chromium + issue 454091). + + Performance and stability improvements on all platforms. + + +2015-02-02: Version 4.2.46 + + Performance and stability improvements on all platforms. + + +2015-02-02: Version 4.2.45 + + Performance and stability improvements on all platforms. + + +2015-02-01: Version 4.2.44 + + Performance and stability improvements on all platforms. + + +2015-02-01: Version 4.2.43 + + Performance and stability improvements on all platforms. + + +2015-01-31: Version 4.2.42 + + Performance and stability improvements on all platforms. + + +2015-01-31: Version 4.2.41 + + Layout descriptor sharing issue fixed (issue 3832, Chromium issue + 437713). + + Performance and stability improvements on all platforms. + + +2015-01-30: Version 4.2.40 + + Performance and stability improvements on all platforms. + + +2015-01-30: Version 4.2.38 + + Move object literal checking into checker classes (issue 3819). + + [turbofan] Fix OSR compilations of for-in. + + Performance and stability improvements on all platforms. + + +2015-01-30: Version 4.2.37 + + Do not create unresolved variables when parsing arrow functions lazily + (issue 3501). + + Performance and stability improvements on all platforms. + + +2015-01-29: Version 4.2.36 + + Performance and stability improvements on all platforms. + + +2015-01-29: Version 4.2.35 + + Performance and stability improvements on all platforms. + + +2015-01-28: Version 4.2.34 + + Performance and stability improvements on all platforms. + + +2015-01-28: Version 4.2.33 + + Performance and stability improvements on all platforms. + + +2015-01-27: Version 4.2.32 + + Do not generalize field representations when making elements kind or + observed transition (Chromium issue 448711). + + Performance and stability improvements on all platforms. + + +2015-01-27: Version 4.2.31 + + [x86] Disable AVX unless the operating system explicitly claims to + support it (issue 3846, Chromium issue 452033). + + Performance and stability improvements on all platforms. + + +2015-01-27: Version 4.2.30 + + Performance and stability improvements on all platforms. + + +2015-01-26: Version 4.2.29 + + MIPS: Fixed Hydrogen environment handling for mul-i ARM and ARM64 (issue + 451322). + + [turbofan] Simplify reduction if IfTrue and IfFalse and fix bugs + (Chromium issue 451958). + + Add HeapNumber fast path to v8::Value::{Uint,Int}32Value() (Chromium + issue 446097). + + Performance and stability improvements on all platforms. + + +2015-01-26: Version 4.2.28 + + Fixed Hydrogen environment handling for mul-i on ARM and ARM64 (issue + 451322). + + Performance and stability improvements on all platforms. + + +2015-01-25: Version 4.2.27 + + Performance and stability improvements on all platforms. + + +2015-01-24: Version 4.2.26 + + ES6 Array.prototype.toString falls back on Object.prototype.toString if + method "join" is not callable (issue 3793). + + Performance and stability improvements on all platforms. + + +2015-01-23: Version 4.2.25 + + Performance and stability improvements on all platforms. + + +2015-01-23: Version 4.2.24 + + Performance and stability improvements on all platforms. + + +2015-01-23: Version 4.2.23 + + [x86] Blacklist AVX for Windows versions before 6.1 (Windows 7) (issue + 3846). + + Performance and stability improvements on all platforms. + + +2015-01-23: Version 4.2.22 + + Fix run-time ARMv6 detection (issue 3844). + + Support concatenating with zero-size arrays with DICTIONARY_ELEMENTS in + Runtime_ArrayConcat (Chromium issue 450895). + + Performance and stability improvements on all platforms. + + +2015-01-22: Version 4.2.21 + + Performance and stability improvements on all platforms. + + +2015-01-22: Version 4.2.20 + + Add a pretty printer to improve the error message non-function calls + (Chromium issue 259443). + + Remove implicit uint8_t to char cast in string replace (Chromium issue + 446196). + + Performance and stability improvements on all platforms. + + +2015-01-21: Version 4.2.19 + + Performance and stability improvements on all platforms. + + +2015-01-20: Version 4.2.18 + + Fix issue with __proto__ when using ES6 object literals (issue 3818). + + Performance and stability improvements on all platforms. + + +2015-01-20: Version 4.2.17 + + Performance and stability improvements on all platforms. + + +2015-01-20: Version 4.2.16 + + Performance and stability improvements on all platforms. + + +2015-01-19: Version 4.2.15 + + Unobscurified OFStream (Chromium issue 448102). + + Performance and stability improvements on all platforms. + + +2015-01-19: Version 4.2.14 + + Performance and stability improvements on all platforms. + + +2015-01-18: Version 4.2.13 + + Performance and stability improvements on all platforms. + + +2015-01-18: Version 4.2.12 + + Performance and stability improvements on all platforms. + + +2015-01-17: Version 4.2.11 + + Performance and stability improvements on all platforms. + + +2015-01-16: Version 4.2.10 + + Performance and stability improvements on all platforms. + + +2015-01-16: Version 4.2.9 + + MIPS: ES6 computed property names (issue 3754). + + ES6 computed property names (issue 3754). + + Performance and stability improvements on all platforms. + + +2015-01-15: Version 4.2.8 + + Performance and stability improvements on all platforms. + + +2015-01-15: Version 4.2.7 + + Performance and stability improvements on all platforms. + + +2015-01-15: Version 4.2.6 + + Performance and stability improvements on all platforms. + + +2015-01-15: Version 4.2.5 + + Performance and stability improvements on all platforms. + + +2015-01-14: Version 4.2.4 + + Auto-generate v8 version based on tags (Chromium issue 446166). + + Remove support for signatures with arguments. + + Add proper support for proxies to HType (Chromium issue 448730). + + [turbofan] Fix truncation/representation sloppiness wrt. bool/bit (issue + 3812). + + Performance and stability improvements on all platforms. + + +2015-01-14: Version 4.2.3 + + Performance and stability improvements on all platforms. + + +2015-01-14: Version 4.2.2 + + Performance and stability improvements on all platforms. + + +2015-01-14: Version 4.2.1 + + Map -0 to integer 0 for typed array constructors (Chromium issue + 447756). + + Introduce a gyp variable to control whether or not slow dchecks are on. + + Correctly setup the freelist of the coderange on Win64 (Chromium issue + 447555). + + Fast forward V8 to version 4.2. + + Remove "extra checks". + + Performance and stability improvements on all platforms. + + +2015-01-08: Version 3.32.7 + + Correctly parse line ends for debugging (issue 2825). + + Fixed printing during DCE (issue 3679). + + Performance and stability improvements on all platforms. + + +2015-01-08: Version 3.32.6 + + Performance and stability improvements on all platforms. + + +2015-01-08: Version 3.32.5 + + Correct handling of exceptions occured during getting of exception stack + trace (Chromium issue 444805). + + Fix bug in Runtime_CompileOptimized resulting from stack overflow + (Chromium issue 446774). + + Turn on job-based recompilation (issue 3608). + + Performance and stability improvements on all platforms. + + +2015-01-07: Version 3.32.4 + + Performance and stability improvements on all platforms. + + 2015-01-07: Version 3.32.3 Performance and stability improvements on all platforms. diff --git a/deps/v8/DEPS b/deps/v8/DEPS index a81c7ecc38837f..b829d05dabb9ad 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -8,17 +8,17 @@ vars = { deps = { "v8/build/gyp": - Var("git_url") + "/external/gyp.git" + "@" + "fe00999dfaee449d3465a9316778434884da4fa7", # from svn revision 2010 + Var("git_url") + "/external/gyp.git" + "@" + "34640080d08ab2a37665512e52142947def3056d", "v8/third_party/icu": - Var("git_url") + "/chromium/deps/icu.git" + "@" + "51c1a4ce5f362676aa1f1cfdb5b7e52edabfa5aa", + Var("git_url") + "/chromium/deps/icu.git" + "@" + "4e3266f32c62d30a3f9e2232a753c60129d1e670", "v8/buildtools": - Var("git_url") + "/chromium/buildtools.git" + "@" + "23a4e2f545c7b6340d7e5a2b74801941b0a86535", + Var("git_url") + "/chromium/buildtools.git" + "@" + "5c5e924788fe40f7d6e0a3841ac572de2475e689", "v8/testing/gtest": - Var("git_url") + "/external/googletest.git" + "@" + "8245545b6dc9c4703e6496d1efd19e975ad2b038", # from svn revision 700 + 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" + "@" + "c945be21f6485fa177b43814f910b76cce921653", + Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "f6daa55d03995e82201a3278203e7c0421a59546", } deps_os = { @@ -80,6 +80,17 @@ hooks = [ "-s", "v8/buildtools/linux64/clang-format.sha1", ], }, + # 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 + { + 'name': 'binutils', + 'pattern': 'v8/third_party/binutils', + 'action': [ + 'python', + 'v8/third_party/binutils/download.py', + ], + }, { # Pull clang if needed or requested via GYP_DEFINES. # Note: On Win, this should run after win_toolchain, as it may use it. diff --git a/deps/v8/Makefile b/deps/v8/Makefile index 606b5d7bf176ab..5468d913341e31 100644 --- a/deps/v8/Makefile +++ b/deps/v8/Makefile @@ -27,8 +27,6 @@ # Variable default definitions. Override them by exporting them in your shell. -CXX ?= g++ -LINK ?= g++ OUTDIR ?= out TESTJOBS ?= GYPFLAGS ?= @@ -87,10 +85,17 @@ ifeq ($(snapshot), external) endif # extrachecks=on/off ifeq ($(extrachecks), on) - GYPFLAGS += -Dv8_enable_extra_checks=1 -Dv8_enable_handle_zapping=1 + GYPFLAGS += -Ddcheck_always_on=1 -Dv8_enable_handle_zapping=1 endif ifeq ($(extrachecks), off) - GYPFLAGS += -Dv8_enable_extra_checks=0 -Dv8_enable_handle_zapping=0 + GYPFLAGS += -Ddcheck_always_on=0 -Dv8_enable_handle_zapping=0 +endif +# slowdchecks=on/off +ifeq ($(slowdchecks), on) + GYPFLAGS += -Dv8_enable_slow_dchecks=1 +endif +ifeq ($(slowdchecks), off) + GYPFLAGS += -Dv8_enable_slow_dchecks=0 endif # gdbjit=on/off ifeq ($(gdbjit), on) @@ -103,10 +108,6 @@ endif ifeq ($(vtunejit), on) GYPFLAGS += -Dv8_enable_vtunejit=1 endif -# optdebug=on -ifeq ($(optdebug), on) - GYPFLAGS += -Dv8_optimized_debug=2 -endif # unalignedaccess=on ifeq ($(unalignedaccess), on) GYPFLAGS += -Dv8_can_use_unaligned_accesses=true @@ -144,19 +145,17 @@ endif ifeq ($(deprecationwarnings), on) GYPFLAGS += -Dv8_deprecation_warnings=1 endif -# asan=/path/to/clang++ -ifneq ($(strip $(asan)),) - GYPFLAGS += -Dasan=1 - export CC=$(dir $(asan))clang - export CXX=$(asan) - export CXX_host=$(asan) - export LINK=$(asan) - export ASAN_SYMBOLIZER_PATH=$(dir $(asan))llvm-symbolizer +# asan=on +ifeq ($(asan), on) + GYPFLAGS += -Dasan=1 -Dclang=1 TESTFLAGS += --asan ifeq ($(lsan), on) GYPFLAGS += -Dlsan=1 endif endif +ifdef embedscript + GYPFLAGS += -Dembed_script=$(embedscript) +endif # arm specific flags. # arm_version= @@ -214,8 +213,6 @@ ifeq ($(arm_test_noprobe), on) endif # ----------------- available targets: -------------------- -# - "builddeps": pulls in external dependencies for building -# - "dependencies": pulls in all external dependencies # - "grokdump": rebuilds heap constants lists used by grokdump # - any arch listed in ARCHES (see below) # - any mode listed in MODES @@ -233,7 +230,7 @@ endif # Architectures and modes to be compiled. Consider these to be internal # variables, don't override them (use the targets instead). -ARCHES = ia32 x64 x32 arm arm64 mips mipsel mips64el x87 +ARCHES = ia32 x64 x32 arm arm64 mips mipsel mips64el x87 ppc ppc64 DEFAULT_ARCHES = ia32 x64 arm MODES = release debug optdebug DEFAULT_MODES = release debug @@ -241,9 +238,15 @@ ANDROID_ARCHES = android_ia32 android_arm android_arm64 android_mipsel android_x NACL_ARCHES = nacl_ia32 nacl_x64 # List of files that trigger Makefile regeneration: -GYPFILES = build/all.gyp build/features.gypi build/standalone.gypi \ - build/toolchain.gypi samples/samples.gyp src/d8.gyp \ - test/cctest/cctest.gyp test/unittests/unittests.gyp tools/gyp/v8.gyp +GYPFILES = third_party/icu/icu.gypi third_party/icu/icu.gyp \ + build/shim_headers.gypi build/features.gypi build/standalone.gypi \ + build/toolchain.gypi build/all.gyp build/mac/asan.gyp \ + build/android.gypi test/cctest/cctest.gyp \ + test/unittests/unittests.gyp tools/gyp/v8.gyp \ + tools/parser-shell.gyp testing/gmock.gyp testing/gtest.gyp \ + buildtools/third_party/libc++abi/libc++abi.gyp \ + buildtools/third_party/libc++/libc++.gyp samples/samples.gyp \ + src/third_party/vtune/v8vtune.gyp src/d8.gyp # If vtunejit=on, the v8vtune.gyp will be appended. ifeq ($(vtunejit), on) @@ -291,7 +294,6 @@ $(ARCHES): $(addprefix $$@.,$(DEFAULT_MODES)) # Defines how to build a particular target (e.g. ia32.release). $(BUILDS): $(OUTDIR)/Makefile.$$@ @$(MAKE) -C "$(OUTDIR)" -f Makefile.$@ \ - CXX="$(CXX)" LINK="$(LINK)" \ BUILDTYPE=$(shell echo $(subst .,,$(suffix $@)) | \ python -c "print \ raw_input().replace('opt', '').capitalize()") \ @@ -299,7 +301,7 @@ $(BUILDS): $(OUTDIR)/Makefile.$$@ native: $(OUTDIR)/Makefile.native @$(MAKE) -C "$(OUTDIR)" -f Makefile.native \ - CXX="$(CXX)" LINK="$(LINK)" BUILDTYPE=Release \ + BUILDTYPE=Release \ builddir="$(shell pwd)/$(OUTDIR)/$@" $(ANDROID_ARCHES): $(addprefix $$@.,$(MODES)) @@ -423,6 +425,7 @@ $(OUT_MAKEFILES): $(GYPFILES) $(ENVFILE) $(eval CXX_TARGET_ARCH:=$(shell $(CXX) -v 2>&1 | grep ^Target: | \ cut -f 2 -d " " | cut -f 1 -d "-" )) $(eval CXX_TARGET_ARCH:=$(subst aarch64,arm64,$(CXX_TARGET_ARCH))) + $(eval CXX_TARGET_ARCH:=$(subst x86_64,x64,$(CXX_TARGET_ARCH))) $(eval V8_TARGET_ARCH:=$(subst .,,$(suffix $(basename $@)))) PYTHONPATH="$(shell pwd)/tools/generate_shim_headers:$(shell pwd)/build:$(PYTHONPATH):$(shell pwd)/build/gyp/pylib:$(PYTHONPATH)" \ GYP_GENERATORS=make \ @@ -431,7 +434,7 @@ $(OUT_MAKEFILES): $(GYPFILES) $(ENVFILE) -Dv8_target_arch=$(V8_TARGET_ARCH) \ $(if $(findstring $(CXX_TARGET_ARCH),$(V8_TARGET_ARCH)), \ -Dtarget_arch=$(V8_TARGET_ARCH),) \ - $(if $(findstring optdebug,$@),-Dv8_optimized_debug=2,) \ + $(if $(findstring optdebug,$@),-Dv8_optimized_debug=1,) \ -S$(suffix $(basename $@))$(suffix $@) $(GYPFLAGS) $(OUTDIR)/Makefile.native: $(GYPFILES) $(ENVFILE) @@ -468,8 +471,11 @@ $(ENVFILE): $(ENVFILE).new # Stores current GYPFLAGS in a file. $(ENVFILE).new: - @mkdir -p $(OUTDIR); echo "GYPFLAGS=$(GYPFLAGS)" > $(ENVFILE).new; \ - echo "CXX=$(CXX)" >> $(ENVFILE).new + $(eval CXX_TARGET_ARCH:=$(shell $(CXX) -v 2>&1 | grep ^Target: | \ + cut -f 2 -d " " | cut -f 1 -d "-" )) + $(eval CXX_TARGET_ARCH:=$(subst aarch64,arm64,$(CXX_TARGET_ARCH))) + $(eval CXX_TARGET_ARCH:=$(subst x86_64,x64,$(CXX_TARGET_ARCH))) + @mkdir -p $(OUTDIR); echo "GYPFLAGS=$(GYPFLAGS) -Dtarget_arch=$(CXX_TARGET_ARCH)" > $(ENVFILE).new; # Heap constants for grokdump. DUMP_FILE = tools/v8heapconst.py @@ -489,26 +495,5 @@ GPATH GRTAGS GSYMS GTAGS: gtags.files $(shell cat gtags.files 2> /dev/null) gtags.clean: rm -f gtags.files GPATH GRTAGS GSYMS GTAGS -# Dependencies. "builddeps" are dependencies required solely for building, -# "dependencies" includes also dependencies required for development. -# Remember to keep these in sync with the DEPS file. -builddeps: - svn checkout --force https://gyp.googlecode.com/svn/trunk build/gyp \ - --revision 1831 - if svn info third_party/icu 2>&1 | grep -q icu46 ; then \ - svn switch --force \ - https://src.chromium.org/chrome/trunk/deps/third_party/icu52 \ - third_party/icu --revision 277999 ; \ - else \ - svn checkout --force \ - https://src.chromium.org/chrome/trunk/deps/third_party/icu52 \ - third_party/icu --revision 277999 ; \ - fi - svn checkout --force https://googletest.googlecode.com/svn/trunk \ - testing/gtest --revision 692 - svn checkout --force https://googlemock.googlecode.com/svn/trunk \ - testing/gmock --revision 485 - -dependencies: builddeps - # The spec is a copy of the hooks in v8's DEPS file. - gclient sync -r fb782d4369d5ae04f17a2fceef7de5a63e50f07b --spec="solutions = [{u'managed': False, u'name': u'buildtools', u'url': u'https://chromium.googlesource.com/chromium/buildtools.git', u'custom_deps': {}, u'custom_hooks': [{u'name': u'clang_format_win',u'pattern': u'.',u'action': [u'download_from_google_storage',u'--no_resume',u'--platform=win32',u'--no_auth',u'--bucket',u'chromium-clang-format',u'-s',u'buildtools/win/clang-format.exe.sha1']},{u'name': u'clang_format_mac',u'pattern': u'.',u'action': [u'download_from_google_storage',u'--no_resume',u'--platform=darwin',u'--no_auth',u'--bucket',u'chromium-clang-format',u'-s',u'buildtools/mac/clang-format.sha1']},{u'name': u'clang_format_linux',u'pattern': u'.',u'action': [u'download_from_google_storage',u'--no_resume',u'--platform=linux*',u'--no_auth',u'--bucket',u'chromium-clang-format',u'-s',u'buildtools/linux64/clang-format.sha1']}],u'deps_file': u'.DEPS.git', u'safesync_url': u''}]" +dependencies builddeps: + $(error Use 'gclient sync' instead) diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index 22a05cb17782de..d6db77ffe0f0d0 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -1,4 +1,5 @@ adamk@chromium.org +arv@chromium.org bmeurer@chromium.org danno@chromium.org dcarney@chromium.org diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 6d19a4e57408d7..fd0601f17bbfd8 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -69,6 +69,7 @@ def _V8PresubmitChecks(input_api, output_api): from presubmit import SourceProcessor from presubmit import CheckRuntimeVsNativesNameClashes from presubmit import CheckExternalReferenceRegistration + from presubmit import CheckAuthorizedAuthor results = [] if not CppLintProcessor().Run(input_api.PresubmitLocalPath()): @@ -83,6 +84,7 @@ def _V8PresubmitChecks(input_api, output_api): if not CheckExternalReferenceRegistration(input_api.PresubmitLocalPath()): results.append(output_api.PresubmitError( "External references registration check failed")) + results.extend(CheckAuthorizedAuthor(input_api, output_api)) return results @@ -198,8 +200,8 @@ def _CommonChecks(input_api, output_api): def _SkipTreeCheck(input_api, output_api): """Check the env var whether we want to skip tree check. - Only skip if src/version.cc has been updated.""" - src_version = 'src/version.cc' + Only skip if include/v8-version.h has been updated.""" + src_version = 'include/v8-version.h' FilterFile = lambda file: file.LocalPath() == src_version if not input_api.AffectedSourceFiles( lambda file: file.LocalPath() == src_version): @@ -242,15 +244,17 @@ def GetPreferredTryMasters(project, change): return { 'tryserver.v8': { 'v8_linux_rel': set(['defaulttests']), - 'v8_linux_dbg': set(['defaulttests']), - 'v8_linux_nosnap_rel': set(['defaulttests']), + 'v8_linux_nodcheck_rel': set(['defaulttests']), + 'v8_linux_gcc_compile_rel': set(['defaulttests']), 'v8_linux64_rel': set(['defaulttests']), - 'v8_linux_arm_dbg': set(['defaulttests']), + 'v8_linux64_asan_rel': set(['defaulttests']), + 'v8_win_rel': set(['defaulttests']), + 'v8_win_compile_dbg': 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_layout_dbg': set(['defaulttests']), + 'v8_android_arm_compile_rel': set(['defaulttests']), 'v8_linux_chromium_gn_rel': set(['defaulttests']), - 'v8_mac_rel': set(['defaulttests']), - 'v8_win_rel': set(['defaulttests']), - 'v8_win64_compile_rel': set(['defaulttests']), }, } diff --git a/deps/v8/build/features.gypi b/deps/v8/build/features.gypi index 465eba91480d72..2eadca338438dc 100644 --- a/deps/v8/build/features.gypi +++ b/deps/v8/build/features.gypi @@ -102,13 +102,9 @@ 'DebugBaseCommon': { 'abstract': 1, 'variables': { - 'v8_enable_extra_checks%': 1, 'v8_enable_handle_zapping%': 1, }, 'conditions': [ - ['v8_enable_extra_checks==1', { - 'defines': ['ENABLE_EXTRA_CHECKS',], - }], ['v8_enable_handle_zapping==1', { 'defines': ['ENABLE_HANDLE_ZAPPING',], }], @@ -116,13 +112,9 @@ }, # Debug 'Release': { 'variables': { - 'v8_enable_extra_checks%': 0, 'v8_enable_handle_zapping%': 0, }, 'conditions': [ - ['v8_enable_extra_checks==1', { - 'defines': ['ENABLE_EXTRA_CHECKS',], - }], ['v8_enable_handle_zapping==1', { 'defines': ['ENABLE_HANDLE_ZAPPING',], }], diff --git a/deps/v8/build/mac/asan.gyp b/deps/v8/build/mac/asan.gyp new file mode 100644 index 00000000000000..3fc7f58d434915 --- /dev/null +++ b/deps/v8/build/mac/asan.gyp @@ -0,0 +1,31 @@ +# Copyright 2015 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. + +{ + 'targets': [ + { + 'target_name': 'asan_dynamic_runtime', + 'toolsets': ['target', 'host'], + 'type': 'none', + 'variables': { + # Every target is going to depend on asan_dynamic_runtime, so allow + # this one to depend on itself. + 'prune_self_dependency': 1, + # Path is relative to this GYP file. + 'asan_rtl_mask_path': + '../../third_party/llvm-build/Release+Asserts/lib/clang/*/lib/darwin', + 'asan_osx_dynamic': + '<(asan_rtl_mask_path)/libclang_rt.asan_osx_dynamic.dylib', + }, + 'copies': [ + { + 'destination': '<(PRODUCT_DIR)', + 'files': [ + ' { }; +template +class DefaultPhantomPersistentValueMapTraits : public StdMapTraits { + private: + template + struct RemovePointer; + + public: + // Weak callback & friends: + static const PersistentContainerCallbackType kCallbackType = kNotWeak; + typedef PersistentValueMap< + K, V, DefaultPhantomPersistentValueMapTraits > MapType; + typedef void PhantomCallbackDataType; + + static PhantomCallbackDataType* PhantomCallbackParameter(MapType* map, + const K& key, + Local value) { + return NULL; + } + static MapType* MapFromPhantomCallbackData( + const PhantomCallbackData& data) { + return NULL; + } + static K KeyFromPhantomCallbackData( + const PhantomCallbackData& data) { + return K(); + } + static void DisposeCallbackData(PhantomCallbackDataType* data) {} + static void Dispose(Isolate* isolate, UniquePersistent value, K key) {} + + private: + template + struct RemovePointer { + typedef T Type; + }; +}; + + /** * A map wrapper that allows using UniquePersistent as a mapped value. * C++11 embedders don't need this class, as they can use UniquePersistent @@ -115,13 +152,9 @@ class DefaultPersistentValueMapTraits : public StdMapTraits { * PersistentContainerValue, with all conversion into and out of V8 * handles being transparently handled by this class. */ -template -class PersistentValueMap { +template +class PersistentValueMapBase { public: - explicit PersistentValueMap(Isolate* isolate) : isolate_(isolate) {} - - ~PersistentValueMap() { Clear(); } - Isolate* GetIsolate() { return isolate_; } /** @@ -167,23 +200,6 @@ class PersistentValueMap { reinterpret_cast(FromVal(Traits::Get(&impl_, key)))); } - /** - * Put value into map. Depending on Traits::kIsWeak, the value will be held - * by the map strongly or weakly. - * Returns old value as UniquePersistent. - */ - UniquePersistent Set(const K& key, Local value) { - UniquePersistent persistent(isolate_, value); - return SetUnique(key, &persistent); - } - - /** - * Put value into map, like Set(const K&, Local). - */ - UniquePersistent Set(const K& key, UniquePersistent value) { - return SetUnique(key, &value); - } - /** * Return value for key and remove it from the map. */ @@ -237,7 +253,9 @@ class PersistentValueMap { } private: - friend class PersistentValueMap; + friend class PersistentValueMapBase; + friend class PersistentValueMap; + friend class PhantomPersistentValueMap; explicit PersistentValueReference(PersistentContainerValue value) : value_(value) { } @@ -263,19 +281,89 @@ class PersistentValueMap { return PersistentValueReference(Traits::Get(&impl_, key)); } + protected: + explicit PersistentValueMapBase(Isolate* isolate) : isolate_(isolate) {} + + ~PersistentValueMapBase() { Clear(); } + + Isolate* isolate() { return isolate_; } + typename Traits::Impl* impl() { return &impl_; } + + static V* FromVal(PersistentContainerValue v) { + return reinterpret_cast(v); + } + + static PersistentContainerValue ClearAndLeak( + UniquePersistent* persistent) { + V* v = persistent->val_; + persistent->val_ = 0; + return reinterpret_cast(v); + } + + static PersistentContainerValue Leak(UniquePersistent* persistent) { + return reinterpret_cast(persistent->val_); + } + /** - * Put a value into the map and update the reference. - * Restrictions of GetReference apply here as well. + * Return a container value as UniquePersistent and make sure the weak + * callback is properly disposed of. All remove functionality should go + * through this. */ - UniquePersistent Set(const K& key, UniquePersistent value, - PersistentValueReference* reference) { - *reference = Leak(&value); - return SetUnique(key, &value); + static UniquePersistent Release(PersistentContainerValue v) { + UniquePersistent p; + p.val_ = FromVal(v); + if (Traits::kCallbackType != kNotWeak && p.IsWeak()) { + Traits::DisposeCallbackData( + p.template ClearWeak()); + } + return p.Pass(); } private: - PersistentValueMap(PersistentValueMap&); - void operator=(PersistentValueMap&); + PersistentValueMapBase(PersistentValueMapBase&); + void operator=(PersistentValueMapBase&); + + static bool SetReturnValueFromVal(ReturnValue* returnValue, + PersistentContainerValue value) { + bool hasValue = value != kPersistentContainerNotFound; + if (hasValue) { + returnValue->SetInternal( + *reinterpret_cast(FromVal(value))); + } + return hasValue; + } + + Isolate* isolate_; + typename Traits::Impl impl_; +}; + + +template +class PersistentValueMap : public PersistentValueMapBase { + public: + explicit PersistentValueMap(Isolate* isolate) + : PersistentValueMapBase(isolate) {} + + typedef + typename PersistentValueMapBase::PersistentValueReference + PersistentValueReference; + + /** + * Put value into map. Depending on Traits::kIsWeak, the value will be held + * by the map strongly or weakly. + * Returns old value as UniquePersistent. + */ + UniquePersistent Set(const K& key, Local value) { + UniquePersistent persistent(this->isolate(), value); + return SetUnique(key, &persistent); + } + + /** + * Put value into map, like Set(const K&, Local). + */ + UniquePersistent Set(const K& key, UniquePersistent value) { + return SetUnique(key, &value); + } /** * Put the value into the map, and set the 'weak' callback when demanded @@ -283,15 +371,26 @@ class PersistentValueMap { */ UniquePersistent SetUnique(const K& key, UniquePersistent* persistent) { if (Traits::kCallbackType != kNotWeak) { - Local value(Local::New(isolate_, *persistent)); + Local value(Local::New(this->isolate(), *persistent)); persistent->template SetWeak( Traits::WeakCallbackParameter(this, key, value), WeakCallback); } PersistentContainerValue old_value = - Traits::Set(&impl_, key, ClearAndLeak(persistent)); - return Release(old_value).Pass(); + Traits::Set(this->impl(), key, this->ClearAndLeak(persistent)); + return this->Release(old_value).Pass(); + } + + /** + * Put a value into the map and update the reference. + * Restrictions of GetReference apply here as well. + */ + UniquePersistent Set(const K& key, UniquePersistent value, + PersistentValueReference* reference) { + *reference = this->Leak(&value); + return SetUnique(key, &value); } + private: static void WeakCallback( const WeakCallbackData& data) { if (Traits::kCallbackType != kNotWeak) { @@ -303,50 +402,73 @@ class PersistentValueMap { Traits::DisposeCallbackData(data.GetParameter()); } } +}; - static V* FromVal(PersistentContainerValue v) { - return reinterpret_cast(v); - } - static bool SetReturnValueFromVal( - ReturnValue* returnValue, PersistentContainerValue value) { - bool hasValue = value != kPersistentContainerNotFound; - if (hasValue) { - returnValue->SetInternal( - *reinterpret_cast(FromVal(value))); - } - return hasValue; - } +template +class PhantomPersistentValueMap : public PersistentValueMapBase { + public: + explicit PhantomPersistentValueMap(Isolate* isolate) + : PersistentValueMapBase(isolate) {} - static PersistentContainerValue ClearAndLeak( - UniquePersistent* persistent) { - V* v = persistent->val_; - persistent->val_ = 0; - return reinterpret_cast(v); + typedef + typename PersistentValueMapBase::PersistentValueReference + PersistentValueReference; + + /** + * Put value into map. Depending on Traits::kIsWeak, the value will be held + * by the map strongly or weakly. + * Returns old value as UniquePersistent. + */ + UniquePersistent Set(const K& key, Local value) { + UniquePersistent persistent(this->isolate(), value); + return SetUnique(key, &persistent); } - static PersistentContainerValue Leak( - UniquePersistent* persistent) { - return reinterpret_cast(persistent->val_); + /** + * Put value into map, like Set(const K&, Local). + */ + UniquePersistent Set(const K& key, UniquePersistent value) { + return SetUnique(key, &value); } /** - * Return a container value as UniquePersistent and make sure the weak - * callback is properly disposed of. All remove functionality should go - * through this. + * Put the value into the map, and set the 'weak' callback when demanded + * by the Traits class. */ - static UniquePersistent Release(PersistentContainerValue v) { - UniquePersistent p; - p.val_ = FromVal(v); - if (Traits::kCallbackType != kNotWeak && p.IsWeak()) { - Traits::DisposeCallbackData( - p.template ClearWeak()); + UniquePersistent SetUnique(const K& key, UniquePersistent* persistent) { + if (Traits::kCallbackType != kNotWeak) { + Local value(Local::New(this->isolate(), *persistent)); + persistent->template SetPhantom( + Traits::WeakCallbackParameter(this, key, value), WeakCallback, 0, 1); } - return p.Pass(); + PersistentContainerValue old_value = + Traits::Set(this->impl(), key, this->ClearAndLeak(persistent)); + return this->Release(old_value).Pass(); } - Isolate* isolate_; - typename Traits::Impl impl_; + /** + * Put a value into the map and update the reference. + * Restrictions of GetReference apply here as well. + */ + UniquePersistent Set(const K& key, UniquePersistent value, + PersistentValueReference* reference) { + *reference = this->Leak(&value); + return SetUnique(key, &value); + } + + private: + static void WeakCallback( + const PhantomCallbackData& data) { + if (Traits::kCallbackType != kNotWeak) { + PhantomPersistentValueMap* persistentValueMap = + Traits::MapFromPhantomCallbackData(data); + K key = Traits::KeyFromPhantomCallbackData(data); + Traits::Dispose(data.GetIsolate(), persistentValueMap->Remove(key).Pass(), + key); + Traits::DisposeCallbackData(data.GetParameter()); + } + } }; diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h new file mode 100644 index 00000000000000..49f41f05073126 --- /dev/null +++ b/deps/v8/include/v8-version.h @@ -0,0 +1,20 @@ +// Copyright 2015 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_INCLUDE_VERSION_H_ // V8_VERSION_H_ conflicts with src/version.h +#define V8_INCLUDE_VERSION_H_ + +// These macros define the version number for the current version. +// 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 2 +#define V8_BUILD_NUMBER 77 +#define V8_PATCH_LEVEL 13 + +// Use 1 for candidates and 0 otherwise. +// (Boolean macro values are not supported by all preprocessors.) +#define V8_IS_CANDIDATE_VERSION 0 + +#endif // V8_INCLUDE_VERSION_H_ diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index d35f2fcb27fabe..978a5c2243c950 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -19,6 +19,7 @@ #include #include +#include "v8-version.h" #include "v8config.h" // We reserve the V8_* prefix for macros defined in V8 public API and @@ -72,7 +73,6 @@ class Context; class CpuProfiler; class Data; class Date; -class DeclaredAccessorDescriptor; class External; class Function; class FunctionTemplate; @@ -112,6 +112,10 @@ template > class Persistent; template class UniquePersistent; template class PersistentValueMap; +template +class PersistentValueMapBase; +template +class PhantomPersistentValueMap; template class PersistentValueVector; template class WeakCallbackObject; class FunctionTemplate; @@ -122,9 +126,6 @@ template class PropertyCallbackInfo; class StackTrace; class StackFrame; class Isolate; -class DeclaredAccessorDescriptor; -class ObjectOperationDescriptor; -class RawOperationDescriptor; class CallHandlerHelper; class EscapableHandleScope; template class ReturnValue; @@ -141,15 +142,18 @@ class PropertyCallbackArguments; class FunctionCallbackArguments; class GlobalHandles; +template class CallbackData { public: V8_INLINE v8::Isolate* GetIsolate() const { return isolate_; } - protected: - explicit CallbackData(v8::Isolate* isolate) : isolate_(isolate) {} + explicit CallbackData(v8::Isolate* isolate, T* parameter) + : isolate_(isolate), parameter_(parameter) {} + V8_INLINE T* GetParameter() const { return parameter_; } private: v8::Isolate* isolate_; + T* parameter_; }; } @@ -402,7 +406,8 @@ template class Local : public Handle { template friend class internal::CustomArguments; friend class HandleScope; friend class EscapableHandleScope; - template friend class PersistentValueMap; + template + friend class PersistentValueMapBase; template friend class PersistentValueVector; template V8_INLINE Local(S* that) : Handle(that) { } @@ -430,22 +435,27 @@ template class Eternal { template -class PhantomCallbackData : public internal::CallbackData { +class PhantomCallbackData : public internal::CallbackData { public: typedef void (*Callback)(const PhantomCallbackData& data); - V8_INLINE T* GetParameter() const { return parameter_; } + V8_INLINE void* GetInternalField1() const { return internal_field1_; } + V8_INLINE void* GetInternalField2() const { return internal_field2_; } - PhantomCallbackData(Isolate* isolate, T* parameter) - : internal::CallbackData(isolate), parameter_(parameter) {} + PhantomCallbackData(Isolate* isolate, T* parameter, void* internal_field1, + void* internal_field2) + : internal::CallbackData(isolate, parameter), + internal_field1_(internal_field1), + internal_field2_(internal_field2) {} private: - T* parameter_; + void* internal_field1_; + void* internal_field2_; }; template -class WeakCallbackData : public PhantomCallbackData

{ +class WeakCallbackData : public internal::CallbackData

{ public: typedef void (*Callback)(const WeakCallbackData& data); @@ -454,29 +464,12 @@ class WeakCallbackData : public PhantomCallbackData

{ private: friend class internal::GlobalHandles; WeakCallbackData(Isolate* isolate, P* parameter, Local handle) - : PhantomCallbackData

(isolate, parameter), handle_(handle) {} + : internal::CallbackData

(isolate, parameter), handle_(handle) {} Local handle_; }; -template -class InternalFieldsCallbackData : public internal::CallbackData { - public: - typedef void (*Callback)(const InternalFieldsCallbackData& data); - - InternalFieldsCallbackData(Isolate* isolate, T* internalField1, - U* internalField2) - : internal::CallbackData(isolate), - internal_field1_(internalField1), - internal_field2_(internalField2) {} - - V8_INLINE T* GetInternalField1() const { return internal_field1_; } - V8_INLINE U* GetInternalField2() const { return internal_field2_; } - - private: - T* internal_field1_; - U* internal_field2_; -}; +static const int kNoInternalFieldIndex = -1; /** @@ -567,12 +560,9 @@ template class PersistentBase { // fields in the dying object. template V8_INLINE void SetPhantom(P* parameter, - typename PhantomCallbackData

::Callback callback); - - template - V8_INLINE void SetPhantom( - void (*callback)(const InternalFieldsCallbackData&), - int internal_field_index1, int internal_field_index2); + typename PhantomCallbackData

::Callback callback, + int internal_field_index1 = kNoInternalFieldIndex, + int internal_field_index2 = kNoInternalFieldIndex); template V8_INLINE P* ClearWeak(); @@ -627,7 +617,8 @@ template class PersistentBase { template friend class UniquePersistent; template friend class PersistentBase; template friend class ReturnValue; - template friend class PersistentValueMap; + template + friend class PersistentValueMapBase; template friend class PersistentValueVector; friend class Object; @@ -986,21 +977,29 @@ class ScriptOrigin { Handle resource_line_offset = Handle(), Handle resource_column_offset = Handle(), Handle resource_is_shared_cross_origin = Handle(), - Handle script_id = Handle()) + Handle script_id = Handle(), + Handle resource_is_embedder_debug_script = Handle()) : resource_name_(resource_name), resource_line_offset_(resource_line_offset), resource_column_offset_(resource_column_offset), + resource_is_embedder_debug_script_(resource_is_embedder_debug_script), resource_is_shared_cross_origin_(resource_is_shared_cross_origin), - script_id_(script_id) { } + script_id_(script_id) {} V8_INLINE Handle ResourceName() const; V8_INLINE Handle ResourceLineOffset() const; V8_INLINE Handle ResourceColumnOffset() const; + /** + * Returns true for embedder's debugger scripts + */ + V8_INLINE Handle ResourceIsEmbedderDebugScript() const; V8_INLINE Handle ResourceIsSharedCrossOrigin() const; V8_INLINE Handle ScriptID() const; + private: Handle resource_name_; Handle resource_line_offset_; Handle resource_column_offset_; + Handle resource_is_embedder_debug_script_; Handle resource_is_shared_cross_origin_; Handle script_id_; }; @@ -1146,6 +1145,7 @@ class V8_EXPORT ScriptCompiler { Handle resource_name; Handle resource_line_offset; Handle resource_column_offset; + Handle resource_is_embedder_debug_script; Handle resource_is_shared_cross_origin; // Cached data from previous compilation (if a kConsume*Cache flag is @@ -1309,6 +1309,39 @@ class V8_EXPORT ScriptCompiler { * compared when it is being used. */ static uint32_t CachedDataVersionTag(); + + /** + * Compile an ES6 module. + * + * This is an experimental feature. + * + * TODO(adamk): Script is likely the wrong return value for this; + * should return some new Module type. + */ + static Local