diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ab73471c87b8a..e3c26a907b67f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,8 @@ release. -10.3.0
+10.4.0
+10.3.0
10.2.1
10.2.0
10.1.0
diff --git a/Makefile b/Makefile index a7099947c72a78..b11168aaa456af 100644 --- a/Makefile +++ b/Makefile @@ -643,7 +643,7 @@ available-node = \ exit 1; \ fi; -run-npm-install = $(PWD)/$(NPM) install --production +run-npm-install = $(PWD)/$(NPM) install --production --no-package-lock tools/doc/node_modules/js-yaml/package.json: cd tools/doc && $(call available-node,$(run-npm-install)) diff --git a/benchmark/assert/deepequal-buffer.js b/benchmark/assert/deepequal-buffer.js index 9556a81ec3b151..fe3f6f9754c3a0 100644 --- a/benchmark/assert/deepequal-buffer.js +++ b/benchmark/assert/deepequal-buffer.js @@ -14,6 +14,8 @@ const bench = common.createBenchmark(main, { }); function main({ len, n, method }) { + if (!method) + method = 'deepEqual'; const data = Buffer.allocUnsafe(len + 1); const actual = Buffer.alloc(len); const expected = Buffer.alloc(len); @@ -22,8 +24,7 @@ function main({ len, n, method }) { data.copy(expected); data.copy(expectedWrong); - // eslint-disable-next-line no-restricted-properties - const fn = method !== '' ? assert[method] : assert.deepEqual; + const fn = assert[method]; const value2 = method.includes('not') ? expectedWrong : expected; bench.start(); diff --git a/benchmark/assert/deepequal-map.js b/benchmark/assert/deepequal-map.js index bdd3c5c6b8c514..c6c7173fe8ed6d 100644 --- a/benchmark/assert/deepequal-map.js +++ b/benchmark/assert/deepequal-map.js @@ -1,9 +1,8 @@ 'use strict'; -/* eslint-disable no-restricted-properties */ - const common = require('../common.js'); -const assert = require('assert'); +const { deepEqual, deepStrictEqual, notDeepEqual, notDeepStrictEqual } = + require('assert'); const bench = common.createBenchmark(main, { n: [5e2], @@ -47,74 +46,74 @@ function main({ n, len, method }) { // Empty string falls through to next line as default, mostly for tests. case 'deepEqual_primitiveOnly': values = array.map((_, i) => [`str_${i}`, 123]); - benchmark(assert.deepEqual, n, values); + benchmark(deepEqual, n, values); break; case 'deepStrictEqual_primitiveOnly': values = array.map((_, i) => [`str_${i}`, 123]); - benchmark(assert.deepStrictEqual, n, values); + benchmark(deepStrictEqual, n, values); break; case 'deepEqual_objectOnly': values = array.map((_, i) => [[`str_${i}`, 1], 123]); - benchmark(assert.deepEqual, n, values); + benchmark(deepEqual, n, values); break; case 'deepStrictEqual_objectOnly': values = array.map((_, i) => [[`str_${i}`, 1], 123]); - benchmark(assert.deepStrictEqual, n, values); + benchmark(deepStrictEqual, n, values); break; case 'deepEqual_mixed': values = array.map((_, i) => [i % 2 ? [`str_${i}`, 1] : `str_${i}`, 123]); - benchmark(assert.deepEqual, n, values); + benchmark(deepEqual, n, values); break; case 'deepStrictEqual_mixed': values = array.map((_, i) => [i % 2 ? [`str_${i}`, 1] : `str_${i}`, 123]); - benchmark(assert.deepStrictEqual, n, values); + benchmark(deepStrictEqual, n, values); break; case 'deepEqual_looseMatches': values = array.map((_, i) => [i, i]); values2 = values.slice().map((v) => [String(v[0]), String(v[1])]); - benchmark(assert.deepEqual, n, values, values2); + benchmark(deepEqual, n, values, values2); break; case 'notDeepEqual_primitiveOnly': values = array.map((_, i) => [`str_${i}`, 123]); values2 = values.slice(0); values2[Math.floor(len / 2)] = ['w00t', 123]; - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; case 'notDeepStrictEqual_primitiveOnly': values = array.map((_, i) => [`str_${i}`, 123]); values2 = values.slice(0); values2[Math.floor(len / 2)] = ['w00t', 123]; - benchmark(assert.notDeepStrictEqual, n, values, values2); + benchmark(notDeepStrictEqual, n, values, values2); break; case 'notDeepEqual_objectOnly': values = array.map((_, i) => [[`str_${i}`, 1], 123]); values2 = values.slice(0); values2[Math.floor(len / 2)] = [['w00t'], 123]; - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; case 'notDeepStrictEqual_objectOnly': values = array.map((_, i) => [[`str_${i}`, 1], 123]); values2 = values.slice(0); values2[Math.floor(len / 2)] = [['w00t'], 123]; - benchmark(assert.notDeepStrictEqual, n, values, values2); + benchmark(notDeepStrictEqual, n, values, values2); break; case 'notDeepEqual_mixed': values = array.map((_, i) => [i % 2 ? [`str_${i}`, 1] : `str_${i}`, 123]); values2 = values.slice(0); values2[0] = ['w00t', 123]; - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; case 'notDeepStrictEqual_mixed': values = array.map((_, i) => [i % 2 ? [`str_${i}`, 1] : `str_${i}`, 123]); values2 = values.slice(0); values2[0] = ['w00t', 123]; - benchmark(assert.notDeepStrictEqual, n, values, values2); + benchmark(notDeepStrictEqual, n, values, values2); break; case 'notDeepEqual_looseMatches': values = array.map((_, i) => [i, i]); values2 = values.slice().map((v) => [String(v[0]), String(v[1])]); values2[len - 1] = [String(len + 1), String(len + 1)]; - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; default: throw new Error(`Unsupported method ${method}`); diff --git a/benchmark/assert/deepequal-object.js b/benchmark/assert/deepequal-object.js index 4c95006b3b8bc7..124943b19ec761 100644 --- a/benchmark/assert/deepequal-object.js +++ b/benchmark/assert/deepequal-object.js @@ -29,13 +29,15 @@ function main({ size, n, method }) { // TODO: Fix this "hack". `n` should not be manipulated. n = n / size; + if (!method) + method = 'deepEqual'; + const source = Array.apply(null, Array(size)); const actual = createObj(source); const expected = createObj(source); const expectedWrong = createObj(source, '4'); - // eslint-disable-next-line no-restricted-properties - const fn = method !== '' ? assert[method] : assert.deepEqual; + const fn = assert[method]; const value2 = method.includes('not') ? expectedWrong : expected; bench.start(); diff --git a/benchmark/assert/deepequal-prims-and-objs-big-array-set.js b/benchmark/assert/deepequal-prims-and-objs-big-array-set.js index 90dbf1059361a5..4578e5a250f392 100644 --- a/benchmark/assert/deepequal-prims-and-objs-big-array-set.js +++ b/benchmark/assert/deepequal-prims-and-objs-big-array-set.js @@ -1,7 +1,8 @@ 'use strict'; const common = require('../common.js'); -const assert = require('assert'); +const { deepEqual, deepStrictEqual, notDeepEqual, notDeepStrictEqual } = + require('assert'); const primValues = { 'null': null, @@ -61,32 +62,28 @@ function main({ n, len, primitive, method }) { // Empty string falls through to next line as default, mostly for tests. case '': case 'deepEqual_Array': - // eslint-disable-next-line no-restricted-properties - run(assert.deepEqual, n, actual, expected); + run(deepEqual, n, actual, expected); break; case 'deepStrictEqual_Array': - run(assert.deepStrictEqual, n, actual, expected); + run(deepStrictEqual, n, actual, expected); break; case 'notDeepEqual_Array': - // eslint-disable-next-line no-restricted-properties - run(assert.notDeepEqual, n, actual, expectedWrong); + run(notDeepEqual, n, actual, expectedWrong); break; case 'notDeepStrictEqual_Array': - run(assert.notDeepStrictEqual, n, actual, expectedWrong); + run(notDeepStrictEqual, n, actual, expectedWrong); break; case 'deepEqual_Set': - // eslint-disable-next-line no-restricted-properties - run(assert.deepEqual, n, actualSet, expectedSet); + run(deepEqual, n, actualSet, expectedSet); break; case 'deepStrictEqual_Set': - run(assert.deepStrictEqual, n, actualSet, expectedSet); + run(deepStrictEqual, n, actualSet, expectedSet); break; case 'notDeepEqual_Set': - // eslint-disable-next-line no-restricted-properties - run(assert.notDeepEqual, n, actualSet, expectedWrongSet); + run(notDeepEqual, n, actualSet, expectedWrongSet); break; case 'notDeepStrictEqual_Set': - run(assert.notDeepStrictEqual, n, actualSet, expectedWrongSet); + run(notDeepStrictEqual, n, actualSet, expectedWrongSet); break; default: throw new Error(`Unsupported method "${method}"`); diff --git a/benchmark/assert/deepequal-prims-and-objs-big-loop.js b/benchmark/assert/deepequal-prims-and-objs-big-loop.js index ec51201d51839d..f1183dab32a3fb 100644 --- a/benchmark/assert/deepequal-prims-and-objs-big-loop.js +++ b/benchmark/assert/deepequal-prims-and-objs-big-loop.js @@ -25,13 +25,14 @@ const bench = common.createBenchmark(main, { }); function main({ n, primitive, method }) { + if (!method) + method = 'deepEqual'; const prim = primValues[primitive]; const actual = prim; const expected = prim; const expectedWrong = 'b'; - // eslint-disable-next-line no-restricted-properties - const fn = method !== '' ? assert[method] : assert.deepEqual; + const fn = assert[method]; const value2 = method.includes('not') ? expectedWrong : expected; bench.start(); diff --git a/benchmark/assert/deepequal-set.js b/benchmark/assert/deepequal-set.js index e70ddf10e93626..6769e5e37fafb7 100644 --- a/benchmark/assert/deepequal-set.js +++ b/benchmark/assert/deepequal-set.js @@ -1,9 +1,8 @@ 'use strict'; -/* eslint-disable no-restricted-properties */ - const common = require('../common.js'); -const assert = require('assert'); +const { deepEqual, deepStrictEqual, notDeepEqual, notDeepStrictEqual } = + require('assert'); const bench = common.createBenchmark(main, { n: [5e2], @@ -48,60 +47,60 @@ function main({ n, len, method }) { // Empty string falls through to next line as default, mostly for tests. case 'deepEqual_primitiveOnly': values = array.map((_, i) => `str_${i}`); - benchmark(assert.deepEqual, n, values); + benchmark(deepEqual, n, values); break; case 'deepStrictEqual_primitiveOnly': values = array.map((_, i) => `str_${i}`); - benchmark(assert.deepStrictEqual, n, values); + benchmark(deepStrictEqual, n, values); break; case 'deepEqual_objectOnly': values = array.map((_, i) => [`str_${i}`, null]); - benchmark(assert.deepEqual, n, values); + benchmark(deepEqual, n, values); break; case 'deepStrictEqual_objectOnly': values = array.map((_, i) => [`str_${i}`, null]); - benchmark(assert.deepStrictEqual, n, values); + benchmark(deepStrictEqual, n, values); break; case 'deepEqual_mixed': values = array.map((_, i) => { return i % 2 ? [`str_${i}`, null] : `str_${i}`; }); - benchmark(assert.deepEqual, n, values); + benchmark(deepEqual, n, values); break; case 'deepStrictEqual_mixed': values = array.map((_, i) => { return i % 2 ? [`str_${i}`, null] : `str_${i}`; }); - benchmark(assert.deepStrictEqual, n, values); + benchmark(deepStrictEqual, n, values); break; case 'deepEqual_looseMatches': values = array.map((_, i) => i); values2 = values.slice().map((v) => String(v)); - benchmark(assert.deepEqual, n, values, values2); + benchmark(deepEqual, n, values, values2); break; case 'notDeepEqual_primitiveOnly': values = array.map((_, i) => `str_${i}`); values2 = values.slice(0); values2[Math.floor(len / 2)] = 'w00t'; - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; case 'notDeepStrictEqual_primitiveOnly': values = array.map((_, i) => `str_${i}`); values2 = values.slice(0); values2[Math.floor(len / 2)] = 'w00t'; - benchmark(assert.notDeepStrictEqual, n, values, values2); + benchmark(notDeepStrictEqual, n, values, values2); break; case 'notDeepEqual_objectOnly': values = array.map((_, i) => [`str_${i}`, null]); values2 = values.slice(0); values2[Math.floor(len / 2)] = ['w00t']; - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; case 'notDeepStrictEqual_objectOnly': values = array.map((_, i) => [`str_${i}`, null]); values2 = values.slice(0); values2[Math.floor(len / 2)] = ['w00t']; - benchmark(assert.notDeepStrictEqual, n, values, values2); + benchmark(notDeepStrictEqual, n, values, values2); break; case 'notDeepEqual_mixed': values = array.map((_, i) => { @@ -109,7 +108,7 @@ function main({ n, len, method }) { }); values2 = values.slice(); values2[0] = 'w00t'; - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; case 'notDeepStrictEqual_mixed': values = array.map((_, i) => { @@ -117,13 +116,13 @@ function main({ n, len, method }) { }); values2 = values.slice(); values2[0] = 'w00t'; - benchmark(assert.notDeepStrictEqual, n, values, values2); + benchmark(notDeepStrictEqual, n, values, values2); break; case 'notDeepEqual_looseMatches': values = array.map((_, i) => i); values2 = values.slice().map((v) => String(v)); values2[len - 1] = String(len + 1); - benchmark(assert.notDeepEqual, n, values, values2); + benchmark(notDeepEqual, n, values, values2); break; default: throw new Error(`Unsupported method "${method}"`); diff --git a/benchmark/assert/deepequal-typedarrays.js b/benchmark/assert/deepequal-typedarrays.js index 50e6e525b20a0c..c4d8f434bf4e8a 100644 --- a/benchmark/assert/deepequal-typedarrays.js +++ b/benchmark/assert/deepequal-typedarrays.js @@ -25,6 +25,8 @@ const bench = common.createBenchmark(main, { }); function main({ type, n, len, method }) { + if (!method) + method = 'deepEqual'; const clazz = global[type]; const actual = new clazz(len); const expected = new clazz(len); @@ -32,8 +34,7 @@ function main({ type, n, len, method }) { const wrongIndex = Math.floor(len / 2); expectedWrong[wrongIndex] = 123; - // eslint-disable-next-line no-restricted-properties - const fn = method !== '' ? assert[method] : assert.deepEqual; + const fn = assert[method]; const value2 = method.includes('not') ? expectedWrong : expected; bench.start(); diff --git a/benchmark/assert/throws.js b/benchmark/assert/throws.js index 2409d19206e353..a8a7bd4509e1ca 100644 --- a/benchmark/assert/throws.js +++ b/benchmark/assert/throws.js @@ -1,7 +1,7 @@ 'use strict'; const common = require('../common.js'); -const assert = require('assert'); +const { throws, doesNotThrow } = require('assert'); const bench = common.createBenchmark(main, { n: [1e6], @@ -14,8 +14,8 @@ const bench = common.createBenchmark(main, { }); function main({ n, method }) { - const throws = () => { throw new TypeError('foobar'); }; - const doesNotThrow = () => { return 'foobar'; }; + const throwError = () => { throw new TypeError('foobar'); }; + const doNotThrowError = () => { return 'foobar'; }; const regExp = /foobar/; const message = 'failure'; var i; @@ -26,30 +26,28 @@ function main({ n, method }) { case 'doesNotThrow': bench.start(); for (i = 0; i < n; ++i) { - // eslint-disable-next-line no-restricted-syntax - assert.doesNotThrow(doesNotThrow); + doesNotThrow(doNotThrowError); } bench.end(n); break; case 'throws': bench.start(); for (i = 0; i < n; ++i) { - // eslint-disable-next-line no-restricted-syntax - assert.throws(throws); + throws(throwError); } bench.end(n); break; case 'throws_TypeError': bench.start(); for (i = 0; i < n; ++i) { - assert.throws(throws, TypeError, message); + throws(throwError, TypeError, message); } bench.end(n); break; case 'throws_RegExp': bench.start(); for (i = 0; i < n; ++i) { - assert.throws(throws, regExp, message); + throws(throwError, regExp, message); } bench.end(n); break; diff --git a/benchmark/compare.R b/benchmark/compare.R index 1527d680c38182..7a0c89af3de4c5 100644 --- a/benchmark/compare.R +++ b/benchmark/compare.R @@ -107,8 +107,8 @@ options(width = 200); print(statistics); cat("\n") cat(sprintf( -"Be aware that when doing many comparisions the risk of a false-positive -result increases. In this case there are %d comparisions, you can thus +"Be aware that when doing many comparisons the risk of a false-positive +result increases. In this case there are %d comparisons, you can thus expect the following amount of false-positive results: %.2f false positives, when considering a 5%% risk acceptance (*, **, ***), %.2f false positives, when considering a 1%% risk acceptance (**, ***), diff --git a/benchmark/crypto/aes-gcm-throughput.js b/benchmark/crypto/aes-gcm-throughput.js index 5c1e71e7280575..cd8f29c8c7d7b2 100644 --- a/benchmark/crypto/aes-gcm-throughput.js +++ b/benchmark/crypto/aes-gcm-throughput.js @@ -9,6 +9,9 @@ const bench = common.createBenchmark(main, { }); function main({ n, len, cipher }) { + // Default cipher for tests. + if (cipher === '') + cipher = 'aes-128-gcm'; const message = Buffer.alloc(len, 'b'); const key = crypto.randomBytes(keylen[cipher]); const iv = crypto.randomBytes(12); diff --git a/benchmark/crypto/cipher-stream.js b/benchmark/crypto/cipher-stream.js index 64f6ff7b7292be..9f986dfb36b60d 100644 --- a/benchmark/crypto/cipher-stream.js +++ b/benchmark/crypto/cipher-stream.js @@ -10,6 +10,9 @@ const bench = common.createBenchmark(main, { }); function main({ api, cipher, type, len, writes }) { + // Default cipher for tests. + if (cipher === '') + cipher = 'AES192'; if (api === 'stream' && /^v0\.[0-8]\./.test(process.version)) { console.error('Crypto streams not available until v0.10'); // use the legacy, just so that we can compare them. diff --git a/common.gypi b/common.gypi index 31196e22535393..641aa90b17c1d3 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.9', + 'v8_embedder_string': '-node.7', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/configure b/configure index 17e13a48d47e5a..c4dda999fd23c8 100755 --- a/configure +++ b/configure @@ -443,11 +443,6 @@ parser.add_option('--debug-lib', dest='node_debug_lib', help='build lib with DCHECK macros') -http2_optgroup.add_option('--debug-http2', - action='store_true', - dest='debug_http2', - help='build with http2 debug statements on (default is false)') - http2_optgroup.add_option('--debug-nghttp2', action='store_true', dest='debug_nghttp2', @@ -970,11 +965,6 @@ def configure_node(o): o['variables']['node_debug_lib'] = b(options.node_debug_lib) - if options.debug_http2: - o['variables']['debug_http2'] = 1 - else: - o['variables']['debug_http2'] = 'false' - if options.debug_nghttp2: o['variables']['debug_nghttp2'] = 1 else: diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 4ea2ead23d990d..630c3f2a09d3f8 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -49,24 +49,25 @@ /test/fuzzer/wasm_corpus.tar.gz /test/mozilla/data /test/test262/data -/test/test262/data.tar /test/test262/harness /test/wasm-js /test/wasm-spec-tests/tests /test/wasm-spec-tests/tests.tar.gz -/testing/gmock -/testing/gtest/* -!/testing/gtest/include -/testing/gtest/include/* -!/testing/gtest/include/gtest -/testing/gtest/include/gtest/* -!/testing/gtest/include/gtest/gtest_prod.h /third_party/* +!/third_party/antlr4 !/third_party/binutils -!/third_party/eu-strip !/third_party/inspector_protocol !/third_party/colorama /third_party/colorama/src +!/third_party/googletest +/third_party/googletest/src/* +!/third_party/googletest/src/googletest +/third_party/googletest/src/googletest/* +!/third_party/googletest/src/googletest/include +/third_party/googletest/src/googletest/include/* +!/third_party/googletest/src/googletest/include/gtest +/third_party/googletest/src/googletest/include/gtest/* +!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h /tools/clang /tools/gcmole/gcmole-tools /tools/gcmole/gcmole-tools.tar.gz diff --git a/deps/v8/.gn b/deps/v8/.gn index c80980ea092d05..573fd030d80cf1 100644 --- a/deps/v8/.gn +++ b/deps/v8/.gn @@ -21,5 +21,4 @@ check_targets = [] # These are the list of GN files that run exec_script. This whitelist exists # to force additional review for new uses of exec_script, which is strongly # discouraged except for gypi_to_gn calls. -exec_script_whitelist = - build_dotfile_settings.exec_script_whitelist + [ "//test/test262/BUILD.gn" ] +exec_script_whitelist = build_dotfile_settings.exec_script_whitelist + [] diff --git a/deps/v8/.vpython b/deps/v8/.vpython index 9ea0da7145bb16..6a9ce3f693ef11 100644 --- a/deps/v8/.vpython +++ b/deps/v8/.vpython @@ -30,3 +30,16 @@ wheel: < name: "infra/python/wheels/psutil/${vpython_platform}" version: "version:5.2.2" > + +# Used by: +# build/toolchain/win +wheel: < + name: "infra/python/wheels/pypiwin32/${vpython_platform}" + version: "version:219" + match_tag: < + platform: "win32" + > + match_tag: < + platform: "win_amd64" + > +> diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 76a27ac1952ace..4b5163961d282e 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -99,6 +99,7 @@ Maciej Małecki Marcin Cieślak Marcin Wiącek Mateusz Czeladka +Matheus Marchini Mathias Bynens Matt Hanselman Matthew Sporleder @@ -138,6 +139,7 @@ Seo Sanghyeon Stefan Penner Sylvestre Ledru Taketoshi Aono +Teddy Katz Tiancheng "Timothy" Gu Tobias Burnus Victor Costan @@ -145,6 +147,7 @@ Vlad Burlik Vladimir Krivosheev Vladimir Shutoff Wiktor Garbacz +Xiaoyin Liu Yong Wang Yu Yin Zac Hansen diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 72a19b2ca450fa..4b48f7d6874df9 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -9,19 +9,23 @@ import("//build/config/host_byteorder.gni") import("//build/config/jumbo.gni") import("//build/config/mips.gni") import("//build/config/sanitizers/sanitizers.gni") +import("//build_overrides/build.gni") if (is_android) { import("//build/config/android/rules.gni") } import("gni/v8.gni") -import("gni/isolate.gni") import("snapshot_toolchain.gni") declare_args() { # Print to stdout on Android. v8_android_log_stdout = false + # Turns on all V8 debug features. Enables running V8 in a pseudo debug mode + # within a release Chrome. + v8_enable_debugging_features = is_debug + # Sets -DV8_ENABLE_FUTURE. v8_enable_future = false @@ -65,7 +69,8 @@ declare_args() { v8_enable_fast_mksnapshot = false # Enable embedded builtins. - # TODO(jgruber,v8:6666): Support ia32. + # TODO(jgruber,v8:6666): Support ia32 and maybe MSVC. + # TODO(jgruber,v8:6666): Re-enable after the M67 branch point. v8_enable_embedded_builtins = false # Enable code-generation-time checking of types in the CodeStubAssembler. @@ -142,29 +147,33 @@ declare_args() { # Enable mitigations for executing untrusted code. v8_untrusted_code_mitigations = true + + # Enable minor mark compact. + v8_enable_minor_mc = true } # Derived defaults. if (v8_enable_verify_heap == "") { - v8_enable_verify_heap = is_debug + v8_enable_verify_heap = v8_enable_debugging_features } if (v8_enable_object_print == "") { - v8_enable_object_print = is_debug + v8_enable_object_print = v8_enable_debugging_features } if (v8_enable_disassembler == "") { - v8_enable_disassembler = is_debug + v8_enable_disassembler = v8_enable_debugging_features } if (v8_enable_trace_maps == "") { - v8_enable_trace_maps = is_debug + v8_enable_trace_maps = v8_enable_debugging_features } if (v8_enable_test_features == "") { - v8_enable_test_features = is_debug || dcheck_always_on + v8_enable_test_features = v8_enable_debugging_features || dcheck_always_on } if (v8_enable_v8_checks == "") { - v8_enable_v8_checks = is_debug + v8_enable_v8_checks = v8_enable_debugging_features } if (v8_check_microtasks_scopes_consistency == "") { - v8_check_microtasks_scopes_consistency = is_debug || dcheck_always_on + v8_check_microtasks_scopes_consistency = + v8_enable_debugging_features || dcheck_always_on } # Specifies if the target build is a simulator build. Comparing target cpu @@ -268,6 +277,9 @@ config("features") { if (v8_enable_vtunejit) { defines += [ "ENABLE_VTUNE_JIT_INTERFACE" ] } + if (v8_enable_minor_mc) { + defines += [ "ENABLE_MINOR_MC" ] + } if (v8_enable_object_print) { defines += [ "OBJECT_PRINT" ] } @@ -326,6 +338,9 @@ config("features") { if (v8_enable_embedded_builtins) { defines += [ "V8_EMBEDDED_BUILTINS" ] } + if (v8_use_multi_snapshots) { + defines += [ "V8_MULTI_SNAPSHOTS" ] + } } config("toolchain") { @@ -497,7 +512,7 @@ config("toolchain") { # TODO(jochen): Support v8_enable_prof on Windows. # TODO(jochen): Add support for compiling with simulators. - if (is_debug) { + if (v8_enable_debugging_features) { if (is_linux && v8_enable_backtrace) { ldflags += [ "-rdynamic" ] } @@ -527,6 +542,8 @@ config("toolchain") { if (is_clang) { cflags += [ + "-Wmissing-field-initializers", + # TODO(hans): Remove once http://crbug.com/428099 is resolved. "-Winconsistent-missing-override", ] @@ -602,8 +619,6 @@ action("js2c") { "src/js/prologue.js", "src/js/array.js", "src/js/typedarray.js", - "src/js/messages.js", - "src/js/spread.js", "src/debug/mirrors.js", "src/debug/debug.js", "src/debug/liveedit.js", @@ -717,6 +732,8 @@ action("d8_js2c") { if (is_android && enable_java_templates) { android_assets("v8_external_startup_data_assets") { if (v8_use_external_startup_data) { + # We don't support side-by-side snapshots on Android within Chromium. + assert(!v8_use_multi_snapshots) deps = [ "//v8", ] @@ -756,6 +773,10 @@ if (v8_use_external_startup_data) { "$root_out_dir/natives_blob.bin", ] + data = [ + "$root_out_dir/natives_blob.bin", + ] + script = "tools/concatenate-files.py" args = rebase_path(sources + outputs, root_build_dir) @@ -786,6 +807,8 @@ action("postmortem-metadata") { "src/objects/js-array.h", "src/objects/js-regexp-inl.h", "src/objects/js-regexp.h", + "src/objects/js-regexp-string-iterator-inl.h", + "src/objects/js-regexp-string-iterator.h", "src/objects/map.h", "src/objects/map-inl.h", "src/objects/script.h", @@ -804,8 +827,24 @@ action("postmortem-metadata") { rebase_path(sources, root_build_dir) } -if (v8_use_snapshot) { - action("run_mksnapshot") { +# Template to generate different V8 snapshots based on different runtime flags. +# Can be invoked with run_mksnapshot(). The target will resolve to +# run_mksnapshot_. If is "default", no file suffixes will be used. +# Otherwise files are suffixed, e.g. embedded_.cc and +# snapshot_blob_.bin. +# +# The template exposes the variables: +# args: additional flags for mksnapshots +# embedded_suffix: a camel case suffix for method names in the embedded +# snapshot. +template("run_mksnapshot") { + name = target_name + if (name == "default") { + suffix = "" + } else { + suffix = "_$name" + } + action("run_mksnapshot_" + name) { visibility = [ ":*" ] # Only targets in this file can depend on this. deps = [ @@ -816,19 +855,33 @@ if (v8_use_snapshot) { sources = [] - outputs = [ - "$target_gen_dir/snapshot.cc", - ] + outputs = [] + + data = [] args = [ "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)", "root_out_dir") + "/mksnapshot", root_build_dir), "--turbo_instruction_scheduling", - "--startup_src", - rebase_path("$target_gen_dir/snapshot.cc", root_build_dir), ] + args += invoker.args + + if (v8_enable_embedded_builtins) { + outputs += [ "$target_gen_dir/embedded${suffix}.cc" ] + args += [ + "--embedded_src", + rebase_path("$target_gen_dir/embedded${suffix}.cc", root_build_dir), + ] + if (invoker.embedded_variant != "") { + args += [ + "--embedded_variant", + invoker.embedded_variant, + ] + } + } + if (v8_random_seed != "0") { args += [ "--random-seed", @@ -848,10 +901,17 @@ if (v8_use_snapshot) { } if (v8_use_external_startup_data) { - outputs += [ "$root_out_dir/snapshot_blob.bin" ] + outputs += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] + data += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] args += [ "--startup_blob", - rebase_path("$root_out_dir/snapshot_blob.bin", root_build_dir), + rebase_path("$root_out_dir/snapshot_blob${suffix}.bin", root_build_dir), + ] + } else { + outputs += [ "$target_gen_dir/snapshot${suffix}.cc" ] + args += [ + "--startup_src", + rebase_path("$target_gen_dir/snapshot${suffix}.cc", root_build_dir), ] } @@ -869,6 +929,23 @@ if (v8_use_snapshot) { } } +if (v8_use_snapshot) { + run_mksnapshot("default") { + args = [] + if (v8_enable_embedded_builtins) { + embedded_variant = "Default" + } + } + if (v8_use_multi_snapshots) { + run_mksnapshot("trusted") { + args = [ "--no-untrusted-code-mitigations" ] + if (v8_enable_embedded_builtins) { + embedded_variant = "Trusted" + } + } + } +} + action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" outputs = [ @@ -882,7 +959,7 @@ action("v8_dump_build_config") { "is_asan=$is_asan", "is_cfi=$is_cfi", "is_component_build=$is_component_build", - "is_debug=$is_debug", + "is_debug=$v8_enable_debugging_features", "is_gcov_coverage=$is_gcov_coverage", "is_msan=$is_msan", "is_tsan=$is_tsan", @@ -940,12 +1017,13 @@ v8_source_set("v8_nosnapshot") { "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/extras-libraries.cc", "$target_gen_dir/libraries.cc", + "src/snapshot/embedded-empty.cc", "src/snapshot/snapshot-empty.cc", ] if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 # Generated source, contains same variable names as libraries.cc "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/libraries.cc", @@ -955,7 +1033,7 @@ v8_source_set("v8_nosnapshot") { configs = [ ":internal_config" ] } -if (v8_use_snapshot) { +if (v8_use_snapshot && !v8_use_external_startup_data) { v8_source_set("v8_snapshot") { # Only targets in this file and the top-level visibility target can # depend on this. @@ -973,7 +1051,7 @@ if (v8_use_snapshot) { public_deps = [ # This should be public so downstream targets can declare the snapshot # output file as their inputs. - ":run_mksnapshot", + ":run_mksnapshot_default", ] sources = [ @@ -984,9 +1062,13 @@ if (v8_use_snapshot) { "src/setup-isolate-deserialize.cc", ] + if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.cc" ] + } + if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 # Generated source, contains same variable names as libraries.cc "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/libraries.cc", @@ -997,7 +1079,7 @@ if (v8_use_snapshot) { } } -if (v8_use_external_startup_data) { +if (v8_use_snapshot && v8_use_external_startup_data) { v8_source_set("v8_external_snapshot") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -1009,15 +1091,34 @@ if (v8_use_external_startup_data) { ] public_deps = [ ":natives_blob", - ":run_mksnapshot", + ":run_mksnapshot_default", ] + if (v8_use_multi_snapshots) { + public_deps += [ ":run_mksnapshot_trusted" ] + } + sources = [ "src/setup-isolate-deserialize.cc", "src/snapshot/natives-external.cc", "src/snapshot/snapshot-external.cc", ] + if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.cc" ] + + if (v8_use_multi_snapshots) { + sources += [ "$target_gen_dir/embedded_trusted.cc" ] + + if (use_jumbo_build == true) { + jumbo_excluded_sources = [ + # Duplicated symbols with embedded.cc + "$target_gen_dir/embedded_trusted.cc", + ] + } + } + } + configs = [ ":internal_config" ] } } @@ -1105,7 +1206,7 @@ v8_source_set("v8_initializers") { if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 "src/builtins/builtins-async-iterator-gen.cc", "src/builtins/builtins-async-generator-gen.cc", @@ -1232,7 +1333,6 @@ v8_source_set("v8_base") { "src/allocation.cc", "src/allocation.h", "src/api-arguments-inl.h", - "src/api-arguments.cc", "src/api-arguments.h", "src/api-natives.cc", "src/api-natives.h", @@ -1350,8 +1450,6 @@ v8_source_set("v8_base") { "src/compilation-cache.h", "src/compilation-dependencies.cc", "src/compilation-dependencies.h", - "src/compilation-info.cc", - "src/compilation-info.h", "src/compilation-statistics.cc", "src/compilation-statistics.h", "src/compiler-dispatcher/compiler-dispatcher-job.cc", @@ -1634,9 +1732,8 @@ v8_source_set("v8_base") { "src/extensions/trigger-failure-extension.h", "src/external-reference-table.cc", "src/external-reference-table.h", - "src/factory-inl.h", - "src/factory.cc", - "src/factory.h", + "src/external-reference.cc", + "src/external-reference.h", "src/fast-dtoa.cc", "src/fast-dtoa.h", "src/feedback-vector-inl.h", @@ -1680,6 +1777,9 @@ v8_source_set("v8_base") { "src/heap/concurrent-marking.h", "src/heap/embedder-tracing.cc", "src/heap/embedder-tracing.h", + "src/heap/factory-inl.h", + "src/heap/factory.cc", + "src/heap/factory.h", "src/heap/gc-idle-time-handler.cc", "src/heap/gc-idle-time-handler.h", "src/heap/gc-tracer.cc", @@ -1866,12 +1966,16 @@ v8_source_set("v8_base") { "src/objects/js-promise-inl.h", "src/objects/js-promise.h", "src/objects/js-regexp-inl.h", + "src/objects/js-regexp-string-iterator-inl.h", + "src/objects/js-regexp-string-iterator.h", "src/objects/js-regexp.h", "src/objects/literal-objects-inl.h", "src/objects/literal-objects.cc", "src/objects/literal-objects.h", "src/objects/map-inl.h", "src/objects/map.h", + "src/objects/maybe-object-inl.h", + "src/objects/maybe-object.h", "src/objects/microtask-inl.h", "src/objects/microtask.h", "src/objects/module-inl.h", @@ -1897,6 +2001,8 @@ v8_source_set("v8_base") { "src/objects/string.h", "src/objects/template-objects.cc", "src/objects/template-objects.h", + "src/optimized-compilation-info.cc", + "src/optimized-compilation-info.h", "src/ostreams.cc", "src/ostreams.h", "src/parsing/duplicate-finder.h", @@ -2051,6 +2157,7 @@ v8_source_set("v8_base") { "src/snapshot/default-serializer-allocator.h", "src/snapshot/deserializer.cc", "src/snapshot/deserializer.h", + "src/snapshot/macros.h", "src/snapshot/natives-common.cc", "src/snapshot/natives.h", "src/snapshot/object-deserializer.cc", @@ -2113,6 +2220,8 @@ v8_source_set("v8_base") { "src/unicode-inl.h", "src/unicode.cc", "src/unicode.h", + "src/unoptimized-compilation-info.cc", + "src/unoptimized-compilation-info.h", "src/uri.cc", "src/uri.h", "src/utils-inl.h", @@ -2162,8 +2271,6 @@ v8_source_set("v8_base") { "src/wasm/wasm-code-manager.h", "src/wasm/wasm-code-specialization.cc", "src/wasm/wasm-code-specialization.h", - "src/wasm/wasm-code-wrapper.cc", - "src/wasm/wasm-code-wrapper.h", "src/wasm/wasm-constants.h", "src/wasm/wasm-debug.cc", "src/wasm/wasm-engine.cc", @@ -2196,7 +2303,6 @@ v8_source_set("v8_base") { "src/zone/accounting-allocator.cc", "src/zone/accounting-allocator.h", "src/zone/zone-allocator.h", - "src/zone/zone-allocator.h", "src/zone/zone-chunk-list.h", "src/zone/zone-containers.h", "src/zone/zone-handle-set.h", @@ -2209,7 +2315,7 @@ v8_source_set("v8_base") { if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 "src/profiler/heap-snapshot-generator.cc", # Macro clash in mman-linux.h # These source files take an unusually large amount of time to @@ -2364,7 +2470,7 @@ v8_source_set("v8_base") { ] if (use_jumbo_build) { jumbo_excluded_sources += [ - # TODO(mostynb@opera.com): fix this code so it doesn't need + # TODO(mostynb@vewd.com): fix this code so it doesn't need # to be excluded, see the comments inside. "src/arm64/instructions-arm64-constants.cc", ] @@ -2592,13 +2698,17 @@ v8_component("v8_libbase") { public_configs = [ ":libbase_config" ] + data = [] + + data_deps = [] + defines = [] if (is_component_build) { defines = [ "BUILDING_V8_BASE_SHARED" ] } - if (is_posix) { + if (is_posix || is_fuchsia) { sources += [ "src/base/platform/platform-posix.cc", "src/base/platform/platform-posix.h", @@ -2680,6 +2790,12 @@ v8_component("v8_libbase") { "winmm.lib", "ws2_32.lib", ] + + data_deps += [ "//build/win:runtime_libs" ] + } + + if (is_tsan && !build_with_chromium) { + data += [ "tools/sanitizers/tsan_suppressions.txt" ] } # TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris. @@ -2691,12 +2807,12 @@ v8_component("v8_libplatform") { "include/libplatform/libplatform-export.h", "include/libplatform/libplatform.h", "include/libplatform/v8-tracing.h", - "src/libplatform/default-background-task-runner.cc", - "src/libplatform/default-background-task-runner.h", "src/libplatform/default-foreground-task-runner.cc", "src/libplatform/default-foreground-task-runner.h", "src/libplatform/default-platform.cc", "src/libplatform/default-platform.h", + "src/libplatform/default-worker-threads-task-runner.cc", + "src/libplatform/default-worker-threads-task-runner.h", "src/libplatform/task-queue.cc", "src/libplatform/task-queue.h", "src/libplatform/tracing/trace-buffer.cc", @@ -2834,10 +2950,6 @@ group("gn_all") { if (want_v8_shell) { deps += [ ":v8_shell" ] } - - if (v8_test_isolation_mode != "noop") { - deps += [ ":d8_run" ] - } } group("v8_clusterfuzz") { @@ -2855,13 +2967,6 @@ group("v8_clusterfuzz") { ":d8(//build/toolchain/linux:clang_x86_v8_arm)", ] } - - if (v8_test_isolation_mode != "noop") { - deps += [ - "test:d8_default_run", - "tools:run-num-fuzzer_run", - ] - } } group("v8_archive") { @@ -2872,7 +2977,7 @@ group("v8_archive") { group("v8_fuzzers") { testonly = true - deps = [ + data_deps = [ ":v8_simple_json_fuzzer", ":v8_simple_multi_return_fuzzer", ":v8_simple_parser_fuzzer", @@ -2979,7 +3084,7 @@ v8_executable("d8") { "//build/win:default_exe_manifest", ] - if (is_posix) { + if (is_posix || is_fuchsia) { sources += [ "src/d8-posix.cc" ] } else if (is_win) { sources += [ "src/d8-windows.cc" ] @@ -2992,18 +3097,10 @@ v8_executable("d8") { defines = [] if (v8_enable_vtunejit) { - deps += [ "//src/third_party/vtune:v8_vtune" ] + deps += [ "src/third_party/vtune:v8_vtune" ] } } -v8_isolate_run("d8") { - deps = [ - ":d8", - ] - - isolate = "//src/d8.isolate" -} - v8_executable("v8_hello_world") { sources = [ "samples/hello-world.cc", diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index cfeeb0e08b6630..e6b825092c4a1d 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,1493 @@ +2018-04-11: Version 6.7.288 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.287 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.286 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.285 + + Performance and stability improvements on all platforms. + + +2018-04-11: Version 6.7.284 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.283 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.282 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.281 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.280 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.279 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.278 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.277 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.276 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.275 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.274 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.273 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.272 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.271 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.270 + + Performance and stability improvements on all platforms. + + +2018-04-10: Version 6.7.269 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.268 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.267 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.266 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.265 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.264 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.263 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.262 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.261 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.260 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.259 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.258 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.257 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.256 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.255 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.254 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.253 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.252 + + Performance and stability improvements on all platforms. + + +2018-04-09: Version 6.7.251 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.250 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.249 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.248 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.247 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.246 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.245 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.244 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.243 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.242 + + Performance and stability improvements on all platforms. + + +2018-04-06: Version 6.7.241 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.240 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.239 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.238 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.237 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.236 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.235 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.234 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.233 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.232 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.231 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.230 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.229 + + Performance and stability improvements on all platforms. + + +2018-04-05: Version 6.7.228 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.227 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.226 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.225 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.224 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.223 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.222 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.221 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.220 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.219 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.218 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.217 + + Performance and stability improvements on all platforms. + + +2018-04-04: Version 6.7.216 + + Performance and stability improvements on all platforms. + + +2018-04-03: Version 6.7.215 + + Performance and stability improvements on all platforms. + + +2018-04-03: Version 6.7.214 + + Performance and stability improvements on all platforms. + + +2018-03-30: Version 6.7.213 + + Performance and stability improvements on all platforms. + + +2018-03-30: Version 6.7.212 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.211 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.210 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.209 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.208 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.207 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.206 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.205 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.204 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.203 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.202 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.201 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.200 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.199 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.198 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.197 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.196 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.195 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.194 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.193 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.192 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.191 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.190 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.189 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.188 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.187 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.186 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.185 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.184 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.183 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.182 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.181 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.180 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.179 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.178 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.177 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.176 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.175 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.174 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.173 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.172 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.171 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.170 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.169 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.168 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.167 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.166 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.165 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.164 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.163 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.162 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.161 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.160 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.159 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.158 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.157 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.156 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.155 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.154 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.153 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.152 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.151 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.150 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.149 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.148 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.147 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.146 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.145 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.144 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.143 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.142 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.141 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.140 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.139 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.138 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.137 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.136 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.135 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.134 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.133 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.132 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.131 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.130 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.129 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.128 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.127 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.126 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.125 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.124 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.123 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.122 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.121 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.120 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.119 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.118 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.117 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.116 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.115 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.114 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.113 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.112 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.111 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.110 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.109 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.108 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.107 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.106 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.105 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.104 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.103 + + Performance and stability improvements on all platforms. + + +2018-03-17: Version 6.7.102 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.101 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.100 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.99 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.98 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.97 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.96 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.95 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.94 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.93 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.92 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.91 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.90 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.89 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.88 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.87 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.86 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.85 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.84 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.83 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.82 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.81 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.80 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.79 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.78 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.77 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.76 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.75 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.74 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.73 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.72 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.71 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.70 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.69 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.68 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.67 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.66 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.65 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.64 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.63 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.62 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.61 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.60 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.59 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.58 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.57 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.56 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.55 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.54 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.53 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.52 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.51 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.50 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.49 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.48 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.47 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.46 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.45 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.44 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.43 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.42 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.41 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.40 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.39 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.38 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.37 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.36 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.35 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.34 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.33 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.32 + + Performance and stability improvements on all platforms. + + +2018-03-10: Version 6.7.31 + + Performance and stability improvements on all platforms. + + +2018-03-09: Version 6.7.30 + + Performance and stability improvements on all platforms. + + +2018-03-09: Version 6.7.29 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.28 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.27 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.26 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.25 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.24 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.23 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.22 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.21 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.20 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.19 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.18 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.17 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.16 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.15 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.14 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.13 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.12 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.11 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.10 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.9 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.8 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.7 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.6 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.5 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.4 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.3 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.2 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.1 + + Performance and stability improvements on all platforms. + + +2018-03-01: Version 6.6.356 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.355 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.354 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.353 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.352 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.351 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.350 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.349 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.348 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.347 + + Performance and stability improvements on all platforms. + + 2018-02-28: Version 6.6.346 Performance and stability improvements on all platforms. diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 4c67868d52dac8..4a00478633793d 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -12,57 +12,55 @@ vars = { deps = { 'v8/build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + 'b1d6c28b4a64128ad856d9da458afda2861fddab', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '73e352e758d90603e23bdc84734c12aa5817ab5f', 'v8/tools/gyp': Var('chromium_url') + '/external/gyp.git' + '@' + 'd61a9397e668fa9843c4aa7da9e79460fe590bfb', 'v8/third_party/icu': Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'd888fd2a1be890f4d35e43f68d6d79f42519a357', 'v8/third_party/instrumented_libraries': - Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'b745ddca2c63719167c0f2008ae19e667c5e9952', + Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + '323cf32193caecbf074d1a0cb5b02b905f163e0f', 'v8/buildtools': - Var('chromium_url') + '/chromium/buildtools.git' + '@' + '2888931260f2a32bc583f005bd807a561b2fa6af', + Var('chromium_url') + '/chromium/buildtools.git' + '@' + 'e8aa02ea839e087f2db66100d02c3b5d47993852', 'v8/base/trace_event/common': - Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '0e9a47d74970bee1bbfc063c47215406f8918699', + Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '211b3ed9d0481b4caddbee1322321b86a483ca1f', 'v8/third_party/android_ndk': { - 'url': Var('chromium_url') + '/android_ndk.git' + '@' + 'e951c37287c7d8cd915bf8d4149fd4a06d808b55', + 'url': Var('chromium_url') + '/android_ndk.git' + '@' + '635bc380968a76f6948fee65f80a0b28db53ae81', 'condition': 'checkout_android', }, 'v8/third_party/android_tools': { - 'url': Var('chromium_url') + '/android_tools.git' + '@' + '9a70d48fcdd68cd0e7e968f342bd767ee6323bd1', + 'url': Var('chromium_url') + '/android_tools.git' + '@' + 'c22a664c39af72dd8f89200220713dcad811300a', 'condition': 'checkout_android', }, 'v8/third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '8a42ad3cb185e340c32b20f657980fd057e3769f', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '2c59f678c7ede8a844fb687525d594b71aabe3dd', 'condition': 'checkout_android', }, 'v8/third_party/colorama/src': { 'url': Var('chromium_url') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', 'condition': 'checkout_android', }, + 'v8/third_party/googletest/src': + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '7e5f90d3780d553cb86771141fb81349f3a63508', 'v8/third_party/jinja2': - Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + 'd34383206fa42d52faa10bb9931d6d538f3a57e0', + Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '45571de473282bd1d8b63a8dfcb1fd268d0635d2', 'v8/third_party/markupsafe': Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '8f45f5cfa0009d2a70589bcda0349b8cb2b72783', 'v8/tools/swarming_client': Var('chromium_url') + '/infra/luci/client-py.git' + '@' + '88229872dd17e71658fe96763feaa77915d8cbd6', - 'v8/testing/gtest': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '6f8a66431cb592dad629028a50b3dd418a408c87', - 'v8/testing/gmock': - Var('chromium_url') + '/external/googlemock.git' + '@' + '0421b6f358139f02e102c9c332ce19a33faf75be', 'v8/test/benchmarks/data': Var('chromium_url') + '/v8/deps/third_party/benchmarks.git' + '@' + '05d7188267b4560491ff9155c5ee13e207ecd65f', 'v8/test/mozilla/data': Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be', 'v8/test/test262/data': - Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'b59d956b3c268abd0875aeb87d6688f4c7aafc9b', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + '0192e0d70e2295fb590f14865da42f0f9dfa64bd', 'v8/test/test262/harness': Var('chromium_url') + '/external/github.com/test262-utils/test262-harness-py.git' + '@' + '0f2acdd882c84cff43b9d60df7574a1901e2cdcd', 'v8/tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'b3d3f5920b161f95f1a8ffe08b75c695e0edf350', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'd7c36b0ae001a5cc31f2da79a430154916a3def2', 'v8/tools/luci-go': Var('chromium_url') + '/chromium/src/tools/luci-go.git' + '@' + 'ff0709d4283b1f233dcf0c9fec1672c6ecaed2f1', 'v8/test/wasm-js': - Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + '4653fc002a510b4f207af07f2c7c61b13dba78d9', + Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + '586d34770c6445bfb93c9bae8ac50baade7ee168', } recursedeps = [ @@ -255,28 +253,28 @@ hooks = [ { 'name': 'sysroot_arm', 'pattern': '.', - 'condition': 'checkout_linux and checkout_arm', + 'condition': '(checkout_linux and checkout_arm)', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=arm'], }, { 'name': 'sysroot_arm64', 'pattern': '.', - 'condition': 'checkout_linux and checkout_arm64', + 'condition': '(checkout_linux and checkout_arm64)', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=arm64'], }, { 'name': 'sysroot_x86', 'pattern': '.', - 'condition': 'checkout_linux and (checkout_x86 or checkout_x64)', + 'condition': '(checkout_linux and (checkout_x86 or checkout_x64))', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=x86'], }, { 'name': 'sysroot_mips', 'pattern': '.', - 'condition': 'checkout_linux and checkout_mips', + 'condition': '(checkout_linux and checkout_mips)', 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', '--arch=mips'], }, diff --git a/deps/v8/LICENSE b/deps/v8/LICENSE index 1ffa949c6c1dfb..a1e403f82bac6b 100644 --- a/deps/v8/LICENSE +++ b/deps/v8/LICENSE @@ -23,6 +23,9 @@ are: - Valgrind client API header, located at third_party/valgrind/valgrind.h This is release under the BSD license. + - antlr4 parser generator Cpp library located in third_party/antlr4 + This is release under the BSD license. + These libraries have their own licenses; we recommend you read them, as their terms may differ from the terms below. diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index d8e0fc60def3f7..f6726316f2af95 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -1,5 +1,6 @@ adamk@chromium.org ahaas@chromium.org +aseemgarg@chromium.org bbudge@chromium.org binji@chromium.org bmeurer@chromium.org @@ -18,6 +19,7 @@ ishell@chromium.org jarin@chromium.org jgruber@chromium.org jkummerow@chromium.org +kschimpf@chromium.org leszeks@chromium.org machenbach@chromium.org marja@chromium.org diff --git a/deps/v8/base/trace_event/common/trace_event_common.h b/deps/v8/base/trace_event/common/trace_event_common.h index 51869ee9525614..e2a5ca0c8d491b 100644 --- a/deps/v8/base/trace_event/common/trace_event_common.h +++ b/deps/v8/base/trace_event/common/trace_event_common.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ +#define BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ + // This header file defines the set of trace_event macros without specifying // how the events actually get collected and stored. If you need to expose trace // events to some other universe, you can copy-and-paste this file as well as @@ -687,6 +690,11 @@ TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, \ TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE, \ arg1_name, arg1_val, arg2_name, arg2_val) +#define TRACE_EVENT_COPY_ASYNC_END_WITH_TIMESTAMP0(category_group, name, id, \ + timestamp) \ + INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ + TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, \ + TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY) // NESTABLE_ASYNC_* APIs are used to describe an async operation, which can // be nested within a NESTABLE_ASYNC event and/or have inner NESTABLE_ASYNC @@ -1020,6 +1028,14 @@ } \ } while (0) +// Macro for getting the real base::TimeTicks::Now() which can be overridden in +// headless when VirtualTime is enabled. +#define TRACE_TIME_TICKS_NOW() INTERNAL_TRACE_TIME_TICKS_NOW() + +// Macro for getting the real base::Time::Now() which can be overridden in +// headless when VirtualTime is enabled. +#define TRACE_TIME_NOW() INTERNAL_TRACE_TIME_NOW() + // Notes regarding the following definitions: // New values can be added and propagated to third party libraries, but existing // definitions must never be changed, because third party libraries may use old @@ -1094,3 +1110,5 @@ #define TRACE_EVENT_SCOPE_NAME_GLOBAL ('g') #define TRACE_EVENT_SCOPE_NAME_PROCESS ('p') #define TRACE_EVENT_SCOPE_NAME_THREAD ('t') + +#endif // BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ diff --git a/deps/v8/gni/isolate.gni b/deps/v8/gni/isolate.gni deleted file mode 100644 index 6ad25c27749cc5..00000000000000 --- a/deps/v8/gni/isolate.gni +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/config/sanitizers/sanitizers.gni") -import("//third_party/icu/config.gni") -import("v8.gni") - -declare_args() { - # Sets the test isolation mode (noop|prepare|check). - v8_test_isolation_mode = "noop" -} - -template("v8_isolate_run") { - forward_variables_from(invoker, - "*", - [ - "deps", - "isolate", - ]) - - # Remember target name as within the action scope the target name will be - # different. - name = target_name - - assert(defined(invoker.deps)) - assert(defined(invoker.isolate)) - - if (name != "" && v8_test_isolation_mode != "noop") { - action(name + "_run") { - testonly = true - - deps = invoker.deps - - script = "//tools/isolate_driver.py" - - sources = [ - invoker.isolate, - ] - - inputs = [ - # Files that are known to be involved in this step. - "//tools/swarming_client/isolate.py", - "//tools/swarming_client/run_isolated.py", - ] - - if (v8_test_isolation_mode == "prepare") { - outputs = [ - "$root_out_dir/$name.isolated.gen.json", - ] - } else if (v8_test_isolation_mode == "check") { - outputs = [ - "$root_out_dir/$name.isolated", - "$root_out_dir/$name.isolated.state", - ] - } - - # Translate gn to gyp variables. - if (v8_code_coverage) { - coverage = "1" - } else { - coverage = "0" - } - if (is_asan) { - asan = "1" - } else { - asan = "0" - } - if (is_msan) { - msan = "1" - } else { - msan = "0" - } - if (is_tsan) { - tsan = "1" - } else { - tsan = "0" - } - if (is_cfi) { - cfi_vptr = "1" - } else { - cfi_vptr = "0" - } - if (target_cpu == "x86") { - target_arch = "ia32" - } else { - target_arch = target_cpu - } - if (is_debug) { - configuration_name = "Debug" - } else { - configuration_name = "Release" - } - if (is_component_build) { - component = "shared_library" - } else { - component = "static_library" - } - if (icu_use_data_file) { - icu_use_data_file_flag = "1" - } else { - icu_use_data_file_flag = "0" - } - if (v8_use_external_startup_data) { - use_external_startup_data = "1" - } else { - use_external_startup_data = "0" - } - if (is_ubsan_vptr) { - ubsan_vptr = "1" - } else { - ubsan_vptr = "0" - } - if (v8_use_snapshot) { - use_snapshot = "true" - } else { - use_snapshot = "false" - } - if (v8_has_valgrind) { - has_valgrind = "1" - } else { - has_valgrind = "0" - } - if (v8_gcmole) { - gcmole = "1" - } else { - gcmole = "0" - } - - # Note, all paths will be rebased in isolate_driver.py to be relative to - # the isolate file. - args = [ - v8_test_isolation_mode, - "--isolated", - rebase_path("$root_out_dir/$name.isolated", root_build_dir), - "--isolate", - rebase_path(invoker.isolate, root_build_dir), - - # Path variables are used to replace file paths when loading a .isolate - # file - "--path-variable", - "DEPTH", - rebase_path("//", root_build_dir), - "--path-variable", - "PRODUCT_DIR", - rebase_path(root_out_dir, root_build_dir), - - # TODO(machenbach): Set variables for remaining features. - "--config-variable", - "CONFIGURATION_NAME=$configuration_name", - "--config-variable", - "OS=$target_os", - "--config-variable", - "asan=$asan", - "--config-variable", - "cfi_vptr=$cfi_vptr", - "--config-variable", - "gcmole=$gcmole", - "--config-variable", - "has_valgrind=$has_valgrind", - "--config-variable", - "icu_use_data_file_flag=$icu_use_data_file_flag", - "--config-variable", - "msan=$msan", - "--config-variable", - "tsan=$tsan", - "--config-variable", - "coverage=$coverage", - "--config-variable", - "sanitizer_coverage=$sanitizer_coverage_flags", - "--config-variable", - "component=$component", - "--config-variable", - "target_arch=$target_arch", - "--config-variable", - "ubsan_vptr=$ubsan_vptr", - "--config-variable", - "v8_use_external_startup_data=$use_external_startup_data", - "--config-variable", - "v8_use_snapshot=$use_snapshot", - ] - - if (is_win) { - args += [ - "--config-variable", - "msvs_version=2017", - ] - } else { - args += [ - "--config-variable", - "msvs_version=0", - ] - } - } - } -} diff --git a/deps/v8/gni/msvs_dependencies.isolate b/deps/v8/gni/msvs_dependencies.isolate deleted file mode 100644 index 285912665916e8..00000000000000 --- a/deps/v8/gni/msvs_dependencies.isolate +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# TODO(machenbach): Remove this when crbug.com/669910 is resolved. -{ - 'conditions': [ - # Copy the VS runtime DLLs into the isolate so that they - # don't have to be preinstalled on the target machine. - # - # VS2013 runtimes - ['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp120d.dll', - '<(PRODUCT_DIR)/msvcr120d.dll', - ], - }, - }], - ['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp120.dll', - '<(PRODUCT_DIR)/msvcr120.dll', - ], - }, - }], - # VS2015/2017 runtimes - ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp140d.dll', - '<(PRODUCT_DIR)/vccorlib140d.dll', - '<(PRODUCT_DIR)/vcruntime140d.dll', - '<(PRODUCT_DIR)/ucrtbased.dll', - ], - }, - }], - ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', { - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/msvcp140.dll', - '<(PRODUCT_DIR)/vccorlib140.dll', - '<(PRODUCT_DIR)/vcruntime140.dll', - '<(PRODUCT_DIR)/ucrtbase.dll', - ], - }, - }], - ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library"', { - # Windows 10 Universal C Runtime binaries. - 'variables': { - 'files': [ - '<(PRODUCT_DIR)/api-ms-win-core-console-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-datetime-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-debug-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-errorhandling-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-file-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-file-l1-2-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-file-l2-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-handle-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-heap-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-interlocked-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-libraryloader-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-localization-l1-2-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-memory-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-namedpipe-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-processenvironment-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-1.dll', - '<(PRODUCT_DIR)/api-ms-win-core-profile-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-rtlsupport-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-string-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-synch-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-synch-l1-2-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-sysinfo-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-timezone-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-core-util-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-conio-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-convert-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-environment-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-filesystem-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-heap-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-locale-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-math-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-multibyte-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-private-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-process-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-runtime-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-stdio-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-string-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-time-l1-1-0.dll', - '<(PRODUCT_DIR)/api-ms-win-crt-utility-l1-1-0.dll', - ], - }, - }], - ], -} diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index 16a124dce85471..211f15aab944d4 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -37,6 +37,9 @@ declare_args() { # https://803591 v8_use_snapshot = !(is_win && host_os != "win" && target_cpu == "x64") + # Enable several snapshots side-by-side (e.g. default and for trusted code). + v8_use_multi_snapshots = "" + # Use external files for startup data blobs: # the JS builtins sources and the start snapshot. v8_use_external_startup_data = "" @@ -58,6 +61,11 @@ if (v8_use_external_startup_data == "") { v8_use_external_startup_data = v8_use_snapshot && !is_ios } +if (v8_use_multi_snapshots == "") { + v8_use_multi_snapshots = + v8_use_external_startup_data && !build_with_chromium && !use_jumbo_build +} + if (v8_enable_backtrace == "") { v8_enable_backtrace = is_debug && !v8_optimized_debug } @@ -113,6 +121,10 @@ if (target_cpu == "mipsel" || target_cpu == "mips64el" || v8_add_configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } +if (!build_with_chromium && is_clang) { + v8_remove_configs += [ "//build/config/clang:find_bad_constructs" ] +} + # All templates should be kept in sync. template("v8_source_set") { if (defined(invoker.split_count) && invoker.split_count > 1 && @@ -192,6 +204,7 @@ template("v8_static_library") { forward_variables_from(invoker, "*", [ "configs" ]) configs += invoker.configs configs -= v8_remove_configs + configs -= [ "//build/config/compiler:thin_archive" ] configs += v8_add_configs } } diff --git a/deps/v8/gypfiles/v8.gyp b/deps/v8/gypfiles/v8.gyp index 601b8403cc4378..80ce748d1fecab 100644 --- a/deps/v8/gypfiles/v8.gyp +++ b/deps/v8/gypfiles/v8.gyp @@ -541,7 +541,6 @@ '../src/api.cc', '../src/api.h', '../src/api-arguments-inl.h', - '../src/api-arguments.cc', '../src/api-arguments.h', '../src/api-natives.cc', '../src/api-natives.h', @@ -657,8 +656,6 @@ '../src/compilation-cache.h', '../src/compilation-dependencies.cc', '../src/compilation-dependencies.h', - '../src/compilation-info.cc', - '../src/compilation-info.h', '../src/compilation-statistics.cc', '../src/compilation-statistics.h', '../src/compiler/access-builder.cc', @@ -941,9 +938,8 @@ '../src/extensions/trigger-failure-extension.h', '../src/external-reference-table.cc', '../src/external-reference-table.h', - '../src/factory-inl.h', - '../src/factory.cc', - '../src/factory.h', + '../src/external-reference.cc', + '../src/external-reference.h', '../src/fast-dtoa.cc', '../src/fast-dtoa.h', '../src/feedback-vector-inl.h', @@ -987,6 +983,9 @@ '../src/heap/concurrent-marking.h', '../src/heap/embedder-tracing.cc', '../src/heap/embedder-tracing.h', + '../src/heap/factory-inl.h', + '../src/heap/factory.cc', + '../src/heap/factory.h', '../src/heap/memory-reducer.cc', '../src/heap/memory-reducer.h', '../src/heap/gc-idle-time-handler.cc', @@ -1174,11 +1173,15 @@ '../src/objects/js-promise.h', '../src/objects/js-regexp-inl.h', '../src/objects/js-regexp.h', + '../src/objects/js-regexp-string-iterator-inl.h', + '../src/objects/js-regexp-string-iterator.h', '../src/objects/literal-objects.cc', '../src/objects/literal-objects-inl.h', '../src/objects/literal-objects.h', '../src/objects/map-inl.h', '../src/objects/map.h', + '../src/objects/maybe-object-inl.h', + '../src/objects/maybe-object.h', '../src/objects/microtask-inl.h', '../src/objects/microtask.h', '../src/objects/module-inl.h', @@ -1204,6 +1207,8 @@ '../src/objects/string-table.h', '../src/objects/template-objects.cc', '../src/objects/template-objects.h', + '../src/optimized-compilation-info.cc', + '../src/optimized-compilation-info.h', '../src/ostreams.cc', '../src/ostreams.h', '../src/parsing/duplicate-finder.h', @@ -1415,13 +1420,15 @@ '../src/trap-handler/trap-handler-internal.h', '../src/type-hints.cc', '../src/type-hints.h', - '../src/unicode-inl.h', - '../src/unicode.cc', - '../src/unicode.h', '../src/unicode-cache-inl.h', '../src/unicode-cache.h', '../src/unicode-decoder.cc', '../src/unicode-decoder.h', + '../src/unicode-inl.h', + '../src/unicode.cc', + '../src/unicode.h', + '../src/unoptimized-compilation-info.cc', + '../src/unoptimized-compilation-info.h', '../src/uri.cc', '../src/uri.h', '../src/utils-inl.h', @@ -1471,8 +1478,6 @@ '../src/wasm/wasm-code-manager.h', '../src/wasm/wasm-code-specialization.cc', '../src/wasm/wasm-code-specialization.h', - '../src/wasm/wasm-code-wrapper.cc', - '../src/wasm/wasm-code-wrapper.h', '../src/wasm/wasm-constants.h', '../src/wasm/wasm-debug.cc', '../src/wasm/wasm-engine.cc', @@ -2201,12 +2206,12 @@ '../include//libplatform/libplatform.h', '../include//libplatform/libplatform-export.h', '../include//libplatform/v8-tracing.h', - '../src/libplatform/default-background-task-runner.cc', - '../src/libplatform/default-background-task-runner.h', '../src/libplatform/default-foreground-task-runner.cc', '../src/libplatform/default-foreground-task-runner.h', '../src/libplatform/default-platform.cc', '../src/libplatform/default-platform.h', + '../src/libplatform/default-worker-threads-task-runner.cc', + '../src/libplatform/default-worker-threads-task-runner.h', '../src/libplatform/task-queue.cc', '../src/libplatform/task-queue.h', '../src/libplatform/tracing/trace-buffer.cc', @@ -2342,8 +2347,6 @@ '../src/js/prologue.js', '../src/js/array.js', '../src/js/typedarray.js', - '../src/js/messages.js', - '../src/js/spread.js', '../src/debug/mirrors.js', '../src/debug/debug.js', '../src/debug/liveedit.js', @@ -2473,6 +2476,8 @@ '../src/objects/js-array-inl.h', '../src/objects/js-regexp.h', '../src/objects/js-regexp-inl.h', + '../src/objects/js-regexp-string-iterator-inl.h', + '../src/objects/js-regexp-string-iterator.h', '../src/objects/map.h', '../src/objects/map-inl.h', '../src/objects/script.h', diff --git a/deps/v8/include/OWNERS b/deps/v8/include/OWNERS index 28f038f80b2112..a7ac912c0ab4a9 100644 --- a/deps/v8/include/OWNERS +++ b/deps/v8/include/OWNERS @@ -1,5 +1,9 @@ +set noparent + adamk@chromium.org danno@chromium.org +ulan@chromium.org +yangguo@chromium.org per-file v8-inspector.h=dgozman@chromium.org per-file v8-inspector.h=pfeldman@chromium.org diff --git a/deps/v8/include/libplatform/libplatform.h b/deps/v8/include/libplatform/libplatform.h index b5f2b77711166f..2c830bf834b786 100644 --- a/deps/v8/include/libplatform/libplatform.h +++ b/deps/v8/include/libplatform/libplatform.h @@ -62,8 +62,10 @@ V8_PLATFORM_EXPORT bool PumpMessageLoop( v8::Platform* platform, v8::Isolate* isolate, MessageLoopBehavior behavior = MessageLoopBehavior::kDoNotWait); -V8_PLATFORM_EXPORT void EnsureEventLoopInitialized(v8::Platform* platform, - v8::Isolate* isolate); +V8_PLATFORM_EXPORT V8_DEPRECATE_SOON( + "This function has become obsolete and is essentially a nop", + void EnsureEventLoopInitialized(v8::Platform* platform, + v8::Isolate* isolate)); /** * Runs pending idle tasks for at most |idle_time_in_seconds| seconds. diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 62b3af84a0f717..ddc200abab0dd9 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -5,9 +5,9 @@ #ifndef V8_V8_PLATFORM_H_ #define V8_V8_PLATFORM_H_ -#include #include #include +#include // For abort. #include #include @@ -288,16 +288,21 @@ class Platform { */ virtual bool OnCriticalMemoryPressure(size_t length) { return false; } + /** + * Gets the number of worker threads used by GetWorkerThreadsTaskRunner() and + * CallOnWorkerThread(). This can be used to estimate the number of tasks a + * work package should be split into. A return value of 0 means that there are + * no worker threads available. Note that a value of 0 won't prohibit V8 from + * posting tasks using |CallOnWorkerThread|. + */ virtual int NumberOfWorkerThreads() { return static_cast(NumberOfAvailableBackgroundThreads()); } /** - * Gets the number of threads that are used to execute background tasks. Is - * used to estimate the number of tasks a work package should be split into. - * A return value of 0 means that there are no background threads available. - * Note that a value of 0 won't prohibit V8 from posting tasks using - * |CallOnBackgroundThread|. + * Deprecated. Use NumberOfWorkerThreads() instead. + * TODO(gab): Remove this when all embedders override + * NumberOfWorkerThreads() instead. */ V8_DEPRECATE_SOON( "NumberOfAvailableBackgroundThreads() is deprecated, use " @@ -340,8 +345,14 @@ class Platform { abort(); } + /** + * Returns a TaskRunner which can be used to post async tasks on a worker. + * This function should only be called from a foreground thread. + */ virtual std::shared_ptr GetWorkerThreadsTaskRunner( Isolate* isolate) { + // TODO(gab): Make this function abstract after it got implemented on all + // platforms. return GetBackgroundTaskRunner(isolate); } @@ -365,10 +376,19 @@ class Platform { abort(); } + /** + * Schedules a task to be invoked on a worker thread. + * TODO(gab): Make pure virtual when all embedders override this instead of + * CallOnBackgroundThread(). + */ virtual void CallOnWorkerThread(std::unique_ptr task) { CallOnBackgroundThread(task.release(), kShortRunningTask); } + /** + * Schedules a task that blocks the main thread to be invoked with + * high-priority on a worker thread. + */ virtual void CallBlockingTaskOnWorkerThread(std::unique_ptr task) { // Embedders may optionally override this to process these tasks in a high // priority pool. diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 50c531559ec663..afa40d25f30fdc 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -335,7 +335,8 @@ class V8_EXPORT CpuProfiler { /** * Tells the profiler whether the embedder is idle. */ - void SetIdle(bool is_idle); + V8_DEPRECATED("Use Isolate::SetIdle(bool) instead.", + void SetIdle(bool is_idle)); private: CpuProfiler(); @@ -401,7 +402,8 @@ class V8_EXPORT HeapGraphNode { // snapshot items together. kConsString = 10, // Concatenated string. A pair of pointers to strings. kSlicedString = 11, // Sliced string. A fragment of another string. - kSymbol = 12 // A Symbol (ES6). + kSymbol = 12, // A Symbol (ES6). + kBigInt = 13 // BigInt. }; /** Returns node type (see HeapGraphNode::Type). */ @@ -875,11 +877,15 @@ class V8_EXPORT HeapProfiler { void DeleteAllHeapSnapshots(); /** Binds a callback to embedder's class ID. */ - void SetWrapperClassInfoProvider( - uint16_t class_id, - WrapperInfoCallback callback); + V8_DEPRECATED( + "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes", + void SetWrapperClassInfoProvider(uint16_t class_id, + WrapperInfoCallback callback)); + + V8_DEPRECATED( + "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes", + void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback)); - void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback); void SetBuildEmbedderGraphCallback(BuildEmbedderGraphCallback callback); /** diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index cdb2c5381e3c85..f871c8fa676968 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 6 -#define V8_MINOR_VERSION 6 -#define V8_BUILD_NUMBER 346 -#define V8_PATCH_LEVEL 32 +#define V8_MINOR_VERSION 7 +#define V8_BUILD_NUMBER 288 +#define V8_PATCH_LEVEL 43 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 31407fa0839bb9..ed1a6d4af1ac02 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -66,6 +66,8 @@ namespace v8 { class AccessorSignature; class Array; class ArrayBuffer; +class BigInt; +class BigIntObject; class Boolean; class BooleanObject; class Context; @@ -1579,6 +1581,15 @@ class V8_EXPORT ScriptCompiler { static CachedData* CreateCodeCache(Local unbound_script, Local source); + /** + * Creates and returns code cache for the specified function that was + * previously produced by CompileFunctionInContext. + * This will return nullptr if the script cannot be serialized. The + * CachedData returned by this function should be owned by the caller. + */ + static CachedData* CreateCodeCacheForFunction(Local function, + Local source); + private: static V8_WARN_UNUSED_RESULT MaybeLocal CompileUnboundInternal( Isolate* isolate, Source* source, CompileOptions options, @@ -1650,6 +1661,7 @@ class V8_EXPORT Message { * Returns the index within the line of the last character where * the error occurred. */ + int GetEndColumn() const; V8_WARN_UNUSED_RESULT Maybe GetEndColumn(Local context) const; /** @@ -2153,6 +2165,11 @@ class V8_EXPORT Value : public Data { */ bool IsObject() const; + /** + * Returns true if this value is a bigint. + */ + bool IsBigInt() const; + /** * Returns true if this value is boolean. */ @@ -2188,6 +2205,11 @@ class V8_EXPORT Value : public Data { */ bool IsArgumentsObject() const; + /** + * Returns true if this value is a BigInt object. + */ + bool IsBigIntObject() const; + /** * Returns true if this value is a Boolean object. */ @@ -2361,6 +2383,8 @@ class V8_EXPORT Value : public Data { */ bool IsModuleNamespaceObject() const; + V8_WARN_UNUSED_RESULT MaybeLocal ToBigInt( + Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal ToBoolean( Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal ToNumber( @@ -3012,6 +3036,19 @@ class V8_EXPORT Uint32 : public Integer { static void CheckCast(v8::Value* obj); }; +/** + * A JavaScript BigInt value (https://tc39.github.io/proposal-bigint) + */ +class V8_EXPORT BigInt : public Primitive { + public: + static Local New(Isolate* isolate, int64_t value); + V8_INLINE static BigInt* Cast(v8::Value* obj); + + private: + BigInt(); + static void CheckCast(v8::Value* obj); +}; + /** * PropertyAttribute. */ @@ -3077,6 +3114,13 @@ enum PropertyFilter { SKIP_SYMBOLS = 16 }; +/** + * Options for marking whether callbacks may trigger JS-observable side effects. + * Side-effect-free callbacks are whitelisted during debug evaluation with + * throwOnSideEffect. It applies when calling a Function, FunctionTemplate, + * or an Accessor's getter callback. For Interceptors, please see + * PropertyHandlerFlags's kHasNoSideEffect. + */ enum class SideEffectType { kHasSideEffect, kHasNoSideEffect }; /** @@ -3090,7 +3134,7 @@ enum class KeyCollectionMode { kOwnOnly, kIncludePrototypes }; /** * kIncludesIndices allows for integer indices to be collected, while - * kSkipIndices will exclude integer indicies from being collected. + * kSkipIndices will exclude integer indices from being collected. */ enum class IndexFilter { kIncludeIndices, kSkipIndices }; @@ -3205,12 +3249,14 @@ class V8_EXPORT Object : public Value { V8_WARN_UNUSED_RESULT Maybe Delete(Local context, Local key); - V8_WARN_UNUSED_RESULT Maybe Has(Local context, - uint32_t index); + V8_WARN_UNUSED_RESULT Maybe Has(Local context, uint32_t index); V8_WARN_UNUSED_RESULT Maybe Delete(Local context, uint32_t index); + /** + * Note: SideEffectType affects the getter only, not the setter. + */ V8_WARN_UNUSED_RESULT Maybe SetAccessor( Local context, Local name, AccessorNameGetterCallback getter, AccessorNameSetterCallback setter = 0, @@ -4294,6 +4340,11 @@ class V8_EXPORT ArrayBuffer : public Object { */ virtual void Free(void* data, size_t length) = 0; + /** + * ArrayBuffer allocation mode. kNormal is a malloc/free style allocation, + * while kReservation is for larger allocations with the ability to set + * access permissions. + */ enum class AllocationMode { kNormal, kReservation }; /** @@ -4868,6 +4919,20 @@ class V8_EXPORT NumberObject : public Object { static void CheckCast(Value* obj); }; +/** + * A BigInt object (https://tc39.github.io/proposal-bigint) + */ +class V8_EXPORT BigIntObject : public Object { + public: + static Local New(Isolate* isolate, int64_t value); + + Local ValueOf() const; + + V8_INLINE static BigIntObject* Cast(Value* obj); + + private: + static void CheckCast(Value* obj); +}; /** * A Boolean object (ECMA-262, 4.3.15). @@ -5532,7 +5597,7 @@ class V8_EXPORT FunctionTemplate : public Template { /** * Causes the function template to inherit from a parent function template. - * This means the the function's prototype.__proto__ is set to the parent + * This means the function's prototype.__proto__ is set to the parent * function's prototype. **/ void Inherit(Local parent); @@ -5633,6 +5698,11 @@ enum class PropertyHandlerFlags { * named interceptors. */ kOnlyInterceptStrings = 1 << 2, + + /** + * The getter, query, enumerator callbacks do not produce side effects. + */ + kHasNoSideEffect = 1 << 3, }; struct NamedPropertyHandlerConfiguration { @@ -6209,24 +6279,6 @@ typedef void* (*CreateHistogramCallback)(const char* name, typedef void (*AddHistogramSampleCallback)(void* histogram, int sample); -// --- Memory Allocation Callback --- -enum ObjectSpace { - kObjectSpaceNewSpace = 1 << 0, - kObjectSpaceOldSpace = 1 << 1, - kObjectSpaceCodeSpace = 1 << 2, - kObjectSpaceMapSpace = 1 << 3, - kObjectSpaceLoSpace = 1 << 4, - kObjectSpaceAll = kObjectSpaceNewSpace | kObjectSpaceOldSpace | - kObjectSpaceCodeSpace | kObjectSpaceMapSpace | - kObjectSpaceLoSpace -}; - - enum AllocationAction { - kAllocationActionAllocate = 1 << 0, - kAllocationActionFree = 1 << 1, - kAllocationActionAll = kAllocationActionAllocate | kAllocationActionFree - }; - // --- Enter/Leave Script Callback --- typedef void (*BeforeCallEnteredCallback)(Isolate*); typedef void (*CallCompletedCallback)(Isolate*); @@ -6445,6 +6497,15 @@ typedef void (*GCCallback)(GCType type, GCCallbackFlags flags); typedef void (*InterruptCallback)(Isolate* isolate, void* data); +/** + * This callback is invoked when the heap size is close to the heap limit and + * V8 is likely to abort with out-of-memory error. + * The callback can extend the heap limit by returning a value that is greater + * than the current_heap_limit. The initial heap limit is the limit that was + * set after heap setup. + */ +typedef size_t (*NearHeapLimitCallback)(void* data, size_t current_heap_limit, + size_t initial_heap_limit); /** * Collection of V8 heap information. @@ -6578,6 +6639,12 @@ struct JitCodeEvent { // statement, and is used to indicate possible break locations. enum PositionType { POSITION, STATEMENT_POSITION }; + // There are two different kinds of JitCodeEvents, one for JIT code generated + // by the optimizing compiler, and one for byte code generated for the + // interpreter. For JIT_CODE events, the |code_start| member of the event + // points to the beginning of jitted assembly code, while for BYTE_CODE + // events, |code_start| points to the first bytecode of the interpreted + // function. enum CodeType { BYTE_CODE, JIT_CODE }; // Type of event. @@ -7281,6 +7348,11 @@ class V8_EXPORT Isolate { V8_DEPRECATED("CpuProfiler should be created with CpuProfiler::New call.", CpuProfiler* GetCpuProfiler()); + /** + * Tells the CPU profiler whether the embedder is idle. + */ + void SetIdle(bool is_idle); + /** Returns true if this isolate has a current context. */ bool InContext(); @@ -7692,6 +7764,23 @@ class V8_EXPORT Isolate { /** Set the callback to invoke in case of OOM errors. */ void SetOOMErrorHandler(OOMErrorCallback that); + /** + * Add a callback to invoke in case the heap size is close to the heap limit. + * If multiple callbacks are added, only the most recently added callback is + * invoked. + */ + void AddNearHeapLimitCallback(NearHeapLimitCallback callback, void* data); + + /** + * Remove the given callback and restore the heap limit to the + * given limit. If the given limit is zero, then it is ignored. + * If the current heap size is greater than the given limit, + * then the heap limit is restored to the minimal limit that + * is possible for the current heap size. + */ + void RemoveNearHeapLimitCallback(NearHeapLimitCallback callback, + size_t heap_limit); + /** * Set the callback to invoke to check if code generation from * strings should be allowed. @@ -7947,6 +8036,15 @@ class V8_EXPORT V8 { */ static bool Dispose(); + /** + * Initialize the ICU library bundled with V8. The embedder should only + * invoke this method when using the bundled ICU. Returns true on success. + * + * If V8 was compiled with the ICU data in an external file, the location + * of the data file has to be provided. + */ + static bool InitializeICU(const char* icu_data_file = nullptr); + /** * Initialize the ICU library bundled with V8. The embedder should only * invoke this method when using the bundled ICU. If V8 was compiled with @@ -8023,6 +8121,14 @@ class V8_EXPORT V8 { V8_DEPRECATE_SOON("Use EnableWebAssemblyTrapHandler", static bool RegisterDefaultSignalHandler()); + /** + * Activate trap-based bounds checking for WebAssembly. + * + * \param use_v8_signal_handler Whether V8 should install its own signal + * handler or rely on the embedder's. + */ + static bool EnableWebAssemblyTrapHandler(bool use_v8_signal_handler); + private: V8(); @@ -8580,6 +8686,11 @@ class V8_EXPORT Context { */ enum EmbedderDataFields { kDebugIdIndex = 0 }; + /** + * Return the number of fields allocated for embedder data. + */ + uint32_t GetNumberOfEmbedderDataFields(); + /** * Gets the embedder data with the given index, which must have been set by a * previous call to SetEmbedderData with the same index. @@ -8835,6 +8946,7 @@ const int kApiInt64Size = sizeof(int64_t); // NOLINT // Tag information for HeapObject. const int kHeapObjectTag = 1; +const int kWeakHeapObjectTag = 3; const int kHeapObjectTagSize = 2; const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1; @@ -9849,6 +9961,12 @@ Uint32* Uint32::Cast(v8::Value* value) { return static_cast(value); } +BigInt* BigInt::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} Date* Date::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS @@ -9881,6 +9999,12 @@ NumberObject* NumberObject::Cast(v8::Value* value) { return static_cast(value); } +BigIntObject* BigIntObject::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} BooleanObject* BooleanObject::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS @@ -10047,6 +10171,19 @@ Float64Array* Float64Array::Cast(v8::Value* value) { return static_cast(value); } +BigInt64Array* BigInt64Array::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} + +BigUint64Array* BigUint64Array::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); +} Uint8ClampedArray* Uint8ClampedArray::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 69cf3b78c8b2c8..d8e1f36c128d1e 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -177,6 +177,9 @@ // V8_HAS_ATTRIBUTE_VISIBILITY - __attribute__((visibility)) supported // V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT - __attribute__((warn_unused_result)) // supported +// V8_HAS_BUILTIN_BSWAP16 - __builtin_bswap16() supported +// V8_HAS_BUILTIN_BSWAP32 - __builtin_bswap32() supported +// V8_HAS_BUILTIN_BSWAP64 - __builtin_bswap64() supported // V8_HAS_BUILTIN_CLZ - __builtin_clz() supported // V8_HAS_BUILTIN_CTZ - __builtin_ctz() supported // V8_HAS_BUILTIN_EXPECT - __builtin_expect() supported @@ -217,6 +220,9 @@ # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \ (__has_attribute(warn_unused_result)) +# define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16)) +# define V8_HAS_BUILTIN_BSWAP32 (__has_builtin(__builtin_bswap32)) +# define V8_HAS_BUILTIN_BSWAP64 (__has_builtin(__builtin_bswap64)) # define V8_HAS_BUILTIN_CLZ (__has_builtin(__builtin_clz)) # define V8_HAS_BUILTIN_CTZ (__has_builtin(__builtin_ctz)) # define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect)) @@ -405,7 +411,7 @@ namespace v8 { template class AlignOfHelper { char c; T t; }; } // Annotate a function indicating the caller must examine the return value. // Use like: -// int foo() WARN_UNUSED_RESULT; +// int foo() V8_WARN_UNUSED_RESULT; #if V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT #define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #else diff --git a/deps/v8/infra/config/cq.cfg b/deps/v8/infra/config/cq.cfg index cda76faf51b576..6159b3f1cdeca4 100644 --- a/deps/v8/infra/config/cq.cfg +++ b/deps/v8/infra/config/cq.cfg @@ -31,6 +31,7 @@ verifiers { triggered_by: "v8_linux64_asan_rel_ng" } builders { name: "v8_linux64_gcc_compile_dbg" } + builders { name: "v8_linux64_jumbo_compile_rel" } builders { name: "v8_linux64_rel_ng" } builders { name: "v8_linux64_rel_ng_triggered" @@ -84,10 +85,10 @@ verifiers { name: "v8_linux_verify_csa_rel_ng_triggered" triggered_by: "v8_linux_verify_csa_rel_ng" } - builders { name: "v8_mac_rel_ng" } + builders { name: "v8_mac64_rel_ng" } builders { - name: "v8_mac_rel_ng_triggered" - triggered_by: "v8_mac_rel_ng" + name: "v8_mac64_rel_ng_triggered" + triggered_by: "v8_mac64_rel_ng" } builders { name: "v8_node_linux64_rel" } builders { name: "v8_presubmit" } diff --git a/deps/v8/infra/mb/gn_isolate_map.pyl b/deps/v8/infra/mb/gn_isolate_map.pyl new file mode 100644 index 00000000000000..8f13079ea3d3b4 --- /dev/null +++ b/deps/v8/infra/mb/gn_isolate_map.pyl @@ -0,0 +1,74 @@ +# Copyright 2018 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# gn_isolate_map.pyl - A mapping of Ninja build target names to GN labels and +# test type classifications for the tests that are run on the bots. +# +# This file is based on testing/buildbot/gn_isolate_map.pyl for Chromium, but +# is covering V8 stand-alone tests instead. +# See https://cs.chromium.org/chromium/src/testing/buildbot/gn_isolate_map.pyl +# for more detailed documentation. + +{ + "All": { + "label": "//:All", + "type": "script", + }, + "benchmarks": { + "label": "//test/benchmarks:v8_benchmarks", + "type": "script", + }, + "bot_default": { + "label": "//test:v8_bot_default", + "type": "script", + }, + "check-static-initializers": { + "label": "//tools:v8_check_static_initializers", + "type": "script", + }, + "d8_default": { + "label": "//test:v8_d8_default", + "type": "script", + }, + "mjsunit": { + "label": "//test/mjsunit:v8_mjsunit", + "type": "script", + }, + "mozilla": { + "label": "//test/mozilla:v8_mozilla", + "type": "script", + }, + "optimize_for_size": { + "label": "//test:v8_optimize_for_size", + "type": "script", + }, + "perf": { + "label": "//test:v8_perf", + "type": "script", + }, + "jsfunfuzz": { + "label": "//tools/jsfunfuzz:v8_jsfunfuzz", + "type": "script", + }, + "run-gcmole": { + "label": "//tools/gcmole:v8_run_gcmole", + "type": "script", + }, + "run-num-fuzzer": { + "label": "//test:v8_run_num_fuzzer", + "type": "script", + }, + "test262": { + "label": "//test/test262:v8_test262", + "type": "script", + }, + "unittests": { + "label": "//test/unittests:unittests", + "type": "script", + }, + "webkit": { + "label": "//test/webkit:v8_webkit", + "type": "script", + }, +} \ No newline at end of file diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 15ce744999bf5c..70a7ad5754e0cb 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -68,6 +68,11 @@ 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', 'V8 Linux64 - internal snapshot': 'release_x64_internal', 'V8 Linux64 - verify csa': 'release_x64_verify_csa', + # Jumbo. + 'V8 Linux64 Jumbo': 'release_x64_jumbo', + 'V8 Linux64 Jumbo - debug': 'debug_x64_jumbo', + 'V8 Linux64 Jumbo - limited': 'release_x64_jumbo_limited', + 'V8 Linux64 Jumbo - limited - debug': 'debug_x64_jumbo_limited', # Windows. 'V8 Win32 - builder': 'release_x86_minimal_symbols', 'V8 Win32 - debug builder': 'debug_x86_minimal_symbols', @@ -79,11 +84,9 @@ 'V8 Win64 - debug': 'debug_x64_minimal_symbols', 'V8 Win64 - msvc': 'release_x64_msvc', # Mac. - 'V8 Mac': 'release_x86', - 'V8 Mac - debug': 'debug_x86', 'V8 Mac64': 'release_x64', 'V8 Mac64 - debug': 'debug_x64', - 'V8 Mac GC Stress': 'debug_x86', + 'V8 Mac64 GC Stress': 'debug_x64', 'V8 Mac64 ASAN': 'release_x64_asan_no_lsan', # Sanitizers. 'V8 Linux64 ASAN': 'release_x64_asan', @@ -97,7 +100,6 @@ # FYI. 'V8 Fuchsia': 'release_x64_fuchsia', 'V8 Fuchsia - debug': 'debug_x64_fuchsia', - 'V8 Linux - swarming staging': 'release_x64', 'V8 Linux64 - cfi': 'release_x64_cfi', 'V8 Linux64 UBSanVptr': 'release_x64_ubsan_vptr', 'V8 Linux - vtunejit': 'debug_x86_vtunejit', @@ -210,9 +212,12 @@ 'v8_linux64_rel_ng': 'release_x64_test_features_trybot', 'v8_linux64_verify_csa_rel_ng': 'release_x64_verify_csa', 'v8_linux64_asan_rel_ng': 'release_x64_asan_minimal_symbols', + 'v8_linux64_cfi_rel_ng': 'release_x64_cfi', 'v8_linux64_msan_rel': 'release_simulate_arm64_msan_minimal_symbols', 'v8_linux64_sanitizer_coverage_rel': 'release_x64_asan_minimal_symbols_coverage', + 'v8_linux64_jumbo_compile_rel': 'release_x64_jumbo_trybot', + 'v8_linux64_jumbo_limited_compile_rel': 'release_x64_jumbo_limited_trybot', 'v8_linux64_tsan_rel': 'release_x64_tsan_minimal_symbols', 'v8_linux64_tsan_concurrent_marking_rel_ng': 'release_x64_tsan_concurrent_marking_minimal_symbols', @@ -226,12 +231,12 @@ 'v8_win64_asan_rel_ng': 'release_x64_asan_no_lsan', 'v8_win64_msvc_compile_rel': 'release_x64_msvc', 'v8_win64_dbg': 'debug_x64_minimal_symbols', + 'v8_win64_msvc_rel_ng': 'release_x64_msvc', 'v8_win64_rel_ng': 'release_x64_trybot', - 'v8_mac_rel_ng': 'release_x86_trybot', - 'v8_mac_dbg': 'debug_x86_trybot', - 'v8_mac_gc_stress_dbg': 'debug_x86_trybot', - 'v8_mac64_rel': 'release_x64_trybot', - 'v8_mac64_dbg': 'debug_x64_minimal_symbols', + 'v8_mac64_gc_stress_dbg': 'debug_x64_trybot', + 'v8_mac64_rel_ng': 'release_x64_trybot', + 'v8_mac64_dbg': 'debug_x64', + 'v8_mac64_dbg_ng': 'debug_x64', 'v8_mac64_asan_rel': 'release_x64_asan_no_lsan', 'v8_linux_arm_rel_ng': 'release_simulate_arm_trybot', 'v8_linux_arm_dbg': 'debug_simulate_arm', @@ -321,160 +326,174 @@ # Debug configs for simulators. 'debug_simulate_arm': [ - 'debug_bot', 'simulate_arm', 'swarming'], + 'debug_bot', 'simulate_arm'], 'debug_simulate_arm_asan_edge': [ 'debug_bot', 'simulate_arm', 'asan', 'edge'], 'debug_simulate_arm64': [ - 'debug_bot', 'simulate_arm64', 'swarming'], + 'debug_bot', 'simulate_arm64'], 'debug_simulate_arm64_asan_edge': [ 'debug_bot', 'simulate_arm64', 'asan', 'lsan', 'edge'], 'debug_simulate_arm64_no_snap': [ 'debug', 'simulate_arm64', 'shared', 'goma', 'v8_optimized_debug', - 'swarming', 'v8_snapshot_none'], + 'v8_snapshot_none'], 'debug_simulate_mipsel_asan_edge': [ 'debug_bot', 'simulate_mipsel', 'asan', 'edge'], # Release configs for simulators. 'release_simulate_arm': [ - 'release_bot', 'simulate_arm', 'swarming'], + 'release_bot', 'simulate_arm'], 'release_simulate_arm_trybot': [ - 'release_trybot', 'simulate_arm', 'swarming'], + 'release_trybot', 'simulate_arm'], 'release_simulate_arm64': [ - 'release_bot', 'simulate_arm64', 'swarming'], + 'release_bot', 'simulate_arm64'], 'release_simulate_arm64_msan': [ - 'release_bot', 'simulate_arm64', 'msan', 'swarming'], + 'release_bot', 'simulate_arm64', 'msan'], 'release_simulate_arm64_msan_minimal_symbols': [ - 'release_bot', 'simulate_arm64', 'msan', 'minimal_symbols', 'swarming'], + 'release_bot', 'simulate_arm64', 'msan', 'minimal_symbols'], 'release_simulate_arm64_msan_edge': [ 'release_bot', 'simulate_arm64', 'edge', 'msan'], 'release_simulate_arm64_msan_no_origins_edge': [ 'release_bot', 'simulate_arm64', 'edge', 'msan_no_origins'], 'release_simulate_arm64_trybot': [ - 'release_trybot', 'simulate_arm64', 'swarming'], + 'release_trybot', 'simulate_arm64'], 'release_simulate_mipsel': [ - 'release_bot', 'simulate_mipsel', 'swarming'], + 'release_bot', 'simulate_mipsel'], 'release_simulate_mips64el': [ - 'release_bot', 'simulate_mips64el', 'swarming'], + 'release_bot', 'simulate_mips64el'], 'release_simulate_ppc': [ - 'release_bot', 'simulate_ppc', 'swarming'], + 'release_bot', 'simulate_ppc'], 'release_simulate_ppc64': [ - 'release_bot', 'simulate_ppc64', 'swarming'], + 'release_bot', 'simulate_ppc64'], 'release_simulate_s390': [ - 'release_bot', 'simulate_s390', 'swarming'], + 'release_bot', 'simulate_s390'], 'release_simulate_s390x': [ - 'release_bot', 'simulate_s390x', 'swarming'], + 'release_bot', 'simulate_s390x'], # Debug configs for arm. 'debug_arm': [ - 'debug_bot', 'arm', 'hard_float', 'swarming'], + 'debug_bot', 'arm', 'hard_float'], # Release configs for arm. 'release_arm': [ - 'release_bot', 'arm', 'hard_float', 'swarming'], + 'release_bot', 'arm', 'hard_float'], 'release_android_arm': [ - 'release_bot', 'arm', 'android', 'minimal_symbols', 'swarming'], + 'release_bot', 'arm', 'android', 'minimal_symbols'], 'release_android_arm64': [ - 'release_bot', 'arm64', 'android', 'minimal_symbols', 'swarming'], + 'release_bot', 'arm64', 'android', 'minimal_symbols'], # Release configs for x64. 'release_x64': [ - 'release_bot', 'x64', 'swarming'], + 'release_bot', 'x64'], 'release_x64_asan': [ - 'release_bot', 'x64', 'asan', 'lsan', 'swarming'], + 'release_bot', 'x64', 'asan', 'lsan'], 'release_x64_asan_minimal_symbols': [ - 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols'], 'release_x64_asan_minimal_symbols_coverage': [ - 'release_bot', 'x64', 'asan', 'bb', 'coverage', 'lsan', 'minimal_symbols', - 'swarming'], + 'release_bot', 'x64', 'asan', 'bb', 'coverage', 'lsan', 'minimal_symbols'], 'release_x64_asan_no_lsan': [ - 'release_bot', 'x64', 'asan', 'swarming'], + 'release_bot', 'x64', 'asan'], 'release_x64_asan_no_lsan_edge_verify_heap': [ - 'release_bot', 'x64', 'asan', 'edge', 'swarming', 'v8_verify_heap'], + 'release_bot', 'x64', 'asan', 'edge', 'v8_verify_heap'], 'release_x64_asan_no_lsan_verify_heap': [ - 'release_bot', 'x64', 'asan', 'swarming', 'v8_verify_heap'], + 'release_bot', 'x64', 'asan', 'v8_verify_heap'], 'release_x64_asan_no_lsan_verify_heap_dchecks': [ - 'release_bot', 'x64', 'asan', 'swarming', 'dcheck_always_on', + 'release_bot', 'x64', 'asan', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_heap'], 'release_x64_asan_symbolized_edge_verify_heap': [ 'release_bot', 'x64', 'asan', 'edge', 'lsan', 'symbolized', 'v8_verify_heap'], 'release_x64_cfi': [ - 'release_bot', 'x64', 'cfi', 'swarming'], + 'release_bot', 'x64', 'cfi'], 'release_x64_cfi_clusterfuzz': [ 'release_bot', 'x64', 'cfi_clusterfuzz'], 'release_x64_msvc': [ - 'release_bot', 'x64', 'msvc', 'swarming'], + 'release_bot', 'x64', 'msvc'], 'release_x64_concurrent_marking': [ - 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'swarming'], + 'release_bot', 'x64', 'v8_enable_concurrent_marking'], 'release_x64_correctness_fuzzer' : [ - 'release_bot', 'x64', 'v8_correctness_fuzzer', 'swarming'], + 'release_bot', 'x64', 'v8_correctness_fuzzer'], 'release_x64_fuchsia': [ - 'release_bot', 'x64', 'fuchsia', 'swarming'], + 'release_bot', 'x64', 'fuchsia'], 'release_x64_fuchsia_trybot': [ - 'release_trybot', 'x64', 'fuchsia', 'swarming'], + 'release_trybot', 'x64', 'fuchsia'], 'release_x64_gcc_coverage': [ 'release_bot', 'x64', 'coverage', 'gcc'], 'release_x64_internal': [ - 'release_bot', 'x64', 'swarming', 'v8_snapshot_internal'], + 'release_bot', 'x64', 'v8_enable_embedded_builtins', + 'v8_snapshot_internal'], + 'release_x64_jumbo': [ + 'release_bot', 'x64', 'jumbo'], + 'release_x64_jumbo_trybot': [ + 'release_trybot', 'x64', 'jumbo'], + 'release_x64_jumbo_limited': [ + 'release_bot', 'x64', 'jumbo_limited'], + 'release_x64_jumbo_limited_trybot': [ + 'release_trybot', 'x64', 'jumbo_limited'], 'release_x64_minimal_symbols': [ - 'release_bot', 'x64', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'minimal_symbols'], 'release_x64_no_snap': [ - 'release_bot', 'x64', 'swarming', 'v8_snapshot_none'], + 'release_bot', 'x64', 'v8_snapshot_none'], 'release_x64_trybot': [ - 'release_trybot', 'x64', 'swarming'], + 'release_trybot', 'x64'], 'release_x64_test_features_trybot': [ - 'release_trybot', 'x64', 'swarming', 'v8_enable_test_features'], + 'release_trybot', 'x64', 'v8_enable_test_features'], 'release_x64_tsan': [ - 'release_bot', 'x64', 'tsan', 'swarming'], + 'release_bot', 'x64', 'tsan'], 'release_x64_tsan_concurrent_marking': [ - 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'tsan', 'swarming'], + 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'tsan'], 'release_x64_tsan_concurrent_marking_minimal_symbols': [ 'release_bot', 'x64', 'v8_enable_concurrent_marking', 'tsan', - 'minimal_symbols', 'swarming'], + 'minimal_symbols'], 'release_x64_tsan_minimal_symbols': [ - 'release_bot', 'x64', 'tsan', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'tsan', 'minimal_symbols'], 'release_x64_ubsan_vptr': [ - 'release_bot', 'x64', 'ubsan_vptr', 'swarming'], + 'release_bot', 'x64', 'ubsan_vptr'], 'release_x64_ubsan_vptr_recover_edge': [ - 'release_bot', 'x64', 'edge', 'ubsan_vptr_recover', 'swarming'], + 'release_bot', 'x64', 'edge', 'ubsan_vptr_recover'], 'release_x64_ubsan_vptr_minimal_symbols': [ - 'release_bot', 'x64', 'ubsan_vptr', 'minimal_symbols', 'swarming'], + 'release_bot', 'x64', 'ubsan_vptr', 'minimal_symbols'], 'release_x64_verify_csa': [ - 'release_bot', 'x64', 'swarming', 'dcheck_always_on', - 'v8_enable_slow_dchecks', 'v8_verify_csa'], + 'release_bot', 'x64', 'dcheck_always_on', + 'v8_enable_slow_dchecks', 'v8_enable_embedded_builtins', 'v8_verify_csa'], # Debug configs for x64. 'debug_x64': [ - 'debug_bot', 'x64', 'swarming'], + 'debug_bot', 'x64'], 'debug_x64_asan_edge': [ 'debug_bot', 'x64', 'asan', 'lsan', 'edge'], 'debug_x64_asan_no_lsan_static_edge': [ 'debug', 'static', 'goma', 'v8_enable_slow_dchecks', 'v8_optimized_debug', - 'x64', 'asan', 'edge', 'swarming'], + 'x64', 'asan', 'edge'], 'debug_x64_custom': [ - 'debug_bot', 'x64', 'swarming', 'v8_snapshot_custom'], + 'debug_bot', 'x64', 'v8_snapshot_custom'], 'debug_x64_fuchsia': [ - 'debug_bot', 'x64', 'fuchsia', 'swarming'], + 'debug_bot', 'x64', 'fuchsia'], 'debug_x64_gcc': [ 'debug_bot', 'x64', 'gcc'], + 'debug_x64_jumbo': [ + 'debug_bot', 'x64', 'jumbo'], + 'debug_x64_jumbo_limited': [ + 'debug_bot', 'x64', 'jumbo_limited'], 'debug_x64_minimal_symbols': [ - 'debug_bot', 'x64', 'minimal_symbols', 'swarming'], + 'debug_bot', 'x64', 'minimal_symbols'], 'debug_x64_no_snap': [ - 'debug_bot', 'x64', 'swarming', 'v8_snapshot_none'], + 'debug_bot', 'x64', 'v8_snapshot_none'], + 'debug_x64_trybot': [ + 'debug_trybot', 'x64'], # Debug configs for x86. 'debug_x86': [ - 'debug_bot', 'x86', 'swarming'], + 'debug_bot', 'x86'], 'debug_x86_minimal_symbols': [ - 'debug_bot', 'x86', 'minimal_symbols', 'swarming'], + 'debug_bot', 'x86', 'minimal_symbols'], 'debug_x86_no_i18n': [ - 'debug_bot', 'x86', 'swarming', 'v8_no_i18n'], + 'debug_bot', 'x86', 'v8_no_i18n'], 'debug_x86_no_snap': [ - 'debug_bot', 'x86', 'swarming', 'v8_snapshot_none'], + 'debug_bot', 'x86', 'v8_snapshot_none'], 'debug_x86_no_snap_trybot': [ - 'debug_trybot', 'x86', 'swarming', 'v8_snapshot_none'], + 'debug_trybot', 'x86', 'v8_snapshot_none'], 'debug_x86_trybot': [ - 'debug_trybot', 'x86', 'swarming'], + 'debug_trybot', 'x86'], 'debug_x86_vtunejit': [ 'debug_bot', 'x86', 'v8_enable_vtunejit'], 'full_debug_x86': [ @@ -483,7 +502,7 @@ # Release configs for x86. 'release_x86': [ - 'release_bot', 'x86', 'swarming'], + 'release_bot', 'x86'], 'release_x86_disassembler': [ 'release_bot', 'x86', 'v8_enable_disassembler'], 'release_x86_gcc': [ @@ -491,30 +510,30 @@ 'release_x86_gcc_minimal_symbols': [ 'release_bot', 'x86', 'gcc', 'minimal_symbols'], 'release_x86_gcmole': [ - 'release_bot', 'x86', 'gcmole', 'swarming'], + 'release_bot', 'x86', 'gcmole'], 'release_x86_gcmole_trybot': [ - 'release_trybot', 'x86', 'gcmole', 'swarming'], + 'release_trybot', 'x86', 'gcmole'], 'release_x86_interpreted_regexp': [ 'release_bot', 'x86', 'v8_interpreted_regexp'], 'release_x86_minimal_symbols': [ - 'release_bot', 'x86', 'minimal_symbols', 'swarming'], + 'release_bot', 'x86', 'minimal_symbols'], 'release_x86_no_i18n_trybot': [ - 'release_trybot', 'x86', 'swarming', 'v8_no_i18n'], + 'release_trybot', 'x86', 'v8_no_i18n'], 'release_x86_no_snap': [ - 'release_bot', 'x86', 'swarming', 'v8_snapshot_none'], + 'release_bot', 'x86', 'v8_snapshot_none'], 'release_x86_no_snap_shared_minimal_symbols': [ - 'release', 'x86', 'goma', 'minimal_symbols', 'shared', 'swarming', + 'release', 'x86', 'goma', 'minimal_symbols', 'shared', 'v8_snapshot_none'], 'release_x86_no_snap_trybot': [ - 'release_trybot', 'x86', 'swarming', 'v8_snapshot_none'], + 'release_trybot', 'x86', 'v8_snapshot_none'], 'release_x86_predictable': [ 'release_bot', 'x86', 'v8_enable_verify_predictable'], 'release_x86_shared_verify_heap': [ - 'release', 'x86', 'goma', 'shared', 'swarming', 'v8_verify_heap'], + 'release', 'x86', 'goma', 'shared', 'v8_verify_heap'], 'release_x86_trybot': [ - 'release_trybot', 'x86', 'swarming'], + 'release_trybot', 'x86'], 'release_x86_verify_csa': [ - 'release_bot', 'x86', 'swarming', 'dcheck_always_on', + 'release_bot', 'x86', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_csa'], # Release configs for mips. @@ -608,6 +627,14 @@ 'gn_args': 'arm_float_abi="hard"', }, + 'jumbo': { + 'gn_args': 'use_jumbo_build=true', + }, + + 'jumbo_limited': { + 'gn_args': 'use_jumbo_build=true jumbo_file_merge_limit=50', + }, + 'lsan': { 'mixins': ['v8_enable_test_features'], 'gn_args': 'is_lsan=true', @@ -699,10 +726,6 @@ 'gn_args': 'is_component_build=false', }, - 'swarming': { - 'gn_args': 'v8_test_isolation_mode="prepare"', - }, - # TODO(machenbach): Remove the symbolized config after the bots are gone. 'symbolized': { 'gn_args': 'v8_no_inline=true', @@ -744,6 +767,10 @@ 'gn_args': 'v8_enable_disassembler=true', }, + 'v8_enable_embedded_builtins': { + 'gn_args': 'v8_enable_embedded_builtins=true', + }, + 'v8_enable_slow_dchecks': { 'gn_args': 'v8_enable_slow_dchecks=true', }, diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index bbf47e61071faf..050f91d6d6d990 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -8,6 +8,8 @@ include_rules = [ "+src/compiler/code-assembler.h", "+src/compiler/wasm-compiler.h", "-src/heap", + "+src/heap/factory.h", + "+src/heap/factory-inl.h", "+src/heap/heap.h", "+src/heap/heap-inl.h", "-src/inspector", diff --git a/deps/v8/src/accessors.cc b/deps/v8/src/accessors.cc index eb892886857213..f292988b8e1e5d 100644 --- a/deps/v8/src/accessors.cc +++ b/deps/v8/src/accessors.cc @@ -8,8 +8,8 @@ #include "src/contexts.h" #include "src/deoptimizer.h" #include "src/execution.h" -#include "src/factory.h" #include "src/frames-inl.h" +#include "src/heap/factory.h" #include "src/isolate-inl.h" #include "src/messages.h" #include "src/property-details.h" @@ -28,6 +28,7 @@ Handle Accessors::MakeAccessor( info->set_is_special_data_property(true); info->set_is_sloppy(false); info->set_replace_on_access(false); + info->set_has_no_side_effect(false); name = factory->InternalizeName(name); info->set_name(*name); Handle get = v8::FromCData(isolate, getter); @@ -78,7 +79,7 @@ bool Accessors::IsJSObjectFieldAccessor(Handle map, Handle name, namespace { -MUST_USE_RESULT MaybeHandle ReplaceAccessorWithDataProperty( +V8_WARN_UNUSED_RESULT MaybeHandle ReplaceAccessorWithDataProperty( Isolate* isolate, Handle receiver, Handle holder, Handle name, Handle value) { LookupIterator it(receiver, name, holder, @@ -97,6 +98,9 @@ MUST_USE_RESULT MaybeHandle ReplaceAccessorWithDataProperty( } // namespace +// +// Accessors::ReconfigureToDataProperty +// void Accessors::ReconfigureToDataProperty( v8::Local key, v8::Local val, const v8::PropertyCallbackInfo& info) { @@ -118,6 +122,18 @@ void Accessors::ReconfigureToDataProperty( } } +void Accessors::ReconfigureToDataPropertyGetter( + v8::Local name, const v8::PropertyCallbackInfo& info) { + UNREACHABLE(); +} + +Handle Accessors::MakeReconfigureToDataPropertyInfo( + Isolate* isolate) { + Handle name = isolate->factory()->ReconfigureToDataProperty_string(); + return MakeAccessor(isolate, name, &ReconfigureToDataPropertyGetter, + &ReconfigureToDataProperty); +} + // // Accessors::ArgumentsIterator // @@ -299,7 +315,6 @@ Handle Accessors::MakeStringLengthInfo(Isolate* isolate) { &StringLengthGetter, nullptr); } - // // Accessors::ScriptColumnOffset // @@ -613,7 +628,7 @@ void Accessors::ScriptEvalFromFunctionNameGetter( if (script->has_eval_from_shared()) { Handle shared(script->eval_from_shared()); // Find the name of the function calling eval. - result = Handle(shared->name(), isolate); + result = Handle(shared->Name(), isolate); } info.GetReturnValue().Set(Utils::ToLocal(result)); } diff --git a/deps/v8/src/accessors.h b/deps/v8/src/accessors.h index 70e6a9200ec7a6..1911f92dbf93dd 100644 --- a/deps/v8/src/accessors.h +++ b/deps/v8/src/accessors.h @@ -33,6 +33,7 @@ class JavaScriptFrame; V(function_name, FunctionName) \ V(function_length, FunctionLength) \ V(function_prototype, FunctionPrototype) \ + V(reconfigure_to_data_property, ReconfigureToDataProperty) \ V(script_column_offset, ScriptColumnOffset) \ V(script_compilation_type, ScriptCompilationType) \ V(script_context_data, ScriptContextData) \ @@ -48,6 +49,15 @@ class JavaScriptFrame; V(script_source_mapping_url, ScriptSourceMappingUrl) \ V(string_length, StringLength) +#define SIDE_EFFECT_FREE_ACCESSOR_INFO_LIST(V) \ + V(ArrayLength) \ + V(BoundFunctionLength) \ + V(BoundFunctionName) \ + V(FunctionName) \ + V(FunctionLength) \ + V(FunctionPrototype) \ + V(StringLength) + #define ACCESSOR_SETTER_LIST(V) \ V(ArrayLengthSetter) \ V(ErrorStackSetter) \ @@ -73,6 +83,16 @@ class Accessors : public AllStatic { ACCESSOR_SETTER_LIST(ACCESSOR_SETTER_DECLARATION) #undef ACCESSOR_SETTER_DECLARATION + static constexpr int kAccessorInfoCount = +#define COUNT_ACCESSOR(...) +1 + ACCESSOR_INFO_LIST(COUNT_ACCESSOR); +#undef COUNT_ACCESSOR + + static constexpr int kAccessorSetterCount = +#define COUNT_ACCESSOR(...) +1 + ACCESSOR_SETTER_LIST(COUNT_ACCESSOR); +#undef COUNT_ACCESSOR + static void ModuleNamespaceEntryGetter( v8::Local name, const v8::PropertyCallbackInfo& info); diff --git a/deps/v8/src/allocation.cc b/deps/v8/src/allocation.cc index 5493b34789eb00..f63c2f292f5b00 100644 --- a/deps/v8/src/allocation.cc +++ b/deps/v8/src/allocation.cc @@ -69,7 +69,7 @@ const int kAllocationTries = 2; void* Malloced::New(size_t size) { void* result = AllocWithRetry(size); if (result == nullptr) { - V8::FatalProcessOutOfMemory("Malloced operator new"); + V8::FatalProcessOutOfMemory(nullptr, "Malloced operator new"); } return result; } @@ -115,7 +115,7 @@ void* AlignedAlloc(size_t size, size_t alignment) { if (!OnCriticalMemoryPressure(size + alignment)) break; } if (result == nullptr) { - V8::FatalProcessOutOfMemory("AlignedAlloc"); + V8::FatalProcessOutOfMemory(nullptr, "AlignedAlloc"); } return result; } diff --git a/deps/v8/src/allocation.h b/deps/v8/src/allocation.h index 9bb47c8f05d2a1..13dc3e508f3d3c 100644 --- a/deps/v8/src/allocation.h +++ b/deps/v8/src/allocation.h @@ -14,13 +14,16 @@ namespace v8 { namespace internal { +class Isolate; + // This file defines memory allocation functions. If a first attempt at an // allocation fails, these functions call back into the embedder, then attempt // the allocation a second time. The embedder callback must not reenter V8. // Called when allocation routines fail to allocate, even with a possible retry. // This function should not return, but should terminate the current processing. -V8_EXPORT_PRIVATE void FatalProcessOutOfMemory(const char* message); +[[noreturn]] V8_EXPORT_PRIVATE void FatalProcessOutOfMemory( + Isolate* isolate, const char* message); // Superclass for classes managed with new & delete. class V8_EXPORT_PRIVATE Malloced { @@ -38,13 +41,13 @@ T* NewArray(size_t size) { if (result == nullptr) { V8::GetCurrentPlatform()->OnCriticalMemoryPressure(); result = new (std::nothrow) T[size]; - if (result == nullptr) FatalProcessOutOfMemory("NewArray"); + if (result == nullptr) FatalProcessOutOfMemory(nullptr, "NewArray"); } return result; } -template ::type> +template ::value>::type> T* NewArray(size_t size, T default_val) { T* result = reinterpret_cast(NewArray(sizeof(T) * size)); for (size_t i = 0; i < size; ++i) result[i] = default_val; diff --git a/deps/v8/src/api-arguments-inl.h b/deps/v8/src/api-arguments-inl.h index b8336f97c4fbe2..1cf9662b94997b 100644 --- a/deps/v8/src/api-arguments-inl.h +++ b/deps/v8/src/api-arguments-inl.h @@ -13,56 +13,63 @@ namespace v8 { namespace internal { -#define FOR_EACH_CALLBACK(F) \ - F(Query, query, Object, v8::Integer) \ - F(Deleter, deleter, Object, v8::Boolean) - -#define PREPARE_CALLBACK_INFO(ISOLATE, F, RETURN_VALUE, API_RETURN_TYPE) \ - if (ISOLATE->needs_side_effect_check() && \ - !PerformSideEffectCheck(ISOLATE, FUNCTION_ADDR(F))) { \ - return RETURN_VALUE(); \ - } \ - VMState state(ISOLATE); \ - ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ +#define FOR_EACH_CALLBACK(F) \ + F(Query, query, Object, v8::Integer, interceptor) \ + F(Deleter, deleter, Object, v8::Boolean, Handle()) + +#define DCHECK_NAME_COMPATIBLE(interceptor, name) \ + DCHECK(interceptor->is_named()); \ + DCHECK(!name->IsPrivate()); \ + DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + +#define PREPARE_CALLBACK_INFO(ISOLATE, F, RETURN_VALUE, API_RETURN_TYPE, \ + CALLBACK_INFO) \ + if (ISOLATE->debug_execution_mode() == DebugInfo::kSideEffects && \ + !ISOLATE->debug()->PerformSideEffectCheckForCallback(CALLBACK_INFO)) { \ + return RETURN_VALUE(); \ + } \ + VMState state(ISOLATE); \ + ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ PropertyCallbackInfo callback_info(begin()); -#define CREATE_NAMED_CALLBACK(Function, type, ReturnType, ApiReturnType) \ - Handle PropertyCallbackArguments::CallNamed##Function( \ +#define CREATE_NAMED_CALLBACK(FUNCTION, TYPE, RETURN_TYPE, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT) \ + Handle PropertyCallbackArguments::CallNamed##FUNCTION( \ Handle interceptor, Handle name) { \ - DCHECK(interceptor->is_named()); \ - DCHECK(!name->IsPrivate()); \ - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); \ + DCHECK_NAME_COMPATIBLE(interceptor, name); \ Isolate* isolate = this->isolate(); \ RuntimeCallTimerScope timer( \ - isolate, RuntimeCallCounterId::kNamed##Function##Callback); \ - DCHECK(!name->IsPrivate()); \ - GenericNamedProperty##Function##Callback f = \ - ToCData( \ - interceptor->type()); \ - PREPARE_CALLBACK_INFO(isolate, f, Handle, ApiReturnType); \ + isolate, RuntimeCallCounterId::kNamed##FUNCTION##Callback); \ + GenericNamedProperty##FUNCTION##Callback f = \ + ToCData( \ + interceptor->TYPE()); \ + PREPARE_CALLBACK_INFO(isolate, f, Handle, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT); \ LOG(isolate, \ - ApiNamedPropertyAccess("interceptor-named-" #type, holder(), *name)); \ + ApiNamedPropertyAccess("interceptor-named-" #TYPE, holder(), *name)); \ f(v8::Utils::ToLocal(name), callback_info); \ - return GetReturnValue(isolate); \ + return GetReturnValue(isolate); \ } FOR_EACH_CALLBACK(CREATE_NAMED_CALLBACK) #undef CREATE_NAMED_CALLBACK -#define CREATE_INDEXED_CALLBACK(Function, type, ReturnType, ApiReturnType) \ - Handle PropertyCallbackArguments::CallIndexed##Function( \ - Handle interceptor, uint32_t index) { \ - DCHECK(!interceptor->is_named()); \ - Isolate* isolate = this->isolate(); \ - RuntimeCallTimerScope timer( \ - isolate, RuntimeCallCounterId::kIndexed##Function##Callback); \ - IndexedProperty##Function##Callback f = \ - ToCData(interceptor->type()); \ - PREPARE_CALLBACK_INFO(isolate, f, Handle, ApiReturnType); \ - LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-" #type, \ - holder(), index)); \ - f(index, callback_info); \ - return GetReturnValue(isolate); \ +#define CREATE_INDEXED_CALLBACK(FUNCTION, TYPE, RETURN_TYPE, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT) \ + Handle PropertyCallbackArguments::CallIndexed##FUNCTION( \ + Handle interceptor, uint32_t index) { \ + DCHECK(!interceptor->is_named()); \ + Isolate* isolate = this->isolate(); \ + RuntimeCallTimerScope timer( \ + isolate, RuntimeCallCounterId::kIndexed##FUNCTION##Callback); \ + IndexedProperty##FUNCTION##Callback f = \ + ToCData(interceptor->TYPE()); \ + PREPARE_CALLBACK_INFO(isolate, f, Handle, API_RETURN_TYPE, \ + INFO_FOR_SIDE_EFFECT); \ + LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-" #TYPE, \ + holder(), index)); \ + f(index, callback_info); \ + return GetReturnValue(isolate); \ } FOR_EACH_CALLBACK(CREATE_INDEXED_CALLBACK) @@ -70,11 +77,44 @@ FOR_EACH_CALLBACK(CREATE_INDEXED_CALLBACK) #undef FOR_EACH_CALLBACK #undef CREATE_INDEXED_CALLBACK +Handle FunctionCallbackArguments::Call(CallHandlerInfo* handler) { + Isolate* isolate = this->isolate(); + LOG(isolate, ApiObjectAccess("call", holder())); + RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback); + v8::FunctionCallback f = + v8::ToCData(handler->callback()); + if (isolate->debug_execution_mode() == DebugInfo::kSideEffects && + !isolate->debug()->PerformSideEffectCheckForCallback(handle(handler))) { + return Handle(); + } + VMState state(isolate); + ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); + FunctionCallbackInfo info(begin(), argv_, argc_); + f(info); + return GetReturnValue(isolate); +} + +Handle PropertyCallbackArguments::CallNamedEnumerator( + Handle interceptor) { + DCHECK(interceptor->is_named()); + LOG(isolate(), ApiObjectAccess("interceptor-named-enumerator", holder())); + RuntimeCallTimerScope timer(isolate(), + RuntimeCallCounterId::kNamedEnumeratorCallback); + return CallPropertyEnumerator(interceptor); +} + +Handle PropertyCallbackArguments::CallIndexedEnumerator( + Handle interceptor) { + DCHECK(!interceptor->is_named()); + LOG(isolate(), ApiObjectAccess("interceptor-indexed-enumerator", holder())); + RuntimeCallTimerScope timer(isolate(), + RuntimeCallCounterId::kIndexedEnumeratorCallback); + return CallPropertyEnumerator(interceptor); +} + Handle PropertyCallbackArguments::CallNamedGetter( Handle interceptor, Handle name) { - DCHECK(interceptor->is_named()); - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); - DCHECK(!name->IsPrivate()); + DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedGetterCallback); @@ -82,13 +122,12 @@ Handle PropertyCallbackArguments::CallNamedGetter( ApiNamedPropertyAccess("interceptor-named-getter", holder(), *name)); GenericNamedPropertyGetterCallback f = ToCData(interceptor->getter()); - return BasicCallNamedGetterCallback(f, name); + return BasicCallNamedGetterCallback(f, name, interceptor); } Handle PropertyCallbackArguments::CallNamedDescriptor( Handle interceptor, Handle name) { - DCHECK(interceptor->is_named()); - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedDescriptorCallback); @@ -97,14 +136,15 @@ Handle PropertyCallbackArguments::CallNamedDescriptor( GenericNamedPropertyDescriptorCallback f = ToCData( interceptor->descriptor()); - return BasicCallNamedGetterCallback(f, name); + return BasicCallNamedGetterCallback(f, name, interceptor); } Handle PropertyCallbackArguments::BasicCallNamedGetterCallback( - GenericNamedPropertyGetterCallback f, Handle name) { + GenericNamedPropertyGetterCallback f, Handle name, + Handle info) { DCHECK(!name->IsPrivate()); Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info); f(v8::Utils::ToLocal(name), callback_info); return GetReturnValue(isolate); } @@ -112,20 +152,15 @@ Handle PropertyCallbackArguments::BasicCallNamedGetterCallback( Handle PropertyCallbackArguments::CallNamedSetter( Handle interceptor, Handle name, Handle value) { - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + DCHECK_NAME_COMPATIBLE(interceptor, name); GenericNamedPropertySetterCallback f = ToCData(interceptor->setter()); - return CallNamedSetterCallback(f, name, value); -} - -Handle PropertyCallbackArguments::CallNamedSetterCallback( - GenericNamedPropertySetterCallback f, Handle name, - Handle value) { - DCHECK(!name->IsPrivate()); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedSetterCallback); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiNamedPropertyAccess("interceptor-named-set", holder(), *name)); f(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), callback_info); @@ -135,15 +170,15 @@ Handle PropertyCallbackArguments::CallNamedSetterCallback( Handle PropertyCallbackArguments::CallNamedDefiner( Handle interceptor, Handle name, const v8::PropertyDescriptor& desc) { - DCHECK(interceptor->is_named()); - DCHECK(!name->IsPrivate()); - DCHECK_IMPLIES(name->IsSymbol(), interceptor->can_intercept_symbols()); + DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kNamedDefinerCallback); GenericNamedPropertyDefinerCallback f = ToCData(interceptor->definer()); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiNamedPropertyAccess("interceptor-named-define", holder(), *name)); f(v8::Utils::ToLocal(name), desc, callback_info); @@ -158,7 +193,9 @@ Handle PropertyCallbackArguments::CallIndexedSetter( RuntimeCallCounterId::kIndexedSetterCallback); IndexedPropertySetterCallback f = ToCData(interceptor->setter()); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-set", holder(), index)); f(index, v8::Utils::ToLocal(value), callback_info); @@ -174,7 +211,9 @@ Handle PropertyCallbackArguments::CallIndexedDefiner( RuntimeCallCounterId::kIndexedDefinerCallback); IndexedPropertyDefinerCallback f = ToCData(interceptor->definer()); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, + side_effect_check_not_supported); LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-define", holder(), index)); f(index, desc, callback_info); @@ -191,7 +230,7 @@ Handle PropertyCallbackArguments::CallIndexedGetter( ApiIndexedPropertyAccess("interceptor-indexed-getter", holder(), index)); IndexedPropertyGetterCallback f = ToCData(interceptor->getter()); - return BasicCallIndexedGetterCallback(f, index); + return BasicCallIndexedGetterCallback(f, index, interceptor); } Handle PropertyCallbackArguments::CallIndexedDescriptor( @@ -204,13 +243,13 @@ Handle PropertyCallbackArguments::CallIndexedDescriptor( holder(), index)); IndexedPropertyDescriptorCallback f = ToCData(interceptor->descriptor()); - return BasicCallIndexedGetterCallback(f, index); + return BasicCallIndexedGetterCallback(f, index, interceptor); } Handle PropertyCallbackArguments::BasicCallIndexedGetterCallback( - IndexedPropertyGetterCallback f, uint32_t index) { + IndexedPropertyGetterCallback f, uint32_t index, Handle info) { Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value); + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Value, info); f(index, callback_info); return GetReturnValue(isolate); } @@ -222,7 +261,7 @@ Handle PropertyCallbackArguments::CallPropertyEnumerator( v8::ToCData(interceptor->enumerator()); // TODO(cbruni): assert same type for indexed and named callback. Isolate* isolate = this->isolate(); - PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Array); + PREPARE_CALLBACK_INFO(isolate, f, Handle, v8::Array, interceptor); f(callback_info); return GetReturnValue(isolate); } @@ -238,10 +277,10 @@ Handle PropertyCallbackArguments::CallAccessorGetter( LOG(isolate, ApiNamedPropertyAccess("accessor-getter", holder(), *name)); AccessorNameGetterCallback f = ToCData(info->getter()); - return BasicCallNamedGetterCallback(f, name); + return BasicCallNamedGetterCallback(f, name, info); } -void PropertyCallbackArguments::CallAccessorSetter( +Handle PropertyCallbackArguments::CallAccessorSetter( Handle accessor_info, Handle name, Handle value) { Isolate* isolate = this->isolate(); @@ -249,9 +288,12 @@ void PropertyCallbackArguments::CallAccessorSetter( RuntimeCallCounterId::kAccessorSetterCallback); AccessorNameSetterCallback f = ToCData(accessor_info->setter()); - PREPARE_CALLBACK_INFO(isolate, f, void, void); + Handle side_effect_check_not_supported; + PREPARE_CALLBACK_INFO(isolate, f, Handle, void, + side_effect_check_not_supported); LOG(isolate, ApiNamedPropertyAccess("accessor-setter", holder(), *name)); f(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), callback_info); + return GetReturnValue(isolate); } #undef PREPARE_CALLBACK_INFO diff --git a/deps/v8/src/api-arguments.cc b/deps/v8/src/api-arguments.cc deleted file mode 100644 index 502b8cbdca2dc4..00000000000000 --- a/deps/v8/src/api-arguments.cc +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2016 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "src/api-arguments.h" -#include "src/api-arguments-inl.h" - -#include "src/debug/debug.h" -#include "src/objects-inl.h" -#include "src/tracing/trace-event.h" -#include "src/vm-state-inl.h" - -namespace v8 { -namespace internal { - -Handle FunctionCallbackArguments::Call(CallHandlerInfo* handler) { - Isolate* isolate = this->isolate(); - LOG(isolate, ApiObjectAccess("call", holder())); - RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback); - v8::FunctionCallback f = - v8::ToCData(handler->callback()); - if (isolate->needs_side_effect_check() && - !isolate->debug()->PerformSideEffectCheckForCallback(FUNCTION_ADDR(f))) { - return Handle(); - } - VMState state(isolate); - ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); - FunctionCallbackInfo info(begin(), argv_, argc_); - f(info); - return GetReturnValue(isolate); -} - -Handle PropertyCallbackArguments::CallNamedEnumerator( - Handle interceptor) { - DCHECK(interceptor->is_named()); - LOG(isolate(), ApiObjectAccess("interceptor-named-enumerator", holder())); - RuntimeCallTimerScope timer(isolate(), - RuntimeCallCounterId::kNamedEnumeratorCallback); - return CallPropertyEnumerator(interceptor); -} - -Handle PropertyCallbackArguments::CallIndexedEnumerator( - Handle interceptor) { - DCHECK(!interceptor->is_named()); - LOG(isolate(), ApiObjectAccess("interceptor-indexed-enumerator", holder())); - RuntimeCallTimerScope timer(isolate(), - RuntimeCallCounterId::kIndexedEnumeratorCallback); - return CallPropertyEnumerator(interceptor); -} - -bool PropertyCallbackArguments::PerformSideEffectCheck(Isolate* isolate, - Address function) { - return isolate->debug()->PerformSideEffectCheckForCallback(function); -} - -} // namespace internal -} // namespace v8 diff --git a/deps/v8/src/api-arguments.h b/deps/v8/src/api-arguments.h index 413a72a3ae4b03..0abbcdcafa091d 100644 --- a/deps/v8/src/api-arguments.h +++ b/deps/v8/src/api-arguments.h @@ -6,6 +6,7 @@ #define V8_API_ARGUMENTS_H_ #include "src/api.h" +#include "src/debug/debug.h" #include "src/isolate.h" #include "src/visitors.h" @@ -15,34 +16,30 @@ namespace internal { // Custom arguments replicate a small segment of stack that can be // accessed through an Arguments object the same way the actual stack // can. -template class CustomArgumentsBase : public Relocatable { - public: - virtual inline void IterateInstance(RootVisitor* v) { - v->VisitRootPointers(Root::kRelocatable, nullptr, values_, - values_ + kArrayLength); - } - protected: - inline Object** begin() { return values_; } explicit inline CustomArgumentsBase(Isolate* isolate) : Relocatable(isolate) {} - Object* values_[kArrayLength]; }; template -class CustomArguments : public CustomArgumentsBase { +class CustomArguments : public CustomArgumentsBase { public: static const int kReturnValueOffset = T::kReturnValueIndex; - typedef CustomArgumentsBase Super; ~CustomArguments() { this->begin()[kReturnValueOffset] = reinterpret_cast(kHandleZapValue); } + virtual inline void IterateInstance(RootVisitor* v) { + v->VisitRootPointers(Root::kRelocatable, nullptr, values_, + values_ + T::kArgsLength); + } + protected: - explicit inline CustomArguments(Isolate* isolate) : Super(isolate) {} + explicit inline CustomArguments(Isolate* isolate) + : CustomArgumentsBase(isolate) {} template Handle GetReturnValue(Isolate* isolate); @@ -50,6 +47,9 @@ class CustomArguments : public CustomArgumentsBase { inline Isolate* isolate() { return reinterpret_cast(this->begin()[T::kIsolateIndex]); } + + inline Object** begin() { return values_; } + Object* values_[T::kArgsLength]; }; template @@ -103,8 +103,9 @@ class PropertyCallbackArguments // ------------------------------------------------------------------------- // Accessor Callbacks // Also used for AccessorSetterCallback. - inline void CallAccessorSetter(Handle info, Handle name, - Handle value); + inline Handle CallAccessorSetter(Handle info, + Handle name, + Handle value); // Also used for AccessorGetterCallback, AccessorNameGetterCallback. inline Handle CallAccessorGetter(Handle info, Handle name); @@ -118,9 +119,6 @@ class PropertyCallbackArguments inline Handle CallNamedSetter(Handle interceptor, Handle name, Handle value); - inline Handle CallNamedSetterCallback( - GenericNamedPropertySetterCallback callback, Handle name, - Handle value); inline Handle CallNamedDefiner(Handle interceptor, Handle name, const v8::PropertyDescriptor& desc); @@ -128,7 +126,8 @@ class PropertyCallbackArguments Handle name); inline Handle CallNamedDescriptor(Handle interceptor, Handle name); - Handle CallNamedEnumerator(Handle interceptor); + inline Handle CallNamedEnumerator( + Handle interceptor); // ------------------------------------------------------------------------- // Indexed Interceptor Callbacks @@ -145,7 +144,8 @@ class PropertyCallbackArguments uint32_t index); inline Handle CallIndexedDescriptor( Handle interceptor, uint32_t index); - Handle CallIndexedEnumerator(Handle interceptor); + inline Handle CallIndexedEnumerator( + Handle interceptor); private: /* @@ -160,16 +160,15 @@ class PropertyCallbackArguments Handle interceptor); inline Handle BasicCallIndexedGetterCallback( - IndexedPropertyGetterCallback f, uint32_t index); + IndexedPropertyGetterCallback f, uint32_t index, Handle info); inline Handle BasicCallNamedGetterCallback( - GenericNamedPropertyGetterCallback f, Handle name); + GenericNamedPropertyGetterCallback f, Handle name, + Handle info); inline JSObject* holder() { return JSObject::cast(this->begin()[T::kHolderIndex]); } - bool PerformSideEffectCheck(Isolate* isolate, Address function); - // Don't copy PropertyCallbackArguments, because they would both have the // same prev_ pointer. DISALLOW_COPY_AND_ASSIGN(PropertyCallbackArguments); @@ -216,7 +215,7 @@ class FunctionCallbackArguments * and used if it's been set to anything inside the callback. * New style callbacks always use the return value. */ - Handle Call(CallHandlerInfo* handler); + inline Handle Call(CallHandlerInfo* handler); private: inline JSObject* holder() { diff --git a/deps/v8/src/api-natives.cc b/deps/v8/src/api-natives.cc index 488b99fd2532db..981f592f5a08ed 100644 --- a/deps/v8/src/api-natives.cc +++ b/deps/v8/src/api-natives.cc @@ -626,7 +626,7 @@ Handle ApiNatives::CreateApiFunction( FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(isolate, obj, maybe_name); // To simplify things, API functions always have shared name. - DCHECK(shared->has_shared_name()); + DCHECK(shared->HasSharedName()); Handle result = isolate->factory()->NewFunctionFromSharedFunctionInfo( diff --git a/deps/v8/src/api-natives.h b/deps/v8/src/api-natives.h index 398f198ae5bd2a..f73e7cee7ea28f 100644 --- a/deps/v8/src/api-natives.h +++ b/deps/v8/src/api-natives.h @@ -21,15 +21,15 @@ class ApiNatives { public: static const int kInitialFunctionCacheSize = 256; - MUST_USE_RESULT static MaybeHandle InstantiateFunction( + V8_WARN_UNUSED_RESULT static MaybeHandle InstantiateFunction( Handle data, MaybeHandle maybe_name = MaybeHandle()); - MUST_USE_RESULT static MaybeHandle InstantiateObject( + V8_WARN_UNUSED_RESULT static MaybeHandle InstantiateObject( Handle data, Handle new_target = Handle()); - MUST_USE_RESULT static MaybeHandle InstantiateRemoteObject( + V8_WARN_UNUSED_RESULT static MaybeHandle InstantiateRemoteObject( Handle data); enum ApiInstanceType { @@ -41,7 +41,7 @@ class ApiNatives { static Handle CreateApiFunction( Isolate* isolate, Handle obj, Handle prototype, ApiInstanceType instance_type, - MaybeHandle maybe_name = MaybeHandle()); + MaybeHandle name = MaybeHandle()); static void AddDataProperty(Isolate* isolate, Handle info, Handle name, Handle value, diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index f5be62058a0f94..25506d3930868d 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -69,6 +69,7 @@ #include "src/snapshot/natives.h" #include "src/snapshot/snapshot.h" #include "src/startup-data-util.h" +#include "src/string-hasher.h" #include "src/tracing/trace-event.h" #include "src/trap-handler/trap-handler.h" #include "src/unicode-cache-inl.h" @@ -307,19 +308,22 @@ static ScriptOrigin GetScriptOriginForScript(i::Isolate* isolate, // --- E x c e p t i o n B e h a v i o r --- - -void i::FatalProcessOutOfMemory(const char* location) { - i::V8::FatalProcessOutOfMemory(location, false); +void i::FatalProcessOutOfMemory(i::Isolate* isolate, const char* location) { + i::V8::FatalProcessOutOfMemory(isolate, location, false); } // When V8 cannot allocate memory FatalProcessOutOfMemory is called. The default // OOM error handler is called and execution is stopped. -void i::V8::FatalProcessOutOfMemory(const char* location, bool is_heap_oom) { - i::Isolate* isolate = i::Isolate::Current(); +void i::V8::FatalProcessOutOfMemory(i::Isolate* isolate, const char* location, + bool is_heap_oom) { char last_few_messages[Heap::kTraceRingBufferSize + 1]; char js_stacktrace[Heap::kStacktraceBufferSize + 1]; i::HeapStats heap_stats; + if (isolate == nullptr) { + isolate = Isolate::Current(); + } + if (isolate == nullptr) { // On a background thread -> we cannot retrieve memory information from the // Isolate. Write easy-to-recognize values on the stack. @@ -329,7 +333,7 @@ void i::V8::FatalProcessOutOfMemory(const char* location, bool is_heap_oom) { // Note that the embedder's oom handler won't be called in this case. We // just crash. FATAL("API fatal error handler returned after process out of memory"); - return; + UNREACHABLE(); } memset(last_few_messages, 0, Heap::kTraceRingBufferSize + 1); @@ -393,7 +397,7 @@ void i::V8::FatalProcessOutOfMemory(const char* location, bool is_heap_oom) { PrintF("\n<--- Last few GCs --->\n%s\n", first_newline); PrintF("\n<--- JS stacktrace --->\n%s\n", js_stacktrace); } - Utils::ReportOOMFailure(location, is_heap_oom); + Utils::ReportOOMFailure(isolate, location, is_heap_oom); // If the fatal error handler returns, we stop execution. FATAL("API fatal error handler returned after process out of memory"); } @@ -415,8 +419,8 @@ void Utils::ReportApiFailure(const char* location, const char* message) { isolate->SignalFatalError(); } -void Utils::ReportOOMFailure(const char* location, bool is_heap_oom) { - i::Isolate* isolate = i::Isolate::Current(); +void Utils::ReportOOMFailure(i::Isolate* isolate, const char* location, + bool is_heap_oom) { OOMErrorCallback oom_callback = isolate->oom_behavior(); if (oom_callback == nullptr) { // TODO(wfh): Remove this fallback once Blink is setting OOM handler. See @@ -704,7 +708,7 @@ StartupData SnapshotCreator::CreateBlob( // context even after we have disposed of the context. isolate->heap()->CollectAllAvailableGarbage( i::GarbageCollectionReason::kSnapshotCreator); - isolate->heap()->CompactWeakFixedArrays(); + isolate->heap()->CompactFixedArraysOfWeakCells(); i::DisallowHeapAllocation no_gc_from_here_on; @@ -728,15 +732,33 @@ StartupData SnapshotCreator::CreateBlob( i::SerializedHandleChecker handle_checker(isolate, &contexts); CHECK(handle_checker.CheckGlobalAndEternalHandles()); - // Complete in-object slack tracking for all functions. i::HeapIterator heap_iterator(isolate->heap()); while (i::HeapObject* current_obj = heap_iterator.next()) { - if (!current_obj->IsJSFunction()) continue; - i::JSFunction* fun = i::JSFunction::cast(current_obj); - fun->CompleteInobjectSlackTrackingIfActive(); + if (current_obj->IsJSFunction()) { + i::JSFunction* fun = i::JSFunction::cast(current_obj); + + // Complete in-object slack tracking for all functions. + fun->CompleteInobjectSlackTrackingIfActive(); + + // Also, clear out feedback vectors. + fun->feedback_cell()->set_value(isolate->heap()->undefined_value()); + } + + // Clear out re-compilable data from all shared function infos. Any + // JSFunctions using these SFIs will have their code pointers reset by the + // partial serializer. + if (current_obj->IsSharedFunctionInfo() && + function_code_handling == FunctionCodeHandling::kClear) { + i::SharedFunctionInfo* shared = i::SharedFunctionInfo::cast(current_obj); + if (shared->CanFlushCompiled()) { + shared->FlushCompiled(); + } + DCHECK(shared->HasCodeObject() || shared->HasBuiltinId() || + shared->IsApiFunction()); + } } - i::StartupSerializer startup_serializer(isolate, function_code_handling); + i::StartupSerializer startup_serializer(isolate); startup_serializer.SerializeStrongReferences(); // Serialize each context with a new partial serializer. @@ -1221,13 +1243,18 @@ static i::Handle EmbedderDataFor(Context* context, if (!Utils::ApiCheck(can_grow, location, "Index too large")) { return i::Handle(); } - int new_size = i::Max(index, data->length() << 1) + 1; + int new_size = index + 1; int grow_by = new_size - data->length(); data = isolate->factory()->CopyFixedArrayAndGrow(data, grow_by); env->set_embedder_data(*data); return data; } +uint32_t Context::GetNumberOfEmbedderDataFields() { + i::Handle context = Utils::OpenHandle(this); + CHECK(context->IsNativeContext()); + return static_cast(context->embedder_data()->length()); +} v8::Local Context::SlowGetEmbedderData(int index) { const char* location = "v8::Context::GetEmbedderData()"; @@ -1375,7 +1402,8 @@ void FunctionTemplate::Inherit(v8::Local value) { static Local FunctionTemplateNew( i::Isolate* isolate, FunctionCallback callback, v8::Local data, v8::Local signature, int length, bool do_not_cache, - v8::Local cached_property_name = v8::Local()) { + v8::Local cached_property_name = v8::Local(), + SideEffectType side_effect_type = SideEffectType::kHasSideEffect) { i::Handle struct_obj = isolate->factory()->NewStruct(i::FUNCTION_TEMPLATE_INFO_TYPE, i::TENURED); i::Handle obj = @@ -1388,7 +1416,7 @@ static Local FunctionTemplateNew( } obj->set_serial_number(i::Smi::FromInt(next_serial_number)); if (callback != 0) { - Utils::ToLocal(obj)->SetCallHandler(callback, data); + Utils::ToLocal(obj)->SetCallHandler(callback, data, side_effect_type); } obj->set_length(length); obj->set_undetectable(false); @@ -1413,8 +1441,8 @@ Local FunctionTemplate::New( // function templates when the isolate is created for serialization. LOG_API(i_isolate, FunctionTemplate, New); ENTER_V8_NO_SCRIPT_NO_EXCEPTION(i_isolate); - auto templ = - FunctionTemplateNew(i_isolate, callback, data, signature, length, false); + auto templ = FunctionTemplateNew(i_isolate, callback, data, signature, length, + false, Local(), side_effect_type); if (behavior == ConstructorBehavior::kThrow) templ->RemovePrototype(); return templ; } @@ -1442,7 +1470,7 @@ Local FunctionTemplate::NewWithCache( LOG_API(i_isolate, FunctionTemplate, NewWithCache); ENTER_V8_NO_SCRIPT_NO_EXCEPTION(i_isolate); return FunctionTemplateNew(i_isolate, callback, data, signature, length, - false, cache_property); + false, cache_property, side_effect_type); } Local Signature::New(Isolate* isolate, @@ -1470,10 +1498,8 @@ void FunctionTemplate::SetCallHandler(FunctionCallback callback, i::Isolate* isolate = info->GetIsolate(); ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate); i::HandleScope scope(isolate); - i::Handle struct_obj = - isolate->factory()->NewStruct(i::TUPLE3_TYPE, i::TENURED); - i::Handle obj = - i::Handle::cast(struct_obj); + i::Handle obj = isolate->factory()->NewCallHandlerInfo( + side_effect_type == SideEffectType::kHasNoSideEffect); SET_FIELD_WRAPPED(obj, set_callback, callback); SET_FIELD_WRAPPED(obj, set_js_callback, obj->redirected_callback()); if (data.IsEmpty()) { @@ -1781,6 +1807,9 @@ static i::Handle CreateInterceptorInfo( static_cast(PropertyHandlerFlags::kAllCanRead)); obj->set_non_masking(static_cast(flags) & static_cast(PropertyHandlerFlags::kNonMasking)); + obj->set_has_no_side_effect( + static_cast(flags) & + static_cast(PropertyHandlerFlags::kHasNoSideEffect)); if (data.IsEmpty()) { data = v8::Undefined(reinterpret_cast(isolate)); @@ -1940,7 +1969,6 @@ void ObjectTemplate::SetHandler( cons->set_indexed_property_handler(*obj); } - void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback, Local data) { i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); @@ -1948,10 +1976,7 @@ void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback, i::HandleScope scope(isolate); auto cons = EnsureConstructor(isolate, this); EnsureNotInstantiated(cons, "v8::ObjectTemplate::SetCallAsFunctionHandler"); - i::Handle struct_obj = - isolate->factory()->NewStruct(i::TUPLE3_TYPE, i::TENURED); - i::Handle obj = - i::Handle::cast(struct_obj); + i::Handle obj = isolate->factory()->NewCallHandlerInfo(); SET_FIELD_WRAPPED(obj, set_callback, callback); SET_FIELD_WRAPPED(obj, set_js_callback, obj->redirected_callback()); if (data.IsEmpty()) { @@ -2374,22 +2399,14 @@ MaybeLocal ScriptCompiler::CompileUnboundInternal( source->host_defined_options); i::MaybeHandle maybe_function_info = i::Compiler::GetSharedFunctionInfoForScript( - str, script_details, source->resource_options, nullptr, &script_data, + str, script_details, source->resource_options, nullptr, script_data, options, no_cache_reason, i::NOT_NATIVES_CODE); - has_pending_exception = !maybe_function_info.ToHandle(&result); - if (has_pending_exception && script_data != nullptr) { - // This case won't happen during normal operation; we have compiled - // successfully and produced cached data, and but the second compilation - // of the same source code fails. - delete script_data; - script_data = nullptr; - } - RETURN_ON_FAILED_EXECUTION(UnboundScript); - if (options == kConsumeCodeCache) { source->cached_data->rejected = script_data->rejected(); } delete script_data; + has_pending_exception = !maybe_function_info.ToHandle(&result); + RETURN_ON_FAILED_EXECUTION(UnboundScript); RETURN_ESCAPED(ToApiHandle(result)); } @@ -2483,6 +2500,10 @@ MaybeLocal ScriptCompiler::CompileFunctionInContext( Function); TRACE_EVENT_CALL_STATS_SCOPED(isolate, "v8", "V8.ScriptCompiler"); + DCHECK(options == CompileOptions::kConsumeCodeCache || + options == CompileOptions::kEagerCompile || + options == CompileOptions::kNoCompileOptions); + i::Handle context = Utils::OpenHandle(*v8_context); i::Handle outer_info(context->closure()->shared(), isolate); @@ -2511,25 +2532,30 @@ MaybeLocal ScriptCompiler::CompileFunctionInContext( extension); } - i::Handle name_obj; - int line_offset = 0; - int column_offset = 0; - if (!source->resource_name.IsEmpty()) { - name_obj = Utils::OpenHandle(*(source->resource_name)); - } - if (!source->resource_line_offset.IsEmpty()) { - line_offset = static_cast(source->resource_line_offset->Value()); - } - if (!source->resource_column_offset.IsEmpty()) { - column_offset = static_cast(source->resource_column_offset->Value()); + i::Compiler::ScriptDetails script_details = GetScriptDetails( + isolate, source->resource_name, source->resource_line_offset, + source->resource_column_offset, source->source_map_url, + source->host_defined_options); + + i::ScriptData* script_data = nullptr; + if (options == kConsumeCodeCache) { + DCHECK(source->cached_data); + // ScriptData takes care of pointer-aligning the data. + script_data = new i::ScriptData(source->cached_data->data, + source->cached_data->length); } i::Handle result; has_pending_exception = !i::Compiler::GetWrappedFunction( Utils::OpenHandle(*source->source_string), arguments_list, context, - line_offset, column_offset, name_obj, source->resource_options) + script_details, source->resource_options, script_data, options, + no_cache_reason) .ToHandle(&result); + if (options == kConsumeCodeCache) { + source->cached_data->rejected = script_data->rejected(); + } + delete script_data; RETURN_ON_FAILED_EXECUTION(Function); RETURN_ESCAPED(Utils::CallableToLocal(result)); } @@ -2603,37 +2629,18 @@ ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCache( i::Handle shared = i::Handle::cast( Utils::OpenHandle(*unbound_script)); - i::Isolate* isolate = shared->GetIsolate(); - TRACE_EVENT_CALL_STATS_SCOPED(isolate, "v8", "V8.Execute"); - base::ElapsedTimer timer; - if (i::FLAG_profile_deserialization) { - timer.Start(); - } - i::HistogramTimerScope histogram_timer( - isolate->counters()->compile_serialize()); - i::RuntimeCallTimerScope runtimeTimer( - isolate, i::RuntimeCallCounterId::kCompileSerialize); - TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileSerialize"); - + i::Handle source_str = Utils::OpenHandle(*source); DCHECK(shared->is_toplevel()); - i::Handle script(i::Script::cast(shared->script())); - // TODO(7110): Enable serialization of Asm modules once the AsmWasmData is - // context independent. - if (script->ContainsAsmModule()) return nullptr; - if (isolate->debug()->is_loaded()) return nullptr; - - i::ScriptData* script_data = - i::CodeSerializer::Serialize(isolate, shared, Utils::OpenHandle(*source)); - CachedData* result = new CachedData( - script_data->data(), script_data->length(), CachedData::BufferOwned); - script_data->ReleaseDataOwnership(); - delete script_data; + return i::CodeSerializer::Serialize(shared, source_str); +} - if (i::FLAG_profile_deserialization) { - i::PrintF("[Serializing took %0.3f ms]\n", - timer.Elapsed().InMillisecondsF()); - } - return result; +ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCacheForFunction( + Local function, Local source) { + i::Handle shared( + i::Handle::cast(Utils::OpenHandle(*function))->shared()); + i::Handle source_str = Utils::OpenHandle(*source); + CHECK(shared->is_wrapped()); + return i::CodeSerializer::Serialize(shared, source_str); } MaybeLocal + + @@ -68,13 +70,13 @@ +

V8 Heap Statistics

-

V8 Heap Statistics

Visualize object statistics that have been gathered using

  • --trace-gc-object-stats on V8
  • @@ -85,6 +87,10 @@

    V8 Heap Statistics

    v8.gc_stats.
+

+ Note that you only get a data point on major GCs. You can enforce this by + using the --gc-global flag. +

Note that the visualizer needs to run on a web server due to HTML imports requiring this.finalizeGC(gc)); + this.sortInstanceTypePeakMemory(); } getLabel() { let label = `${this.address}: gc=#${Object.keys(this.gcs).length}`; - const peakSizeMB = Math.round(this.peakMemory / 1024 / 1024 * 100) / 100; - label += ` max=${peakSizeMB}MB` + label += ` peak=${formatBytes(this.peakMemory)}` return label; } finalizeGC(gc_data) { this.data_sets.forEach(key => this.finalizeDataSet(gc_data[key])); - if ('live' in gc_data) { - this.peakMemory = Math.max(this.peakMemory, gc_data['live'].overall); + if (!('live' in gc_data)) return; + let liveData = gc_data.live; + this.peakMemory = Math.max(this.peakMemory, liveData.overall); + let data = liveData.instance_type_data; + for (let name in data) { + let prev = this.instanceTypePeakMemory[name] || 0; + this.instanceTypePeakMemory[name] = Math.max(prev, data[name].overall); } } finalizeDataSet(data_set) { // Create a ranked instance type array that sorts instance types by // memory size (overall). - data_set.ranked_instance_types = - [...data_set.non_empty_instance_types].sort(function(a, b) { - if (data_set.instance_type_data[a].overall > - data_set.instance_type_data[b].overall) { - return 1; - } else if ( - data_set.instance_type_data[a].overall < - data_set.instance_type_data[b].overall) { - return -1; - } - return 0; + let data = data_set.instance_type_data; + let ranked_instance_types = + [...data_set.non_empty_instance_types].sort((a, b) => { + return data[a].overall - data[b].overall; }); + // Reassemble the instance_type list sorted by size. + let sorted_data = Object.create(null); + let max = 0; + ranked_instance_types.forEach((name) => { + let entry = sorted_data[name] = data[name]; + max = Math.max(max, entry.overall); + }); + data_set.instance_type_data = data; + data_set.singleInstancePeakMemory = max; Object.entries(data_set.instance_type_data).forEach(([name, entry]) => { this.checkHistogram( @@ -74,4 +85,21 @@ class Isolate { `${type}: sum('${histogram}') > overall (${sum} > ${overall})`); } } + + sortInstanceTypePeakMemory() { + let entries = Object.entries(this.instanceTypePeakMemory); + entries.sort((a, b) => {return b[1] - a[1]}); + this.instanceTypePeakMemory = Object.create(null); + let max = 0; + for (let [key, value] of entries) { + this.instanceTypePeakMemory[key] = value; + max = Math.max(max, value); + } + this.singleInstanceTypePeakMemory = max; + } + + getInstanceTypePeakMemory(type) { + if (!(type in this.instanceTypePeakMemory)) return 0; + return this.instanceTypePeakMemory[type]; + } } diff --git a/deps/v8/tools/heap-stats/trace-file-reader.html b/deps/v8/tools/heap-stats/trace-file-reader.html index 73de98ab03f70e..649d32bb40655c 100644 --- a/deps/v8/tools/heap-stats/trace-file-reader.html +++ b/deps/v8/tools/heap-stats/trace-file-reader.html @@ -11,6 +11,16 @@ border: solid 1px #000000; border-radius: 5px; cursor: pointer; + transition: all 0.5s ease-in-out; +} + +#fileReader.done { + height: 20px; + line-height: 20px; +} + +#fileReader:hover { + background-color: #e0edfe ; } .loading #fileReader { @@ -21,11 +31,12 @@ display: none; } + #loader { display: none; } -.loading #loader{ +.loading #loader { display: block; position: fixed; top: 0px; @@ -51,7 +62,7 @@ @keyframes spin { 0% { transform: rotate(0deg); - }; + }; 100% { transform: rotate(360deg); }; @@ -59,7 +70,7 @@

-
+
Drag and drop a trace file into this area, or click to choose from disk. diff --git a/deps/v8/tools/heap-stats/trace-file-reader.js b/deps/v8/tools/heap-stats/trace-file-reader.js index ef563a43cb35ed..4ad1269835b095 100644 --- a/deps/v8/tools/heap-stats/trace-file-reader.js +++ b/deps/v8/tools/heap-stats/trace-file-reader.js @@ -17,6 +17,7 @@ class TraceFileReader extends HTMLElement { this.addEventListener('dragover', e => this.handleDragOver(e)); this.addEventListener('drop', e => this.handleChange(e)); this.$('#file').addEventListener('change', e => this.handleChange(e)); + this.$('#fileReader').addEventListener('keydown', e => this.handleKeyEvent(e)); } $(id) { @@ -31,6 +32,10 @@ class TraceFileReader extends HTMLElement { this.$('#label').innerText = text; } + handleKeyEvent(event) { + if (event.key == "Enter") this.handleClick(event); + } + handleClick(event) { this.$('#file').click(); } @@ -46,13 +51,16 @@ class TraceFileReader extends HTMLElement { event.preventDefault(); } - connectedCallback() {} + connectedCallback() { + this.$('#fileReader').focus(); + } readFile(file) { if (!file) { this.updateLabel('Failed to load file.'); return; } + this.$('#fileReader').blur(); this.section.className = 'loading'; const reader = new FileReader(); @@ -63,15 +71,17 @@ class TraceFileReader extends HTMLElement { const textResult = pako.inflate(e.target.result, {to: 'string'}); this.processRawText(file, textResult); this.section.className = 'success'; + this.$('#fileReader').classList.add('done'); } catch (err) { console.error(err); this.section.className = 'failure'; } }; - reader.readAsArrayBuffer(file); + // Delay the loading a bit to allow for CSS animations to happen. + setTimeout(() => reader.readAsArrayBuffer(file), 10); } else { reader.onload = (e) => this.processRawText(file, e.target.result); - reader.readAsText(file); + setTimeout(() => reader.readAsText(file), 10); } } @@ -96,10 +106,12 @@ class TraceFileReader extends HTMLElement { data_object.gcs[entry.id] = {non_empty_instance_types: new Set()}; } if ('time' in entry) { - if (data_object.end === null || data_object.end < entry.time) + if (data_object.end === null || data_object.end < entry.time) { data_object.end = entry.time; - if (data_object.start === null || data_object.start > entry.time) + } + if (data_object.start === null || data_object.start > entry.time) { data_object.start = entry.time; + } } } diff --git a/deps/v8/tools/ic-processor.js b/deps/v8/tools/ic-processor.js index 93f40b38a08634..9a78d16943f019 100644 --- a/deps/v8/tools/ic-processor.js +++ b/deps/v8/tools/ic-processor.js @@ -56,6 +56,9 @@ function IcProcessor() { 'KeyedStoreIC': { parsers : propertyICParser, processor: this.processPropertyIC.bind(this, "KeyedStoreIC") }, + 'StoreInArrayLiteralIC': { + parsers : propertyICParser, + processor: this.processPropertyIC.bind(this, "StoreInArrayLiteralIC") }, }); this.deserializedEntriesNames_ = []; this.profile_ = new Profile(); @@ -64,6 +67,7 @@ function IcProcessor() { this.StoreIC = 0; this.KeyedLoadIC = 0; this.KeyedStoreIC = 0; + this.StoreInArrayLiteralIC = 0; } inherits(IcProcessor, LogReader); @@ -104,6 +108,7 @@ IcProcessor.prototype.processLogFile = function(fileName) { print("Store: " + this.StoreIC); print("KeyedLoad: " + this.KeyedLoadIC); print("KeyedStore: " + this.KeyedStoreIC); + print("StoreInArrayLiteral: " + this.StoreInArrayLiteralIC); }; IcProcessor.prototype.addEntry = function(entry) { diff --git a/deps/v8/tools/isolate_driver.py b/deps/v8/tools/isolate_driver.py deleted file mode 100644 index 32077e236f5be1..00000000000000 --- a/deps/v8/tools/isolate_driver.py +++ /dev/null @@ -1,340 +0,0 @@ -#!/usr/bin/env python -# Copyright 2015 the V8 project authors. All rights reserved. -# Copyright 2014 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Adaptor script called through gni/isolate.gni. - -Creates a wrapping .isolate which 'includes' the original one, that can be -consumed by tools/swarming_client/isolate.py. Path variables are determined -based on the current working directory. The relative_cwd in the .isolated file -is determined based on the .isolate file that declare the 'command' variable to -be used so the wrapping .isolate doesn't affect this value. - -This script loads build.ninja and processes it to determine all the executables -referenced by the isolated target. It adds them in the wrapping .isolate file. - -WARNING: The target to use for build.ninja analysis is the base name of the -.isolate file plus '_run'. For example, 'foo_test.isolate' would have the target -'foo_test_run' analysed. -""" - -import errno -import glob -import json -import logging -import os -import posixpath -import StringIO -import subprocess -import sys -import time - -TOOLS_DIR = os.path.dirname(os.path.abspath(__file__)) -SWARMING_CLIENT_DIR = os.path.join(TOOLS_DIR, 'swarming_client') -SRC_DIR = os.path.dirname(TOOLS_DIR) - -sys.path.insert(0, SWARMING_CLIENT_DIR) - -import isolate_format - - -def load_ninja_recursively(build_dir, ninja_path, build_steps): - """Crudely extracts all the subninja and build referenced in ninja_path. - - In particular, it ignores rule and variable declarations. The goal is to be - performant (well, as much as python can be performant) which is currently in - the <200ms range for a complete chromium tree. As such the code is laid out - for performance instead of readability. - """ - logging.debug('Loading %s', ninja_path) - try: - with open(os.path.join(build_dir, ninja_path), 'rb') as f: - line = None - merge_line = '' - subninja = [] - for line in f: - line = line.rstrip() - if not line: - continue - - if line[-1] == '$': - # The next line needs to be merged in. - merge_line += line[:-1] - continue - - if merge_line: - line = merge_line + line - merge_line = '' - - statement = line[:line.find(' ')] - if statement == 'build': - # Save the dependency list as a raw string. Only the lines needed will - # be processed with raw_build_to_deps(). This saves a good 70ms of - # processing time. - build_target, dependencies = line[6:].split(': ', 1) - # Interestingly, trying to be smart and only saving the build steps - # with the intended extensions ('', '.stamp', '.so') slows down - # parsing even if 90% of the build rules can be skipped. - # On Windows, a single step may generate two target, so split items - # accordingly. It has only been seen for .exe/.exe.pdb combos. - for i in build_target.strip().split(): - build_steps[i] = dependencies - elif statement == 'subninja': - subninja.append(line[9:]) - except IOError: - print >> sys.stderr, 'Failed to open %s' % ninja_path - raise - - total = 1 - for rel_path in subninja: - try: - # Load each of the files referenced. - # TODO(maruel): Skip the files known to not be needed. It saves an aweful - # lot of processing time. - total += load_ninja_recursively(build_dir, rel_path, build_steps) - except IOError: - print >> sys.stderr, '... as referenced by %s' % ninja_path - raise - return total - - -def load_ninja(build_dir): - """Loads the tree of .ninja files in build_dir.""" - build_steps = {} - total = load_ninja_recursively(build_dir, 'build.ninja', build_steps) - logging.info('Loaded %d ninja files, %d build steps', total, len(build_steps)) - return build_steps - - -def using_blacklist(item): - """Returns True if an item should be analyzed. - - Ignores many rules that are assumed to not depend on a dynamic library. If - the assumption doesn't hold true anymore for a file format, remove it from - this list. This is simply an optimization. - """ - # *.json is ignored below, *.isolated.gen.json is an exception, it is produced - # by isolate_driver.py in 'test_isolation_mode==prepare'. - if item.endswith('.isolated.gen.json'): - return True - IGNORED = ( - '.a', '.cc', '.css', '.dat', '.def', '.frag', '.h', '.html', '.isolate', - '.js', '.json', '.manifest', '.o', '.obj', '.pak', '.png', '.pdb', '.py', - '.strings', '.test', '.txt', '.vert', - ) - # ninja files use native path format. - ext = os.path.splitext(item)[1] - if ext in IGNORED: - return False - # Special case Windows, keep .dll.lib but discard .lib. - if item.endswith('.dll.lib'): - return True - if ext == '.lib': - return False - return item not in ('', '|', '||') - - -def raw_build_to_deps(item): - """Converts a raw ninja build statement into the list of interesting - dependencies. - """ - # TODO(maruel): Use a whitelist instead? .stamp, .so.TOC, .dylib.TOC, - # .dll.lib, .exe and empty. - # The first item is the build rule, e.g. 'link', 'cxx', 'phony', etc. - return filter(using_blacklist, item.split(' ')[1:]) - - -def collect_deps(target, build_steps, dependencies_added, rules_seen): - """Recursively adds all the interesting dependencies for |target| - into |dependencies_added|. - """ - if rules_seen is None: - rules_seen = set() - if target in rules_seen: - # TODO(maruel): Figure out how it happens. - logging.warning('Circular dependency for %s!', target) - return - rules_seen.add(target) - try: - dependencies = raw_build_to_deps(build_steps[target]) - except KeyError: - logging.info('Failed to find a build step to generate: %s', target) - return - logging.debug('collect_deps(%s) -> %s', target, dependencies) - for dependency in dependencies: - dependencies_added.add(dependency) - collect_deps(dependency, build_steps, dependencies_added, rules_seen) - - -def post_process_deps(build_dir, dependencies): - """Processes the dependency list with OS specific rules.""" - def filter_item(i): - if i.endswith('.so.TOC'): - # Remove only the suffix .TOC, not the .so! - return i[:-4] - if i.endswith('.dylib.TOC'): - # Remove only the suffix .TOC, not the .dylib! - return i[:-4] - if i.endswith('.dll.lib'): - # Remove only the suffix .lib, not the .dll! - return i[:-4] - return i - - def is_exe(i): - # This script is only for adding new binaries that are created as part of - # the component build. - ext = os.path.splitext(i)[1] - # On POSIX, executables have no extension. - if ext not in ('', '.dll', '.dylib', '.exe', '.nexe', '.so'): - return False - if os.path.isabs(i): - # In some rare case, there's dependency set explicitly on files outside - # the checkout. - return False - - # Check for execute access and strip directories. This gets rid of all the - # phony rules. - p = os.path.join(build_dir, i) - return os.access(p, os.X_OK) and not os.path.isdir(p) - - return filter(is_exe, map(filter_item, dependencies)) - - -def create_wrapper(args, isolate_index, isolated_index): - """Creates a wrapper .isolate that add dynamic libs. - - The original .isolate is not modified. - """ - cwd = os.getcwd() - isolate = args[isolate_index] - # The code assumes the .isolate file is always specified path-less in cwd. Fix - # if this assumption doesn't hold true. - assert os.path.basename(isolate) == isolate, isolate - - # This will look like ../out/Debug. This is based against cwd. Note that this - # must equal the value provided as PRODUCT_DIR. - build_dir = os.path.dirname(args[isolated_index]) - - # This will look like chrome/unit_tests.isolate. It is based against SRC_DIR. - # It's used to calculate temp_isolate. - src_isolate = os.path.relpath(os.path.join(cwd, isolate), SRC_DIR) - - # The wrapping .isolate. This will look like - # ../out/Debug/gen/chrome/unit_tests.isolate. - temp_isolate = os.path.join(build_dir, 'gen', src_isolate) - temp_isolate_dir = os.path.dirname(temp_isolate) - - # Relative path between the new and old .isolate file. - isolate_relpath = os.path.relpath( - '.', temp_isolate_dir).replace(os.path.sep, '/') - - # It's a big assumption here that the name of the isolate file matches the - # primary target '_run'. Fix accordingly if this doesn't hold true, e.g. - # complain to maruel@. - target = isolate[:-len('.isolate')] + '_run' - build_steps = load_ninja(build_dir) - binary_deps = set() - collect_deps(target, build_steps, binary_deps, None) - binary_deps = post_process_deps(build_dir, binary_deps) - logging.debug( - 'Binary dependencies:%s', ''.join('\n ' + i for i in binary_deps)) - - # Now do actual wrapping .isolate. - isolate_dict = { - 'includes': [ - posixpath.join(isolate_relpath, isolate), - ], - 'variables': { - # Will look like ['<(PRODUCT_DIR)/lib/flibuser_prefs.so']. - 'files': sorted( - '<(PRODUCT_DIR)/%s' % i.replace(os.path.sep, '/') - for i in binary_deps), - }, - } - # Some .isolate files have the same temp directory and the build system may - # run this script in parallel so make directories safely here. - try: - os.makedirs(temp_isolate_dir) - except OSError as e: - if e.errno != errno.EEXIST: - raise - comment = ( - '# Warning: this file was AUTOGENERATED.\n' - '# DO NO EDIT.\n') - out = StringIO.StringIO() - isolate_format.print_all(comment, isolate_dict, out) - isolate_content = out.getvalue() - with open(temp_isolate, 'wb') as f: - f.write(isolate_content) - logging.info('Added %d dynamic libs', len(binary_deps)) - logging.debug('%s', isolate_content) - args[isolate_index] = temp_isolate - - -def prepare_isolate_call(args, output): - """Gathers all information required to run isolate.py later. - - Dumps it as JSON to |output| file. - """ - with open(output, 'wb') as f: - json.dump({ - 'args': args, - 'dir': os.getcwd(), - 'version': 1, - }, f, indent=2, sort_keys=True) - - -def rebase_directories(args, abs_base): - """Rebases all paths to be relative to abs_base.""" - def replace(index): - args[index] = os.path.relpath(os.path.abspath(args[index]), abs_base) - for i, arg in enumerate(args): - if arg in ['--isolate', '--isolated']: - replace(i + 1) - if arg == '--path-variable': - # Path variables have a triple form: --path-variable NAME . - replace(i + 2) - - -def main(): - logging.basicConfig(level=logging.ERROR, format='%(levelname)7s %(message)s') - args = sys.argv[1:] - mode = args[0] if args else None - isolate = None - isolated = None - for i, arg in enumerate(args): - if arg == '--isolate': - isolate = i + 1 - if arg == '--isolated': - isolated = i + 1 - if isolate is None or isolated is None or not mode: - print >> sys.stderr, 'Internal failure' - return 1 - - # Make sure all paths are relative to the isolate file. This is an - # expectation of the go binaries. In gn, this script is not called - # relative to the isolate file, but relative to the product dir. - new_base = os.path.abspath(os.path.dirname(args[isolate])) - rebase_directories(args, new_base) - assert args[isolate] == os.path.basename(args[isolate]) - os.chdir(new_base) - - create_wrapper(args, isolate, isolated) - - # In 'prepare' mode just collect all required information for postponed - # isolated.py invocation later, store it in *.isolated.gen.json file. - if mode == 'prepare': - prepare_isolate_call(args[1:], args[isolated] + '.gen.json') - return 0 - - swarming_client = os.path.join(SRC_DIR, 'tools', 'swarming_client') - sys.stdout.flush() - result = subprocess.call( - [sys.executable, os.path.join(swarming_client, 'isolate.py')] + args) - return result - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/deps/v8/tools/jsfunfuzz/BUILD.gn b/deps/v8/tools/jsfunfuzz/BUILD.gn new file mode 100644 index 00000000000000..3c40460f8db743 --- /dev/null +++ b/deps/v8/tools/jsfunfuzz/BUILD.gn @@ -0,0 +1,19 @@ +# Copyright 2018 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("../../gni/v8.gni") + +group("v8_jsfunfuzz") { + testonly = true + + data_deps = [ + "../..:d8", + ] + + data = [ + # Grab current directory. This avoids adding logic for checking the + # existence of the jsfunfuzz subdirectory. + "./", + ] +} diff --git a/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate b/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate deleted file mode 100644 index 56cb4a733f3052..00000000000000 --- a/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -{ - 'variables': { - 'command': [ - 'fuzz-harness.sh', - ], - 'files': [ - # Grab current directory. This avoids adding logic for checking the - # existence of the jsfunfuzz subdirectory. - './', - ], - }, - 'includes': [ - '../../src/d8.isolate', - ], -} diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py index b97ce455c2513f..b2ae0c763f6a15 100755 --- a/deps/v8/tools/mb/mb.py +++ b/deps/v8/tools/mb/mb.py @@ -233,10 +233,6 @@ def AddCommonOptions(subp): self.args = parser.parse_args(argv) - # TODO(machenbach): This prepares passing swarming targets to isolate on the - # infra side. - self.args.swarming_targets_file = None - def DumpInputFiles(self): def DumpContentsOfFilePassedTo(arg_name, path): @@ -393,7 +389,7 @@ def _DefaultDimensions(self): elif self.platform.startswith('linux'): os_dim = ('os', 'Ubuntu-14.04') elif self.platform == 'win32': - os_dim = ('os', 'Windows-10-14393') + os_dim = ('os', 'Windows-10') else: raise MBErr('unrecognized platform string "%s"' % self.platform) diff --git a/deps/v8/tools/mb/mb_unittest.py b/deps/v8/tools/mb/mb_unittest.py index 0413457eab2999..dbd599645d6752 100755 --- a/deps/v8/tools/mb/mb_unittest.py +++ b/deps/v8/tools/mb/mb_unittest.py @@ -360,8 +360,6 @@ def test_gen_fails(self): mbw.Call = lambda cmd, env=None, buffer_output=True: (1, '', '') self.check(['gen', '-c', 'debug_goma', '//out/Default'], mbw=mbw, ret=1) - # TODO(machenbach): Comment back in after swarming file parameter is used. - """ def test_gen_swarming(self): files = { '/tmp/swarming_targets': 'base_unittests\n', @@ -549,7 +547,6 @@ def run_stub(cmd, **_kwargs): 'base_unittests'], mbw=mbw, ret=0) self.check(['run', '-s', '-c', 'debug_goma', '-d', 'os', 'Win7', '//out/Default', 'base_unittests'], mbw=mbw, ret=0) - """ # pylint: disable=pointless-string-statement def test_lookup(self): self.check(['lookup', '-c', 'debug_goma'], ret=0) diff --git a/deps/v8/tools/node/fetch_deps.py b/deps/v8/tools/node/fetch_deps.py index 09a4e6cb97c8aa..945dbb7677f4f3 100755 --- a/deps/v8/tools/node/fetch_deps.py +++ b/deps/v8/tools/node/fetch_deps.py @@ -22,10 +22,10 @@ "managed" : False, "custom_deps" : { # These deps are already part of Node.js. - "v8/base/trace_event/common" : None, - "v8/testing/gtest" : None, - "v8/third_party/jinja2" : None, - "v8/third_party/markupsafe" : None, + "v8/base/trace_event/common" : None, + "v8/third_party/googletest/src" : None, + "v8/third_party/jinja2" : None, + "v8/third_party/markupsafe" : None, # These deps are unnecessary for building. "v8/test/benchmarks/data" : None, "v8/testing/gmock" : None, @@ -36,7 +36,6 @@ "v8/third_party/catapult" : None, "v8/third_party/colorama/src" : None, "v8/third_party/instrumented_libraries" : None, - "v8/tools/gyp" : None, "v8/tools/luci-go" : None, "v8/tools/swarming_client" : None, }, @@ -72,10 +71,11 @@ def FetchDeps(v8_path): env = os.environ.copy() # gclient needs to have depot_tools in the PATH. env["PATH"] = depot_tools + os.pathsep + env["PATH"] + gclient = os.path.join(depot_tools, "gclient.py") spec = "solutions = %s" % GCLIENT_SOLUTION - subprocess.check_call(["gclient", "sync", "--spec", spec], - cwd=os.path.join(v8_path, os.path.pardir), - env=env) + subprocess.check_call([sys.executable, gclient, "sync", "--spec", spec], + cwd=os.path.join(v8_path, os.path.pardir), + env=env) except: raise finally: diff --git a/deps/v8/tools/node/node_common.py b/deps/v8/tools/node/node_common.py index f7ca3a6a79c59b..72fbd9641aa44b 100755 --- a/deps/v8/tools/node/node_common.py +++ b/deps/v8/tools/node/node_common.py @@ -15,9 +15,8 @@ def EnsureDepotTools(v8_path, fetch_if_not_exist): def _Get(v8_path): depot_tools = os.path.join(v8_path, "_depot_tools") try: - gclient_path = os.path.join(depot_tools, "gclient") - gclient_check = subprocess.check_output([gclient_path, "--version"]) - if "gclient.py" in gclient_check: + gclient_path = os.path.join(depot_tools, "gclient.py") + if os.path.isfile(gclient_path): return depot_tools except: pass diff --git a/deps/v8/tools/node/test_update_node.py b/deps/v8/tools/node/test_update_node.py index 1a29b4ea619976..785517b8c85900 100755 --- a/deps/v8/tools/node/test_update_node.py +++ b/deps/v8/tools/node/test_update_node.py @@ -18,12 +18,16 @@ # Expectations. EXPECTED_GITIGNORE = """ -/testing/gtest/* -!/testing/gtest/include -/testing/gtest/include/* -!/testing/gtest/include/gtest -/testing/gtest/include/gtest/* -!/testing/gtest/include/gtest/gtest_prod.h +/third_party/googletest/* +!/third_party/googletest/src +/third_party/googletest/src/* +!/third_party/googletest/src/googletest +/third_party/googletest/src/googletest/* +!/third_party/googletest/src/googletest/include +/third_party/googletest/src/googletest/include/* +!/third_party/googletest/src/googletest/include/gtest +/third_party/googletest/src/googletest/include/gtest/* +!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h !/third_party/jinja2 !/third_party/markupsafe /unrelated @@ -34,6 +38,7 @@ rename deps/v8/baz/{delete_me => v8_new} (100%) delete mode 100644 deps/v8/include/v8-version.h rename deps/v8/{delete_me => new/v8_new} (100%) + create mode 100644 deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h create mode 100644 deps/v8/third_party/jinja2/jinja2 create mode 100644 deps/v8/third_party/markupsafe/markupsafe create mode 100644 deps/v8/v8_new @@ -43,9 +48,9 @@ 'v8_new', 'new/v8_new', 'baz/v8_new', - 'testing/gtest/gtest_new', - 'testing/gtest/new/gtest_new', - 'testing/gtest/baz/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/new/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/baz/gtest_new', 'third_party/jinja2/jinja2', 'third_party/markupsafe/markupsafe' ] diff --git a/deps/v8/tools/node/testdata/v8/.gitignore b/deps/v8/tools/node/testdata/v8/.gitignore index 855286229f8dea..cc2f1ca20223bd 100644 --- a/deps/v8/tools/node/testdata/v8/.gitignore +++ b/deps/v8/tools/node/testdata/v8/.gitignore @@ -1,4 +1,3 @@ /unrelated -/testing/gtest /third_party/jinja2 -/third_party/markupsafe \ No newline at end of file +/third_party/markupsafe diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new new file mode 100644 index 00000000000000..eb1ae458f8ee6e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/update_node.py b/deps/v8/tools/node/update_node.py index 5d7e4daff4eabf..759e9d5aac72e2 100755 --- a/deps/v8/tools/node/update_node.py +++ b/deps/v8/tools/node/update_node.py @@ -34,23 +34,28 @@ TARGET_SUBDIR = os.path.join("deps", "v8") SUB_REPOSITORIES = [ ["base", "trace_event", "common"], - ["testing", "gtest"], + ["third_party", "googletest", "src"], ["third_party", "jinja2"], ["third_party", "markupsafe"] ] DELETE_FROM_GITIGNORE = [ "/base", - "/testing/gtest", + "/third_party/googletest/src", "/third_party/jinja2", "/third_party/markupsafe" ] # Node.js requires only a single header file from gtest to build V8. # Both jinja2 and markupsafe are required to generate part of the inspector. -ADD_TO_GITIGNORE = [ "/testing/gtest/*", - "!/testing/gtest/include", - "/testing/gtest/include/*", - "!/testing/gtest/include/gtest", - "/testing/gtest/include/gtest/*", - "!/testing/gtest/include/gtest/gtest_prod.h", +ADD_TO_GITIGNORE = [ "/third_party/googletest/*", + "!/third_party/googletest/BUILD.gn", + "!/third_party/googletest/src", + "/third_party/googletest/src/*", + "!/third_party/googletest/src/googletest", + "/third_party/googletest/src/googletest/*", + "!/third_party/googletest/src/googletest/include", + "/third_party/googletest/src/googletest/include/*", + "!/third_party/googletest/src/googletest/include/gtest", + "/third_party/googletest/src/googletest/include/gtest/*", + "!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h", "!/third_party/jinja2", "!/third_party/markupsafe" ] diff --git a/deps/v8/tools/predictable_wrapper.py b/deps/v8/tools/predictable_wrapper.py index cf7bf00b3f6fab..c357c13b41b8bd 100644 --- a/deps/v8/tools/predictable_wrapper.py +++ b/deps/v8/tools/predictable_wrapper.py @@ -19,6 +19,7 @@ from testrunner.local import command MAX_TRIES = 3 +TIMEOUT = 120 def main(args): def allocation_str(stdout): @@ -27,7 +28,7 @@ def allocation_str(stdout): return line return None - cmd = command.Command(args[0], args[1:]) + cmd = command.Command(args[0], args[1:], timeout=TIMEOUT) previous_allocations = None for run in range(1, MAX_TRIES + 1): diff --git a/deps/v8/tools/presubmit.py b/deps/v8/tools/presubmit.py index 917b6e2383094e..29469be7589dc5 100755 --- a/deps/v8/tools/presubmit.py +++ b/deps/v8/tools/presubmit.py @@ -60,7 +60,9 @@ -build/header_guard -build/include_what_you_use -readability/fn_size +-readability/multiline_comment -runtime/references +-whitespace/comments """.split() LINT_OUTPUT_PATTERN = re.compile(r'^.+[:(]\d+[:)]|^Done processing') diff --git a/deps/v8/tools/release/auto_roll.py b/deps/v8/tools/release/auto_roll.py index b27675e60c86aa..ea83bfcd36dc8e 100755 --- a/deps/v8/tools/release/auto_roll.py +++ b/deps/v8/tools/release/auto_roll.py @@ -20,7 +20,7 @@ https://v8-roll.appspot.com/ This only works with a Google account. -CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel""") +CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;luci.chromium.try:android_optional_gpu_tests_rel""") class Preparation(Step): MESSAGE = "Preparation." @@ -40,7 +40,7 @@ def RunStep(self): self["last_roll"] = self._options.last_roll if not self["last_roll"]: # Interpret the DEPS file to retrieve the v8 revision. - # TODO(machenbach): This should be part or the roll-deps api of + # TODO(machenbach): This should be part or the setdep api of # depot_tools. Var = lambda var: '%s' exec(FileToText(os.path.join(self._options.chromium, "DEPS"))) @@ -140,7 +140,7 @@ def RunStep(self): self['json_output']['monitoring_state'] = 'upload' cwd = self._options.chromium # Patch DEPS file. - if self.Command("roll-dep-svn", "v8 %s" % + if self.Command("gclient", "setdep -r src/v8@%s" % self["roll"], cwd=cwd) is None: self.Die("Failed to create deps for %s" % self["roll"]) diff --git a/deps/v8/tools/release/test_scripts.py b/deps/v8/tools/release/test_scripts.py index 759012d83348ca..25aa803daf23ae 100755 --- a/deps/v8/tools/release/test_scripts.py +++ b/deps/v8/tools/release/test_scripts.py @@ -1037,7 +1037,7 @@ def CheckVersionCommit(): https://v8-roll.appspot.com/ This only works with a Google account. -CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel +CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;luci.chromium.try:android_optional_gpu_tests_rel TBR=reviewer@chromium.org""" @@ -1113,7 +1113,8 @@ def WriteDeps(): Cmd("git pull", "", cwd=chrome_dir), Cmd("git fetch origin", ""), Cmd("git new-branch work-branch", "", cwd=chrome_dir), - Cmd("roll-dep-svn v8 roll_hsh", "rolled", cb=WriteDeps, cwd=chrome_dir), + Cmd("gclient setdep -r src/v8@roll_hsh", "", cb=WriteDeps, + cwd=chrome_dir), Cmd(("git commit -am \"%s\" " "--author \"author@chromium.org \"" % self.ROLL_COMMIT_MSG), diff --git a/test/fixtures/empty/.gitkeep b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/baz/gtest_new similarity index 100% rename from test/fixtures/empty/.gitkeep rename to deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/baz/gtest_new diff --git a/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_new b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_new new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h new file mode 100644 index 00000000000000..847c8bc75ed4fd --- /dev/null +++ b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h @@ -0,0 +1 @@ +gtest_prod diff --git a/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/new/gtest_new b/deps/v8/tools/release/testdata/v8/third_party/googletest/src/googletest/include/gtest/new/gtest_new new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/deps/v8/tools/run-num-fuzzer.isolate b/deps/v8/tools/run-num-fuzzer.isolate deleted file mode 100644 index e9acbd4cb08455..00000000000000 --- a/deps/v8/tools/run-num-fuzzer.isolate +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2017 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. -{ - 'variables': { - 'command': [ - 'run-num-fuzzer.py', - ], - 'files': [ - 'run-num-fuzzer.py', - ], - }, - 'includes': [ - 'testrunner/testrunner.isolate', - '../src/d8.isolate', - '../test/benchmarks/benchmarks.isolate', - '../test/mjsunit/mjsunit.isolate', - '../test/webkit/webkit.isolate', - ], -} diff --git a/deps/v8/tools/run_perf.py b/deps/v8/tools/run_perf.py index e19f6a056bb022..2bd4372453d367 100755 --- a/deps/v8/tools/run_perf.py +++ b/deps/v8/tools/run_perf.py @@ -793,6 +793,12 @@ def _PushExecutable(self, shell_dir, target_dir, binary): target_dir, skip_if_missing=True, ) + self._PushFile( + shell_dir, + "snapshot_blob_trusted.bin", + target_dir, + skip_if_missing=True, + ) self._PushFile( shell_dir, "icudtl.dat", diff --git a/deps/v8/tools/testrunner/base_runner.py b/deps/v8/tools/testrunner/base_runner.py index 7721360e2a01a5..cfea1527d4af37 100644 --- a/deps/v8/tools/testrunner/base_runner.py +++ b/deps/v8/tools/testrunner/base_runner.py @@ -599,6 +599,10 @@ def _get_statusfile_variables(self, options): self.build_config.mips_arch_variant == "r6" and self.build_config.mips_use_msa) + mips_arch_variant = ( + self.build_config.arch in ['mipsel', 'mips', 'mips64', 'mips64el'] and + self.build_config.mips_arch_variant) + # TODO(all): Combine "simulator" and "simulator_run". # TODO(machenbach): In GN we can derive simulator run from # target_arch != v8_target_arch in the dumped build config. @@ -613,6 +617,7 @@ def _get_statusfile_variables(self, options): "gc_stress": False, "gcov_coverage": self.build_config.gcov_coverage, "isolates": options.isolates, + "mips_arch_variant": mips_arch_variant, "mode": self.mode_options.status_mode, "msan": self.build_config.msan, "no_harness": options.no_harness, diff --git a/deps/v8/tools/testrunner/local/statusfile.py b/deps/v8/tools/testrunner/local/statusfile.py index e3adaa298a60d0..ecfbf008a23997 100644 --- a/deps/v8/tools/testrunner/local/statusfile.py +++ b/deps/v8/tools/testrunner/local/statusfile.py @@ -59,7 +59,7 @@ "android_arm", "android_arm64", "android_ia32", "android_x64", "arm", "arm64", "ia32", "mips", "mipsel", "mips64", "mips64el", "x64", "ppc", "ppc64", "s390", "s390x", "macos", "windows", - "linux", "aix"]: + "linux", "aix", "r1", "r2", "r3", "r5", "r6"]: VARIABLES[var] = var # Allow using variants as keywords. diff --git a/deps/v8/tools/testrunner/local/variants.py b/deps/v8/tools/testrunner/local/variants.py index 25de235da1e645..1c29f1d1955ecf 100644 --- a/deps/v8/tools/testrunner/local/variants.py +++ b/deps/v8/tools/testrunner/local/variants.py @@ -17,13 +17,12 @@ "nooptimization": [["--noopt"]], "slow_path": [["--force-slow-path"]], "stress": [["--stress-opt", "--always-opt"]], - "stress_background_compile": [["--background-compile", "--stress-background-compile"]], + "stress_background_compile": [["--stress-background-compile"]], "stress_incremental_marking": [["--stress-incremental-marking"]], # Trigger stress sampling allocation profiler with sample interval = 2^14 "stress_sampling": [["--stress-sampling-allocation-profiler=16384"]], "trusted": [["--no-untrusted-code-mitigations"]], "wasm_traps": [["--wasm-trap-handler", "--invoke-weak-callbacks"]], - "wasm_no_native": [["--no-wasm-jit-to-native"]], } SLOW_VARIANTS = set([ diff --git a/deps/v8/tools/testrunner/standard_runner.py b/deps/v8/tools/testrunner/standard_runner.py index d3d2bd53a6fbe1..bea00476f4e63a 100755 --- a/deps/v8/tools/testrunner/standard_runner.py +++ b/deps/v8/tools/testrunner/standard_runner.py @@ -44,7 +44,7 @@ # Shortcut for the two above ("more" first - it has the longer running tests). "exhaustive": MORE_VARIANTS + VARIANTS, # Additional variants, run on a subset of bots. - "extra": ["future", "liftoff", "trusted", "wasm_no_native"], + "extra": ["future", "liftoff", "trusted"], } GC_STRESS_FLAGS = ["--gc-interval=500", "--stress-compaction", diff --git a/deps/v8/tools/testrunner/testrunner.isolate b/deps/v8/tools/testrunner/testrunner.isolate deleted file mode 100644 index 56667c20215b51..00000000000000 --- a/deps/v8/tools/testrunner/testrunner.isolate +++ /dev/null @@ -1,25 +0,0 @@ -# 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. -{ - 'variables': { - 'command': [ - '../run-tests.py', - ], - 'files': [ - '<(PRODUCT_DIR)/v8_build_config.json', - '../run-tests.py', - './' - ], - }, - 'conditions': [ - ['coverage==1 and sanitizer_coverage=="bb,trace-pc-guard"', { - 'variables': { - 'files': [ - '../sanitizers/sancov_merger.py', - '../../third_party/llvm/projects/compiler-rt/lib/sanitizer_common/scripts/sancov.py', - ], - }, - }], - ], -} diff --git a/deps/v8/tools/toolchain/BUILD.gn b/deps/v8/tools/toolchain/BUILD.gn index b2462054c4efad..b252c5eed5392c 100644 --- a/deps/v8/tools/toolchain/BUILD.gn +++ b/deps/v8/tools/toolchain/BUILD.gn @@ -15,9 +15,79 @@ gcc_toolchain("mips-bundled") { ar = "${toolprefix}ar" ld = cxx + # Flag that sets endianness + extra_ldflags = "-EB" + extra_cppflags = "-EB" + toolchain_args = { current_cpu = "mips" current_os = "linux" is_clang = false } } + +gcc_toolchain("mips64-bundled") { + toolprefix = rebase_path("//tools/mips_toolchain/bin/mips-mti-linux-gnu-", + root_build_dir) + cc = "${toolprefix}gcc" + cxx = "${toolprefix}g++" + + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" + ar = "${toolprefix}ar" + ld = cxx + + # Flag that sets endianness and ABI + extra_ldflags = "-EB -mabi=64" + extra_cppflags = "-EB -mabi=64" + + toolchain_args = { + current_cpu = "mips64" + current_os = "linux" + is_clang = false + } +} + +gcc_toolchain("mipsel-bundled") { + toolprefix = rebase_path("//tools/mips_toolchain/bin/mips-mti-linux-gnu-", + root_build_dir) + cc = "${toolprefix}gcc" + cxx = "${toolprefix}g++" + + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" + ar = "${toolprefix}ar" + ld = cxx + + # Flag that sets endianness + extra_ldflags = "-EL" + extra_cppflags = "-EL" + + toolchain_args = { + current_cpu = "mipsel" + current_os = "linux" + is_clang = false + } +} + +gcc_toolchain("mips64el-bundled") { + toolprefix = rebase_path("//tools/mips_toolchain/bin/mips-mti-linux-gnu-", + root_build_dir) + cc = "${toolprefix}gcc" + cxx = "${toolprefix}g++" + + readelf = "${toolprefix}readelf" + nm = "${toolprefix}nm" + ar = "${toolprefix}ar" + ld = cxx + + # Flag that sets endianness and ABI + extra_ldflags = "-EL -mabi=64" + extra_cppflags = "-EL -mabi=64" + + toolchain_args = { + current_cpu = "mips64el" + current_os = "linux" + is_clang = false + } +} diff --git a/deps/v8/tools/v8heapconst.py b/deps/v8/tools/v8heapconst.py index 5659cdd03c8814..e3b29f820423b0 100644 --- a/deps/v8/tools/v8heapconst.py +++ b/deps/v8/tools/v8heapconst.py @@ -52,50 +52,67 @@ 148: "FIXED_BIGINT64_ARRAY_TYPE", 149: "FIXED_BIGUINT64_ARRAY_TYPE", 150: "FIXED_DOUBLE_ARRAY_TYPE", - 151: "FILLER_TYPE", - 152: "ACCESS_CHECK_INFO_TYPE", - 153: "ACCESSOR_INFO_TYPE", - 154: "ACCESSOR_PAIR_TYPE", - 155: "ALIASED_ARGUMENTS_ENTRY_TYPE", - 156: "ALLOCATION_MEMENTO_TYPE", - 157: "ALLOCATION_SITE_TYPE", - 158: "ASYNC_GENERATOR_REQUEST_TYPE", - 159: "CONTEXT_EXTENSION_TYPE", - 160: "DEBUG_INFO_TYPE", - 161: "FUNCTION_TEMPLATE_INFO_TYPE", - 162: "INTERCEPTOR_INFO_TYPE", - 163: "MODULE_INFO_ENTRY_TYPE", - 164: "MODULE_TYPE", - 165: "OBJECT_TEMPLATE_INFO_TYPE", - 166: "PROMISE_CAPABILITY_TYPE", - 167: "PROMISE_REACTION_TYPE", - 168: "PROTOTYPE_INFO_TYPE", - 169: "SCRIPT_TYPE", - 170: "STACK_FRAME_INFO_TYPE", - 171: "TUPLE2_TYPE", - 172: "TUPLE3_TYPE", - 173: "CALLABLE_TASK_TYPE", - 174: "CALLBACK_TASK_TYPE", - 175: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE", - 176: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE", - 177: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE", - 178: "FIXED_ARRAY_TYPE", - 179: "DESCRIPTOR_ARRAY_TYPE", - 180: "HASH_TABLE_TYPE", - 181: "SCOPE_INFO_TYPE", - 182: "TRANSITION_ARRAY_TYPE", - 183: "CELL_TYPE", - 184: "CODE_DATA_CONTAINER_TYPE", - 185: "FEEDBACK_CELL_TYPE", - 186: "FEEDBACK_VECTOR_TYPE", - 187: "LOAD_HANDLER_TYPE", - 188: "PROPERTY_ARRAY_TYPE", - 189: "PROPERTY_CELL_TYPE", - 190: "SHARED_FUNCTION_INFO_TYPE", - 191: "SMALL_ORDERED_HASH_MAP_TYPE", - 192: "SMALL_ORDERED_HASH_SET_TYPE", - 193: "STORE_HANDLER_TYPE", - 194: "WEAK_CELL_TYPE", + 151: "FEEDBACK_METADATA_TYPE", + 152: "FILLER_TYPE", + 153: "ACCESS_CHECK_INFO_TYPE", + 154: "ACCESSOR_INFO_TYPE", + 155: "ACCESSOR_PAIR_TYPE", + 156: "ALIASED_ARGUMENTS_ENTRY_TYPE", + 157: "ALLOCATION_MEMENTO_TYPE", + 158: "ALLOCATION_SITE_TYPE", + 159: "ASYNC_GENERATOR_REQUEST_TYPE", + 160: "CONTEXT_EXTENSION_TYPE", + 161: "DEBUG_INFO_TYPE", + 162: "FUNCTION_TEMPLATE_INFO_TYPE", + 163: "INTERCEPTOR_INFO_TYPE", + 164: "INTERPRETER_DATA_TYPE", + 165: "MODULE_INFO_ENTRY_TYPE", + 166: "MODULE_TYPE", + 167: "OBJECT_TEMPLATE_INFO_TYPE", + 168: "PROMISE_CAPABILITY_TYPE", + 169: "PROMISE_REACTION_TYPE", + 170: "PROTOTYPE_INFO_TYPE", + 171: "SCRIPT_TYPE", + 172: "STACK_FRAME_INFO_TYPE", + 173: "TUPLE2_TYPE", + 174: "TUPLE3_TYPE", + 175: "WASM_COMPILED_MODULE_TYPE", + 176: "WASM_DEBUG_INFO_TYPE", + 177: "WASM_SHARED_MODULE_DATA_TYPE", + 178: "CALLABLE_TASK_TYPE", + 179: "CALLBACK_TASK_TYPE", + 180: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE", + 181: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE", + 182: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE", + 183: "FIXED_ARRAY_TYPE", + 184: "BOILERPLATE_DESCRIPTION_TYPE", + 185: "DESCRIPTOR_ARRAY_TYPE", + 186: "HASH_TABLE_TYPE", + 187: "SCOPE_INFO_TYPE", + 188: "TRANSITION_ARRAY_TYPE", + 189: "BLOCK_CONTEXT_TYPE", + 190: "CATCH_CONTEXT_TYPE", + 191: "DEBUG_EVALUATE_CONTEXT_TYPE", + 192: "EVAL_CONTEXT_TYPE", + 193: "FUNCTION_CONTEXT_TYPE", + 194: "MODULE_CONTEXT_TYPE", + 195: "NATIVE_CONTEXT_TYPE", + 196: "SCRIPT_CONTEXT_TYPE", + 197: "WITH_CONTEXT_TYPE", + 198: "CALL_HANDLER_INFO_TYPE", + 199: "CELL_TYPE", + 200: "CODE_DATA_CONTAINER_TYPE", + 201: "FEEDBACK_CELL_TYPE", + 202: "FEEDBACK_VECTOR_TYPE", + 203: "LOAD_HANDLER_TYPE", + 204: "PROPERTY_ARRAY_TYPE", + 205: "PROPERTY_CELL_TYPE", + 206: "SHARED_FUNCTION_INFO_TYPE", + 207: "SMALL_ORDERED_HASH_MAP_TYPE", + 208: "SMALL_ORDERED_HASH_SET_TYPE", + 209: "STORE_HANDLER_TYPE", + 210: "WEAK_CELL_TYPE", + 211: "WEAK_FIXED_ARRAY_TYPE", 1024: "JS_PROXY_TYPE", 1025: "JS_GLOBAL_OBJECT_TYPE", 1026: "JS_GLOBAL_PROXY_TYPE", @@ -106,201 +123,173 @@ 1057: "JS_OBJECT_TYPE", 1058: "JS_ARGUMENTS_TYPE", 1059: "JS_ARRAY_BUFFER_TYPE", - 1060: "JS_ARRAY_TYPE", - 1061: "JS_ASYNC_FROM_SYNC_ITERATOR_TYPE", - 1062: "JS_ASYNC_GENERATOR_OBJECT_TYPE", - 1063: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", - 1064: "JS_DATE_TYPE", - 1065: "JS_ERROR_TYPE", - 1066: "JS_GENERATOR_OBJECT_TYPE", - 1067: "JS_MAP_TYPE", - 1068: "JS_MAP_KEY_ITERATOR_TYPE", - 1069: "JS_MAP_KEY_VALUE_ITERATOR_TYPE", - 1070: "JS_MAP_VALUE_ITERATOR_TYPE", - 1071: "JS_MESSAGE_OBJECT_TYPE", - 1072: "JS_PROMISE_TYPE", - 1073: "JS_REGEXP_TYPE", - 1074: "JS_SET_TYPE", - 1075: "JS_SET_KEY_VALUE_ITERATOR_TYPE", - 1076: "JS_SET_VALUE_ITERATOR_TYPE", - 1077: "JS_STRING_ITERATOR_TYPE", - 1078: "JS_WEAK_MAP_TYPE", - 1079: "JS_WEAK_SET_TYPE", - 1080: "JS_TYPED_ARRAY_TYPE", - 1081: "JS_DATA_VIEW_TYPE", - 1082: "JS_TYPED_ARRAY_KEY_ITERATOR_TYPE", - 1083: "JS_FAST_ARRAY_KEY_ITERATOR_TYPE", - 1084: "JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE", - 1085: "JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1086: "JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1087: "JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1088: "JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1089: "JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1090: "JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1091: "JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1092: "JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1093: "JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1094: "JS_BIGUINT64_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1095: "JS_BIGINT64_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1096: "JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1097: "JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1098: "JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1099: "JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1100: "JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1101: "JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1102: "JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE", - 1103: "JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE", - 1104: "JS_INT8_ARRAY_VALUE_ITERATOR_TYPE", - 1105: "JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE", - 1106: "JS_INT16_ARRAY_VALUE_ITERATOR_TYPE", - 1107: "JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE", - 1108: "JS_INT32_ARRAY_VALUE_ITERATOR_TYPE", - 1109: "JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE", - 1110: "JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE", - 1111: "JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE", - 1112: "JS_BIGUINT64_ARRAY_VALUE_ITERATOR_TYPE", - 1113: "JS_BIGINT64_ARRAY_VALUE_ITERATOR_TYPE", - 1114: "JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE", - 1115: "JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE", - 1116: "JS_FAST_ARRAY_VALUE_ITERATOR_TYPE", - 1117: "JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE", - 1118: "JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE", - 1119: "JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE", - 1120: "JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE", - 1121: "WASM_INSTANCE_TYPE", - 1122: "WASM_MEMORY_TYPE", - 1123: "WASM_MODULE_TYPE", - 1124: "WASM_TABLE_TYPE", - 1125: "JS_BOUND_FUNCTION_TYPE", - 1126: "JS_FUNCTION_TYPE", + 1060: "JS_ARRAY_ITERATOR_TYPE", + 1061: "JS_ARRAY_TYPE", + 1062: "JS_ASYNC_FROM_SYNC_ITERATOR_TYPE", + 1063: "JS_ASYNC_GENERATOR_OBJECT_TYPE", + 1064: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", + 1065: "JS_DATE_TYPE", + 1066: "JS_ERROR_TYPE", + 1067: "JS_GENERATOR_OBJECT_TYPE", + 1068: "JS_MAP_TYPE", + 1069: "JS_MAP_KEY_ITERATOR_TYPE", + 1070: "JS_MAP_KEY_VALUE_ITERATOR_TYPE", + 1071: "JS_MAP_VALUE_ITERATOR_TYPE", + 1072: "JS_MESSAGE_OBJECT_TYPE", + 1073: "JS_PROMISE_TYPE", + 1074: "JS_REGEXP_TYPE", + 1075: "JS_REGEXP_STRING_ITERATOR_TYPE", + 1076: "JS_SET_TYPE", + 1077: "JS_SET_KEY_VALUE_ITERATOR_TYPE", + 1078: "JS_SET_VALUE_ITERATOR_TYPE", + 1079: "JS_STRING_ITERATOR_TYPE", + 1080: "JS_WEAK_MAP_TYPE", + 1081: "JS_WEAK_SET_TYPE", + 1082: "JS_TYPED_ARRAY_TYPE", + 1083: "JS_DATA_VIEW_TYPE", + 1084: "WASM_GLOBAL_TYPE", + 1085: "WASM_INSTANCE_TYPE", + 1086: "WASM_MEMORY_TYPE", + 1087: "WASM_MODULE_TYPE", + 1088: "WASM_TABLE_TYPE", + 1089: "JS_BOUND_FUNCTION_TYPE", + 1090: "JS_FUNCTION_TYPE", } # List of known V8 maps. KNOWN_MAPS = { - 0x02201: (138, "FreeSpaceMap"), - 0x02251: (132, "MetaMap"), - 0x022a1: (131, "NullMap"), - 0x022f1: (179, "DescriptorArrayMap"), - 0x02341: (178, "FixedArrayMap"), - 0x02391: (151, "OnePointerFillerMap"), - 0x023e1: (151, "TwoPointerFillerMap"), - 0x02431: (131, "UninitializedMap"), - 0x02481: (8, "OneByteInternalizedStringMap"), - 0x024d1: (131, "UndefinedMap"), - 0x02521: (129, "HeapNumberMap"), - 0x02571: (131, "TheHoleMap"), - 0x025c1: (131, "BooleanMap"), - 0x02611: (136, "ByteArrayMap"), - 0x02661: (178, "FixedCOWArrayMap"), - 0x026b1: (180, "HashTableMap"), - 0x02701: (128, "SymbolMap"), - 0x02751: (72, "OneByteStringMap"), - 0x027a1: (181, "ScopeInfoMap"), - 0x027f1: (190, "SharedFunctionInfoMap"), - 0x02841: (133, "CodeMap"), - 0x02891: (178, "FunctionContextMap"), - 0x028e1: (183, "CellMap"), - 0x02931: (194, "WeakCellMap"), - 0x02981: (189, "GlobalPropertyCellMap"), - 0x029d1: (135, "ForeignMap"), - 0x02a21: (182, "TransitionArrayMap"), - 0x02a71: (186, "FeedbackVectorMap"), - 0x02ac1: (131, "ArgumentsMarkerMap"), - 0x02b11: (131, "ExceptionMap"), - 0x02b61: (131, "TerminationExceptionMap"), - 0x02bb1: (131, "OptimizedOutMap"), - 0x02c01: (131, "StaleRegisterMap"), - 0x02c51: (178, "NativeContextMap"), - 0x02ca1: (178, "ModuleContextMap"), - 0x02cf1: (178, "EvalContextMap"), - 0x02d41: (178, "ScriptContextMap"), - 0x02d91: (178, "BlockContextMap"), - 0x02de1: (178, "CatchContextMap"), - 0x02e31: (178, "WithContextMap"), - 0x02e81: (178, "DebugEvaluateContextMap"), - 0x02ed1: (178, "ScriptContextTableMap"), - 0x02f21: (178, "ArrayListMap"), - 0x02f71: (150, "FixedDoubleArrayMap"), - 0x02fc1: (134, "MutableHeapNumberMap"), - 0x03011: (180, "OrderedHashMapMap"), - 0x03061: (180, "OrderedHashSetMap"), - 0x030b1: (180, "NameDictionaryMap"), - 0x03101: (180, "GlobalDictionaryMap"), - 0x03151: (180, "NumberDictionaryMap"), - 0x031a1: (180, "SimpleNumberDictionaryMap"), - 0x031f1: (180, "StringTableMap"), - 0x03241: (180, "WeakHashTableMap"), - 0x03291: (178, "SloppyArgumentsElementsMap"), - 0x032e1: (191, "SmallOrderedHashMapMap"), - 0x03331: (192, "SmallOrderedHashSetMap"), - 0x03381: (184, "CodeDataContainerMap"), - 0x033d1: (1071, "JSMessageObjectMap"), - 0x03421: (1057, "ExternalMap"), - 0x03471: (137, "BytecodeArrayMap"), - 0x034c1: (178, "ModuleInfoMap"), - 0x03511: (185, "NoClosuresCellMap"), - 0x03561: (185, "OneClosureCellMap"), - 0x035b1: (185, "ManyClosuresCellMap"), - 0x03601: (188, "PropertyArrayMap"), - 0x03651: (130, "BigIntMap"), - 0x036a1: (106, "NativeSourceStringMap"), - 0x036f1: (64, "StringMap"), - 0x03741: (73, "ConsOneByteStringMap"), - 0x03791: (65, "ConsStringMap"), - 0x037e1: (77, "ThinOneByteStringMap"), - 0x03831: (69, "ThinStringMap"), - 0x03881: (67, "SlicedStringMap"), - 0x038d1: (75, "SlicedOneByteStringMap"), - 0x03921: (66, "ExternalStringMap"), - 0x03971: (82, "ExternalStringWithOneByteDataMap"), - 0x039c1: (74, "ExternalOneByteStringMap"), - 0x03a11: (98, "ShortExternalStringMap"), - 0x03a61: (114, "ShortExternalStringWithOneByteDataMap"), - 0x03ab1: (0, "InternalizedStringMap"), - 0x03b01: (2, "ExternalInternalizedStringMap"), - 0x03b51: (18, "ExternalInternalizedStringWithOneByteDataMap"), - 0x03ba1: (10, "ExternalOneByteInternalizedStringMap"), - 0x03bf1: (34, "ShortExternalInternalizedStringMap"), - 0x03c41: (50, "ShortExternalInternalizedStringWithOneByteDataMap"), - 0x03c91: (42, "ShortExternalOneByteInternalizedStringMap"), - 0x03ce1: (106, "ShortExternalOneByteStringMap"), - 0x03d31: (140, "FixedUint8ArrayMap"), - 0x03d81: (139, "FixedInt8ArrayMap"), - 0x03dd1: (142, "FixedUint16ArrayMap"), - 0x03e21: (141, "FixedInt16ArrayMap"), - 0x03e71: (144, "FixedUint32ArrayMap"), - 0x03ec1: (143, "FixedInt32ArrayMap"), - 0x03f11: (145, "FixedFloat32ArrayMap"), - 0x03f61: (146, "FixedFloat64ArrayMap"), - 0x03fb1: (147, "FixedUint8ClampedArrayMap"), - 0x04001: (149, "FixedBigUint64ArrayMap"), - 0x04051: (148, "FixedBigInt64ArrayMap"), - 0x040a1: (171, "Tuple2Map"), - 0x040f1: (169, "ScriptMap"), - 0x04141: (162, "InterceptorInfoMap"), - 0x04191: (153, "AccessorInfoMap"), - 0x041e1: (152, "AccessCheckInfoMap"), - 0x04231: (154, "AccessorPairMap"), - 0x04281: (155, "AliasedArgumentsEntryMap"), - 0x042d1: (156, "AllocationMementoMap"), - 0x04321: (157, "AllocationSiteMap"), - 0x04371: (158, "AsyncGeneratorRequestMap"), - 0x043c1: (159, "ContextExtensionMap"), - 0x04411: (160, "DebugInfoMap"), - 0x04461: (161, "FunctionTemplateInfoMap"), - 0x044b1: (163, "ModuleInfoEntryMap"), - 0x04501: (164, "ModuleMap"), - 0x04551: (165, "ObjectTemplateInfoMap"), - 0x045a1: (166, "PromiseCapabilityMap"), - 0x045f1: (167, "PromiseReactionMap"), - 0x04641: (168, "PrototypeInfoMap"), - 0x04691: (170, "StackFrameInfoMap"), - 0x046e1: (172, "Tuple3Map"), - 0x04731: (173, "CallableTaskMap"), - 0x04781: (174, "CallbackTaskMap"), - 0x047d1: (175, "PromiseFulfillReactionJobTaskMap"), - 0x04821: (176, "PromiseRejectReactionJobTaskMap"), - 0x04871: (177, "PromiseResolveThenableJobTaskMap"), + ("MAP_SPACE", 0x02201): (138, "FreeSpaceMap"), + ("MAP_SPACE", 0x02259): (132, "MetaMap"), + ("MAP_SPACE", 0x022b1): (131, "NullMap"), + ("MAP_SPACE", 0x02309): (185, "DescriptorArrayMap"), + ("MAP_SPACE", 0x02361): (183, "FixedArrayMap"), + ("MAP_SPACE", 0x023b9): (152, "OnePointerFillerMap"), + ("MAP_SPACE", 0x02411): (152, "TwoPointerFillerMap"), + ("MAP_SPACE", 0x02469): (131, "UninitializedMap"), + ("MAP_SPACE", 0x024c1): (8, "OneByteInternalizedStringMap"), + ("MAP_SPACE", 0x02519): (131, "UndefinedMap"), + ("MAP_SPACE", 0x02571): (129, "HeapNumberMap"), + ("MAP_SPACE", 0x025c9): (131, "TheHoleMap"), + ("MAP_SPACE", 0x02621): (131, "BooleanMap"), + ("MAP_SPACE", 0x02679): (136, "ByteArrayMap"), + ("MAP_SPACE", 0x026d1): (183, "FixedCOWArrayMap"), + ("MAP_SPACE", 0x02729): (186, "HashTableMap"), + ("MAP_SPACE", 0x02781): (128, "SymbolMap"), + ("MAP_SPACE", 0x027d9): (72, "OneByteStringMap"), + ("MAP_SPACE", 0x02831): (187, "ScopeInfoMap"), + ("MAP_SPACE", 0x02889): (206, "SharedFunctionInfoMap"), + ("MAP_SPACE", 0x028e1): (133, "CodeMap"), + ("MAP_SPACE", 0x02939): (193, "FunctionContextMap"), + ("MAP_SPACE", 0x02991): (199, "CellMap"), + ("MAP_SPACE", 0x029e9): (210, "WeakCellMap"), + ("MAP_SPACE", 0x02a41): (205, "GlobalPropertyCellMap"), + ("MAP_SPACE", 0x02a99): (135, "ForeignMap"), + ("MAP_SPACE", 0x02af1): (188, "TransitionArrayMap"), + ("MAP_SPACE", 0x02b49): (202, "FeedbackVectorMap"), + ("MAP_SPACE", 0x02ba1): (131, "ArgumentsMarkerMap"), + ("MAP_SPACE", 0x02bf9): (131, "ExceptionMap"), + ("MAP_SPACE", 0x02c51): (131, "TerminationExceptionMap"), + ("MAP_SPACE", 0x02ca9): (131, "OptimizedOutMap"), + ("MAP_SPACE", 0x02d01): (131, "StaleRegisterMap"), + ("MAP_SPACE", 0x02d59): (195, "NativeContextMap"), + ("MAP_SPACE", 0x02db1): (194, "ModuleContextMap"), + ("MAP_SPACE", 0x02e09): (192, "EvalContextMap"), + ("MAP_SPACE", 0x02e61): (196, "ScriptContextMap"), + ("MAP_SPACE", 0x02eb9): (189, "BlockContextMap"), + ("MAP_SPACE", 0x02f11): (190, "CatchContextMap"), + ("MAP_SPACE", 0x02f69): (197, "WithContextMap"), + ("MAP_SPACE", 0x02fc1): (191, "DebugEvaluateContextMap"), + ("MAP_SPACE", 0x03019): (183, "ScriptContextTableMap"), + ("MAP_SPACE", 0x03071): (151, "FeedbackMetadataArrayMap"), + ("MAP_SPACE", 0x030c9): (183, "ArrayListMap"), + ("MAP_SPACE", 0x03121): (130, "BigIntMap"), + ("MAP_SPACE", 0x03179): (184, "BoilerplateDescriptionMap"), + ("MAP_SPACE", 0x031d1): (137, "BytecodeArrayMap"), + ("MAP_SPACE", 0x03229): (200, "CodeDataContainerMap"), + ("MAP_SPACE", 0x03281): (1057, "ExternalMap"), + ("MAP_SPACE", 0x032d9): (150, "FixedDoubleArrayMap"), + ("MAP_SPACE", 0x03331): (186, "GlobalDictionaryMap"), + ("MAP_SPACE", 0x03389): (201, "ManyClosuresCellMap"), + ("MAP_SPACE", 0x033e1): (1072, "JSMessageObjectMap"), + ("MAP_SPACE", 0x03439): (183, "ModuleInfoMap"), + ("MAP_SPACE", 0x03491): (134, "MutableHeapNumberMap"), + ("MAP_SPACE", 0x034e9): (186, "NameDictionaryMap"), + ("MAP_SPACE", 0x03541): (201, "NoClosuresCellMap"), + ("MAP_SPACE", 0x03599): (186, "NumberDictionaryMap"), + ("MAP_SPACE", 0x035f1): (201, "OneClosureCellMap"), + ("MAP_SPACE", 0x03649): (186, "OrderedHashMapMap"), + ("MAP_SPACE", 0x036a1): (186, "OrderedHashSetMap"), + ("MAP_SPACE", 0x036f9): (204, "PropertyArrayMap"), + ("MAP_SPACE", 0x03751): (198, "SideEffectCallHandlerInfoMap"), + ("MAP_SPACE", 0x037a9): (198, "SideEffectFreeCallHandlerInfoMap"), + ("MAP_SPACE", 0x03801): (186, "SimpleNumberDictionaryMap"), + ("MAP_SPACE", 0x03859): (183, "SloppyArgumentsElementsMap"), + ("MAP_SPACE", 0x038b1): (207, "SmallOrderedHashMapMap"), + ("MAP_SPACE", 0x03909): (208, "SmallOrderedHashSetMap"), + ("MAP_SPACE", 0x03961): (186, "StringTableMap"), + ("MAP_SPACE", 0x039b9): (211, "WeakFixedArrayMap"), + ("MAP_SPACE", 0x03a11): (106, "NativeSourceStringMap"), + ("MAP_SPACE", 0x03a69): (64, "StringMap"), + ("MAP_SPACE", 0x03ac1): (73, "ConsOneByteStringMap"), + ("MAP_SPACE", 0x03b19): (65, "ConsStringMap"), + ("MAP_SPACE", 0x03b71): (77, "ThinOneByteStringMap"), + ("MAP_SPACE", 0x03bc9): (69, "ThinStringMap"), + ("MAP_SPACE", 0x03c21): (67, "SlicedStringMap"), + ("MAP_SPACE", 0x03c79): (75, "SlicedOneByteStringMap"), + ("MAP_SPACE", 0x03cd1): (66, "ExternalStringMap"), + ("MAP_SPACE", 0x03d29): (82, "ExternalStringWithOneByteDataMap"), + ("MAP_SPACE", 0x03d81): (74, "ExternalOneByteStringMap"), + ("MAP_SPACE", 0x03dd9): (98, "ShortExternalStringMap"), + ("MAP_SPACE", 0x03e31): (114, "ShortExternalStringWithOneByteDataMap"), + ("MAP_SPACE", 0x03e89): (0, "InternalizedStringMap"), + ("MAP_SPACE", 0x03ee1): (2, "ExternalInternalizedStringMap"), + ("MAP_SPACE", 0x03f39): (18, "ExternalInternalizedStringWithOneByteDataMap"), + ("MAP_SPACE", 0x03f91): (10, "ExternalOneByteInternalizedStringMap"), + ("MAP_SPACE", 0x03fe9): (34, "ShortExternalInternalizedStringMap"), + ("MAP_SPACE", 0x04041): (50, "ShortExternalInternalizedStringWithOneByteDataMap"), + ("MAP_SPACE", 0x04099): (42, "ShortExternalOneByteInternalizedStringMap"), + ("MAP_SPACE", 0x040f1): (106, "ShortExternalOneByteStringMap"), + ("MAP_SPACE", 0x04149): (140, "FixedUint8ArrayMap"), + ("MAP_SPACE", 0x041a1): (139, "FixedInt8ArrayMap"), + ("MAP_SPACE", 0x041f9): (142, "FixedUint16ArrayMap"), + ("MAP_SPACE", 0x04251): (141, "FixedInt16ArrayMap"), + ("MAP_SPACE", 0x042a9): (144, "FixedUint32ArrayMap"), + ("MAP_SPACE", 0x04301): (143, "FixedInt32ArrayMap"), + ("MAP_SPACE", 0x04359): (145, "FixedFloat32ArrayMap"), + ("MAP_SPACE", 0x043b1): (146, "FixedFloat64ArrayMap"), + ("MAP_SPACE", 0x04409): (147, "FixedUint8ClampedArrayMap"), + ("MAP_SPACE", 0x04461): (149, "FixedBigUint64ArrayMap"), + ("MAP_SPACE", 0x044b9): (148, "FixedBigInt64ArrayMap"), + ("MAP_SPACE", 0x04511): (173, "Tuple2Map"), + ("MAP_SPACE", 0x04569): (171, "ScriptMap"), + ("MAP_SPACE", 0x045c1): (163, "InterceptorInfoMap"), + ("MAP_SPACE", 0x04619): (158, "AllocationSiteMap"), + ("MAP_SPACE", 0x04671): (154, "AccessorInfoMap"), + ("MAP_SPACE", 0x046c9): (153, "AccessCheckInfoMap"), + ("MAP_SPACE", 0x04721): (155, "AccessorPairMap"), + ("MAP_SPACE", 0x04779): (156, "AliasedArgumentsEntryMap"), + ("MAP_SPACE", 0x047d1): (157, "AllocationMementoMap"), + ("MAP_SPACE", 0x04829): (159, "AsyncGeneratorRequestMap"), + ("MAP_SPACE", 0x04881): (160, "ContextExtensionMap"), + ("MAP_SPACE", 0x048d9): (161, "DebugInfoMap"), + ("MAP_SPACE", 0x04931): (162, "FunctionTemplateInfoMap"), + ("MAP_SPACE", 0x04989): (164, "InterpreterDataMap"), + ("MAP_SPACE", 0x049e1): (165, "ModuleInfoEntryMap"), + ("MAP_SPACE", 0x04a39): (166, "ModuleMap"), + ("MAP_SPACE", 0x04a91): (167, "ObjectTemplateInfoMap"), + ("MAP_SPACE", 0x04ae9): (168, "PromiseCapabilityMap"), + ("MAP_SPACE", 0x04b41): (169, "PromiseReactionMap"), + ("MAP_SPACE", 0x04b99): (170, "PrototypeInfoMap"), + ("MAP_SPACE", 0x04bf1): (172, "StackFrameInfoMap"), + ("MAP_SPACE", 0x04c49): (174, "Tuple3Map"), + ("MAP_SPACE", 0x04ca1): (175, "WasmCompiledModuleMap"), + ("MAP_SPACE", 0x04cf9): (176, "WasmDebugInfoMap"), + ("MAP_SPACE", 0x04d51): (177, "WasmSharedModuleDataMap"), + ("MAP_SPACE", 0x04da9): (178, "CallableTaskMap"), + ("MAP_SPACE", 0x04e01): (179, "CallbackTaskMap"), + ("MAP_SPACE", 0x04e59): (180, "PromiseFulfillReactionJobTaskMap"), + ("MAP_SPACE", 0x04eb1): (181, "PromiseRejectReactionJobTaskMap"), + ("MAP_SPACE", 0x04f09): (182, "PromiseResolveThenableJobTaskMap"), } # List of known V8 objects. @@ -322,34 +311,35 @@ ("OLD_SPACE", 0x02519): "TerminationException", ("OLD_SPACE", 0x02579): "OptimizedOut", ("OLD_SPACE", 0x025d1): "StaleRegister", - ("OLD_SPACE", 0x02651): "EmptyByteArray", - ("OLD_SPACE", 0x02661): "EmptyFixedUint8Array", - ("OLD_SPACE", 0x02681): "EmptyFixedInt8Array", - ("OLD_SPACE", 0x026a1): "EmptyFixedUint16Array", - ("OLD_SPACE", 0x026c1): "EmptyFixedInt16Array", - ("OLD_SPACE", 0x026e1): "EmptyFixedUint32Array", - ("OLD_SPACE", 0x02701): "EmptyFixedInt32Array", - ("OLD_SPACE", 0x02721): "EmptyFixedFloat32Array", - ("OLD_SPACE", 0x02741): "EmptyFixedFloat64Array", - ("OLD_SPACE", 0x02761): "EmptyFixedUint8ClampedArray", - ("OLD_SPACE", 0x027c1): "EmptyScript", - ("OLD_SPACE", 0x02849): "ManyClosuresCell", - ("OLD_SPACE", 0x02859): "EmptySloppyArgumentsElements", - ("OLD_SPACE", 0x02879): "EmptySlowElementDictionary", - ("OLD_SPACE", 0x028c1): "EmptyOrderedHashMap", - ("OLD_SPACE", 0x028e9): "EmptyOrderedHashSet", - ("OLD_SPACE", 0x02911): "EmptyPropertyCell", - ("OLD_SPACE", 0x02939): "EmptyWeakCell", - ("OLD_SPACE", 0x029a9): "NoElementsProtector", - ("OLD_SPACE", 0x029d1): "IsConcatSpreadableProtector", - ("OLD_SPACE", 0x029e1): "SpeciesProtector", - ("OLD_SPACE", 0x02a09): "StringLengthProtector", - ("OLD_SPACE", 0x02a19): "FastArrayIterationProtector", - ("OLD_SPACE", 0x02a29): "ArrayIteratorProtector", - ("OLD_SPACE", 0x02a51): "ArrayBufferNeuteringProtector", - ("OLD_SPACE", 0x02ac9): "InfinityValue", - ("OLD_SPACE", 0x02ad9): "MinusZeroValue", - ("OLD_SPACE", 0x02ae9): "MinusInfinityValue", + ("OLD_SPACE", 0x02661): "EmptyByteArray", + ("OLD_SPACE", 0x02681): "EmptyFixedUint8Array", + ("OLD_SPACE", 0x026a1): "EmptyFixedInt8Array", + ("OLD_SPACE", 0x026c1): "EmptyFixedUint16Array", + ("OLD_SPACE", 0x026e1): "EmptyFixedInt16Array", + ("OLD_SPACE", 0x02701): "EmptyFixedUint32Array", + ("OLD_SPACE", 0x02721): "EmptyFixedInt32Array", + ("OLD_SPACE", 0x02741): "EmptyFixedFloat32Array", + ("OLD_SPACE", 0x02761): "EmptyFixedFloat64Array", + ("OLD_SPACE", 0x02781): "EmptyFixedUint8ClampedArray", + ("OLD_SPACE", 0x027e1): "EmptyScript", + ("OLD_SPACE", 0x02879): "ManyClosuresCell", + ("OLD_SPACE", 0x02889): "EmptySloppyArgumentsElements", + ("OLD_SPACE", 0x028a9): "EmptySlowElementDictionary", + ("OLD_SPACE", 0x028f1): "EmptyOrderedHashMap", + ("OLD_SPACE", 0x02919): "EmptyOrderedHashSet", + ("OLD_SPACE", 0x02951): "EmptyPropertyCell", + ("OLD_SPACE", 0x02979): "EmptyWeakCell", + ("OLD_SPACE", 0x029e9): "NoElementsProtector", + ("OLD_SPACE", 0x02a11): "IsConcatSpreadableProtector", + ("OLD_SPACE", 0x02a21): "ArraySpeciesProtector", + ("OLD_SPACE", 0x02a49): "TypedArraySpeciesProtector", + ("OLD_SPACE", 0x02a71): "PromiseSpeciesProtector", + ("OLD_SPACE", 0x02a99): "StringLengthProtector", + ("OLD_SPACE", 0x02aa9): "ArrayIteratorProtector", + ("OLD_SPACE", 0x02ad1): "ArrayBufferNeuteringProtector", + ("OLD_SPACE", 0x02b59): "InfinityValue", + ("OLD_SPACE", 0x02b69): "MinusZeroValue", + ("OLD_SPACE", 0x02b79): "MinusInfinityValue", } # List of known V8 Frame Markers. @@ -360,7 +350,6 @@ "OPTIMIZED", "WASM_COMPILED", "WASM_TO_JS", - "WASM_TO_WASM", "JS_TO_WASM", "WASM_INTERPRETER_ENTRY", "C_WASM_ENTRY", @@ -368,6 +357,7 @@ "STUB", "BUILTIN_CONTINUATION", "JAVA_SCRIPT_BUILTIN_CONTINUATION", + "JAVA_SCRIPT_BUILTIN_CONTINUATION_WITH_CATCH", "INTERNAL", "CONSTRUCT", "ARGUMENTS_ADAPTOR", @@ -376,4 +366,4 @@ "NATIVE", ) -# This set of constants is generated from a shipping build. +# This set of constants is generated from a non-shipping build. diff --git a/deps/v8/tools/valgrind/asan/dummy b/deps/v8/tools/valgrind/asan/dummy new file mode 100644 index 00000000000000..0e89814954ce81 --- /dev/null +++ b/deps/v8/tools/valgrind/asan/dummy @@ -0,0 +1,2 @@ +# src/base has some more tools in this folder, which we don't use. But we need +# to have the folder so that the data deps we inherit doesn't error out. \ No newline at end of file diff --git a/deps/v8/tools/whitespace.txt b/deps/v8/tools/whitespace.txt index 2367b2ccc89323..ed5e51f96a63e8 100644 --- a/deps/v8/tools/whitespace.txt +++ b/deps/v8/tools/whitespace.txt @@ -7,6 +7,6 @@ A Smi balks into a war and says: The doubles heard this and started to unbox. The Smi looked at them when a crazy v8-autoroll account showed up... The autoroller bought a round of Himbeerbrause. Suddenly... -The bartender starts to shake the bottles........ +The bartender starts to shake the bottles....................... . . diff --git a/doc/STYLE_GUIDE.md b/doc/STYLE_GUIDE.md index a875a31b83d14a..610b012dda5570 100644 --- a/doc/STYLE_GUIDE.md +++ b/doc/STYLE_GUIDE.md @@ -26,8 +26,7 @@ fragment of a clause. * Place end-of-sentence punctuation inside wrapping elements — periods go inside parentheses and quotes, not after. -* Documents must start with a level-one heading. An example document will be - linked here eventually. +* Documents must start with a level-one heading. * Prefer affixing links to inlining links — prefer `[a link][]` to `[a link](http://example.com)`. * When documenting APIs, note the version the API was introduced in at diff --git a/doc/api/addons.md b/doc/api/addons.md index afbbdd843cb223..a0e16cff3521d4 100644 --- a/doc/api/addons.md +++ b/doc/api/addons.md @@ -224,7 +224,7 @@ illustration of how it can be used. N-API is an API for building native Addons. It is independent from the underlying JavaScript runtime (e.g. V8) and is maintained as part of Node.js itself. This API will be Application Binary Interface (ABI) stable -across version of Node.js. It is intended to insulate Addons from +across versions of Node.js. It is intended to insulate Addons from changes in the underlying JavaScript engine and allow modules compiled for one version to run on later versions of Node.js without recompilation. Addons are built/packaged with the same approach/tools diff --git a/doc/api/crypto.md b/doc/api/crypto.md index c985d92ca39e16..276570cff4a1a8 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -1897,7 +1897,8 @@ added: v0.11.14 - `passphrase` {string} An optional passphrase for the private key. - `padding` {crypto.constants} An optional padding value defined in `crypto.constants`, which may be: `crypto.constants.RSA_NO_PADDING`, - `RSA_PKCS1_PADDING`, or `crypto.constants.RSA_PKCS1_OAEP_PADDING`. + `crypto.constants.RSA_PKCS1_PADDING`, or + `crypto.constants.RSA_PKCS1_OAEP_PADDING`. - `buffer` {Buffer | TypedArray | DataView} - Returns: {Buffer} A new `Buffer` with the decrypted content. @@ -1915,7 +1916,7 @@ added: v1.1.0 - `passphrase` {string} An optional passphrase for the private key. - `padding` {crypto.constants} An optional padding value defined in `crypto.constants`, which may be: `crypto.constants.RSA_NO_PADDING` or - `RSA_PKCS1_PADDING`. + `crypto.constants.RSA_PKCS1_PADDING`. - `buffer` {Buffer | TypedArray | DataView} - Returns: {Buffer} A new `Buffer` with the encrypted content. @@ -1933,7 +1934,7 @@ added: v1.1.0 - `passphrase` {string} An optional passphrase for the private key. - `padding` {crypto.constants} An optional padding value defined in `crypto.constants`, which may be: `crypto.constants.RSA_NO_PADDING` or - `RSA_PKCS1_PADDING`. + `crypto.constants.RSA_PKCS1_PADDING`. - `buffer` {Buffer | TypedArray | DataView} - Returns: {Buffer} A new `Buffer` with the decrypted content. @@ -1954,7 +1955,8 @@ added: v0.11.14 - `passphrase` {string} An optional passphrase for the private key. - `padding` {crypto.constants} An optional padding value defined in `crypto.constants`, which may be: `crypto.constants.RSA_NO_PADDING`, - `RSA_PKCS1_PADDING`, or `crypto.constants.RSA_PKCS1_OAEP_PADDING`. + `crypto.constants.RSA_PKCS1_PADDING`, or + `crypto.constants.RSA_PKCS1_OAEP_PADDING`. - `buffer` {Buffer | TypedArray | DataView} - Returns: {Buffer} A new `Buffer` with the encrypted content. diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 2f20bc5d891fd8..49631d2fca9d46 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -4,8 +4,8 @@ Node.js may deprecate APIs when either: (a) use of the API is considered to be -unsafe, (b) an improved alternative API has been made available, or (c) -breaking changes to the API are expected in a future major release. +unsafe, (b) an improved alternative API is available, or (c) breaking changes to +the API are expected in a future major release. Node.js utilizes three kinds of Deprecations: @@ -27,8 +27,8 @@ be printed to `stderr` the first time the deprecated API is used. When the `--throw-deprecation` command-line flag is used, a Runtime deprecation will cause an error to be thrown. -An End-of-Life deprecation is used to identify code that either has been -removed or will soon be removed from Node.js. +An End-of-Life deprecation is used when functionality is or will soon be removed +from Node.js. ## Revoking deprecations @@ -123,7 +123,7 @@ precisely describe the actual semantics and was unnecessarily emotion-laden. Type: Documentation-only -The `constants` module has been deprecated. When requiring access to constants +The `constants` module is deprecated. When requiring access to constants relevant to specific Node.js builtin modules, developers should instead refer to the `constants` property exposed by the relevant module. For instance, `require('fs').constants` and `require('os').constants`. @@ -303,7 +303,7 @@ instead. Type: Documentation-only -The [`SlowBuffer`][] class has been deprecated. Please use +The [`SlowBuffer`][] class is deprecated. Please use [`Buffer.allocUnsafeSlow(size)`][] instead. @@ -326,7 +326,7 @@ The [`domain`][] module is deprecated and should not be used. Type: Documentation-only -The [`EventEmitter.listenerCount(emitter, eventName)`][] API has been +The [`EventEmitter.listenerCount(emitter, eventName)`][] API is deprecated. Please use [`emitter.listenerCount(eventName)`][] instead. @@ -334,7 +334,7 @@ deprecated. Please use [`emitter.listenerCount(eventName)`][] instead. Type: Documentation-only -The [`fs.exists(path, callback)`][] API has been deprecated. Please use +The [`fs.exists(path, callback)`][] API is deprecated. Please use [`fs.stat()`][] or [`fs.access()`][] instead. @@ -342,42 +342,42 @@ The [`fs.exists(path, callback)`][] API has been deprecated. Please use Type: Documentation-only -The [`fs.lchmod(path, mode, callback)`][] API has been deprecated. +The [`fs.lchmod(path, mode, callback)`][] API is deprecated. ### DEP0036: fs.lchmodSync(path, mode) Type: Documentation-only -The [`fs.lchmodSync(path, mode)`][] API has been deprecated. +The [`fs.lchmodSync(path, mode)`][] API is deprecated. ### DEP0037: fs.lchown(path, uid, gid, callback) Type: Documentation-only -The [`fs.lchown(path, uid, gid, callback)`][] API has been deprecated. +The [`fs.lchown(path, uid, gid, callback)`][] API is deprecated. ### DEP0038: fs.lchownSync(path, uid, gid) Type: Documentation-only -The [`fs.lchownSync(path, uid, gid)`][] API has been deprecated. +The [`fs.lchownSync(path, uid, gid)`][] API is deprecated. ### DEP0039: require.extensions Type: Documentation-only -The [`require.extensions`][] property has been deprecated. +The [`require.extensions`][] property is deprecated. ### DEP0040: punycode module Type: Documentation-only -The [`punycode`][] module has been deprecated. Please use a userland alternative +The [`punycode`][] module is deprecated. Please use a userland alternative instead. @@ -393,7 +393,7 @@ The `NODE_REPL_HISTORY_FILE` environment variable was removed. Please use Type: Documentation-only -The [`tls.CryptoStream`][] class has been deprecated. Please use +The [`tls.CryptoStream`][] class is deprecated. Please use [`tls.TLSSocket`][] instead. @@ -401,7 +401,7 @@ The [`tls.CryptoStream`][] class has been deprecated. Please use Type: Documentation-only -The [`tls.SecurePair`][] class has been deprecated. Please use +The [`tls.SecurePair`][] class is deprecated. Please use [`tls.TLSSocket`][] instead. @@ -409,7 +409,7 @@ The [`tls.SecurePair`][] class has been deprecated. Please use Type: Documentation-only -The [`util.isArray()`][] API has been deprecated. Please use `Array.isArray()` +The [`util.isArray()`][] API is deprecated. Please use `Array.isArray()` instead. @@ -417,14 +417,14 @@ instead. Type: Documentation-only -The [`util.isBoolean()`][] API has been deprecated. +The [`util.isBoolean()`][] API is deprecated. ### DEP0046: util.isBuffer() Type: Documentation-only -The [`util.isBuffer()`][] API has been deprecated. Please use +The [`util.isBuffer()`][] API is deprecated. Please use [`Buffer.isBuffer()`][] instead. @@ -432,98 +432,98 @@ The [`util.isBuffer()`][] API has been deprecated. Please use Type: Documentation-only -The [`util.isDate()`][] API has been deprecated. +The [`util.isDate()`][] API is deprecated. ### DEP0048: util.isError() Type: Documentation-only -The [`util.isError()`][] API has been deprecated. +The [`util.isError()`][] API is deprecated. ### DEP0049: util.isFunction() Type: Documentation-only -The [`util.isFunction()`][] API has been deprecated. +The [`util.isFunction()`][] API is deprecated. ### DEP0050: util.isNull() Type: Documentation-only -The [`util.isNull()`][] API has been deprecated. +The [`util.isNull()`][] API is deprecated. ### DEP0051: util.isNullOrUndefined() Type: Documentation-only -The [`util.isNullOrUndefined()`][] API has been deprecated. +The [`util.isNullOrUndefined()`][] API is deprecated. ### DEP0052: util.isNumber() Type: Documentation-only -The [`util.isNumber()`][] API has been deprecated. +The [`util.isNumber()`][] API is deprecated. ### DEP0053 util.isObject() Type: Documentation-only -The [`util.isObject()`][] API has been deprecated. +The [`util.isObject()`][] API is deprecated. ### DEP0054: util.isPrimitive() Type: Documentation-only -The [`util.isPrimitive()`][] API has been deprecated. +The [`util.isPrimitive()`][] API is deprecated. ### DEP0055: util.isRegExp() Type: Documentation-only -The [`util.isRegExp()`][] API has been deprecated. +The [`util.isRegExp()`][] API is deprecated. ### DEP0056: util.isString() Type: Documentation-only -The [`util.isString()`][] API has been deprecated. +The [`util.isString()`][] API is deprecated. ### DEP0057: util.isSymbol() Type: Documentation-only -The [`util.isSymbol()`][] API has been deprecated. +The [`util.isSymbol()`][] API is deprecated. ### DEP0058: util.isUndefined() Type: Documentation-only -The [`util.isUndefined()`][] API has been deprecated. +The [`util.isUndefined()`][] API is deprecated. ### DEP0059: util.log() Type: Documentation-only -The [`util.log()`][] API has been deprecated. +The [`util.log()`][] API is deprecated. ### DEP0060: util.\_extend() Type: Documentation-only -The [`util._extend()`][] API has been deprecated. +The [`util._extend()`][] API is deprecated. ### DEP0061: fs.SyncWriteStream @@ -538,7 +538,7 @@ API. No alternative API is available. Please use a userland alternative. Type: Runtime -`--debug` activates the legacy V8 debugger interface, which has been removed as +`--debug` activates the legacy V8 debugger interface, which was removed as of V8 5.8. It is replaced by Inspector which is activated with `--inspect` instead. @@ -547,7 +547,7 @@ instead. Type: Documentation-only -The `http` module `ServerResponse.prototype.writeHeader()` API has been +The `http` module `ServerResponse.prototype.writeHeader()` API is deprecated. Please use `ServerResponse.prototype.writeHead()` instead. The `ServerResponse.prototype.writeHeader()` method was never documented as an @@ -595,7 +595,7 @@ were never documented as officially supported properties. Type: Documentation-only -The `http` module `OutgoingMessage.prototype._renderHeaders()` API has been +The `http` module `OutgoingMessage.prototype._renderHeaders()` API is deprecated. The `OutgoingMessage.prototype._renderHeaders` property was never documented as @@ -654,7 +654,7 @@ This change was made while `async_hooks` was an experimental API. Type: End-of-Life Accessing several internal, undocumented properties of `net.Server` instances -with inappropriate names has been deprecated. +with inappropriate names is deprecated. As the original API was undocumented and not generally useful for non-internal code, no replacement API is provided. @@ -702,7 +702,7 @@ difference is that `querystring.parse()` does url decoding: Type: Runtime -`Module._debug()` has been deprecated. +`Module._debug()` is deprecated. The `Module._debug()` function was never documented as an officially supported API. diff --git a/doc/api/dns.md b/doc/api/dns.md index 74504910c24107..93f91a6e351c65 100644 --- a/doc/api/dns.md +++ b/doc/api/dns.md @@ -508,7 +508,7 @@ will be present on the object: | `'PTR'` | `value` | | `'SOA'` | Refer to [`dns.resolveSoa()`][] | | `'SRV'` | Refer to [`dns.resolveSrv()`][] | -| `'TXT'` | This type of record contains an array property called `entries` which refers to [`dns.resolveTxt()`][], eg. `{ entries: ['...'], type: 'TXT' }` | +| `'TXT'` | This type of record contains an array property called `entries` which refers to [`dns.resolveTxt()`][], e.g. `{ entries: ['...'], type: 'TXT' }` | Here is an example of the `ret` object passed to the callback: diff --git a/doc/api/fs.md b/doc/api/fs.md index c3aa16ac2515ef..c2daa8d71a5055 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -2136,7 +2136,7 @@ by [Naming Files, Paths, and Namespaces][]. Under NTFS, if the filename contains a colon, Node.js will open a file system stream, as described by [this MSDN page][MSDN-Using-Streams]. -Functions based on `fs.open()` exhibit this behavior as well. eg. +Functions based on `fs.open()` exhibit this behavior as well: `fs.writeFile()`, `fs.readFile()`, etc. ## fs.openSync(path, flags[, mode]) @@ -2481,7 +2481,7 @@ changes: Asynchronously computes the canonical pathname by resolving `.`, `..` and symbolic links. -Note that "canonical" does not mean "unique": hard links and bind mounts can +A canonical pathname is not necessarily unique. Hard links and bind mounts can expose a file system entity through many pathnames. This function behaves like realpath(3), with some exceptions: @@ -2556,26 +2556,7 @@ changes: * `encoding` {string} **Default:** `'utf8'` * Returns: {string|Buffer} -Synchronously computes the canonical pathname by resolving `.`, `..` and -symbolic links. - -Note that "canonical" does not mean "unique": hard links and bind mounts can -expose a file system entity through many pathnames. - -This function behaves like realpath(3), with some exceptions: - -1. No case conversion is performed on case-insensitive file systems. - -2. The maximum number of symbolic links is platform-independent and generally - (much) higher than what the native realpath(3) implementation supports. - -The optional `options` argument can be a string specifying an encoding, or an -object with an `encoding` property specifying the character encoding to use for -the returned value. If the `encoding` is set to `'buffer'`, the path returned -will be passed as a `Buffer` object. - -If `path` resolves to a socket or a pipe, the function will return a system -dependent name for that object. +Synchronous version of [`fs.realpath()`][]. Returns the resolved pathname. ## fs.realpathSync.native(path[, options])