summaryrefslogtreecommitdiff
path: root/deps/v8/tools
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2021-07-14 11:30:07 +0200
committerMichaël Zasso <targos@protonmail.com>2021-07-20 15:24:51 +0200
commit6cdd310275bb0f8056aa0ae6d95614e9ca5b70c7 (patch)
tree9ed37b19cd668894854b7f469010f7621e63ef81 /deps/v8/tools
parentc0f10006c82d2d9896a552de98ed146f9542720d (diff)
downloadnode-new-6cdd310275bb0f8056aa0ae6d95614e9ca5b70c7.tar.gz
deps: update V8 to 9.2.230.21
PR-URL: https://github.com/nodejs/node/pull/38990 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/v8/tools')
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/baseline/d8.py5
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/build3/d8.py7
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt50
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt50
-rwxr-xr-xdeps/v8/tools/clusterfuzz/v8_foozzie.py87
-rwxr-xr-xdeps/v8/tools/clusterfuzz/v8_foozzie_test.py32
-rw-r--r--deps/v8/tools/clusterfuzz/v8_mock.js12
-rw-r--r--deps/v8/tools/codemap.mjs11
-rwxr-xr-xdeps/v8/tools/cppgc/gen_cmake.py4
-rw-r--r--deps/v8/tools/debug_helper/get-object-properties.cc14
-rwxr-xr-xdeps/v8/tools/dev/gm.py7
-rwxr-xr-xdeps/v8/tools/dev/v8gen.py10
-rwxr-xr-xdeps/v8/tools/generate-header-include-checks.py2
-rwxr-xr-xdeps/v8/tools/mb/mb.py17
-rw-r--r--deps/v8/tools/profile.mjs13
-rw-r--r--deps/v8/tools/profview/profile-utils.js63
-rw-r--r--deps/v8/tools/profview/profview.js166
-rwxr-xr-xdeps/v8/tools/release/auto_roll.py4
-rwxr-xr-xdeps/v8/tools/release/test_scripts.py4
-rw-r--r--deps/v8/tools/system-analyzer/index.css2
-rw-r--r--deps/v8/tools/system-analyzer/index.mjs14
-rw-r--r--deps/v8/tools/system-analyzer/processor.mjs24
-rw-r--r--deps/v8/tools/system-analyzer/view/code-panel-template.html4
-rw-r--r--deps/v8/tools/system-analyzer/view/code-panel.mjs13
-rw-r--r--deps/v8/tools/system-analyzer/view/helper.mjs95
-rw-r--r--deps/v8/tools/system-analyzer/view/list-panel-template.html4
-rw-r--r--deps/v8/tools/system-analyzer/view/list-panel.mjs20
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel-template.html2
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel.mjs197
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs2
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs2
-rw-r--r--deps/v8/tools/system-analyzer/view/script-panel-template.html10
-rw-r--r--deps/v8/tools/system-analyzer/view/script-panel.mjs6
-rw-r--r--deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs4
-rw-r--r--deps/v8/tools/system-analyzer/view/tool-tip-template.html1
-rw-r--r--deps/v8/tools/system-analyzer/view/tool-tip.mjs7
-rw-r--r--deps/v8/tools/testrunner/base_runner.py36
-rw-r--r--deps/v8/tools/testrunner/local/junit_output.py49
-rw-r--r--deps/v8/tools/testrunner/local/statusfile.py2
-rw-r--r--deps/v8/tools/testrunner/local/utils.py52
-rw-r--r--deps/v8/tools/testrunner/local/variants.py20
-rw-r--r--deps/v8/tools/testrunner/outproc/message.py8
-rwxr-xr-xdeps/v8/tools/testrunner/standard_runner.py2
-rw-r--r--deps/v8/tools/testrunner/testproc/fuzzer.py1
-rw-r--r--deps/v8/tools/testrunner/testproc/progress.py40
-rw-r--r--deps/v8/tools/tickprocessor-driver.mjs8
-rw-r--r--deps/v8/tools/tickprocessor.mjs25
-rw-r--r--deps/v8/tools/ubsan/ignorelist.txt (renamed from deps/v8/tools/ubsan/blacklist.txt)2
-rw-r--r--deps/v8/tools/ubsan/vptr_ignorelist.txt (renamed from deps/v8/tools/ubsan/vptr_blacklist.txt)6
-rwxr-xr-xdeps/v8/tools/unittests/run_tests_test.py3
-rw-r--r--deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json3
-rw-r--r--deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json3
-rw-r--r--deps/v8/tools/v8.xcodeproj/README.txt11
-rwxr-xr-xdeps/v8/tools/v8_presubmit.py3
-rw-r--r--deps/v8/tools/v8heapconst.py650
-rw-r--r--deps/v8/tools/v8windbg/BUILD.gn5
-rw-r--r--deps/v8/tools/v8windbg/README.md4
-rw-r--r--deps/v8/tools/v8windbg/src/list-chunks.cc238
-rw-r--r--deps/v8/tools/v8windbg/src/list-chunks.h100
-rw-r--r--deps/v8/tools/v8windbg/src/v8windbg-extension.cc4
-rw-r--r--deps/v8/tools/whitespace.txt4
61 files changed, 1125 insertions, 1119 deletions
diff --git a/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py b/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py
index 4a3d008077..cd729b9cf7 100644
--- a/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py
+++ b/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py
@@ -5,6 +5,8 @@
# for py2/py3 compatibility
from __future__ import print_function
+import sys
+
print("""
1
v8-foozzie source: name/to/a/file.js
@@ -15,3 +17,6 @@ v8-foozzie source: name/to/file.js
3
unknown
""")
+
+if '--bad-flag' in sys.argv:
+ print('bad behavior')
diff --git a/deps/v8/tools/clusterfuzz/testdata/build3/d8.py b/deps/v8/tools/clusterfuzz/testdata/build3/d8.py
index 824b222485..a48a591d1e 100644
--- a/deps/v8/tools/clusterfuzz/testdata/build3/d8.py
+++ b/deps/v8/tools/clusterfuzz/testdata/build3/d8.py
@@ -5,6 +5,8 @@
# for py2/py3 compatibility
from __future__ import print_function
+import sys
+
print("""
1
v8-foozzie source: name/to/a/file.js
@@ -15,3 +17,8 @@ v8-foozzie source: name/to/file.js
3
unknown
""")
+
+if '--bad-flag' in sys.argv:
+ print('bad behavior')
+if '--very-bad-flag' in sys.argv:
+ print('very bad behavior')
diff --git a/deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt b/deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt
new file mode 100644
index 0000000000..bf72649c3e
--- /dev/null
+++ b/deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt
@@ -0,0 +1,50 @@
+#
+# V8 correctness failure
+# V8 correctness configs: x64,ignition:x64,ignition_turbo
+# V8 correctness sources: f60
+# V8 correctness suppression:
+#
+# CHECK
+#
+# Compared x64,ignition with x64,ignition_turbo
+#
+# Flags of x64,ignition:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --turbo-filter=~ --noopt --liftoff --no-wasm-tier-up
+# Flags of x64,ignition_turbo:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --bad-flag
+#
+# Difference:
++ bad behavior
+#
+# Source file:
+name/to/file.js
+#
+### Start of configuration x64,ignition:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird error
+ ^
+3
+unknown
+
+
+### End of configuration x64,ignition
+#
+### Start of configuration x64,ignition_turbo:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird error
+ ^
+3
+unknown
+
+bad behavior
+
+### End of configuration x64,ignition_turbo
+
diff --git a/deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt b/deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt
new file mode 100644
index 0000000000..030168884f
--- /dev/null
+++ b/deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt
@@ -0,0 +1,50 @@
+#
+# V8 correctness failure
+# V8 correctness configs: x64,ignition:ia32,ignition_turbo
+# V8 correctness sources: f60
+# V8 correctness suppression:
+#
+# CHECK
+#
+# Compared x64,ignition with ia32,ignition_turbo
+#
+# Flags of x64,ignition:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --turbo-filter=~ --noopt --liftoff --no-wasm-tier-up
+# Flags of ia32,ignition_turbo:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --very-bad-flag
+#
+# Difference:
++ very bad behavior
+#
+# Source file:
+name/to/file.js
+#
+### Start of configuration x64,ignition:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird error
+ ^
+3
+unknown
+
+
+### End of configuration x64,ignition
+#
+### Start of configuration ia32,ignition_turbo:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird other error
+^
+3
+unknown
+
+very bad behavior
+
+### End of configuration ia32,ignition_turbo
+
diff --git a/deps/v8/tools/clusterfuzz/v8_foozzie.py b/deps/v8/tools/clusterfuzz/v8_foozzie.py
index 9f3810c9f5..52b7954093 100755
--- a/deps/v8/tools/clusterfuzz/v8_foozzie.py
+++ b/deps/v8/tools/clusterfuzz/v8_foozzie.py
@@ -211,14 +211,14 @@ class ExecutionArgumentsConfig(object):
'default: bundled in the directory of this script',
default=DEFAULT_D8)
- def make_options(self, options, default_config=None):
+ def make_options(self, options, default_config=None, default_d8=None):
def get(name):
return getattr(options, '%s_%s' % (self.label, name))
config = default_config or get('config')
assert config in CONFIGS
- d8 = get('d8')
+ d8 = default_d8 or get('d8')
if not os.path.isabs(d8):
d8 = os.path.join(BASE_PATH, d8)
assert os.path.exists(d8)
@@ -239,6 +239,13 @@ class ExecutionConfig(object):
flags = getattr(options, label).flags
self.command = Command(options, label, d8, flags)
+ # Options for a fallback configuration only exist when comparing
+ # different architectures.
+ fallback_label = label + '_fallback'
+ self.fallback = None
+ if getattr(options, fallback_label, None):
+ self.fallback = ExecutionConfig(options, fallback_label)
+
@property
def flags(self):
return self.command.flags
@@ -278,7 +285,15 @@ def parse_args():
options.first = first_config_arguments.make_options(options)
options.second = second_config_arguments.make_options(options)
options.default = second_config_arguments.make_options(
- options, DEFAULT_CONFIG)
+ options, default_config=DEFAULT_CONFIG)
+
+ # Use fallback configurations only on diffrent architectures. In this
+ # case we are going to re-test against the first architecture.
+ if options.first.arch != options.second.arch:
+ options.second_fallback = second_config_arguments.make_options(
+ options, default_d8=options.first.d8)
+ options.default_fallback = second_config_arguments.make_options(
+ options, default_config=DEFAULT_CONFIG, default_d8=options.first.d8)
# Ensure we make a valid comparison.
if (options.first.d8 == options.second.d8 and
@@ -315,10 +330,12 @@ def fail_bailout(output, ignore_by_output_fun):
def format_difference(
- source_key, first_config, second_config,
- first_config_output, second_config_output, difference, source=None):
+ first_config, second_config,
+ first_config_output, second_config_output,
+ difference, source_key=None, source=None):
# The first three entries will be parsed by clusterfuzz. Format changes
# will require changes on the clusterfuzz side.
+ source_key = source_key or cluster_failures(source)
first_config_label = '%s,%s' % (first_config.arch, first_config.config)
second_config_label = '%s,%s' % (second_config.arch, second_config.config)
source_file_text = SOURCE_FILE_TEMPLATE % source if source else ''
@@ -376,6 +393,29 @@ def cluster_failures(source, known_failures=None):
return long_key[:ORIGINAL_SOURCE_HASH_LENGTH]
+class RepeatedRuns(object):
+ """Helper class for storing statistical data from repeated runs."""
+ def __init__(self, test_case, timeout, verbose):
+ self.test_case = test_case
+ self.timeout = timeout
+ self.verbose = verbose
+
+ # Stores if any run has crashed or was simulated.
+ self.has_crashed = False
+ self.simulated = False
+
+ def run(self, config):
+ comparison_output = config.command.run(
+ self.test_case, timeout=self.timeout, verbose=self.verbose)
+ self.has_crashed = self.has_crashed or comparison_output.HasCrashed()
+ self.simulated = self.simulated or config.is_error_simulation
+ return comparison_output
+
+ @property
+ def crash_state(self):
+ return '_simulated_crash_' if self.simulated else '_unexpected_crash_'
+
+
def run_comparisons(suppress, execution_configs, test_case, timeout,
verbose=True, ignore_crashes=True, source_key=None):
"""Runs different configurations and bails out on output difference.
@@ -393,20 +433,15 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
source_key: A fixed source key. If not given, it will be inferred from the
output.
"""
- run_test_case = lambda config: config.command.run(
- test_case, timeout=timeout, verbose=verbose)
+ runner = RepeatedRuns(test_case, timeout, verbose)
# Run the baseline configuration.
baseline_config = execution_configs[0]
- baseline_output = run_test_case(baseline_config)
- has_crashed = baseline_output.HasCrashed()
- simulated = baseline_config.is_error_simulation
+ baseline_output = runner.run(baseline_config)
# Iterate over the remaining configurations, run and compare.
for comparison_config in execution_configs[1:]:
- comparison_output = run_test_case(comparison_config)
- has_crashed = has_crashed or comparison_output.HasCrashed()
- simulated = simulated or comparison_config.is_error_simulation
+ comparison_output = runner.run(comparison_config)
difference, source = suppress.diff(baseline_output, comparison_output)
if difference:
@@ -416,12 +451,25 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
fail_bailout(baseline_output, suppress.ignore_by_output)
fail_bailout(comparison_output, suppress.ignore_by_output)
- source_key = source_key or cluster_failures(source)
+ # Check if a difference also occurs with the fallback configuration and
+ # give it precedence. E.g. we always prefer x64 differences.
+ if comparison_config.fallback:
+ fallback_output = runner.run(comparison_config.fallback)
+ fallback_difference, fallback_source = suppress.diff(
+ baseline_output, fallback_output)
+ if fallback_difference:
+ fail_bailout(fallback_output, suppress.ignore_by_output)
+ source = fallback_source
+ comparison_config = comparison_config.fallback
+ comparison_output = fallback_output
+ difference = fallback_difference
+
raise FailException(format_difference(
- source_key, baseline_config, comparison_config,
- baseline_output, comparison_output, difference, source))
+ baseline_config, comparison_config,
+ baseline_output, comparison_output,
+ difference, source_key, source))
- if has_crashed:
+ if runner.has_crashed:
if ignore_crashes:
# Show if a crash has happened in one of the runs and no difference was
# detected. This is only for the statistics during experiments.
@@ -429,9 +477,8 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
else:
# Subsume simulated and unexpected crashes (e.g. during smoke tests)
# with one failure state.
- crash_state = '_simulated_crash_' if simulated else '_unexpected_crash_'
raise FailException(FAILURE_HEADER_TEMPLATE % dict(
- configs='', source_key='', suppression=crash_state))
+ configs='', source_key='', suppression=runner.crash_state))
def main():
@@ -448,7 +495,7 @@ def main():
content_bailout(content, suppress.ignore_by_content)
# Prepare the baseline, default and a secondary configuration to compare to.
- # The baseline (turbofan) takes precedence as many of the secondary configs
+ # The default (turbofan) takes precedence as many of the secondary configs
# are based on the turbofan config with additional parameters.
execution_configs = [
ExecutionConfig(options, 'first'),
diff --git a/deps/v8/tools/clusterfuzz/v8_foozzie_test.py b/deps/v8/tools/clusterfuzz/v8_foozzie_test.py
index eb8322ce62..a8ba74364b 100755
--- a/deps/v8/tools/clusterfuzz/v8_foozzie_test.py
+++ b/deps/v8/tools/clusterfuzz/v8_foozzie_test.py
@@ -263,7 +263,7 @@ class SystemTest(unittest.TestCase):
Overview of fakes:
baseline: Example foozzie output including a syntax error.
- build1: Difference to baseline is a stack trace differece expected to
+ build1: Difference to baseline is a stack trace difference expected to
be suppressed.
build2: Difference to baseline is a non-suppressed output difference
causing the script to fail.
@@ -312,6 +312,36 @@ class SystemTest(unittest.TestCase):
self.assertIn('v8_mock_archs.js', lines[1])
self.assertIn('v8_mock_archs.js', lines[3])
+ def testDifferentArchFailFirst(self):
+ """Test that we re-test against x64. This tests the path that also fails
+ on x64 and then reports the error as x64.
+ """
+ with open(os.path.join(TEST_DATA, 'failure_output_arch.txt')) as f:
+ expected_output = f.read()
+ # Build 3 simulates x86 and produces a difference on --bad-flag, but
+ # the baseline build shows the same difference when --bad-flag is passed.
+ with self.assertRaises(subprocess.CalledProcessError) as ctx:
+ run_foozzie('build3', '--skip-smoke-tests',
+ '--second-config-extra-flags=--bad-flag')
+ e = ctx.exception
+ self.assertEqual(v8_foozzie.RETURN_FAIL, e.returncode)
+ self.assertEqual(expected_output, cut_verbose_output(e.output, 3))
+
+ def testDifferentArchFailSecond(self):
+ """As above, but we test the path that only fails in the second (ia32)
+ run and not with x64 and then reports the error as ia32.
+ """
+ with open(os.path.join(TEST_DATA, 'failure_output_second.txt')) as f:
+ expected_output = f.read()
+ # Build 3 simulates x86 and produces a difference on --very-bad-flag,
+ # which the baseline build doesn't.
+ with self.assertRaises(subprocess.CalledProcessError) as ctx:
+ run_foozzie('build3', '--skip-smoke-tests',
+ '--second-config-extra-flags=--very-bad-flag')
+ e = ctx.exception
+ self.assertEqual(v8_foozzie.RETURN_FAIL, e.returncode)
+ self.assertEqual(expected_output, cut_verbose_output(e.output, 3))
+
def testJitless(self):
"""Test that webassembly is mocked out when comparing with jitless."""
stdout = run_foozzie(
diff --git a/deps/v8/tools/clusterfuzz/v8_mock.js b/deps/v8/tools/clusterfuzz/v8_mock.js
index be7a40b70f..41f1901d5d 100644
--- a/deps/v8/tools/clusterfuzz/v8_mock.js
+++ b/deps/v8/tools/clusterfuzz/v8_mock.js
@@ -99,7 +99,11 @@ Object.defineProperty(
// Mock buffer access in float typed arrays because of varying NaN patterns.
(function() {
+ const origArrayFrom = Array.from;
+ const origArrayIsArray = Array.isArray;
+ const origFunctionPrototype = Function.prototype;
const origIsNaN = isNaN;
+ const origIterator = Symbol.iterator;
const deNaNify = function(value) { return origIsNaN(value) ? 1 : value; };
const mock = function(type) {
@@ -117,17 +121,17 @@ Object.defineProperty(
construct: function(target, args) {
for (let i = 0; i < args.length; i++) {
if (args[i] != null &&
- typeof args[i][Symbol.iterator] === 'function') {
+ typeof args[i][origIterator] === 'function') {
// Consume iterators.
- args[i] = Array.from(args[i]);
+ args[i] = origArrayFrom(args[i]);
}
- if (Array.isArray(args[i])) {
+ if (origArrayIsArray(args[i])) {
args[i] = args[i].map(deNaNify);
}
}
const obj = new (
- Function.prototype.bind.call(type, null, ...args));
+ origFunctionPrototype.bind.call(type, null, ...args));
return new Proxy(obj, {
get: function(x, prop) {
if (typeof x[prop] == "function")
diff --git a/deps/v8/tools/codemap.mjs b/deps/v8/tools/codemap.mjs
index 4986fbd3b0..5beeb3b1b6 100644
--- a/deps/v8/tools/codemap.mjs
+++ b/deps/v8/tools/codemap.mjs
@@ -252,11 +252,18 @@ export class CodeMap {
}
/**
- * Returns an array of all libraries entries.
+ * Returns an array of all library entries.
*/
- getAllLibrariesEntries() {
+ getAllLibraryEntries() {
return this.libraries_.exportValues();
}
+
+ /**
+ * Returns an array of pairs of all library entries and their addresses.
+ */
+ getAllLibraryEntriesWithAddresses() {
+ return this.libraries_.exportKeysAndValues();
+ }
}
diff --git a/deps/v8/tools/cppgc/gen_cmake.py b/deps/v8/tools/cppgc/gen_cmake.py
index 6fc1bc0b03..90eda1f3bb 100755
--- a/deps/v8/tools/cppgc/gen_cmake.py
+++ b/deps/v8/tools/cppgc/gen_cmake.py
@@ -244,6 +244,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(CPPGC_ENABLE_OBJECT_NAMES "Enable object names in cppgc for debug purposes" OFF)
option(CPPGC_ENABLE_CAGED_HEAP "Enable heap reservation of size 4GB, only possible for 64bit archs" OFF)
+option(CPPGC_ENABLE_VERIFY_LIVE_BYTES " Enable verification of live bytes in the marking verifier" OFF)
option(CPPGC_ENABLE_YOUNG_GENERATION "Enable young generation in cppgc" OFF)
set(CPPGC_TARGET_ARCH "x64" CACHE STRING "Target architecture, possible options: x64, x86, arm, arm64, ppc64, s390x, mipsel, mips64el")
@@ -433,6 +434,9 @@ endif()
if(CPPGC_ENABLE_CAGED_HEAP)
target_compile_definitions({target.name} PRIVATE "-DCPPGC_CAGED_HEAP")
endif()
+if(CPPGC_ENABLE_VERIFY_LIVE_BYTES)
+ target_compile_definitions({target.name} PRIVATE "-DCPPGC_VERIFY_LIVE_BYTES")
+endif()
if(CPPGC_ENABLE_YOUNG_GENERATION)
target_compile_definitions({target.name} PRIVATE "-DCPPGC_YOUNG_GENERATION")
endif()"""
diff --git a/deps/v8/tools/debug_helper/get-object-properties.cc b/deps/v8/tools/debug_helper/get-object-properties.cc
index 7199bc51d2..b85bbc0590 100644
--- a/deps/v8/tools/debug_helper/get-object-properties.cc
+++ b/deps/v8/tools/debug_helper/get-object-properties.cc
@@ -316,7 +316,10 @@ class ReadStringVisitor : public TqObjectVisitor {
bool IsExternalStringCached(const TqExternalString* object) {
// The safest way to get the instance type is to use known map pointers, in
// case the map data is not available.
- uintptr_t map = GetOrFinish(object->GetMapValue(accessor_));
+ Value<uintptr_t> map_ptr = object->GetMapValue(accessor_);
+ DCHECK_IMPLIES(map_ptr.validity == d::MemoryAccessResult::kOk,
+ !v8::internal::MapWord::IsPacked(map_ptr.value));
+ uintptr_t map = GetOrFinish(map_ptr);
if (done_) return false;
auto instance_types = FindKnownMapInstanceTypes(map, heap_addresses_);
// Exactly one of the matched instance types should be a string type,
@@ -347,10 +350,10 @@ class ReadStringVisitor : public TqObjectVisitor {
ExternalPointer_t resource_data =
GetOrFinish(object->GetResourceDataValue(accessor_));
#ifdef V8_COMPRESS_POINTERS
- uintptr_t data_address = static_cast<uintptr_t>(
- DecodeExternalPointer(GetPtrComprCageBaseFromOnHeapAddress(
- heap_addresses_.any_heap_pointer),
- resource_data, kExternalStringResourceDataTag));
+ Isolate* isolate = GetIsolateForHeapSandbox(
+ HeapObject::unchecked_cast(Object(heap_addresses_.any_heap_pointer)));
+ uintptr_t data_address = static_cast<uintptr_t>(DecodeExternalPointer(
+ isolate, resource_data, kExternalStringResourceDataTag));
#else
uintptr_t data_address = static_cast<uintptr_t>(resource_data);
#endif // V8_COMPRESS_POINTERS
@@ -500,6 +503,7 @@ class AddInfoVisitor : public TqObjectVisitor {
if (map_ptr.validity != d::MemoryAccessResult::kOk) {
return; // Can't read the JSObject. Nothing useful to do.
}
+ DCHECK(!v8::internal::MapWord::IsPacked(map_ptr.value));
TqMap map(map_ptr.value);
// On JSObject instances, this value is the start of in-object properties.
diff --git a/deps/v8/tools/dev/gm.py b/deps/v8/tools/dev/gm.py
index 4e318f2f32..8a05da3cc9 100755
--- a/deps/v8/tools/dev/gm.py
+++ b/deps/v8/tools/dev/gm.py
@@ -262,10 +262,10 @@ class Config(object):
cpu = "arm"
elif self.arch == "android_arm64":
cpu = "arm64"
- elif self.arch == "arm64" and _GetMachine() == "aarch64":
+ elif self.arch == "arm64" and _GetMachine() in ("aarch64", "arm64"):
# arm64 build host:
cpu = "arm64"
- elif self.arch == "arm" and _GetMachine() == "aarch64":
+ elif self.arch == "arm" and _GetMachine() in ("aarch64", "arm64"):
cpu = "arm"
elif "64" in self.arch or self.arch == "s390x":
# Native x64 or simulator build.
@@ -291,7 +291,8 @@ class Config(object):
def GetSpecialCompiler(self):
if _GetMachine() == "aarch64":
- # We have no prebuilt Clang for arm64. Use the system Clang instead.
+ # We have no prebuilt Clang for arm64 on Linux, so use the system Clang
+ # instead.
return ["clang_base_path = \"/usr\"", "clang_use_chrome_plugins = false"]
return []
diff --git a/deps/v8/tools/dev/v8gen.py b/deps/v8/tools/dev/v8gen.py
index 18abf8aa25..c6ba1d2174 100755
--- a/deps/v8/tools/dev/v8gen.py
+++ b/deps/v8/tools/dev/v8gen.py
@@ -121,7 +121,7 @@ class GenerateGnArgs(object):
add_common_options(list_cmd)
# Default to "gen" unless global help is requested.
- if not args or args[0] not in subps.choices.keys() + ['-h', '--help']:
+ if not args or args[0] not in list(subps.choices) + ['-h', '--help']:
args = ['gen'] + args
return self.parser.parse_args(args)
@@ -193,14 +193,16 @@ class GenerateGnArgs(object):
return 0
def verbose_print_1(self, text):
- if self._options.verbosity >= 1:
+ if self._options.verbosity and self._options.verbosity >= 1:
print('#' * 80)
print(text)
def verbose_print_2(self, text):
- if self._options.verbosity >= 2:
+ if self._options.verbosity and self._options.verbosity >= 2:
indent = ' ' * 2
for l in text.splitlines():
+ if type(l) == bytes:
+ l = l.decode()
print(indent + l)
def _call_cmd(self, args):
@@ -306,7 +308,7 @@ if __name__ == "__main__":
try:
sys.exit(gen.main())
except Exception:
- if gen._options.verbosity < 2:
+ if not gen._options.verbosity or gen._options.verbosity < 2:
print ('\nHint: You can raise verbosity (-vv) to see the output of '
'failed commands.\n')
raise
diff --git a/deps/v8/tools/generate-header-include-checks.py b/deps/v8/tools/generate-header-include-checks.py
index 4e58a492de..2171ee8a0d 100755
--- a/deps/v8/tools/generate-header-include-checks.py
+++ b/deps/v8/tools/generate-header-include-checks.py
@@ -31,6 +31,8 @@ OUT_DIR = os.path.join(V8_DIR, 'check-header-includes')
AUTO_EXCLUDE = [
# flag-definitions.h needs a mode set for being included.
'src/flags/flag-definitions.h',
+ # recorder.h should only be included conditionally.
+ 'src/libplatform/tracing/recorder.h',
]
AUTO_EXCLUDE_PATTERNS = [
'src/base/atomicops_internals_.*',
diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py
index 8ca9089944..7031ba50db 100755
--- a/deps/v8/tools/mb/mb.py
+++ b/deps/v8/tools/mb/mb.py
@@ -27,7 +27,16 @@ import sys
import subprocess
import tempfile
import traceback
-import urllib2
+
+# for py2/py3 compatibility
+try:
+ from urllib.parse import quote
+except ImportError:
+ from urllib2 import quote
+try:
+ from urllib.request import urlopen
+except ImportError:
+ from urllib2 import urlopen
from collections import OrderedDict
@@ -869,7 +878,7 @@ class MetaBuildWrapper(object):
return err, labels
def GNCmd(self, subcommand, path, *args):
- if self.platform == 'linux2':
+ if self.platform.startswith('linux'):
subdir, exe = 'linux64', 'gn'
elif self.platform == 'darwin':
subdir, exe = 'mac', 'gn'
@@ -1109,7 +1118,7 @@ class MetaBuildWrapper(object):
def CheckCompile(self, builder_group, builder):
url_template = self.args.url_template + '/{builder}/builds/_all?as_text=1'
- url = urllib2.quote(
+ url = quote(
url_template.format(builder_group=builder_group, builder=builder),
safe=':/()?=')
try:
@@ -1201,7 +1210,7 @@ class MetaBuildWrapper(object):
def Fetch(self, url):
# This function largely exists so it can be overridden for testing.
- f = urllib2.urlopen(url)
+ f = urlopen(url)
contents = f.read()
f.close()
return contents
diff --git a/deps/v8/tools/profile.mjs b/deps/v8/tools/profile.mjs
index f4be41e2da..8001f4b5ae 100644
--- a/deps/v8/tools/profile.mjs
+++ b/deps/v8/tools/profile.mjs
@@ -151,6 +151,14 @@ export class Profile {
scripts_ = [];
urlToScript_ = new Map();
+ serializeVMSymbols() {
+ let result = this.codeMap_.getAllStaticEntriesWithAddresses();
+ result.concat(this.codeMap_.getAllLibraryEntriesWithAddresses())
+ return result.map(([startAddress, codeEntry]) => {
+ return [codeEntry.getName(), startAddress, startAddress + codeEntry.size]
+ });
+ }
+
/**
* Returns whether a function with the specified name must be skipped.
* Should be overriden by subclasses.
@@ -182,7 +190,6 @@ export class Profile {
COMPILED: 0,
IGNITION: 1,
BASELINE: 2,
- NATIVE_CONTEXT_INDEPENDENT: 3,
TURBOPROP: 4,
TURBOFAN: 5,
}
@@ -198,8 +205,6 @@ export class Profile {
return this.CodeState.IGNITION;
case '^':
return this.CodeState.BASELINE;
- case '-':
- return this.CodeState.NATIVE_CONTEXT_INDEPENDENT;
case '+':
return this.CodeState.TURBOPROP;
case '*':
@@ -215,8 +220,6 @@ export class Profile {
return "Unopt";
} else if (state === this.CodeState.BASELINE) {
return "Baseline";
- } else if (state === this.CodeState.NATIVE_CONTEXT_INDEPENDENT) {
- return "NCI";
} else if (state === this.CodeState.TURBOPROP) {
return "Turboprop";
} else if (state === this.CodeState.TURBOFAN) {
diff --git a/deps/v8/tools/profview/profile-utils.js b/deps/v8/tools/profview/profile-utils.js
index 35fe3d7cb2..bd9f248b54 100644
--- a/deps/v8/tools/profview/profile-utils.js
+++ b/deps/v8/tools/profview/profile-utils.js
@@ -6,11 +6,12 @@
let codeKinds = [
"UNKNOWN",
- "CPPPARSE",
- "CPPCOMPBC",
- "CPPCOMP",
- "CPPGC",
- "CPPEXT",
+ "CPP_PARSE",
+ "CPP_COMP_BC",
+ "CPP_COMP_BASELINE",
+ "CPP_COMP",
+ "CPP_GC",
+ "CPP_EXT",
"CPP",
"LIB",
"IC",
@@ -18,11 +19,10 @@ let codeKinds = [
"STUB",
"BUILTIN",
"REGEXP",
- "JSOPT",
- "JSUNOPT",
- "JSNCI",
- "JSTURBOPROP",
- "JSBASELINE",
+ "JS_OPT",
+ "JS_UNOPT",
+ "JS_TURBOPROP",
+ "JS_BASELINE",
];
function resolveCodeKind(code) {
@@ -53,17 +53,15 @@ function resolveCodeKind(code) {
return "CODE";
} else if (code.type === "JS") {
if (code.kind === "Builtin") {
- return "JSUNOPT";
+ return "JS_UNOPT";
} else if (code.kind === "Opt") {
- return "JSOPT";
+ return "JS_OPT";
} else if (code.kind === "Unopt") {
- return "JSUNOPT";
- } else if (code.kind === "NCI") {
- return "JSNCI";
+ return "JS_UNOPT";
} else if (code.kind === "Baseline") {
- return "JSBASELINE";
+ return "JS_BASELINE";
} else if (code.kind === "Turboprop") {
- return "JSTURBOPROP";
+ return "JS_TURBOPROP";
}
}
console.log("Unknown code type '" + type + "'.");
@@ -73,16 +71,17 @@ function resolveCodeKindAndVmState(code, vmState) {
let kind = resolveCodeKind(code);
if (kind === "CPP") {
if (vmState === 1) {
- kind = "CPPGC";
+ kind = "CPP_GC";
} else if (vmState === 2) {
- kind = "CPPPARSE";
+ kind = "CPP_PARSE";
} else if (vmState === 3) {
- kind = "CPPCOMPBC";
+ kind = "CPP_COMP_BC";
} else if (vmState === 4) {
- kind = "CPPCOMP";
+ kind = "CPP_COMP";
} else if (vmState === 6) {
- kind = "CPPEXT";
+ kind = "CPP_EXT";
}
+ // TODO(cbruni): add CPP_COMP_BASELINE
}
return kind;
}
@@ -272,20 +271,20 @@ function buildCategoryTreeAndLookup() {
}
root.children.push(n);
}
- addCategory("JS Optimized", [ "JSOPT" ]);
- addCategory("JS NCI", [ "JSNCI" ]);
- addCategory("JS Turboprop", [ "JSTURBOPROP" ]);
- addCategory("JS Baseline", [ "JSBASELINE" ]);
- addCategory("JS Unoptimized", [ "JSUNOPT", "BC" ]);
+ addCategory("JS Optimized", [ "JS_OPT" ]);
+ addCategory("JS Turboprop", [ "JS_TURBOPROP" ]);
+ addCategory("JS Baseline", [ "JS_BASELINE" ]);
+ addCategory("JS Unoptimized", [ "JS_UNOPT", "BC" ]);
addCategory("IC", [ "IC" ]);
addCategory("RegExp", [ "REGEXP" ]);
addCategory("Other generated", [ "STUB", "BUILTIN" ]);
addCategory("C++", [ "CPP", "LIB" ]);
- addCategory("C++/GC", [ "CPPGC" ]);
- addCategory("C++/Parser", [ "CPPPARSE" ]);
- addCategory("C++/Bytecode compiler", [ "CPPCOMPBC" ]);
- addCategory("C++/Compiler", [ "CPPCOMP" ]);
- addCategory("C++/External", [ "CPPEXT" ]);
+ addCategory("C++/GC", [ "CPP_GC" ]);
+ addCategory("C++/Parser", [ "CPP_PARSE" ]);
+ addCategory("C++/Bytecode Compiler", [ "CPP_COMP_BC" ]);
+ addCategory("C++/Baseline Compiler", [ "CPP_COMP_BASELINE" ]);
+ addCategory("C++/Compiler", [ "CPP_COMP" ]);
+ addCategory("C++/External", [ "CPP_EXT" ]);
addCategory("Unknown", [ "UNKNOWN" ]);
return { categories, root };
diff --git a/deps/v8/tools/profview/profview.js b/deps/v8/tools/profview/profview.js
index 15a74f7240..60fc05e727 100644
--- a/deps/v8/tools/profview/profview.js
+++ b/deps/v8/tools/profview/profview.js
@@ -212,63 +212,91 @@ let main = {
const CATEGORY_COLOR = "#f5f5f5";
const bucketDescriptors =
- [ { kinds : [ "JSOPT" ],
- color : "#64dd17",
- backgroundColor : "#80e27e",
- text : "JS Optimized" },
- { kinds : [ "JSNCI" ],
- color : "#3289a8",
- backgroundColor : "#3289a8",
- text : "JS NCI" },
- { kinds : [ "JSTURBOPROP" ],
- color : "#693eb8",
- backgroundColor : "#a6c452",
- text : "JS Turboprop" },
- { kinds : [ "JSBASELINE" ],
- color : "#b3005b",
- backgroundColor : "#ff9e80",
- text : "JS Baseline" },
- { kinds : [ "JSUNOPT", "BC" ],
- color : "#dd2c00",
- backgroundColor : "#ff9e80",
- text : "JS Unoptimized" },
- { kinds : [ "IC" ],
- color : "#ff6d00",
- backgroundColor : "#ffab40",
- text : "IC" },
- { kinds : [ "STUB", "BUILTIN", "REGEXP" ],
- color : "#ffd600",
- backgroundColor : "#ffea00",
- text : "Other generated" },
- { kinds : [ "CPP", "LIB" ],
- color : "#304ffe",
- backgroundColor : "#6ab7ff",
- text : "C++" },
- { kinds : [ "CPPEXT" ],
- color : "#003c8f",
- backgroundColor : "#c0cfff",
- text : "C++/external" },
- { kinds : [ "CPPPARSE" ],
- color : "#aa00ff",
- backgroundColor : "#ffb2ff",
- text : "C++/Parser" },
- { kinds : [ "CPPCOMPBC" ],
- color : "#43a047",
- backgroundColor : "#88c399",
- text : "C++/Bytecode compiler" },
- { kinds : [ "CPPCOMP" ],
- color : "#00e5ff",
- backgroundColor : "#6effff",
- text : "C++/Compiler" },
- { kinds : [ "CPPGC" ],
- color : "#6200ea",
- backgroundColor : "#e1bee7",
- text : "C++/GC" },
- { kinds : [ "UNKNOWN" ],
- color : "#bdbdbd",
- backgroundColor : "#efefef",
- text : "Unknown" }
- ];
+ [{
+ kinds: ["JS_OPT"],
+ color: "#64dd17",
+ backgroundColor: "#80e27e",
+ text: "JS Optimized"
+ },
+ {
+ kinds: ["JS_TURBOPROP"],
+ color: "#693eb8",
+ backgroundColor: "#a6c452",
+ text: "JS Turboprop"
+ },
+ {
+ kinds: ["JS_BASELINE"],
+ color: "#b3005b",
+ backgroundColor: "#ff9e80",
+ text: "JS Baseline"
+ },
+ {
+ kinds: ["JS_UNOPT", "BC"],
+ color: "#dd2c00",
+ backgroundColor: "#ff9e80",
+ text: "JS Unoptimized"
+ },
+ {
+ kinds: ["IC"],
+ color: "#ff6d00",
+ backgroundColor: "#ffab40",
+ text: "IC"
+ },
+ {
+ kinds: ["STUB", "BUILTIN", "REGEXP"],
+ color: "#ffd600",
+ backgroundColor: "#ffea00",
+ text: "Other generated"
+ },
+ {
+ kinds: ["CPP", "LIB"],
+ color: "#304ffe",
+ backgroundColor: "#6ab7ff",
+ text: "C++"
+ },
+ {
+ kinds: ["CPP_EXT"],
+ color: "#003c8f",
+ backgroundColor: "#c0cfff",
+ text: "C++/external"
+ },
+ {
+ kinds: ["CPP_PARSE"],
+ color: "#aa00ff",
+ backgroundColor: "#ffb2ff",
+ text: "C++/Parser"
+ },
+ {
+ kinds: ["CPP_COMP_BC"],
+ color: "#43a047",
+ backgroundColor: "#88c399",
+ text: "C++/Bytecode compiler"
+ },
+ {
+ kinds: ["CPP_COMP_BASELINE"],
+ color: "#43a047",
+ backgroundColor: "#5a8000",
+ text: "C++/Baseline compiler"
+ },
+ {
+ kinds: ["CPP_COMP"],
+ color: "#00e5ff",
+ backgroundColor: "#6effff",
+ text: "C++/Compiler"
+ },
+ {
+ kinds: ["CPP_GC"],
+ color: "#6200ea",
+ backgroundColor: "#e1bee7",
+ text: "C++/GC"
+ },
+ {
+ kinds: ["UNKNOWN"],
+ color: "#bdbdbd",
+ backgroundColor: "#efefef",
+ text: "Unknown"
+ }
+ ];
let kindToBucketDescriptor = {};
for (let i = 0; i < bucketDescriptors.length; i++) {
@@ -294,15 +322,17 @@ function codeTypeToText(type) {
switch (type) {
case "UNKNOWN":
return "Unknown";
- case "CPPPARSE":
+ case "CPP_PARSE":
return "C++ Parser";
- case "CPPCOMPBC":
- return "C++ Bytecode Compiler)";
- case "CPPCOMP":
+ case "CPP_COMP_BASELINE":
+ return "C++ Baseline Compiler";
+ case "CPP_COMP_BC":
+ return "C++ Bytecode Compiler";
+ case "CPP_COMP":
return "C++ Compiler";
- case "CPPGC":
+ case "CPP_GC":
return "C++ GC";
- case "CPPEXT":
+ case "CPP_EXT":
return "C++ External";
case "CPP":
return "C++";
@@ -318,13 +348,13 @@ function codeTypeToText(type) {
return "Builtin";
case "REGEXP":
return "RegExp";
- case "JSOPT":
+ case "JS_OPT":
return "JS opt";
- case "JSNCI":
- return "JS NCI";
- case "JSTURBOPROP":
+ case "JS_TURBOPROP":
return "JS Turboprop";
- case "JSUNOPT":
+ case "JS_BASELINE":
+ return "JS Baseline";
+ case "JS_UNOPT":
return "JS unopt";
}
console.error("Unknown type: " + type);
diff --git a/deps/v8/tools/release/auto_roll.py b/deps/v8/tools/release/auto_roll.py
index ffba545c8f..76247b1fb3 100755
--- a/deps/v8/tools/release/auto_roll.py
+++ b/deps/v8/tools/release/auto_roll.py
@@ -126,7 +126,7 @@ class UpdateChromiumCheckout(Step):
def RunStep(self):
self['json_output']['monitoring_state'] = 'update_chromium'
cwd = self._options.chromium
- self.GitCheckout("master", cwd=cwd)
+ self.GitCheckout("main", cwd=cwd)
self.DeleteBranch("work-branch", cwd=cwd)
self.GitPull(cwd=cwd)
@@ -168,7 +168,7 @@ class UploadCL(Step):
else:
print("Dry run - don't upload.")
- self.GitCheckout("master", cwd=cwd)
+ self.GitCheckout("main", cwd=cwd)
self.GitDeleteBranch("work-branch", cwd=cwd)
class CleanUp(Step):
diff --git a/deps/v8/tools/release/test_scripts.py b/deps/v8/tools/release/test_scripts.py
index bfac9a4a34..7cf5d14130 100755
--- a/deps/v8/tools/release/test_scripts.py
+++ b/deps/v8/tools/release/test_scripts.py
@@ -612,7 +612,7 @@ deps = {
Cmd("git describe --tags roll_hsh", "3.22.4"),
Cmd("git describe --tags last_roll_hsh", "3.22.2.1"),
Cmd("git status -s -uno", "", cwd=chrome_dir),
- Cmd("git checkout -f master", "", cwd=chrome_dir),
+ Cmd("git checkout -f main", "", cwd=chrome_dir),
Cmd("git branch", "", cwd=chrome_dir),
Cmd("git pull", "", cwd=chrome_dir),
Cmd("git fetch origin", ""),
@@ -626,7 +626,7 @@ deps = {
Cmd("git cl upload --send-mail -f "
"--cq-dry-run --set-bot-commit --bypass-hooks", "",
cwd=chrome_dir),
- Cmd("git checkout -f master", "", cwd=chrome_dir),
+ Cmd("git checkout -f main", "", cwd=chrome_dir),
Cmd("git branch -D work-branch", "", cwd=chrome_dir),
]
self.Expect(expectations)
diff --git a/deps/v8/tools/system-analyzer/index.css b/deps/v8/tools/system-analyzer/index.css
index ad3f24d27b..53110079b2 100644
--- a/deps/v8/tools/system-analyzer/index.css
+++ b/deps/v8/tools/system-analyzer/index.css
@@ -68,7 +68,7 @@ section {
border-radius: 8px;
cursor: pointer;
}
-::-webkit-scrollbar-thumb:hover {
+::-webkit-scrollbar-thumb:hover {
background-color: rgba(128, 128, 128, 0.8);
}
diff --git a/deps/v8/tools/system-analyzer/index.mjs b/deps/v8/tools/system-analyzer/index.mjs
index 4b0ed9f9c5..550838118b 100644
--- a/deps/v8/tools/system-analyzer/index.mjs
+++ b/deps/v8/tools/system-analyzer/index.mjs
@@ -110,7 +110,7 @@ class App {
entries = entry.entries.concat(entry.sourcePositions);
break;
default:
- throw new Error('Unknown selection type!');
+ throw new Error(`Unknown selection type: ${entry.constructor?.name}`);
}
if (entry.sourcePosition) {
entries.push(entry.sourcePosition);
@@ -134,7 +134,11 @@ class App {
}
selectEntriesOfSingleType(entries, type) {
- switch (entries[0]?.constructor ?? type) {
+ const entryType = entries[0]?.constructor ?? type;
+ switch (entryType) {
+ case Script:
+ entries = entries.flatMap(script => script.sourcePositions);
+ return this.showSourcePositions(entries);
case SourcePosition:
return this.showSourcePositions(entries);
case MapLogEntry:
@@ -148,7 +152,7 @@ class App {
case DeoptLogEntry:
return this.showDeoptEntries(entries);
default:
- throw new Error('Unknown selection type!');
+ throw new Error(`Unknown selection type: ${entryType?.name}`);
}
}
@@ -205,6 +209,8 @@ class App {
focusLogEntry(entry) {
switch (entry.constructor) {
+ case Script:
+ return this.focusSourcePosition(entry.sourcePositions[0]);
case SourcePosition:
return this.focusSourcePosition(entry);
case MapLogEntry:
@@ -218,7 +224,7 @@ class App {
case DeoptLogEntry:
return this.focusDeoptLogEntry(entry);
default:
- throw new Error('Unknown selection type!');
+ throw new Error(`Unknown selection type: ${entry.constructor?.name}`);
}
}
diff --git a/deps/v8/tools/system-analyzer/processor.mjs b/deps/v8/tools/system-analyzer/processor.mjs
index 9685e09ad6..806cba132c 100644
--- a/deps/v8/tools/system-analyzer/processor.mjs
+++ b/deps/v8/tools/system-analyzer/processor.mjs
@@ -230,17 +230,21 @@ export class Processor extends LogReader {
this.addSourcePosition(codeEntry, logEntry);
logEntry.functionSourcePosition = logEntry.sourcePosition;
// custom parse deopt location
- if (deoptLocation !== '<unknown>') {
- const colSeparator = deoptLocation.lastIndexOf(':');
- const rowSeparator = deoptLocation.lastIndexOf(':', colSeparator - 1);
- const script = this.getScript(deoptLocation.substring(1, rowSeparator));
- const line =
- parseInt(deoptLocation.substring(rowSeparator + 1, colSeparator));
- const column = parseInt(
- deoptLocation.substring(colSeparator + 1, deoptLocation.length - 1));
- logEntry.sourcePosition =
- script.addSourcePosition(line, column, logEntry);
+ if (deoptLocation === '<unknown>') return;
+ // Handle deopt location for inlined code: <location> inlined at <location>
+ const inlinedPos = deoptLocation.indexOf(' inlined at ');
+ if (inlinedPos > 0) {
+ deoptLocation = deoptLocation.substring(0, inlinedPos)
}
+ const colSeparator = deoptLocation.lastIndexOf(':');
+ const rowSeparator = deoptLocation.lastIndexOf(':', colSeparator - 1);
+ const script = this.getScript(deoptLocation.substring(1, rowSeparator));
+ if (!script) return;
+ const line =
+ parseInt(deoptLocation.substring(rowSeparator + 1, colSeparator));
+ const column = parseInt(
+ deoptLocation.substring(colSeparator + 1, deoptLocation.length - 1));
+ logEntry.sourcePosition = script.addSourcePosition(line, column, logEntry);
}
processScriptSource(scriptId, url, source) {
diff --git a/deps/v8/tools/system-analyzer/view/code-panel-template.html b/deps/v8/tools/system-analyzer/view/code-panel-template.html
index e04c6be8c1..3622c25062 100644
--- a/deps/v8/tools/system-analyzer/view/code-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/code-panel-template.html
@@ -11,7 +11,9 @@ found in the LICENSE file. -->
}
</style>
<div class="panel">
- <h2>Code Panel</h2>
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
+ <label class="panelCloserLabel" for="closer">▼</label>
+ <h2 class="title">Code Panel</h2>
<div class="selection">
<select id="codeSelect"></select>
<button id="selectedRelatedButton">Select Related Events</button>
diff --git a/deps/v8/tools/system-analyzer/view/code-panel.mjs b/deps/v8/tools/system-analyzer/view/code-panel.mjs
index 3b5261e03c..34e4ad300e 100644
--- a/deps/v8/tools/system-analyzer/view/code-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/code-panel.mjs
@@ -5,11 +5,11 @@ import {IcLogEntry} from '../log/ic.mjs';
import {MapLogEntry} from '../log/map.mjs';
import {FocusEvent, SelectionEvent, ToolTipEvent} from './events.mjs';
-import {delay, DOM, formatBytes, formatMicroSeconds, V8CustomElement} from './helper.mjs';
+import {CollapsableElement, delay, DOM, formatBytes, formatMicroSeconds} from './helper.mjs';
DOM.defineCustomElement('view/code-panel',
(templateText) =>
- class CodePanel extends V8CustomElement {
+ class CodePanel extends CollapsableElement {
_timeline;
_selectedEntries;
_entry;
@@ -24,19 +24,17 @@ DOM.defineCustomElement('view/code-panel',
set timeline(timeline) {
this._timeline = timeline;
this.$('.panel').style.display = timeline.isEmpty() ? 'none' : 'inherit';
- this.update();
+ this.requestUpdate();
}
set selectedEntries(entries) {
this._selectedEntries = entries;
- // TODO: add code selection dropdown
- this._updateSelect();
this.entry = entries.first();
}
set entry(entry) {
this._entry = entry;
- this.update();
+ this.requestUpdate();
}
get _disassemblyNode() {
@@ -52,12 +50,15 @@ DOM.defineCustomElement('view/code-panel',
}
_update() {
+ this._updateSelect();
this._disassemblyNode.innerText = this._entry?.disassemble ?? '';
this._sourceNode.innerText = this._entry?.source ?? '';
}
_updateSelect() {
const select = this._codeSelectNode;
+ if (select.data === this._selectedEntries) return;
+ select.data = this._selectedEntries;
select.options.length = 0;
const sorted =
this._selectedEntries.slice().sort((a, b) => a.time - b.time);
diff --git a/deps/v8/tools/system-analyzer/view/helper.mjs b/deps/v8/tools/system-analyzer/view/helper.mjs
index 780864ef5a..44da06ced4 100644
--- a/deps/v8/tools/system-analyzer/view/helper.mjs
+++ b/deps/v8/tools/system-analyzer/view/helper.mjs
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-class CSSColor {
+export class CSSColor {
static _cache = new Map();
static get(name) {
@@ -121,7 +121,7 @@ class CSSColor {
}
}
-class DOM {
+export class DOM {
static element(type, classes) {
const node = document.createElement(type);
if (classes === undefined) return node;
@@ -185,19 +185,18 @@ class DOM {
}
}
-function $(id) {
+export function $(id) {
return document.querySelector(id)
}
-class V8CustomElement extends HTMLElement {
+export class V8CustomElement extends HTMLElement {
_updateTimeoutId;
- _updateCallback = this._update.bind(this);
+ _updateCallback = this.forceUpdate.bind(this);
constructor(templateText) {
super();
const shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = templateText;
- this._updateCallback = this._update.bind(this);
}
$(id) {
@@ -208,7 +207,7 @@ class V8CustomElement extends HTMLElement {
return this.shadowRoot.querySelectorAll(query);
}
- update(useAnimation = false) {
+ requestUpdate(useAnimation = false) {
if (useAnimation) {
window.cancelAnimationFrame(this._updateTimeoutId);
this._updateTimeoutId =
@@ -221,12 +220,54 @@ class V8CustomElement extends HTMLElement {
}
}
+ forceUpdate() {
+ this._update();
+ }
+
_update() {
throw Error('Subclass responsibility');
}
}
-class Chunked {
+export class CollapsableElement extends V8CustomElement {
+ constructor(templateText) {
+ super(templateText);
+ this._hasPendingUpdate = false;
+ this._closer.onclick = _ => this.tryUpdateOnVisibilityChange();
+ }
+
+ get _closer() {
+ return this.$('#closer');
+ }
+
+ _contentIsVisible() {
+ return !this._closer.checked;
+ }
+
+ requestUpdate(useAnimation = false) {
+ // A pending update will be resolved later, no need to try again.
+ if (this._hasPendingUpdate) return;
+ this._hasPendingUpdate = true;
+ this.requestUpdateIfVisible(useAnimation);
+ }
+
+ tryUpdateOnVisibilityChange() {
+ if (!this._hasPendingUpdate) return;
+ this.requestUpdateIfVisible(true);
+ }
+
+ requestUpdateIfVisible(useAnimation) {
+ if (!this._contentIsVisible()) return;
+ return super.requestUpdate(useAnimation);
+ }
+
+ forceUpdate() {
+ this._hasPendingUpdate = false;
+ super.forceUpdate();
+ }
+}
+
+export class Chunked {
constructor(iterable, limit) {
this._iterator = iterable[Symbol.iterator]();
this._limit = limit;
@@ -248,7 +289,7 @@ class Chunked {
}
}
-class LazyTable {
+export class LazyTable {
constructor(table, rowData, rowElementCreator, limit = 100) {
this._table = table;
this._chunkedRowData = new Chunked(rowData, limit);
@@ -258,22 +299,25 @@ class LazyTable {
} else {
table.replaceChild(DOM.tbody(), table.tBodies[0]);
}
- if (!table.tFoot) {
- const td = table.appendChild(DOM.element('tfoot'))
- .appendChild(DOM.tr())
- .appendChild(DOM.td());
- for (let count of [10, 100]) {
- const button = DOM.element('button');
- button.innerText = `+${count}`;
- button.onclick = (e) => this._addMoreRows(count);
- td.appendChild(button);
- }
- td.setAttribute('colspan', 100);
- }
+ if (!table.tFoot) this._addFooter();
table.tFoot.addEventListener('click', this._clickHandler);
this._addMoreRows();
}
+ _addFooter() {
+ const td = DOM.td();
+ td.setAttribute('colspan', 100);
+ for (let addCount of [10, 100, 250, 500]) {
+ const button = DOM.element('button');
+ button.innerText = `+${addCount}`;
+ button.onclick = (e) => this._addMoreRows(addCount);
+ td.appendChild(button);
+ }
+ this._table.appendChild(DOM.element('tfoot'))
+ .appendChild(DOM.tr())
+ .appendChild(td);
+ }
+
_addMoreRows(count = undefined) {
const fragment = new DocumentFragment();
for (let row of this._chunkedRowData.next(count)) {
@@ -304,11 +348,4 @@ export function gradientStopsFromGroups(
return stops;
}
-export * from '../helper.mjs';
-export {
- DOM,
- $,
- V8CustomElement,
- CSSColor,
- LazyTable,
-};
+export * from '../helper.mjs'; \ No newline at end of file
diff --git a/deps/v8/tools/system-analyzer/view/list-panel-template.html b/deps/v8/tools/system-analyzer/view/list-panel-template.html
index 4714f97c02..fb38f5b459 100644
--- a/deps/v8/tools/system-analyzer/view/list-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/list-panel-template.html
@@ -30,11 +30,13 @@ found in the LICENSE file. -->
text-align: left;
cursor: -webkit-zoom-in;
color: rgba(var(--border-color), 1);
+ user-select: none;
}
.toggle::before {
content: "▶";
}
+
.open .toggle::before {
content: "▼";
}
@@ -58,7 +60,7 @@ found in the LICENSE file. -->
</style>
<div class="panel">
- <input type="checkbox" id="closer" class="panelCloserInput">
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
<label class="panelCloserLabel" for="closer">▼</label>
<h2 id="title"></h2>
<div class="selection">
diff --git a/deps/v8/tools/system-analyzer/view/list-panel.mjs b/deps/v8/tools/system-analyzer/view/list-panel.mjs
index 85e3cd47e2..bc3b2f89d5 100644
--- a/deps/v8/tools/system-analyzer/view/list-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/list-panel.mjs
@@ -5,23 +5,24 @@
import {Script, SourcePosition} from '../../profile.mjs';
import {LogEntry} from '../log/log.mjs';
-import {FocusEvent} from './events.mjs';
+import {FocusEvent, ToolTipEvent} from './events.mjs';
import {groupBy, LazyTable} from './helper.mjs';
-import {DOM, V8CustomElement} from './helper.mjs';
+import {CollapsableElement, DOM} from './helper.mjs';
DOM.defineCustomElement('view/list-panel',
(templateText) =>
- class ListPanel extends V8CustomElement {
+ class ListPanel extends CollapsableElement {
_selectedLogEntries = [];
_displayedLogEntries = [];
_timeline;
_detailsClickHandler = this._handleDetailsClick.bind(this);
_logEntryClickHandler = this._handleLogEntryClick.bind(this);
+ _logEntryMouseOverHandler = this._logEntryMouseOverHandler.bind(this);
constructor() {
super(templateText);
- this.groupKey.addEventListener('change', e => this.update());
+ this.groupKey.addEventListener('change', e => this.requestUpdate());
this.showAllRadio.onclick = _ => this._showEntries(this._timeline);
this.showTimerangeRadio.onclick = _ =>
this._showEntries(this._timeline.selectionOrSelf);
@@ -72,9 +73,11 @@ DOM.defineCustomElement('view/list-panel',
get showAllRadio() {
return this.$('#show-all');
}
+
get showTimerangeRadio() {
return this.$('#show-timerange');
}
+
get showSelectionRadio() {
return this.$('#show-selection');
}
@@ -95,7 +98,7 @@ DOM.defineCustomElement('view/list-panel',
_showEntries(entries) {
this._displayedLogEntries = entries;
- this.update();
+ this.requestUpdate();
}
_update() {
@@ -123,6 +126,12 @@ DOM.defineCustomElement('view/list-panel',
this.dispatchEvent(new FocusEvent(group.key));
}
+ _logEntryMouseOverHandler(e) {
+ const group = e.currentTarget.group;
+ this.dispatchEvent(
+ new ToolTipEvent(group.key.toStringLong(), e.currentTarget));
+ }
+
_handleDetailsClick(event) {
event.stopPropagation();
const tr = event.target.parentNode;
@@ -182,6 +191,7 @@ DOM.defineCustomElement('view/list-panel',
const valueTd = tr.appendChild(DOM.td(`${group.key}`, 'key'));
if (this._isClickable(group.key)) {
tr.onclick = this._logEntryClickHandler;
+ tr.onmouseover = this._logEntryMouseOverHandler;
valueTd.classList.add('clickable');
}
return tr;
diff --git a/deps/v8/tools/system-analyzer/view/map-panel-template.html b/deps/v8/tools/system-analyzer/view/map-panel-template.html
index 8a2b23ee3d..4790e376f9 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/map-panel-template.html
@@ -11,7 +11,7 @@ found in the LICENSE file. -->
}
</style>
<div class="panel">
- <input type="checkbox" id="closer" class="panelCloserInput">
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
<label class="panelCloserLabel" for="closer">▼</label>
<h2>Map Panel</h2>
<div class="selection">
diff --git a/deps/v8/tools/system-analyzer/view/map-panel.mjs b/deps/v8/tools/system-analyzer/view/map-panel.mjs
index 7ee2325f34..be00ef0124 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/map-panel.mjs
@@ -7,100 +7,103 @@ import './map-panel/map-transitions.mjs';
import {MapLogEntry} from '../log/map.mjs';
import {FocusEvent} from './events.mjs';
-import {DOM, V8CustomElement} from './helper.mjs';
-
-DOM.defineCustomElement(
- 'view/map-panel', (templateText) => class MapPanel extends V8CustomElement {
- _map;
- _timeline;
- _selectedLogEntries = [];
- _displayedLogEntries = [];
-
- constructor() {
- super(templateText);
- this.searchBarBtn.addEventListener('click', e => this._handleSearch(e));
- this.showAllRadio.onclick = _ => this._showEntries(this._timeline);
- this.showTimerangeRadio.onclick = _ =>
- this._showEntries(this._timeline.selectionOrSelf);
- this.showSelectionRadio.onclick = _ =>
- this._showEntries(this._selectedLogEntries);
- }
-
- get showAllRadio() {
- return this.$('#show-all');
- }
- get showTimerangeRadio() {
- return this.$('#show-timerange');
- }
- get showSelectionRadio() {
- return this.$('#show-selection');
- }
-
- get mapTransitionsPanel() {
- return this.$('#map-transitions');
- }
-
- get mapDetailsTransitionsPanel() {
- return this.$('#map-details-transitions');
- }
-
- get mapDetailsPanel() {
- return this.$('#map-details');
- }
-
- get searchBarBtn() {
- return this.$('#searchBarBtn');
- }
-
- get searchBar() {
- return this.$('#searchBar');
- }
-
- set timeline(timeline) {
- console.assert(timeline !== undefined, 'timeline undefined!');
- this._timeline = timeline;
- this.$('.panel').style.display =
- timeline.isEmpty() ? 'none' : 'inherit';
- this.mapTransitionsPanel.timeline = timeline;
- this.mapDetailsTransitionsPanel.timeline = timeline;
- }
-
- set selectedLogEntries(entries) {
- if (entries === this._timeline.selection) {
- this.showTimerangeRadio.click();
- } else if (entries == this._timeline) {
- this.showAllRadio.click();
- } else {
- this._selectedLogEntries = entries;
- this.showSelectionRadio.click();
- }
- }
-
- set map(map) {
- this._map = map;
- this.mapDetailsTransitionsPanel.selectedLogEntries = [map];
- this.mapDetailsPanel.map = map;
- }
-
- _showEntries(entries) {
- this._displayedLogEntries = entries;
- this.mapTransitionsPanel.selectedLogEntries = entries;
- }
-
- update() {
- // nothing to do
- }
-
- _handleSearch(e) {
- let searchBar = this.$('#searchBarInput');
- let searchBarInput = searchBar.value;
- // access the map from model cache
- let selectedMap = MapLogEntry.get(searchBarInput);
- if (selectedMap) {
- searchBar.className = 'success';
- this.dispatchEvent(new FocusEvent(selectedMap));
- } else {
- searchBar.className = 'failure';
- }
- }
- });
+import {CollapsableElement, DOM} from './helper.mjs';
+
+DOM.defineCustomElement('view/map-panel',
+ (templateText) =>
+ class MapPanel extends CollapsableElement {
+ _map;
+ _timeline;
+ _selectedLogEntries = [];
+ _displayedLogEntries = [];
+
+ constructor() {
+ super(templateText);
+ this.searchBarBtn.addEventListener('click', e => this._handleSearch(e));
+ this.showAllRadio.onclick = _ => this._showEntries(this._timeline);
+ this.showTimerangeRadio.onclick = _ =>
+ this._showEntries(this._timeline.selectionOrSelf);
+ this.showSelectionRadio.onclick = _ =>
+ this._showEntries(this._selectedLogEntries);
+ }
+
+ get showAllRadio() {
+ return this.$('#show-all');
+ }
+
+ get showTimerangeRadio() {
+ return this.$('#show-timerange');
+ }
+
+ get showSelectionRadio() {
+ return this.$('#show-selection');
+ }
+
+ get mapTransitionsPanel() {
+ return this.$('#map-transitions');
+ }
+
+ get mapDetailsTransitionsPanel() {
+ return this.$('#map-details-transitions');
+ }
+
+ get mapDetailsPanel() {
+ return this.$('#map-details');
+ }
+
+ get searchBarBtn() {
+ return this.$('#searchBarBtn');
+ }
+
+ get searchBar() {
+ return this.$('#searchBar');
+ }
+
+ set timeline(timeline) {
+ console.assert(timeline !== undefined, 'timeline undefined!');
+ this._timeline = timeline;
+ this.$('.panel').style.display = timeline.isEmpty() ? 'none' : 'inherit';
+ this.mapTransitionsPanel.timeline = timeline;
+ this.mapDetailsTransitionsPanel.timeline = timeline;
+ }
+
+ set selectedLogEntries(entries) {
+ if (entries === this._timeline.selection) {
+ this.showTimerangeRadio.click();
+ } else if (entries == this._timeline) {
+ this.showAllRadio.click();
+ } else {
+ this._selectedLogEntries = entries;
+ this.showSelectionRadio.click();
+ }
+ }
+
+ set map(map) {
+ this._map = map;
+ this.requestUpdate();
+ }
+
+ _showEntries(entries) {
+ this._displayedLogEntries = entries;
+ this.requestUpdate();
+ }
+
+ _update() {
+ this.mapDetailsTransitionsPanel.selectedLogEntries = [this._map];
+ this.mapDetailsPanel.map = this._map;
+ this.mapTransitionsPanel.selectedLogEntries = this._displayedLogEntries;
+ }
+
+ _handleSearch(e) {
+ const searchBar = this.$('#searchBarInput');
+ const searchBarInput = searchBar.value;
+ // access the map from model cache
+ const selectedMap = MapLogEntry.get(searchBarInput);
+ if (selectedMap) {
+ searchBar.className = 'success';
+ this.dispatchEvent(new FocusEvent(selectedMap));
+ } else {
+ searchBar.className = 'failure';
+ }
+ }
+});
diff --git a/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs b/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs
index 446475a5b0..a8ea27e2e4 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs
+++ b/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs
@@ -25,7 +25,7 @@ DOM.defineCustomElement(
set map(map) {
if (this._map === map) return;
this._map = map;
- this.update();
+ this.requestUpdate();
}
_update() {
diff --git a/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs b/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs
index f60bd37d39..fbe78f9156 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs
+++ b/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs
@@ -37,7 +37,7 @@ DOM.defineCustomElement(
set selectedLogEntries(list) {
this._selectedLogEntries = list;
- this.update();
+ this.requestUpdate();
}
_update() {
diff --git a/deps/v8/tools/system-analyzer/view/script-panel-template.html b/deps/v8/tools/system-analyzer/view/script-panel-template.html
index 27fd3d83eb..ab5c3f95f3 100644
--- a/deps/v8/tools/system-analyzer/view/script-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/script-panel-template.html
@@ -40,11 +40,15 @@ found in the LICENSE file. -->
.marked {
background-color: var(--secondary-color);
+ box-shadow: 0px 0px 2px 3px var(--secondary-color);
+ animation-name: pulse;
+ animation-duration: 3s;
+ animation-delay: 500ms;
}
@keyframes pulse {
0% {
- box-shadow: 0px 0px 0px 0px var(--secondary-color);
+ box-shadow: 0px 0px 0px 3px var(--secondary-color);
}
5% {
box-shadow: 0px 0px 0px 10px var(--secondary-color);
@@ -56,11 +60,13 @@ found in the LICENSE file. -->
box-shadow: 0px 0px 0px 10px var(--secondary-color);
}
20% {
- box-shadow: 0px 0px 0px 0px var(--secondary-color);
+ box-shadow: 0px 0px 2px 3px var(--secondary-color);
}
}
</style>
<div class="panel">
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
+ <label class="panelCloserLabel" for="closer">▼</label>
<h2>Source Panel</h2>
<div class="selection">
<select id="script-dropdown"></select>
diff --git a/deps/v8/tools/system-analyzer/view/script-panel.mjs b/deps/v8/tools/system-analyzer/view/script-panel.mjs
index b0dac6960c..6f5befcc16 100644
--- a/deps/v8/tools/system-analyzer/view/script-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/script-panel.mjs
@@ -5,11 +5,11 @@ import {groupBy} from '../helper.mjs';
import {App} from '../index.mjs'
import {SelectRelatedEvent, ToolTipEvent} from './events.mjs';
-import {CSSColor, delay, DOM, formatBytes, gradientStopsFromGroups, V8CustomElement} from './helper.mjs';
+import {CollapsableElement, CSSColor, delay, DOM, formatBytes, gradientStopsFromGroups} from './helper.mjs';
DOM.defineCustomElement('view/script-panel',
(templateText) =>
- class SourcePanel extends V8CustomElement {
+ class SourcePanel extends CollapsableElement {
_selectedSourcePositions = [];
_sourcePositionsToMarkNodes = [];
_scripts = [];
@@ -110,7 +110,7 @@ DOM.defineCustomElement('view/script-panel',
if (!sourcePosition) return;
const markNode = this._sourcePositionsToMarkNodes.get(sourcePosition);
markNode.scrollIntoView(
- {behavior: 'smooth', block: 'nearest', inline: 'center'});
+ {behavior: 'auto', block: 'center', inline: 'center'});
}
_handleSelectScript(e) {
diff --git a/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs b/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs
index 60216af2ee..6f05b772d8 100644
--- a/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs
+++ b/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs
@@ -112,7 +112,7 @@ DOM.defineCustomElement('view/timeline/timeline-track',
_updateChunks() {
this._chunks =
this._timeline.chunks(this.nofChunks, this._legend.filterPredicate);
- this.update();
+ this.requestUpdate();
}
get chunks() {
@@ -180,7 +180,7 @@ DOM.defineCustomElement('view/timeline/timeline-track',
node.ondblclick = this._chunkDoubleClickHandler;
}
const style = node.style;
- style.left = `${((chunk.start - start) * this._timeToPixel) | 0}px`;
+ style.left = `${i * kChunkWidth}px`;
style.height = `${height | 0}px`;
style.backgroundImage = this._createBackgroundImage(chunk);
node.chunk = chunk;
diff --git a/deps/v8/tools/system-analyzer/view/tool-tip-template.html b/deps/v8/tools/system-analyzer/view/tool-tip-template.html
index b0e9c72c45..dc56997825 100644
--- a/deps/v8/tools/system-analyzer/view/tool-tip-template.html
+++ b/deps/v8/tools/system-analyzer/view/tool-tip-template.html
@@ -24,6 +24,7 @@ found in the LICENSE file. -->
.textContent {
font-family: monospace;
white-space: pre;
+ overflow-wrap: anywhere;
overflow-x: hidden;
max-width: 500px;
}
diff --git a/deps/v8/tools/system-analyzer/view/tool-tip.mjs b/deps/v8/tools/system-analyzer/view/tool-tip.mjs
index 896c04dd29..a01ee1bdbf 100644
--- a/deps/v8/tools/system-analyzer/view/tool-tip.mjs
+++ b/deps/v8/tools/system-analyzer/view/tool-tip.mjs
@@ -16,9 +16,10 @@ DOM.defineCustomElement(
this.hide();
} else {
this.show();
- this.update(true);
+ this.requestUpdate(true);
}
});
+ document.addEventListener('click', (e) => this.hide());
}
_update() {
@@ -31,7 +32,7 @@ DOM.defineCustomElement(
rect.y += rect.height;
}
this._setPosition(rect, atRight, atBottom);
- this.update(true);
+ this.requestUpdate(true);
}
set positionOrTargetNode(positionOrTargetNode) {
@@ -47,7 +48,7 @@ DOM.defineCustomElement(
this._targetNode = targetNode;
if (targetNode) {
this._intersectionObserver.observe(targetNode);
- this.update(true);
+ this.requestUpdate(true);
}
}
diff --git a/deps/v8/tools/testrunner/base_runner.py b/deps/v8/tools/testrunner/base_runner.py
index 76aff630ff..b6889a3773 100644
--- a/deps/v8/tools/testrunner/base_runner.py
+++ b/deps/v8/tools/testrunner/base_runner.py
@@ -172,6 +172,7 @@ class BuildConfig(object):
self.cfi_vptr = build_config['is_cfi']
self.control_flow_integrity = build_config['v8_control_flow_integrity']
self.concurrent_marking = build_config['v8_enable_concurrent_marking']
+ self.single_generation = build_config['v8_enable_single_generation']
self.dcheck_always_on = build_config['dcheck_always_on']
self.gcov_coverage = build_config['is_gcov_coverage']
self.is_android = build_config['is_android']
@@ -189,6 +190,8 @@ class BuildConfig(object):
self.verify_csa = build_config['v8_enable_verify_csa']
self.lite_mode = build_config['v8_enable_lite_mode']
self.pointer_compression = build_config['v8_enable_pointer_compression']
+ self.pointer_compression_shared_cage = build_config['v8_enable_pointer_compression_shared_cage']
+ self.third_party_heap = build_config['v8_enable_third_party_heap']
self.webassembly = build_config['v8_enable_webassembly']
# Export only for MIPS target
if self.arch in ['mips', 'mipsel', 'mips64', 'mips64el']:
@@ -229,6 +232,10 @@ class BuildConfig(object):
detected_options.append('lite_mode')
if self.pointer_compression:
detected_options.append('pointer_compression')
+ if self.pointer_compression_shared_cage:
+ detected_options.append('pointer_compression_shared_cage')
+ if self.third_party_heap:
+ detected_options.append('third_party_heap')
if self.webassembly:
detected_options.append('webassembly')
@@ -351,16 +358,13 @@ class BaseTestRunner(object):
# Progress
parser.add_option("-p", "--progress",
- choices=PROGRESS_INDICATORS.keys(), default="mono",
+ choices=list(PROGRESS_INDICATORS), default="mono",
help="The style of progress indicator (verbose, dots, "
"color, mono)")
parser.add_option("--json-test-results",
help="Path to a file for storing json results.")
parser.add_option('--slow-tests-cutoff', type="int", default=100,
help='Collect N slowest tests')
- parser.add_option("--junitout", help="File name of the JUnit output")
- parser.add_option("--junittestsuite", default="v8tests",
- help="The testsuite name in the JUnit output file")
parser.add_option("--exit-after-n-failures", type="int", default=100,
help="Exit after the first N failures instead of "
"running all tests. Pass 0 to disable this feature.")
@@ -641,7 +645,7 @@ class BaseTestRunner(object):
self.build_config.arch in ['mipsel', 'mips', 'mips64', 'mips64el'] and
self.build_config.mips_arch_variant)
- no_simd_sse = any(
+ no_simd_hardware = any(
i in options.extra_flags for i in ['--noenable-sse3',
'--no-enable-sse3'
'--noenable-ssse3',
@@ -649,14 +653,16 @@ class BaseTestRunner(object):
'--noenable-sse4-1',
'--no-enable-sse4_1'])
- # Set no_simd_sse on architectures without Simd enabled.
+ # Set no_simd_hardware on architectures without Simd enabled.
if self.build_config.arch == 'mips64el' or \
self.build_config.arch == 'mipsel':
- no_simd_sse = not simd_mips
+ no_simd_hardware = not simd_mips
- # Set no_simd_sse on architectures without Simd enabled.
- if self.build_config.arch == 'ppc64':
- no_simd_sse = True
+ # Ppc64 processors earlier than POWER9 do not support Simd instructions
+ if self.build_config.arch == 'ppc64' and \
+ not self.build_config.simulator_run and \
+ utils.GuessPowerProcessorVersion() < 9:
+ no_simd_hardware = True
return {
"arch": self.build_config.arch,
@@ -665,6 +671,7 @@ class BaseTestRunner(object):
"cfi_vptr": self.build_config.cfi_vptr,
"control_flow_integrity": self.build_config.control_flow_integrity,
"concurrent_marking": self.build_config.concurrent_marking,
+ "single_generation": self.build_config.single_generation,
"dcheck_always_on": self.build_config.dcheck_always_on,
"deopt_fuzzer": False,
"endurance_fuzzer": False,
@@ -680,7 +687,7 @@ class BaseTestRunner(object):
"msan": self.build_config.msan,
"no_harness": options.no_harness,
"no_i18n": self.build_config.no_i18n,
- "no_simd_sse": no_simd_sse,
+ "no_simd_hardware": no_simd_hardware,
"novfp3": False,
"optimize_for_size": "--optimize-for-size" in options.extra_flags,
"predictable": self.build_config.predictable,
@@ -688,11 +695,13 @@ class BaseTestRunner(object):
"simulator_run": self.build_config.simulator_run and
not options.dont_skip_simulator_slow_tests,
"system": self.target_os,
+ "third_party_heap": self.build_config.third_party_heap,
"tsan": self.build_config.tsan,
"ubsan_vptr": self.build_config.ubsan_vptr,
"verify_csa": self.build_config.verify_csa,
"lite_mode": self.build_config.lite_mode,
"pointer_compression": self.build_config.pointer_compression,
+ "pointer_compression_shared_cage": self.build_config.pointer_compression_shared_cage,
}
def _runner_flags(self):
@@ -725,6 +734,8 @@ class BaseTestRunner(object):
factor *= 2
if self.build_config.predictable:
factor *= 4
+ if self.build_config.tsan:
+ factor *= 1.5
if self.build_config.use_sanitizer:
factor *= 1.5
if self.build_config.is_full_debug:
@@ -787,9 +798,6 @@ class BaseTestRunner(object):
def _create_progress_indicators(self, test_count, options):
procs = [PROGRESS_INDICATORS[options.progress]()]
- if options.junitout:
- procs.append(progress.JUnitTestProgressIndicator(options.junitout,
- options.junittestsuite))
if options.json_test_results:
procs.append(progress.JsonTestProgressIndicator(self.framework_name))
diff --git a/deps/v8/tools/testrunner/local/junit_output.py b/deps/v8/tools/testrunner/local/junit_output.py
deleted file mode 100644
index 52f31ec422..0000000000
--- a/deps/v8/tools/testrunner/local/junit_output.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2013 the V8 project authors. All rights reserved.
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-import xml.etree.ElementTree as xml
-
-
-class JUnitTestOutput:
- def __init__(self, test_suite_name):
- self.root = xml.Element("testsuite")
- self.root.attrib["name"] = test_suite_name
-
- def HasRunTest(self, test_name, test_cmd, test_duration, test_failure):
- testCaseElement = xml.Element("testcase")
- testCaseElement.attrib["name"] = test_name
- testCaseElement.attrib["cmd"] = test_cmd
- testCaseElement.attrib["time"] = str(round(test_duration, 3))
- if len(test_failure):
- failureElement = xml.Element("failure")
- failureElement.text = test_failure
- testCaseElement.append(failureElement)
- self.root.append(testCaseElement)
-
- def FinishAndWrite(self, f):
- xml.ElementTree(self.root).write(f, "UTF-8")
diff --git a/deps/v8/tools/testrunner/local/statusfile.py b/deps/v8/tools/testrunner/local/statusfile.py
index 6c2cc01fb8..b6f97cd564 100644
--- a/deps/v8/tools/testrunner/local/statusfile.py
+++ b/deps/v8/tools/testrunner/local/statusfile.py
@@ -282,7 +282,7 @@ def ReadStatusFile(content, variables):
def _ReadSection(section, variables, rules, prefix_rules):
assert type(section) == dict
- for rule, outcome_list in section.iteritems():
+ for rule, outcome_list in section.items():
assert type(rule) == str
if rule[-1] == '*':
diff --git a/deps/v8/tools/testrunner/local/utils.py b/deps/v8/tools/testrunner/local/utils.py
index 8fdc16b4bb..94429a9fde 100644
--- a/deps/v8/tools/testrunner/local/utils.py
+++ b/deps/v8/tools/testrunner/local/utils.py
@@ -97,6 +97,58 @@ def GuessOS():
return None
+# Returns power processor version, taking compatibility mode into account.
+# (Power9 running in Power8 compatibility mode returns 8)
+# Only useful if arch is ppc64
+def GuessPowerProcessorVersion():
+ import ctypes, ctypes.util
+ os = GuessOS()
+ if os == 'linux':
+ AT_PLATFORM = 15 # from linux/auxvec.h
+ _LIBC = ctypes.CDLL(ctypes.util.find_library('c'))
+ _LIBC.getauxval.argtypes = [ctypes.c_ulong]
+ _LIBC.getauxval.restype = ctypes.c_char_p
+ at_platform = _LIBC.getauxval(AT_PLATFORM).decode('utf-8').lower()
+ if at_platform.startswith('power6'):
+ return 6
+ elif at_platform.startswith('power7'):
+ return 7
+ elif at_platform.startswith('power8'):
+ return 8
+ elif at_platform.startswith('power9'):
+ return 9
+ elif at_platform.startswith('power10'):
+ return 10
+ else:
+ raise Exception('Unable to guess power processor version')
+ elif os == 'aix':
+ # covers aix and os400
+ RTLD_MEMBER = 0x00040000
+ _LIBC = ctypes.CDLL(ctypes.util.find_library('c'),
+ ctypes.DEFAULT_MODE | RTLD_MEMBER)
+ class _system_configuration(ctypes.Structure):
+ _fields_ = [
+ ('architecture', ctypes.c_int),
+ ('implementation', ctypes.c_int),
+ ]
+ cfg = _system_configuration.in_dll(_LIBC, '_system_configuration')
+ # Values found in sys/systemcfg.h
+ if cfg.implementation == 0x4000:
+ return 6
+ elif cfg.implementation == 0x8000:
+ return 7
+ elif cfg.implementation == 0x10000:
+ return 8
+ elif cfg.implementation == 0x20000:
+ return 9
+ elif cfg.implementation == 0x40000:
+ return 10
+ else:
+ raise Exception('Unable to guess power processor version')
+ else:
+ raise Exception('Unable to guess power processor version')
+
+
def UseSimulator(arch):
machine = platform.machine()
return (machine and
diff --git a/deps/v8/tools/testrunner/local/variants.py b/deps/v8/tools/testrunner/local/variants.py
index 0af6d3ab0e..e214de0540 100644
--- a/deps/v8/tools/testrunner/local/variants.py
+++ b/deps/v8/tools/testrunner/local/variants.py
@@ -44,6 +44,7 @@ ALL_VARIANT_FLAGS = {
"instruction_scheduling": [["--turbo-instruction-scheduling"]],
"stress_instruction_scheduling": [["--turbo-stress-instruction-scheduling"]],
"top_level_await": [["--harmony-top-level-await"]],
+ "wasm_write_protect_code": [["--wasm-write-protect-code-memory"]],
}
# Flags that lead to a contradiction with the flags provided by the respective
@@ -59,9 +60,9 @@ INCOMPATIBLE_FLAGS_PER_VARIANT = {
"slow_path": ["--no-force-slow-path"],
"stress_concurrent_allocation": ["--single-threaded-gc", "--predictable"],
"stress_concurrent_inlining": ["--single-threaded", "--predictable",
- "--no-turbo-direct-heap-access"],
+ "--no-concurrent-inlining"],
+ "concurrent_inlining": ["--no-concurrent-inlining"],
"stress_incremental_marking": ["--no-stress-incremental-marking"],
- "future": ["--no-turbo-direct-heap-access"],
"stress_js_bg_compile_wasm_code_gc": ["--no-stress-background-compile"],
"stress": ["--no-stress-opt", "--always-opt", "--no-always-opt", "--liftoff",
"--max-inlined-bytecode-size=*",
@@ -69,16 +70,17 @@ INCOMPATIBLE_FLAGS_PER_VARIANT = {
"--wasm-generic-wrapper"],
"sparkplug": ["--jitless", "--no-sparkplug" ],
"always_sparkplug": ["--jitless", "--no-sparkplug", "--no-always-sparkplug"],
- "turboprop": ["--interrupt-budget=*", "--no-turbo-direct-heap-access",
- "--no-turboprop"],
- "turboprop_as_toptier": ["--interrupt-budget=*",
- "--no-turbo-direct-heap-access", "--no-turboprop",
+ "turboprop": ["--interrupt-budget=*", "--no-turboprop"],
+ "turboprop_as_toptier": ["--interrupt-budget=*", "--no-turboprop",
"--no-turboprop-as-toptier"],
"code_serializer": ["--cache=after-execute", "--cache=full-code-cache",
"--cache=none"],
"no_local_heaps": ["--concurrent-inlining", "--turboprop"],
"experimental_regexp": ["--no-enable-experimental-regexp-engine",
"--no-default-to-experimental-regexp-engine"],
+ # There is a negative implication: --perf-prof disables
+ # --wasm-write-protect-code-memory.
+ "wasm_write_protect_code": ["--perf-prof"],
}
# Flags that lead to a contradiction under certain build variables.
@@ -101,6 +103,8 @@ INCOMPATIBLE_FLAGS_PER_BUILD_VARIABLE = {
# The conflicts might be directly contradictory flags or be caused by the
# implications defined in flag-definitions.h.
INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = {
+ "--concurrent-inlining":
+ INCOMPATIBLE_FLAGS_PER_VARIANT["concurrent_inlining"],
"--concurrent-recompilation": ["--no-concurrent-recompilation", "--predictable"],
"--enable-armv8": ["--no-enable-armv8"],
"--gc-interval=*": ["--gc-interval=*"],
@@ -109,9 +113,9 @@ INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = {
"--no-enable-sse4-1": ["--enable-sse4-1"],
"--optimize-for-size": ["--max-semi-space-size=*"],
"--stress_concurrent_allocation": ["--single-threaded-gc", "--predictable"],
- "--stress_concurrent_inlining": ["--single-threaded", "--predictable"],
+ "--stress-concurrent-inlining":
+ INCOMPATIBLE_FLAGS_PER_VARIANT["stress_concurrent_inlining"],
"--stress-flush-bytecode": ["--no-stress-flush-bytecode"],
- "--future": ["--no-turbo-direct-heap-access"],
"--stress-incremental-marking": INCOMPATIBLE_FLAGS_PER_VARIANT["stress_incremental_marking"],
}
diff --git a/deps/v8/tools/testrunner/outproc/message.py b/deps/v8/tools/testrunner/outproc/message.py
index c253b6f8e0..c301529eb7 100644
--- a/deps/v8/tools/testrunner/outproc/message.py
+++ b/deps/v8/tools/testrunner/outproc/message.py
@@ -9,9 +9,11 @@ import re
from . import base
-class OutProc(base.OutProc):
- def __init__(self, expected_outcomes, basepath, expected_fail):
- super(OutProc, self).__init__(expected_outcomes)
+class OutProc(base.ExpectedOutProc):
+ def __init__(self, expected_outcomes, basepath, expected_fail,
+ expected_filename, regenerate_expected_files):
+ super(OutProc, self).__init__(expected_outcomes, expected_filename,
+ regenerate_expected_files)
self._basepath = basepath
self._expected_fail = expected_fail
diff --git a/deps/v8/tools/testrunner/standard_runner.py b/deps/v8/tools/testrunner/standard_runner.py
index f3551d01b8..94c2576682 100755
--- a/deps/v8/tools/testrunner/standard_runner.py
+++ b/deps/v8/tools/testrunner/standard_runner.py
@@ -46,7 +46,7 @@ VARIANT_ALIASES = {
'exhaustive': MORE_VARIANTS + VARIANTS,
# Additional variants, run on a subset of bots.
'extra': ['nooptimization', 'future', 'no_wasm_traps', 'turboprop',
- 'instruction_scheduling', 'turboprop_as_toptier'],
+ 'instruction_scheduling', 'always_sparkplug'],
}
# Extra flags passed to all tests using the standard test runner.
diff --git a/deps/v8/tools/testrunner/testproc/fuzzer.py b/deps/v8/tools/testrunner/testproc/fuzzer.py
index 965ba23d04..1237da56b2 100644
--- a/deps/v8/tools/testrunner/testproc/fuzzer.py
+++ b/deps/v8/tools/testrunner/testproc/fuzzer.py
@@ -43,6 +43,7 @@ EXTRA_FLAGS = [
(0.1, '--regexp-tier-up-ticks=10'),
(0.1, '--regexp-tier-up-ticks=100'),
(0.1, '--stress-background-compile'),
+ (0.1, '--stress-concurrent-inlining'),
(0.1, '--stress-lazy-source-positions'),
(0.1, '--stress-wasm-code-gc'),
(0.1, '--turbo-instruction-scheduling'),
diff --git a/deps/v8/tools/testrunner/testproc/progress.py b/deps/v8/tools/testrunner/testproc/progress.py
index 634ef7c2f2..9ff943a5c2 100644
--- a/deps/v8/tools/testrunner/testproc/progress.py
+++ b/deps/v8/tools/testrunner/testproc/progress.py
@@ -15,7 +15,6 @@ import time
from . import base
from . import util
-from ..local import junit_output
def print_failure_header(test):
@@ -349,45 +348,6 @@ class MonochromeProgressIndicator(CompactProgressIndicator):
print(("\r" + (" " * last_length) + "\r"), end='')
-class JUnitTestProgressIndicator(ProgressIndicator):
- def __init__(self, junitout, junittestsuite):
- super(JUnitTestProgressIndicator, self).__init__()
- self._requirement = base.DROP_PASS_STDOUT
-
- self.outputter = junit_output.JUnitTestOutput(junittestsuite)
- if junitout:
- self.outfile = open(junitout, "w")
- else:
- self.outfile = sys.stdout
-
- def _on_result_for(self, test, result):
- # TODO(majeski): Support for dummy/grouped results
- fail_text = ""
- output = result.output
- if result.has_unexpected_output:
- stdout = output.stdout.strip()
- if len(stdout):
- fail_text += "stdout:\n%s\n" % stdout
- stderr = output.stderr.strip()
- if len(stderr):
- fail_text += "stderr:\n%s\n" % stderr
- fail_text += "Command: %s" % result.cmd.to_string()
- if output.HasCrashed():
- fail_text += "exit code: %d\n--- CRASHED ---" % output.exit_code
- if output.HasTimedOut():
- fail_text += "--- TIMEOUT ---"
- self.outputter.HasRunTest(
- test_name=str(test),
- test_cmd=result.cmd.to_string(relative=True),
- test_duration=output.duration,
- test_failure=fail_text)
-
- def finished(self):
- self.outputter.FinishAndWrite(self.outfile)
- if self.outfile != sys.stdout:
- self.outfile.close()
-
-
class JsonTestProgressIndicator(ProgressIndicator):
def __init__(self, framework_name):
super(JsonTestProgressIndicator, self).__init__()
diff --git a/deps/v8/tools/tickprocessor-driver.mjs b/deps/v8/tools/tickprocessor-driver.mjs
index e7020e388d..c0507bfffe 100644
--- a/deps/v8/tools/tickprocessor-driver.mjs
+++ b/deps/v8/tools/tickprocessor-driver.mjs
@@ -73,6 +73,7 @@ const tickProcessor = new TickProcessor(
params.separateBytecodes,
params.separateBuiltins,
params.separateStubs,
+ params.separateBaselineHandlers,
params.callGraphSize,
params.ignoreUnknown,
params.stateFilter,
@@ -85,4 +86,9 @@ const tickProcessor = new TickProcessor(
params.runtimeTimerFilter,
params.preprocessJson);
tickProcessor.processLogFile(params.logFileName);
-tickProcessor.printStatistics();
+
+if (params.serializeVMSymbols) {
+ tickProcessor.printVMSymbols();
+} else {
+ tickProcessor.printStatistics();
+}
diff --git a/deps/v8/tools/tickprocessor.mjs b/deps/v8/tools/tickprocessor.mjs
index 1ad67e22c0..8b59e57335 100644
--- a/deps/v8/tools/tickprocessor.mjs
+++ b/deps/v8/tools/tickprocessor.mjs
@@ -35,10 +35,12 @@ class V8Profile extends Profile {
static IC_RE =
/^(LoadGlobalIC: )|(Handler: )|(?:CallIC|LoadIC|StoreIC)|(?:Builtin: (?:Keyed)?(?:Load|Store)IC_)/;
static BYTECODES_RE = /^(BytecodeHandler: )/;
+ static BASELINE_HANDLERS_RE = /^(Builtin: .*Baseline.*)/;
static BUILTINS_RE = /^(Builtin: )/;
static STUBS_RE = /^(Stub: )/;
- constructor(separateIc, separateBytecodes, separateBuiltins, separateStubs) {
+ constructor(separateIc, separateBytecodes, separateBuiltins, separateStubs,
+ separateBaselineHandlers) {
super();
const regexps = [];
if (!separateIc) regexps.push(V8Profile.IC_RE);
@@ -46,7 +48,7 @@ class V8Profile extends Profile {
if (!separateBuiltins) regexps.push(V8Profile.BUILTINS_RE);
if (!separateStubs) regexps.push(V8Profile.STUBS_RE);
if (regexps.length > 0) {
- this.skipThisFunction = function (name) {
+ this.skipThisFunction = function(name) {
for (let i = 0; i < regexps.length; i++) {
if (regexps[i].test(name)) return true;
}
@@ -64,7 +66,7 @@ export function readFile(fileName) {
try {
return read(fileName);
} catch (e) {
- printErr(`${fileName}: ${e.message || e}`);
+ printErr(`file="${fileName}": ${e.message || e}`);
throw e;
}
}
@@ -77,6 +79,7 @@ export class TickProcessor extends LogReader {
separateBytecodes,
separateBuiltins,
separateStubs,
+ separateBaselineHandlers,
callGraphSize,
ignoreUnknown,
stateFilter,
@@ -211,7 +214,7 @@ export class TickProcessor extends LogReader {
this.profile_ = new JsonProfile();
} else {
this.profile_ = new V8Profile(separateIc, separateBytecodes,
- separateBuiltins, separateStubs);
+ separateBuiltins, separateStubs, separateBaselineHandlers);
}
this.codeTypes_ = {};
// Count each tick as a time unit.
@@ -228,6 +231,7 @@ export class TickProcessor extends LogReader {
GC: 1,
PARSER: 2,
BYTECODE_COMPILER: 3,
+ // TODO(cbruni): add BASELINE_COMPILER
COMPILER: 4,
OTHER: 5,
EXTERNAL: 6,
@@ -285,7 +289,7 @@ export class TickProcessor extends LogReader {
processSharedLibrary(name, startAddr, endAddr, aslrSlide) {
const entry = this.profile_.addLibrary(name, startAddr, endAddr, aslrSlide);
this.setCodeType(entry.getName(), 'SHARED_LIB');
- const libFuncs = this.cppEntriesProvider_.parseVmSymbols(
+ this.cppEntriesProvider_.parseVmSymbols(
name, startAddr, endAddr, aslrSlide, (fName, fStart, fEnd) => {
this.profile_.addStaticCode(fName, fStart, fEnd);
this.setCodeType(fName, 'CPP');
@@ -409,6 +413,11 @@ export class TickProcessor extends LogReader {
this.generation_++;
}
+ printVMSymbols() {
+ console.log(
+ JSON.stringify(this.profile_.serializeVMSymbols()));
+ }
+
printStatistics() {
if (this.preprocessJson) {
this.profile_.writeJson();
@@ -854,6 +863,8 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
'Separate Builtin entries'],
'--separate-stubs': ['separateStubs', parseBool,
'Separate Stub entries'],
+ '--separate-baseline-handlers': ['separateBaselineHandlers', parseBool,
+ 'Separate Baseline Handler entries'],
'--unix': ['platform', 'unix',
'Specify that we are running on *nix platform'],
'--windows': ['platform', 'windows',
@@ -880,6 +891,8 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
'Ignore ticks outside pairs of Date.now() calls'],
'--only-summary': ['onlySummary', true,
'Print only tick summary, exclude other information'],
+ '--serialize-vm-symbols': ['serializeVMSymbols', true,
+ 'Print all C++ symbols and library addresses as JSON data'],
'--preprocess': ['preprocessJson', true,
'Preprocess for consumption with web interface']
};
@@ -903,6 +916,7 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
separateBytecodes: false,
separateBuiltins: true,
separateStubs: true,
+ separateBaselineHandlers: false,
preprocessJson: null,
targetRootFS: '',
nm: 'nm',
@@ -913,6 +927,7 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
pairwiseTimedRange: false,
onlySummary: false,
runtimeTimerFilter: null,
+ serializeVMSymbols: false,
};
}
}
diff --git a/deps/v8/tools/ubsan/blacklist.txt b/deps/v8/tools/ubsan/ignorelist.txt
index ea4e79bf52..4e476abe49 100644
--- a/deps/v8/tools/ubsan/blacklist.txt
+++ b/deps/v8/tools/ubsan/ignorelist.txt
@@ -1,5 +1,5 @@
#############################################################################
-# UBSan blacklist.
+# UBSan ignorelist.
# Bug 8735: PropertyCallbackInfo<void> vs PropertyCallbackInfo<T>.
fun:*v8*internal*PropertyCallbackArguments*CallAccessorSetter*
diff --git a/deps/v8/tools/ubsan/vptr_blacklist.txt b/deps/v8/tools/ubsan/vptr_ignorelist.txt
index ccad5b1061..26c30ed02d 100644
--- a/deps/v8/tools/ubsan/vptr_blacklist.txt
+++ b/deps/v8/tools/ubsan/vptr_ignorelist.txt
@@ -1,9 +1,9 @@
#############################################################################
-# UBSan vptr blacklist.
-# Function and type based blacklisting use a mangled name, and it is especially
+# UBSan vptr ignorelist.
+# Function and type based ignorelisting use a mangled name, and it is especially
# tricky to represent C++ types. For now, any possible changes by name manglings
# are simply represented as wildcard expressions of regexp, and thus it might be
-# over-blacklisted.
+# over-ignorelisted.
#############################################################################
# UBsan goes into an infinite recursion when __dynamic_cast instrumented with
diff --git a/deps/v8/tools/unittests/run_tests_test.py b/deps/v8/tools/unittests/run_tests_test.py
index f174a239bf..ae3833abc8 100755
--- a/deps/v8/tools/unittests/run_tests_test.py
+++ b/deps/v8/tools/unittests/run_tests_test.py
@@ -334,7 +334,8 @@ class SystemTest(unittest.TestCase):
is_msan=True, is_tsan=True, is_ubsan_vptr=True, target_cpu='x86',
v8_enable_i18n_support=False, v8_target_cpu='x86',
v8_enable_verify_csa=False, v8_enable_lite_mode=False,
- v8_enable_pointer_compression=False)
+ v8_enable_pointer_compression=False,
+ v8_enable_pointer_compression_shared_cage=False)
result = run_tests(
basedir,
'--progress=verbose',
diff --git a/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json b/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json
index eb30c4d28f..04ccbb1600 100644
--- a/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json
+++ b/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json
@@ -21,6 +21,9 @@
"v8_enable_verify_csa": false,
"v8_enable_lite_mode": false,
"v8_enable_pointer_compression": true,
+ "v8_enable_pointer_compression_shared_cage": true,
"v8_control_flow_integrity": false,
+ "v8_enable_single_generation": false,
+ "v8_enable_third_party_heap": false,
"v8_enable_webassembly": true
}
diff --git a/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json b/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json
index e6d5b52942..b3e36ef6de 100644
--- a/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json
+++ b/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json
@@ -21,6 +21,9 @@
"v8_enable_verify_csa": false,
"v8_enable_lite_mode": false,
"v8_enable_pointer_compression": false,
+ "v8_enable_pointer_compression_shared_cage": false,
"v8_control_flow_integrity": false,
+ "v8_enable_single_generation": false,
+ "v8_enable_third_party_heap": false,
"v8_enable_webassembly": true
}
diff --git a/deps/v8/tools/v8.xcodeproj/README.txt b/deps/v8/tools/v8.xcodeproj/README.txt
new file mode 100644
index 0000000000..e064ff6bf1
--- /dev/null
+++ b/deps/v8/tools/v8.xcodeproj/README.txt
@@ -0,0 +1,11 @@
+The Xcode project for V8 has been retired. If an Xcode project
+is needed for building on a Mac there is the option of using GYP to
+generate it. Please look in the build directory in the root of the
+V8 project. It contains the required infrastructure and a README.txt
+file explaining how to get started.
+
+Generating Xcode projects using GYP is how the Chromium
+project integrated V8 into the Mac build.
+
+The main build system for V8 is still SCons, see
+http://code.google.com/apis/v8/build.html for details.
diff --git a/deps/v8/tools/v8_presubmit.py b/deps/v8/tools/v8_presubmit.py
index db008aabf1..f421279451 100755
--- a/deps/v8/tools/v8_presubmit.py
+++ b/deps/v8/tools/v8_presubmit.py
@@ -63,6 +63,8 @@ from testrunner.local import utils
# runtime/references: As of May 2020 the C++ style guide suggests using
# references for out parameters, see
# https://google.github.io/styleguide/cppguide.html#Inputs_and_Outputs.
+# whitespace/braces: Doesn't handle {}-initialization for custom types
+# well; also should be subsumed by clang-format.
LINT_RULES = """
-build/header_guard
@@ -70,6 +72,7 @@ LINT_RULES = """
-readability/fn_size
-readability/multiline_comment
-runtime/references
+-whitespace/braces
-whitespace/comments
""".split()
diff --git a/deps/v8/tools/v8heapconst.py b/deps/v8/tools/v8heapconst.py
index f0cc6481a8..c28123dcec 100644
--- a/deps/v8/tools/v8heapconst.py
+++ b/deps/v8/tools/v8heapconst.py
@@ -32,126 +32,128 @@ INSTANCE_TYPES = {
68: "ABSTRACT_INTERNAL_CLASS_SUBCLASS1_TYPE",
69: "ABSTRACT_INTERNAL_CLASS_SUBCLASS2_TYPE",
70: "FOREIGN_TYPE",
- 71: "WASM_TYPE_INFO_TYPE",
- 72: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE",
- 73: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE",
- 74: "CALLABLE_TASK_TYPE",
- 75: "CALLBACK_TASK_TYPE",
- 76: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE",
- 77: "LOAD_HANDLER_TYPE",
- 78: "STORE_HANDLER_TYPE",
- 79: "FUNCTION_TEMPLATE_INFO_TYPE",
- 80: "OBJECT_TEMPLATE_INFO_TYPE",
- 81: "ACCESS_CHECK_INFO_TYPE",
- 82: "ACCESSOR_INFO_TYPE",
- 83: "ACCESSOR_PAIR_TYPE",
- 84: "ALIASED_ARGUMENTS_ENTRY_TYPE",
- 85: "ALLOCATION_MEMENTO_TYPE",
- 86: "ALLOCATION_SITE_TYPE",
- 87: "ARRAY_BOILERPLATE_DESCRIPTION_TYPE",
- 88: "ASM_WASM_DATA_TYPE",
- 89: "ASYNC_GENERATOR_REQUEST_TYPE",
- 90: "BASELINE_DATA_TYPE",
- 91: "BREAK_POINT_TYPE",
- 92: "BREAK_POINT_INFO_TYPE",
- 93: "CACHED_TEMPLATE_OBJECT_TYPE",
- 94: "CALL_HANDLER_INFO_TYPE",
- 95: "CLASS_POSITIONS_TYPE",
- 96: "DEBUG_INFO_TYPE",
- 97: "ENUM_CACHE_TYPE",
- 98: "FEEDBACK_CELL_TYPE",
- 99: "FUNCTION_TEMPLATE_RARE_DATA_TYPE",
- 100: "INTERCEPTOR_INFO_TYPE",
- 101: "INTERPRETER_DATA_TYPE",
- 102: "MODULE_REQUEST_TYPE",
- 103: "PROMISE_CAPABILITY_TYPE",
- 104: "PROMISE_REACTION_TYPE",
- 105: "PROPERTY_DESCRIPTOR_OBJECT_TYPE",
- 106: "PROTOTYPE_INFO_TYPE",
- 107: "REG_EXP_BOILERPLATE_DESCRIPTION_TYPE",
- 108: "SCRIPT_TYPE",
- 109: "SOURCE_TEXT_MODULE_INFO_ENTRY_TYPE",
- 110: "STACK_FRAME_INFO_TYPE",
- 111: "TEMPLATE_OBJECT_DESCRIPTION_TYPE",
- 112: "TUPLE2_TYPE",
- 113: "WASM_EXCEPTION_TAG_TYPE",
- 114: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
- 115: "WASM_INDIRECT_FUNCTION_TABLE_TYPE",
- 116: "WASM_JS_FUNCTION_DATA_TYPE",
- 117: "FIXED_ARRAY_TYPE",
- 118: "HASH_TABLE_TYPE",
- 119: "EPHEMERON_HASH_TABLE_TYPE",
- 120: "GLOBAL_DICTIONARY_TYPE",
- 121: "NAME_DICTIONARY_TYPE",
- 122: "NUMBER_DICTIONARY_TYPE",
- 123: "ORDERED_HASH_MAP_TYPE",
- 124: "ORDERED_HASH_SET_TYPE",
- 125: "ORDERED_NAME_DICTIONARY_TYPE",
- 126: "SIMPLE_NUMBER_DICTIONARY_TYPE",
- 127: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
- 128: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
- 129: "SCRIPT_CONTEXT_TABLE_TYPE",
- 130: "BYTE_ARRAY_TYPE",
- 131: "BYTECODE_ARRAY_TYPE",
- 132: "FIXED_DOUBLE_ARRAY_TYPE",
- 133: "INTERNAL_CLASS_WITH_SMI_ELEMENTS_TYPE",
- 134: "SLOPPY_ARGUMENTS_ELEMENTS_TYPE",
- 135: "AWAIT_CONTEXT_TYPE",
- 136: "BLOCK_CONTEXT_TYPE",
- 137: "CATCH_CONTEXT_TYPE",
- 138: "DEBUG_EVALUATE_CONTEXT_TYPE",
- 139: "EVAL_CONTEXT_TYPE",
- 140: "FUNCTION_CONTEXT_TYPE",
- 141: "MODULE_CONTEXT_TYPE",
- 142: "NATIVE_CONTEXT_TYPE",
- 143: "SCRIPT_CONTEXT_TYPE",
- 144: "WITH_CONTEXT_TYPE",
- 145: "EXPORTED_SUB_CLASS_BASE_TYPE",
- 146: "EXPORTED_SUB_CLASS_TYPE",
- 147: "EXPORTED_SUB_CLASS2_TYPE",
- 148: "SMALL_ORDERED_HASH_MAP_TYPE",
- 149: "SMALL_ORDERED_HASH_SET_TYPE",
- 150: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
- 151: "DESCRIPTOR_ARRAY_TYPE",
- 152: "STRONG_DESCRIPTOR_ARRAY_TYPE",
- 153: "SOURCE_TEXT_MODULE_TYPE",
- 154: "SYNTHETIC_MODULE_TYPE",
- 155: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
- 156: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
- 157: "WEAK_FIXED_ARRAY_TYPE",
- 158: "TRANSITION_ARRAY_TYPE",
- 159: "CELL_TYPE",
- 160: "CODE_TYPE",
- 161: "CODE_DATA_CONTAINER_TYPE",
- 162: "COVERAGE_INFO_TYPE",
- 163: "EMBEDDER_DATA_ARRAY_TYPE",
- 164: "FEEDBACK_METADATA_TYPE",
- 165: "FEEDBACK_VECTOR_TYPE",
- 166: "FILLER_TYPE",
- 167: "FREE_SPACE_TYPE",
- 168: "INTERNAL_CLASS_TYPE",
- 169: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE",
- 170: "MAP_TYPE",
- 171: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE",
- 172: "PREPARSE_DATA_TYPE",
- 173: "PROPERTY_ARRAY_TYPE",
- 174: "PROPERTY_CELL_TYPE",
- 175: "SCOPE_INFO_TYPE",
- 176: "SHARED_FUNCTION_INFO_TYPE",
- 177: "SMI_BOX_TYPE",
- 178: "SMI_PAIR_TYPE",
- 179: "SORT_STATE_TYPE",
- 180: "SWISS_NAME_DICTIONARY_TYPE",
- 181: "WASM_ARRAY_TYPE",
- 182: "WASM_CAPI_FUNCTION_DATA_TYPE",
- 183: "WASM_STRUCT_TYPE",
- 184: "WEAK_ARRAY_LIST_TYPE",
- 185: "WEAK_CELL_TYPE",
- 186: "JS_PROXY_TYPE",
+ 71: "WASM_FUNCTION_DATA_TYPE",
+ 72: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
+ 73: "WASM_JS_FUNCTION_DATA_TYPE",
+ 74: "WASM_TYPE_INFO_TYPE",
+ 75: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE",
+ 76: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE",
+ 77: "CALLABLE_TASK_TYPE",
+ 78: "CALLBACK_TASK_TYPE",
+ 79: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE",
+ 80: "LOAD_HANDLER_TYPE",
+ 81: "STORE_HANDLER_TYPE",
+ 82: "FUNCTION_TEMPLATE_INFO_TYPE",
+ 83: "OBJECT_TEMPLATE_INFO_TYPE",
+ 84: "ACCESS_CHECK_INFO_TYPE",
+ 85: "ACCESSOR_INFO_TYPE",
+ 86: "ACCESSOR_PAIR_TYPE",
+ 87: "ALIASED_ARGUMENTS_ENTRY_TYPE",
+ 88: "ALLOCATION_MEMENTO_TYPE",
+ 89: "ALLOCATION_SITE_TYPE",
+ 90: "ARRAY_BOILERPLATE_DESCRIPTION_TYPE",
+ 91: "ASM_WASM_DATA_TYPE",
+ 92: "ASYNC_GENERATOR_REQUEST_TYPE",
+ 93: "BASELINE_DATA_TYPE",
+ 94: "BREAK_POINT_TYPE",
+ 95: "BREAK_POINT_INFO_TYPE",
+ 96: "CACHED_TEMPLATE_OBJECT_TYPE",
+ 97: "CALL_HANDLER_INFO_TYPE",
+ 98: "CLASS_POSITIONS_TYPE",
+ 99: "DEBUG_INFO_TYPE",
+ 100: "ENUM_CACHE_TYPE",
+ 101: "FEEDBACK_CELL_TYPE",
+ 102: "FUNCTION_TEMPLATE_RARE_DATA_TYPE",
+ 103: "INTERCEPTOR_INFO_TYPE",
+ 104: "INTERPRETER_DATA_TYPE",
+ 105: "MODULE_REQUEST_TYPE",
+ 106: "PROMISE_CAPABILITY_TYPE",
+ 107: "PROMISE_REACTION_TYPE",
+ 108: "PROPERTY_DESCRIPTOR_OBJECT_TYPE",
+ 109: "PROTOTYPE_INFO_TYPE",
+ 110: "REG_EXP_BOILERPLATE_DESCRIPTION_TYPE",
+ 111: "SCRIPT_TYPE",
+ 112: "SOURCE_TEXT_MODULE_INFO_ENTRY_TYPE",
+ 113: "STACK_FRAME_INFO_TYPE",
+ 114: "TEMPLATE_OBJECT_DESCRIPTION_TYPE",
+ 115: "TUPLE2_TYPE",
+ 116: "WASM_EXCEPTION_TAG_TYPE",
+ 117: "WASM_INDIRECT_FUNCTION_TABLE_TYPE",
+ 118: "FIXED_ARRAY_TYPE",
+ 119: "HASH_TABLE_TYPE",
+ 120: "EPHEMERON_HASH_TABLE_TYPE",
+ 121: "GLOBAL_DICTIONARY_TYPE",
+ 122: "NAME_DICTIONARY_TYPE",
+ 123: "NUMBER_DICTIONARY_TYPE",
+ 124: "ORDERED_HASH_MAP_TYPE",
+ 125: "ORDERED_HASH_SET_TYPE",
+ 126: "ORDERED_NAME_DICTIONARY_TYPE",
+ 127: "SIMPLE_NUMBER_DICTIONARY_TYPE",
+ 128: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
+ 129: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
+ 130: "SCRIPT_CONTEXT_TABLE_TYPE",
+ 131: "BYTE_ARRAY_TYPE",
+ 132: "BYTECODE_ARRAY_TYPE",
+ 133: "FIXED_DOUBLE_ARRAY_TYPE",
+ 134: "INTERNAL_CLASS_WITH_SMI_ELEMENTS_TYPE",
+ 135: "SLOPPY_ARGUMENTS_ELEMENTS_TYPE",
+ 136: "AWAIT_CONTEXT_TYPE",
+ 137: "BLOCK_CONTEXT_TYPE",
+ 138: "CATCH_CONTEXT_TYPE",
+ 139: "DEBUG_EVALUATE_CONTEXT_TYPE",
+ 140: "EVAL_CONTEXT_TYPE",
+ 141: "FUNCTION_CONTEXT_TYPE",
+ 142: "MODULE_CONTEXT_TYPE",
+ 143: "NATIVE_CONTEXT_TYPE",
+ 144: "SCRIPT_CONTEXT_TYPE",
+ 145: "WITH_CONTEXT_TYPE",
+ 146: "EXPORTED_SUB_CLASS_BASE_TYPE",
+ 147: "EXPORTED_SUB_CLASS_TYPE",
+ 148: "EXPORTED_SUB_CLASS2_TYPE",
+ 149: "SMALL_ORDERED_HASH_MAP_TYPE",
+ 150: "SMALL_ORDERED_HASH_SET_TYPE",
+ 151: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
+ 152: "DESCRIPTOR_ARRAY_TYPE",
+ 153: "STRONG_DESCRIPTOR_ARRAY_TYPE",
+ 154: "SOURCE_TEXT_MODULE_TYPE",
+ 155: "SYNTHETIC_MODULE_TYPE",
+ 156: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
+ 157: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
+ 158: "WEAK_FIXED_ARRAY_TYPE",
+ 159: "TRANSITION_ARRAY_TYPE",
+ 160: "CELL_TYPE",
+ 161: "CODE_TYPE",
+ 162: "CODE_DATA_CONTAINER_TYPE",
+ 163: "COVERAGE_INFO_TYPE",
+ 164: "EMBEDDER_DATA_ARRAY_TYPE",
+ 165: "FEEDBACK_METADATA_TYPE",
+ 166: "FEEDBACK_VECTOR_TYPE",
+ 167: "FILLER_TYPE",
+ 168: "FREE_SPACE_TYPE",
+ 169: "INTERNAL_CLASS_TYPE",
+ 170: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE",
+ 171: "MAP_TYPE",
+ 172: "MEGA_DOM_HANDLER_TYPE",
+ 173: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE",
+ 174: "PREPARSE_DATA_TYPE",
+ 175: "PROPERTY_ARRAY_TYPE",
+ 176: "PROPERTY_CELL_TYPE",
+ 177: "SCOPE_INFO_TYPE",
+ 178: "SHARED_FUNCTION_INFO_TYPE",
+ 179: "SMI_BOX_TYPE",
+ 180: "SMI_PAIR_TYPE",
+ 181: "SORT_STATE_TYPE",
+ 182: "SWISS_NAME_DICTIONARY_TYPE",
+ 183: "WASM_ARRAY_TYPE",
+ 184: "WASM_CAPI_FUNCTION_DATA_TYPE",
+ 185: "WASM_STRUCT_TYPE",
+ 186: "WEAK_ARRAY_LIST_TYPE",
+ 187: "WEAK_CELL_TYPE",
+ 188: "JS_PROXY_TYPE",
1057: "JS_OBJECT_TYPE",
- 187: "JS_GLOBAL_OBJECT_TYPE",
- 188: "JS_GLOBAL_PROXY_TYPE",
- 189: "JS_MODULE_NAMESPACE_TYPE",
+ 189: "JS_GLOBAL_OBJECT_TYPE",
+ 190: "JS_GLOBAL_PROXY_TYPE",
+ 191: "JS_MODULE_NAMESPACE_TYPE",
1040: "JS_SPECIAL_API_OBJECT_TYPE",
1041: "JS_PRIMITIVE_WRAPPER_TYPE",
1042: "JS_ARRAY_ITERATOR_PROTOTYPE_TYPE",
@@ -233,159 +235,160 @@ INSTANCE_TYPES = {
# List of known V8 maps.
KNOWN_MAPS = {
- ("read_only_space", 0x02119): (170, "MetaMap"),
+ ("read_only_space", 0x02119): (171, "MetaMap"),
("read_only_space", 0x02141): (67, "NullMap"),
- ("read_only_space", 0x02169): (152, "StrongDescriptorArrayMap"),
- ("read_only_space", 0x02191): (157, "WeakFixedArrayMap"),
- ("read_only_space", 0x021d1): (97, "EnumCacheMap"),
- ("read_only_space", 0x02205): (117, "FixedArrayMap"),
+ ("read_only_space", 0x02169): (153, "StrongDescriptorArrayMap"),
+ ("read_only_space", 0x02191): (158, "WeakFixedArrayMap"),
+ ("read_only_space", 0x021d1): (100, "EnumCacheMap"),
+ ("read_only_space", 0x02205): (118, "FixedArrayMap"),
("read_only_space", 0x02251): (8, "OneByteInternalizedStringMap"),
- ("read_only_space", 0x0229d): (167, "FreeSpaceMap"),
- ("read_only_space", 0x022c5): (166, "OnePointerFillerMap"),
- ("read_only_space", 0x022ed): (166, "TwoPointerFillerMap"),
+ ("read_only_space", 0x0229d): (168, "FreeSpaceMap"),
+ ("read_only_space", 0x022c5): (167, "OnePointerFillerMap"),
+ ("read_only_space", 0x022ed): (167, "TwoPointerFillerMap"),
("read_only_space", 0x02315): (67, "UninitializedMap"),
("read_only_space", 0x0238d): (67, "UndefinedMap"),
("read_only_space", 0x023d1): (66, "HeapNumberMap"),
("read_only_space", 0x02405): (67, "TheHoleMap"),
("read_only_space", 0x02465): (67, "BooleanMap"),
- ("read_only_space", 0x02509): (130, "ByteArrayMap"),
- ("read_only_space", 0x02531): (117, "FixedCOWArrayMap"),
- ("read_only_space", 0x02559): (118, "HashTableMap"),
+ ("read_only_space", 0x02509): (131, "ByteArrayMap"),
+ ("read_only_space", 0x02531): (118, "FixedCOWArrayMap"),
+ ("read_only_space", 0x02559): (119, "HashTableMap"),
("read_only_space", 0x02581): (64, "SymbolMap"),
("read_only_space", 0x025a9): (40, "OneByteStringMap"),
- ("read_only_space", 0x025d1): (175, "ScopeInfoMap"),
- ("read_only_space", 0x025f9): (176, "SharedFunctionInfoMap"),
- ("read_only_space", 0x02621): (160, "CodeMap"),
- ("read_only_space", 0x02649): (159, "CellMap"),
- ("read_only_space", 0x02671): (174, "GlobalPropertyCellMap"),
+ ("read_only_space", 0x025d1): (177, "ScopeInfoMap"),
+ ("read_only_space", 0x025f9): (178, "SharedFunctionInfoMap"),
+ ("read_only_space", 0x02621): (161, "CodeMap"),
+ ("read_only_space", 0x02649): (160, "CellMap"),
+ ("read_only_space", 0x02671): (176, "GlobalPropertyCellMap"),
("read_only_space", 0x02699): (70, "ForeignMap"),
- ("read_only_space", 0x026c1): (158, "TransitionArrayMap"),
+ ("read_only_space", 0x026c1): (159, "TransitionArrayMap"),
("read_only_space", 0x026e9): (45, "ThinOneByteStringMap"),
- ("read_only_space", 0x02711): (165, "FeedbackVectorMap"),
+ ("read_only_space", 0x02711): (166, "FeedbackVectorMap"),
("read_only_space", 0x02749): (67, "ArgumentsMarkerMap"),
("read_only_space", 0x027a9): (67, "ExceptionMap"),
("read_only_space", 0x02805): (67, "TerminationExceptionMap"),
("read_only_space", 0x0286d): (67, "OptimizedOutMap"),
("read_only_space", 0x028cd): (67, "StaleRegisterMap"),
- ("read_only_space", 0x0292d): (129, "ScriptContextTableMap"),
- ("read_only_space", 0x02955): (127, "ClosureFeedbackCellArrayMap"),
- ("read_only_space", 0x0297d): (164, "FeedbackMetadataArrayMap"),
- ("read_only_space", 0x029a5): (117, "ArrayListMap"),
+ ("read_only_space", 0x0292d): (130, "ScriptContextTableMap"),
+ ("read_only_space", 0x02955): (128, "ClosureFeedbackCellArrayMap"),
+ ("read_only_space", 0x0297d): (165, "FeedbackMetadataArrayMap"),
+ ("read_only_space", 0x029a5): (118, "ArrayListMap"),
("read_only_space", 0x029cd): (65, "BigIntMap"),
- ("read_only_space", 0x029f5): (128, "ObjectBoilerplateDescriptionMap"),
- ("read_only_space", 0x02a1d): (131, "BytecodeArrayMap"),
- ("read_only_space", 0x02a45): (161, "CodeDataContainerMap"),
- ("read_only_space", 0x02a6d): (162, "CoverageInfoMap"),
- ("read_only_space", 0x02a95): (132, "FixedDoubleArrayMap"),
- ("read_only_space", 0x02abd): (120, "GlobalDictionaryMap"),
- ("read_only_space", 0x02ae5): (98, "ManyClosuresCellMap"),
- ("read_only_space", 0x02b0d): (117, "ModuleInfoMap"),
- ("read_only_space", 0x02b35): (121, "NameDictionaryMap"),
- ("read_only_space", 0x02b5d): (98, "NoClosuresCellMap"),
- ("read_only_space", 0x02b85): (122, "NumberDictionaryMap"),
- ("read_only_space", 0x02bad): (98, "OneClosureCellMap"),
- ("read_only_space", 0x02bd5): (123, "OrderedHashMapMap"),
- ("read_only_space", 0x02bfd): (124, "OrderedHashSetMap"),
- ("read_only_space", 0x02c25): (125, "OrderedNameDictionaryMap"),
- ("read_only_space", 0x02c4d): (172, "PreparseDataMap"),
- ("read_only_space", 0x02c75): (173, "PropertyArrayMap"),
- ("read_only_space", 0x02c9d): (94, "SideEffectCallHandlerInfoMap"),
- ("read_only_space", 0x02cc5): (94, "SideEffectFreeCallHandlerInfoMap"),
- ("read_only_space", 0x02ced): (94, "NextCallSideEffectFreeCallHandlerInfoMap"),
- ("read_only_space", 0x02d15): (126, "SimpleNumberDictionaryMap"),
- ("read_only_space", 0x02d3d): (148, "SmallOrderedHashMapMap"),
- ("read_only_space", 0x02d65): (149, "SmallOrderedHashSetMap"),
- ("read_only_space", 0x02d8d): (150, "SmallOrderedNameDictionaryMap"),
- ("read_only_space", 0x02db5): (153, "SourceTextModuleMap"),
- ("read_only_space", 0x02ddd): (180, "SwissNameDictionaryMap"),
- ("read_only_space", 0x02e05): (154, "SyntheticModuleMap"),
- ("read_only_space", 0x02e2d): (71, "WasmTypeInfoMap"),
- ("read_only_space", 0x02e55): (184, "WeakArrayListMap"),
- ("read_only_space", 0x02e7d): (119, "EphemeronHashTableMap"),
- ("read_only_space", 0x02ea5): (163, "EmbedderDataArrayMap"),
- ("read_only_space", 0x02ecd): (185, "WeakCellMap"),
- ("read_only_space", 0x02ef5): (32, "StringMap"),
- ("read_only_space", 0x02f1d): (41, "ConsOneByteStringMap"),
- ("read_only_space", 0x02f45): (33, "ConsStringMap"),
- ("read_only_space", 0x02f6d): (37, "ThinStringMap"),
- ("read_only_space", 0x02f95): (35, "SlicedStringMap"),
- ("read_only_space", 0x02fbd): (43, "SlicedOneByteStringMap"),
- ("read_only_space", 0x02fe5): (34, "ExternalStringMap"),
- ("read_only_space", 0x0300d): (42, "ExternalOneByteStringMap"),
- ("read_only_space", 0x03035): (50, "UncachedExternalStringMap"),
- ("read_only_space", 0x0305d): (0, "InternalizedStringMap"),
- ("read_only_space", 0x03085): (2, "ExternalInternalizedStringMap"),
- ("read_only_space", 0x030ad): (10, "ExternalOneByteInternalizedStringMap"),
- ("read_only_space", 0x030d5): (18, "UncachedExternalInternalizedStringMap"),
- ("read_only_space", 0x030fd): (26, "UncachedExternalOneByteInternalizedStringMap"),
- ("read_only_space", 0x03125): (58, "UncachedExternalOneByteStringMap"),
- ("read_only_space", 0x0314d): (67, "SelfReferenceMarkerMap"),
- ("read_only_space", 0x03175): (67, "BasicBlockCountersMarkerMap"),
- ("read_only_space", 0x031b9): (87, "ArrayBoilerplateDescriptionMap"),
- ("read_only_space", 0x032b9): (100, "InterceptorInfoMap"),
- ("read_only_space", 0x05401): (72, "PromiseFulfillReactionJobTaskMap"),
- ("read_only_space", 0x05429): (73, "PromiseRejectReactionJobTaskMap"),
- ("read_only_space", 0x05451): (74, "CallableTaskMap"),
- ("read_only_space", 0x05479): (75, "CallbackTaskMap"),
- ("read_only_space", 0x054a1): (76, "PromiseResolveThenableJobTaskMap"),
- ("read_only_space", 0x054c9): (79, "FunctionTemplateInfoMap"),
- ("read_only_space", 0x054f1): (80, "ObjectTemplateInfoMap"),
- ("read_only_space", 0x05519): (81, "AccessCheckInfoMap"),
- ("read_only_space", 0x05541): (82, "AccessorInfoMap"),
- ("read_only_space", 0x05569): (83, "AccessorPairMap"),
- ("read_only_space", 0x05591): (84, "AliasedArgumentsEntryMap"),
- ("read_only_space", 0x055b9): (85, "AllocationMementoMap"),
- ("read_only_space", 0x055e1): (88, "AsmWasmDataMap"),
- ("read_only_space", 0x05609): (89, "AsyncGeneratorRequestMap"),
- ("read_only_space", 0x05631): (90, "BaselineDataMap"),
- ("read_only_space", 0x05659): (91, "BreakPointMap"),
- ("read_only_space", 0x05681): (92, "BreakPointInfoMap"),
- ("read_only_space", 0x056a9): (93, "CachedTemplateObjectMap"),
- ("read_only_space", 0x056d1): (95, "ClassPositionsMap"),
- ("read_only_space", 0x056f9): (96, "DebugInfoMap"),
- ("read_only_space", 0x05721): (99, "FunctionTemplateRareDataMap"),
- ("read_only_space", 0x05749): (101, "InterpreterDataMap"),
- ("read_only_space", 0x05771): (102, "ModuleRequestMap"),
- ("read_only_space", 0x05799): (103, "PromiseCapabilityMap"),
- ("read_only_space", 0x057c1): (104, "PromiseReactionMap"),
- ("read_only_space", 0x057e9): (105, "PropertyDescriptorObjectMap"),
- ("read_only_space", 0x05811): (106, "PrototypeInfoMap"),
- ("read_only_space", 0x05839): (107, "RegExpBoilerplateDescriptionMap"),
- ("read_only_space", 0x05861): (108, "ScriptMap"),
- ("read_only_space", 0x05889): (109, "SourceTextModuleInfoEntryMap"),
- ("read_only_space", 0x058b1): (110, "StackFrameInfoMap"),
- ("read_only_space", 0x058d9): (111, "TemplateObjectDescriptionMap"),
- ("read_only_space", 0x05901): (112, "Tuple2Map"),
- ("read_only_space", 0x05929): (113, "WasmExceptionTagMap"),
- ("read_only_space", 0x05951): (114, "WasmExportedFunctionDataMap"),
- ("read_only_space", 0x05979): (115, "WasmIndirectFunctionTableMap"),
- ("read_only_space", 0x059a1): (116, "WasmJSFunctionDataMap"),
- ("read_only_space", 0x059c9): (134, "SloppyArgumentsElementsMap"),
- ("read_only_space", 0x059f1): (151, "DescriptorArrayMap"),
- ("read_only_space", 0x05a19): (156, "UncompiledDataWithoutPreparseDataMap"),
- ("read_only_space", 0x05a41): (155, "UncompiledDataWithPreparseDataMap"),
- ("read_only_space", 0x05a69): (171, "OnHeapBasicBlockProfilerDataMap"),
- ("read_only_space", 0x05a91): (168, "InternalClassMap"),
- ("read_only_space", 0x05ab9): (178, "SmiPairMap"),
- ("read_only_space", 0x05ae1): (177, "SmiBoxMap"),
- ("read_only_space", 0x05b09): (145, "ExportedSubClassBaseMap"),
- ("read_only_space", 0x05b31): (146, "ExportedSubClassMap"),
- ("read_only_space", 0x05b59): (68, "AbstractInternalClassSubclass1Map"),
- ("read_only_space", 0x05b81): (69, "AbstractInternalClassSubclass2Map"),
- ("read_only_space", 0x05ba9): (133, "InternalClassWithSmiElementsMap"),
- ("read_only_space", 0x05bd1): (169, "InternalClassWithStructElementsMap"),
- ("read_only_space", 0x05bf9): (147, "ExportedSubClass2Map"),
- ("read_only_space", 0x05c21): (179, "SortStateMap"),
- ("read_only_space", 0x05c49): (182, "WasmCapiFunctionDataMap"),
- ("read_only_space", 0x05c71): (86, "AllocationSiteWithWeakNextMap"),
- ("read_only_space", 0x05c99): (86, "AllocationSiteWithoutWeakNextMap"),
- ("read_only_space", 0x05cc1): (77, "LoadHandler1Map"),
- ("read_only_space", 0x05ce9): (77, "LoadHandler2Map"),
- ("read_only_space", 0x05d11): (77, "LoadHandler3Map"),
- ("read_only_space", 0x05d39): (78, "StoreHandler0Map"),
- ("read_only_space", 0x05d61): (78, "StoreHandler1Map"),
- ("read_only_space", 0x05d89): (78, "StoreHandler2Map"),
- ("read_only_space", 0x05db1): (78, "StoreHandler3Map"),
+ ("read_only_space", 0x029f5): (129, "ObjectBoilerplateDescriptionMap"),
+ ("read_only_space", 0x02a1d): (132, "BytecodeArrayMap"),
+ ("read_only_space", 0x02a45): (162, "CodeDataContainerMap"),
+ ("read_only_space", 0x02a6d): (163, "CoverageInfoMap"),
+ ("read_only_space", 0x02a95): (133, "FixedDoubleArrayMap"),
+ ("read_only_space", 0x02abd): (121, "GlobalDictionaryMap"),
+ ("read_only_space", 0x02ae5): (101, "ManyClosuresCellMap"),
+ ("read_only_space", 0x02b0d): (172, "MegaDomHandlerMap"),
+ ("read_only_space", 0x02b35): (118, "ModuleInfoMap"),
+ ("read_only_space", 0x02b5d): (122, "NameDictionaryMap"),
+ ("read_only_space", 0x02b85): (101, "NoClosuresCellMap"),
+ ("read_only_space", 0x02bad): (123, "NumberDictionaryMap"),
+ ("read_only_space", 0x02bd5): (101, "OneClosureCellMap"),
+ ("read_only_space", 0x02bfd): (124, "OrderedHashMapMap"),
+ ("read_only_space", 0x02c25): (125, "OrderedHashSetMap"),
+ ("read_only_space", 0x02c4d): (126, "OrderedNameDictionaryMap"),
+ ("read_only_space", 0x02c75): (174, "PreparseDataMap"),
+ ("read_only_space", 0x02c9d): (175, "PropertyArrayMap"),
+ ("read_only_space", 0x02cc5): (97, "SideEffectCallHandlerInfoMap"),
+ ("read_only_space", 0x02ced): (97, "SideEffectFreeCallHandlerInfoMap"),
+ ("read_only_space", 0x02d15): (97, "NextCallSideEffectFreeCallHandlerInfoMap"),
+ ("read_only_space", 0x02d3d): (127, "SimpleNumberDictionaryMap"),
+ ("read_only_space", 0x02d65): (149, "SmallOrderedHashMapMap"),
+ ("read_only_space", 0x02d8d): (150, "SmallOrderedHashSetMap"),
+ ("read_only_space", 0x02db5): (151, "SmallOrderedNameDictionaryMap"),
+ ("read_only_space", 0x02ddd): (154, "SourceTextModuleMap"),
+ ("read_only_space", 0x02e05): (182, "SwissNameDictionaryMap"),
+ ("read_only_space", 0x02e2d): (155, "SyntheticModuleMap"),
+ ("read_only_space", 0x02e55): (72, "WasmExportedFunctionDataMap"),
+ ("read_only_space", 0x02e7d): (73, "WasmJSFunctionDataMap"),
+ ("read_only_space", 0x02ea5): (74, "WasmTypeInfoMap"),
+ ("read_only_space", 0x02ecd): (186, "WeakArrayListMap"),
+ ("read_only_space", 0x02ef5): (120, "EphemeronHashTableMap"),
+ ("read_only_space", 0x02f1d): (164, "EmbedderDataArrayMap"),
+ ("read_only_space", 0x02f45): (187, "WeakCellMap"),
+ ("read_only_space", 0x02f6d): (32, "StringMap"),
+ ("read_only_space", 0x02f95): (41, "ConsOneByteStringMap"),
+ ("read_only_space", 0x02fbd): (33, "ConsStringMap"),
+ ("read_only_space", 0x02fe5): (37, "ThinStringMap"),
+ ("read_only_space", 0x0300d): (35, "SlicedStringMap"),
+ ("read_only_space", 0x03035): (43, "SlicedOneByteStringMap"),
+ ("read_only_space", 0x0305d): (34, "ExternalStringMap"),
+ ("read_only_space", 0x03085): (42, "ExternalOneByteStringMap"),
+ ("read_only_space", 0x030ad): (50, "UncachedExternalStringMap"),
+ ("read_only_space", 0x030d5): (0, "InternalizedStringMap"),
+ ("read_only_space", 0x030fd): (2, "ExternalInternalizedStringMap"),
+ ("read_only_space", 0x03125): (10, "ExternalOneByteInternalizedStringMap"),
+ ("read_only_space", 0x0314d): (18, "UncachedExternalInternalizedStringMap"),
+ ("read_only_space", 0x03175): (26, "UncachedExternalOneByteInternalizedStringMap"),
+ ("read_only_space", 0x0319d): (58, "UncachedExternalOneByteStringMap"),
+ ("read_only_space", 0x031c5): (67, "SelfReferenceMarkerMap"),
+ ("read_only_space", 0x031ed): (67, "BasicBlockCountersMarkerMap"),
+ ("read_only_space", 0x03231): (90, "ArrayBoilerplateDescriptionMap"),
+ ("read_only_space", 0x03331): (103, "InterceptorInfoMap"),
+ ("read_only_space", 0x05639): (75, "PromiseFulfillReactionJobTaskMap"),
+ ("read_only_space", 0x05661): (76, "PromiseRejectReactionJobTaskMap"),
+ ("read_only_space", 0x05689): (77, "CallableTaskMap"),
+ ("read_only_space", 0x056b1): (78, "CallbackTaskMap"),
+ ("read_only_space", 0x056d9): (79, "PromiseResolveThenableJobTaskMap"),
+ ("read_only_space", 0x05701): (82, "FunctionTemplateInfoMap"),
+ ("read_only_space", 0x05729): (83, "ObjectTemplateInfoMap"),
+ ("read_only_space", 0x05751): (84, "AccessCheckInfoMap"),
+ ("read_only_space", 0x05779): (85, "AccessorInfoMap"),
+ ("read_only_space", 0x057a1): (86, "AccessorPairMap"),
+ ("read_only_space", 0x057c9): (87, "AliasedArgumentsEntryMap"),
+ ("read_only_space", 0x057f1): (88, "AllocationMementoMap"),
+ ("read_only_space", 0x05819): (91, "AsmWasmDataMap"),
+ ("read_only_space", 0x05841): (92, "AsyncGeneratorRequestMap"),
+ ("read_only_space", 0x05869): (93, "BaselineDataMap"),
+ ("read_only_space", 0x05891): (94, "BreakPointMap"),
+ ("read_only_space", 0x058b9): (95, "BreakPointInfoMap"),
+ ("read_only_space", 0x058e1): (96, "CachedTemplateObjectMap"),
+ ("read_only_space", 0x05909): (98, "ClassPositionsMap"),
+ ("read_only_space", 0x05931): (99, "DebugInfoMap"),
+ ("read_only_space", 0x05959): (102, "FunctionTemplateRareDataMap"),
+ ("read_only_space", 0x05981): (104, "InterpreterDataMap"),
+ ("read_only_space", 0x059a9): (105, "ModuleRequestMap"),
+ ("read_only_space", 0x059d1): (106, "PromiseCapabilityMap"),
+ ("read_only_space", 0x059f9): (107, "PromiseReactionMap"),
+ ("read_only_space", 0x05a21): (108, "PropertyDescriptorObjectMap"),
+ ("read_only_space", 0x05a49): (109, "PrototypeInfoMap"),
+ ("read_only_space", 0x05a71): (110, "RegExpBoilerplateDescriptionMap"),
+ ("read_only_space", 0x05a99): (111, "ScriptMap"),
+ ("read_only_space", 0x05ac1): (112, "SourceTextModuleInfoEntryMap"),
+ ("read_only_space", 0x05ae9): (113, "StackFrameInfoMap"),
+ ("read_only_space", 0x05b11): (114, "TemplateObjectDescriptionMap"),
+ ("read_only_space", 0x05b39): (115, "Tuple2Map"),
+ ("read_only_space", 0x05b61): (116, "WasmExceptionTagMap"),
+ ("read_only_space", 0x05b89): (117, "WasmIndirectFunctionTableMap"),
+ ("read_only_space", 0x05bb1): (135, "SloppyArgumentsElementsMap"),
+ ("read_only_space", 0x05bd9): (152, "DescriptorArrayMap"),
+ ("read_only_space", 0x05c01): (157, "UncompiledDataWithoutPreparseDataMap"),
+ ("read_only_space", 0x05c29): (156, "UncompiledDataWithPreparseDataMap"),
+ ("read_only_space", 0x05c51): (173, "OnHeapBasicBlockProfilerDataMap"),
+ ("read_only_space", 0x05c79): (169, "InternalClassMap"),
+ ("read_only_space", 0x05ca1): (180, "SmiPairMap"),
+ ("read_only_space", 0x05cc9): (179, "SmiBoxMap"),
+ ("read_only_space", 0x05cf1): (146, "ExportedSubClassBaseMap"),
+ ("read_only_space", 0x05d19): (147, "ExportedSubClassMap"),
+ ("read_only_space", 0x05d41): (68, "AbstractInternalClassSubclass1Map"),
+ ("read_only_space", 0x05d69): (69, "AbstractInternalClassSubclass2Map"),
+ ("read_only_space", 0x05d91): (134, "InternalClassWithSmiElementsMap"),
+ ("read_only_space", 0x05db9): (170, "InternalClassWithStructElementsMap"),
+ ("read_only_space", 0x05de1): (148, "ExportedSubClass2Map"),
+ ("read_only_space", 0x05e09): (181, "SortStateMap"),
+ ("read_only_space", 0x05e31): (184, "WasmCapiFunctionDataMap"),
+ ("read_only_space", 0x05e59): (89, "AllocationSiteWithWeakNextMap"),
+ ("read_only_space", 0x05e81): (89, "AllocationSiteWithoutWeakNextMap"),
+ ("read_only_space", 0x05ea9): (80, "LoadHandler1Map"),
+ ("read_only_space", 0x05ed1): (80, "LoadHandler2Map"),
+ ("read_only_space", 0x05ef9): (80, "LoadHandler3Map"),
+ ("read_only_space", 0x05f21): (81, "StoreHandler0Map"),
+ ("read_only_space", 0x05f49): (81, "StoreHandler1Map"),
+ ("read_only_space", 0x05f71): (81, "StoreHandler2Map"),
+ ("read_only_space", 0x05f99): (81, "StoreHandler3Map"),
("map_space", 0x02119): (1057, "ExternalMap"),
("map_space", 0x02141): (1098, "JSMessageObjectMap"),
}
@@ -411,32 +414,32 @@ KNOWN_OBJECTS = {
("read_only_space", 0x0282d): "TerminationException",
("read_only_space", 0x02895): "OptimizedOut",
("read_only_space", 0x028f5): "StaleRegister",
- ("read_only_space", 0x0319d): "EmptyPropertyArray",
- ("read_only_space", 0x031a5): "EmptyByteArray",
- ("read_only_space", 0x031ad): "EmptyObjectBoilerplateDescription",
- ("read_only_space", 0x031e1): "EmptyArrayBoilerplateDescription",
- ("read_only_space", 0x031ed): "EmptyClosureFeedbackCellArray",
- ("read_only_space", 0x031f5): "EmptySlowElementDictionary",
- ("read_only_space", 0x03219): "EmptyOrderedHashMap",
- ("read_only_space", 0x0322d): "EmptyOrderedHashSet",
- ("read_only_space", 0x03241): "EmptyFeedbackMetadata",
- ("read_only_space", 0x0324d): "EmptyPropertyDictionary",
- ("read_only_space", 0x03275): "EmptyOrderedPropertyDictionary",
- ("read_only_space", 0x0328d): "EmptySwissPropertyDictionary",
- ("read_only_space", 0x032e1): "NoOpInterceptorInfo",
- ("read_only_space", 0x03309): "EmptyWeakArrayList",
- ("read_only_space", 0x03315): "InfinityValue",
- ("read_only_space", 0x03321): "MinusZeroValue",
- ("read_only_space", 0x0332d): "MinusInfinityValue",
- ("read_only_space", 0x03339): "SelfReferenceMarker",
- ("read_only_space", 0x03379): "BasicBlockCountersMarker",
- ("read_only_space", 0x033bd): "OffHeapTrampolineRelocationInfo",
- ("read_only_space", 0x033c9): "TrampolineTrivialCodeDataContainer",
- ("read_only_space", 0x033d5): "TrampolinePromiseRejectionCodeDataContainer",
- ("read_only_space", 0x033e1): "GlobalThisBindingScopeInfo",
- ("read_only_space", 0x03415): "EmptyFunctionScopeInfo",
- ("read_only_space", 0x03439): "NativeScopeInfo",
- ("read_only_space", 0x03451): "HashSeed",
+ ("read_only_space", 0x03215): "EmptyPropertyArray",
+ ("read_only_space", 0x0321d): "EmptyByteArray",
+ ("read_only_space", 0x03225): "EmptyObjectBoilerplateDescription",
+ ("read_only_space", 0x03259): "EmptyArrayBoilerplateDescription",
+ ("read_only_space", 0x03265): "EmptyClosureFeedbackCellArray",
+ ("read_only_space", 0x0326d): "EmptySlowElementDictionary",
+ ("read_only_space", 0x03291): "EmptyOrderedHashMap",
+ ("read_only_space", 0x032a5): "EmptyOrderedHashSet",
+ ("read_only_space", 0x032b9): "EmptyFeedbackMetadata",
+ ("read_only_space", 0x032c5): "EmptyPropertyDictionary",
+ ("read_only_space", 0x032ed): "EmptyOrderedPropertyDictionary",
+ ("read_only_space", 0x03305): "EmptySwissPropertyDictionary",
+ ("read_only_space", 0x03359): "NoOpInterceptorInfo",
+ ("read_only_space", 0x03381): "EmptyWeakArrayList",
+ ("read_only_space", 0x0338d): "InfinityValue",
+ ("read_only_space", 0x03399): "MinusZeroValue",
+ ("read_only_space", 0x033a5): "MinusInfinityValue",
+ ("read_only_space", 0x033b1): "SelfReferenceMarker",
+ ("read_only_space", 0x033f1): "BasicBlockCountersMarker",
+ ("read_only_space", 0x03435): "OffHeapTrampolineRelocationInfo",
+ ("read_only_space", 0x03441): "TrampolineTrivialCodeDataContainer",
+ ("read_only_space", 0x0344d): "TrampolinePromiseRejectionCodeDataContainer",
+ ("read_only_space", 0x03459): "GlobalThisBindingScopeInfo",
+ ("read_only_space", 0x0348d): "EmptyFunctionScopeInfo",
+ ("read_only_space", 0x034b1): "NativeScopeInfo",
+ ("read_only_space", 0x034c9): "HashSeed",
("old_space", 0x02119): "ArgumentsIteratorAccessor",
("old_space", 0x0215d): "ArrayLengthAccessor",
("old_space", 0x021a1): "BoundFunctionLengthAccessor",
@@ -453,52 +456,53 @@ KNOWN_OBJECTS = {
("old_space", 0x0244d): "ManyClosuresCell",
("old_space", 0x02459): "ArrayConstructorProtector",
("old_space", 0x0246d): "NoElementsProtector",
- ("old_space", 0x02481): "IsConcatSpreadableProtector",
- ("old_space", 0x02495): "ArraySpeciesProtector",
- ("old_space", 0x024a9): "TypedArraySpeciesProtector",
- ("old_space", 0x024bd): "PromiseSpeciesProtector",
- ("old_space", 0x024d1): "RegExpSpeciesProtector",
- ("old_space", 0x024e5): "StringLengthProtector",
- ("old_space", 0x024f9): "ArrayIteratorProtector",
- ("old_space", 0x0250d): "ArrayBufferDetachingProtector",
- ("old_space", 0x02521): "PromiseHookProtector",
- ("old_space", 0x02535): "PromiseResolveProtector",
- ("old_space", 0x02549): "MapIteratorProtector",
- ("old_space", 0x0255d): "PromiseThenProtector",
- ("old_space", 0x02571): "SetIteratorProtector",
- ("old_space", 0x02585): "StringIteratorProtector",
- ("old_space", 0x02599): "SingleCharacterStringCache",
- ("old_space", 0x029a1): "StringSplitCache",
- ("old_space", 0x02da9): "RegExpMultipleCache",
- ("old_space", 0x031b1): "BuiltinsConstantsTable",
- ("old_space", 0x035b1): "AsyncFunctionAwaitRejectSharedFun",
- ("old_space", 0x035d5): "AsyncFunctionAwaitResolveSharedFun",
- ("old_space", 0x035f9): "AsyncGeneratorAwaitRejectSharedFun",
- ("old_space", 0x0361d): "AsyncGeneratorAwaitResolveSharedFun",
- ("old_space", 0x03641): "AsyncGeneratorYieldResolveSharedFun",
- ("old_space", 0x03665): "AsyncGeneratorReturnResolveSharedFun",
- ("old_space", 0x03689): "AsyncGeneratorReturnClosedRejectSharedFun",
- ("old_space", 0x036ad): "AsyncGeneratorReturnClosedResolveSharedFun",
- ("old_space", 0x036d1): "AsyncIteratorValueUnwrapSharedFun",
- ("old_space", 0x036f5): "PromiseAllResolveElementSharedFun",
- ("old_space", 0x03719): "PromiseAllSettledResolveElementSharedFun",
- ("old_space", 0x0373d): "PromiseAllSettledRejectElementSharedFun",
- ("old_space", 0x03761): "PromiseAnyRejectElementSharedFun",
- ("old_space", 0x03785): "PromiseCapabilityDefaultRejectSharedFun",
- ("old_space", 0x037a9): "PromiseCapabilityDefaultResolveSharedFun",
- ("old_space", 0x037cd): "PromiseCatchFinallySharedFun",
- ("old_space", 0x037f1): "PromiseGetCapabilitiesExecutorSharedFun",
- ("old_space", 0x03815): "PromiseThenFinallySharedFun",
- ("old_space", 0x03839): "PromiseThrowerFinallySharedFun",
- ("old_space", 0x0385d): "PromiseValueThunkFinallySharedFun",
- ("old_space", 0x03881): "ProxyRevokeSharedFun",
+ ("old_space", 0x02481): "MegaDOMProtector",
+ ("old_space", 0x02495): "IsConcatSpreadableProtector",
+ ("old_space", 0x024a9): "ArraySpeciesProtector",
+ ("old_space", 0x024bd): "TypedArraySpeciesProtector",
+ ("old_space", 0x024d1): "PromiseSpeciesProtector",
+ ("old_space", 0x024e5): "RegExpSpeciesProtector",
+ ("old_space", 0x024f9): "StringLengthProtector",
+ ("old_space", 0x0250d): "ArrayIteratorProtector",
+ ("old_space", 0x02521): "ArrayBufferDetachingProtector",
+ ("old_space", 0x02535): "PromiseHookProtector",
+ ("old_space", 0x02549): "PromiseResolveProtector",
+ ("old_space", 0x0255d): "MapIteratorProtector",
+ ("old_space", 0x02571): "PromiseThenProtector",
+ ("old_space", 0x02585): "SetIteratorProtector",
+ ("old_space", 0x02599): "StringIteratorProtector",
+ ("old_space", 0x025ad): "SingleCharacterStringCache",
+ ("old_space", 0x029b5): "StringSplitCache",
+ ("old_space", 0x02dbd): "RegExpMultipleCache",
+ ("old_space", 0x031c5): "BuiltinsConstantsTable",
+ ("old_space", 0x035d1): "AsyncFunctionAwaitRejectSharedFun",
+ ("old_space", 0x035f5): "AsyncFunctionAwaitResolveSharedFun",
+ ("old_space", 0x03619): "AsyncGeneratorAwaitRejectSharedFun",
+ ("old_space", 0x0363d): "AsyncGeneratorAwaitResolveSharedFun",
+ ("old_space", 0x03661): "AsyncGeneratorYieldResolveSharedFun",
+ ("old_space", 0x03685): "AsyncGeneratorReturnResolveSharedFun",
+ ("old_space", 0x036a9): "AsyncGeneratorReturnClosedRejectSharedFun",
+ ("old_space", 0x036cd): "AsyncGeneratorReturnClosedResolveSharedFun",
+ ("old_space", 0x036f1): "AsyncIteratorValueUnwrapSharedFun",
+ ("old_space", 0x03715): "PromiseAllResolveElementSharedFun",
+ ("old_space", 0x03739): "PromiseAllSettledResolveElementSharedFun",
+ ("old_space", 0x0375d): "PromiseAllSettledRejectElementSharedFun",
+ ("old_space", 0x03781): "PromiseAnyRejectElementSharedFun",
+ ("old_space", 0x037a5): "PromiseCapabilityDefaultRejectSharedFun",
+ ("old_space", 0x037c9): "PromiseCapabilityDefaultResolveSharedFun",
+ ("old_space", 0x037ed): "PromiseCatchFinallySharedFun",
+ ("old_space", 0x03811): "PromiseGetCapabilitiesExecutorSharedFun",
+ ("old_space", 0x03835): "PromiseThenFinallySharedFun",
+ ("old_space", 0x03859): "PromiseThrowerFinallySharedFun",
+ ("old_space", 0x0387d): "PromiseValueThunkFinallySharedFun",
+ ("old_space", 0x038a1): "ProxyRevokeSharedFun",
}
# Lower 32 bits of first page addresses for various heap spaces.
HEAP_FIRST_PAGES = {
- 0x08100000: "old_space",
- 0x08140000: "map_space",
- 0x08040000: "read_only_space",
+ 0x080c0000: "old_space",
+ 0x08100000: "map_space",
+ 0x08000000: "read_only_space",
}
# List of known V8 Frame Markers.
diff --git a/deps/v8/tools/v8windbg/BUILD.gn b/deps/v8/tools/v8windbg/BUILD.gn
index 5618d2d945..e30b826b0f 100644
--- a/deps/v8/tools/v8windbg/BUILD.gn
+++ b/deps/v8/tools/v8windbg/BUILD.gn
@@ -42,8 +42,6 @@ v8_shared_library("v8windbg") {
"src/cur-isolate.h",
"src/js-stack.cc",
"src/js-stack.h",
- "src/list-chunks.cc",
- "src/list-chunks.h",
"src/local-variables.cc",
"src/local-variables.h",
"src/object-inspection.cc",
@@ -56,6 +54,9 @@ v8_shared_library("v8windbg") {
deps = [
":v8windbg_base",
+ "../../:v8_flags",
+ "../../:v8_libbase",
+ "../../:v8_shared_internal_headers",
"../debug_helper:v8_debug_helper",
]
}
diff --git a/deps/v8/tools/v8windbg/README.md b/deps/v8/tools/v8windbg/README.md
index de6638e4d4..887f437b0d 100644
--- a/deps/v8/tools/v8windbg/README.md
+++ b/deps/v8/tools/v8windbg/README.md
@@ -41,8 +41,6 @@ functions that can be called from within `dx` commands:
like `dx @$v8object(0x34f49880471, "v8::internal::JSArray")`.
- `@$curisolate()` gets the Isolate pointer for the current thread, if the
current thread has a JavaScript Isolate associated.
-- `@$listchunks()` returns a list of the memory chunks in the Heap for the
- current Isolate.
- `@$jsstack()` returns a list of the JS stack frames, including information
about script and function.
@@ -67,8 +65,6 @@ functions declared in `dbgext.h` to create and destroy the extension instance.
`./src` file index:
- `cur-isolate.{cc,h}` implements the `IModelMethod` for `@$curisolate()`.
-- `list-chunks.{cc,h}` implements the `IModelMethod` for `@$listchunks()`. Its
- result is a custom object that supports iteration and indexing.
- `js-stack.{cc,h}` implements the `IModelMethod` for `@$jsstack()`. Its
result is a custom object that supports iteration and indexing.
- `local-variables.{cc,h}` implements the `IModelPropertyAccessor` that provides
diff --git a/deps/v8/tools/v8windbg/src/list-chunks.cc b/deps/v8/tools/v8windbg/src/list-chunks.cc
deleted file mode 100644
index 90b3ff6af6..0000000000
--- a/deps/v8/tools/v8windbg/src/list-chunks.cc
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2020 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 "tools/v8windbg/src/list-chunks.h"
-
-#include "tools/v8windbg/src/cur-isolate.h"
-
-// v8windbg!ListChunksAlias::Call
-IFACEMETHODIMP ListChunksAlias::Call(IModelObject* p_context_object,
- ULONG64 arg_count,
- _In_reads_(arg_count)
- IModelObject** pp_arguments,
- IModelObject** pp_result,
- IKeyStore** pp_metadata) noexcept {
- WRL::ComPtr<IDebugHostContext> sp_ctx;
- RETURN_IF_FAIL(sp_debug_host->GetCurrentContext(&sp_ctx));
-
- WRL::ComPtr<IModelObject> result;
- RETURN_IF_FAIL(
- sp_data_model_manager->CreateSyntheticObject(sp_ctx.Get(), &result));
-
- auto sp_iterator{WRL::Make<MemoryChunks>()};
-
- RETURN_IF_FAIL(result->SetConcept(
- __uuidof(IIndexableConcept),
- static_cast<IIndexableConcept*>(sp_iterator.Get()), nullptr));
- RETURN_IF_FAIL(result->SetConcept(
- __uuidof(IIterableConcept),
- static_cast<IIterableConcept*>(sp_iterator.Get()), nullptr));
-
- *pp_result = result.Detach();
- if (pp_metadata) {
- *pp_metadata = nullptr;
- }
- return S_OK;
-}
-
-ChunkData::ChunkData() = default;
-ChunkData::~ChunkData() = default;
-ChunkData::ChunkData(const ChunkData&) = default;
-ChunkData::ChunkData(ChunkData&&) = default;
-ChunkData& ChunkData::operator=(const ChunkData&) = default;
-ChunkData& ChunkData::operator=(ChunkData&&) = default;
-
-MemoryChunkIterator::MemoryChunkIterator(
- WRL::ComPtr<IDebugHostContext>& host_context)
- : sp_ctx_(host_context) {}
-MemoryChunkIterator::~MemoryChunkIterator() = default;
-
-HRESULT MemoryChunkIterator::PopulateChunkData() {
- WRL::ComPtr<IModelObject> sp_isolate, sp_heap, sp_space;
- chunks_.clear();
-
- RETURN_IF_FAIL(GetCurrentIsolate(sp_isolate));
-
- RETURN_IF_FAIL(
- sp_isolate->GetRawValue(SymbolField, L"heap_", RawSearchNone, &sp_heap));
- RETURN_IF_FAIL(
- sp_heap->GetRawValue(SymbolField, L"space_", RawSearchNone, &sp_space));
-
- WRL::ComPtr<IDebugHostType> sp_space_type;
- RETURN_IF_FAIL(sp_space->GetTypeInfo(&sp_space_type));
-
- // Iterate over the array of Space pointers
- WRL::ComPtr<IIterableConcept> sp_iterable;
- RETURN_IF_FAIL(
- sp_space->GetConcept(__uuidof(IIterableConcept), &sp_iterable, nullptr));
-
- WRL::ComPtr<IModelIterator> sp_space_iterator;
- RETURN_IF_FAIL(sp_iterable->GetIterator(sp_space.Get(), &sp_space_iterator));
-
- // Loop through all the spaces in the array
- WRL::ComPtr<IModelObject> sp_space_ptr;
- while (sp_space_iterator->GetNext(&sp_space_ptr, 0, nullptr, nullptr) !=
- E_BOUNDS) {
- // Should have gotten a "v8::internal::Space *". Dereference, then get field
- // "memory_chunk_list_" [Type: v8::base::List<v8::internal::MemoryChunk>]
- WRL::ComPtr<IModelObject> sp_space, sp_chunk_list, sp_mem_chunk_ptr,
- sp_mem_chunk;
- RETURN_IF_FAIL(sp_space_ptr->Dereference(&sp_space));
- RETURN_IF_FAIL(sp_space->GetRawValue(SymbolField, L"memory_chunk_list_",
- RawSearchNone, &sp_chunk_list));
-
- // Then get field "front_" [Type: v8::internal::MemoryChunk *]
- RETURN_IF_FAIL(sp_chunk_list->GetRawValue(
- SymbolField, L"front_", RawSearchNone, &sp_mem_chunk_ptr));
-
- // Loop here on the list of MemoryChunks for the space
- while (true) {
- // See if it is a nullptr (i.e. no chunks in this space)
- uint64_t front_val;
- RETURN_IF_FAIL(
- UnboxULong64(sp_mem_chunk_ptr.Get(), &front_val, true /*convert*/));
- if (front_val == 0) {
- break;
- }
-
- // Dereference and get fields "area_start_" and "area_end_" (both uint64)
- RETURN_IF_FAIL(sp_mem_chunk_ptr->Dereference(&sp_mem_chunk));
-
- WRL::ComPtr<IModelObject> sp_start, sp_end;
- RETURN_IF_FAIL(sp_mem_chunk->GetRawValue(SymbolField, L"area_start_",
- RawSearchNone, &sp_start));
- RETURN_IF_FAIL(sp_mem_chunk->GetRawValue(SymbolField, L"area_end_",
- RawSearchNone, &sp_end));
-
- ChunkData chunk_entry;
- chunk_entry.area_start = sp_start;
- chunk_entry.area_end = sp_end;
- chunk_entry.space = sp_space;
- chunks_.push_back(chunk_entry);
-
- // Follow the list_node_.next_ to the next memory chunk
- WRL::ComPtr<IModelObject> sp_list_node;
- RETURN_IF_FAIL(sp_mem_chunk->GetRawValue(SymbolField, L"list_node_",
- RawSearchNone, &sp_list_node));
-
- sp_mem_chunk_ptr = nullptr;
- sp_mem_chunk = nullptr;
- RETURN_IF_FAIL(sp_list_node->GetRawValue(
- SymbolField, L"next_", RawSearchNone, &sp_mem_chunk_ptr));
- // Top of the loop will check if this is a nullptr and exit if so
- }
- sp_space_ptr = nullptr;
- }
-
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunkIterator::Reset() noexcept {
- position_ = 0;
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunkIterator::GetNext(IModelObject** object,
- ULONG64 dimensions,
- IModelObject** indexers,
- IKeyStore** metadata) noexcept {
- if (dimensions > 1) return E_INVALIDARG;
-
- if (position_ == 0) {
- RETURN_IF_FAIL(PopulateChunkData());
- }
-
- if (metadata != nullptr) *metadata = nullptr;
-
- WRL::ComPtr<IModelObject> sp_index, sp_value;
-
- if (dimensions == 1) {
- RETURN_IF_FAIL(CreateULong64(position_, &sp_index));
- }
-
- RETURN_IF_FAIL(GetAt(position_, &sp_value));
-
- // Now update counter and transfer ownership of results, because nothing can
- // fail from this point onward.
- ++position_;
- if (dimensions == 1) {
- *indexers = sp_index.Detach();
- }
- *object = sp_value.Detach();
- return S_OK;
-}
-
-HRESULT MemoryChunkIterator::GetAt(uint64_t index,
- IModelObject** result) const {
- if (index >= chunks_.size()) return E_BOUNDS;
-
- // Create the synthetic object representing the chunk here
- const ChunkData& curr_chunk = chunks_.at(index);
- WRL::ComPtr<IModelObject> sp_value;
- RETURN_IF_FAIL(
- sp_data_model_manager->CreateSyntheticObject(sp_ctx_.Get(), &sp_value));
- RETURN_IF_FAIL(
- sp_value->SetKey(L"area_start", curr_chunk.area_start.Get(), nullptr));
- RETURN_IF_FAIL(
- sp_value->SetKey(L"area_end", curr_chunk.area_end.Get(), nullptr));
- RETURN_IF_FAIL(sp_value->SetKey(L"space", curr_chunk.space.Get(), nullptr));
-
- *result = sp_value.Detach();
- return S_OK;
-}
-
-MemoryChunks::MemoryChunks() = default;
-MemoryChunks::~MemoryChunks() = default;
-
-IFACEMETHODIMP MemoryChunks::GetDimensionality(
- IModelObject* context_object, ULONG64* dimensionality) noexcept {
- *dimensionality = 1;
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunks::GetAt(IModelObject* context_object,
- ULONG64 indexer_count,
- IModelObject** indexers,
- IModelObject** object,
- IKeyStore** metadata) noexcept {
- if (indexer_count != 1) return E_INVALIDARG;
- if (metadata != nullptr) *metadata = nullptr;
- WRL::ComPtr<IDebugHostContext> sp_ctx;
- RETURN_IF_FAIL(context_object->GetContext(&sp_ctx));
-
- // This should be instantiated once for each synthetic object returned,
- // so should be able to cache/reuse an iterator
- if (opt_chunks_ == nullptr) {
- opt_chunks_ = WRL::Make<MemoryChunkIterator>(sp_ctx);
- _ASSERT(opt_chunks_ != nullptr);
- RETURN_IF_FAIL(opt_chunks_->PopulateChunkData());
- }
-
- uint64_t index;
- RETURN_IF_FAIL(UnboxULong64(indexers[0], &index, true /*convert*/));
-
- return opt_chunks_->GetAt(index, object);
-}
-
-IFACEMETHODIMP MemoryChunks::SetAt(IModelObject* context_object,
- ULONG64 indexer_count,
- IModelObject** indexers,
- IModelObject* value) noexcept {
- return E_NOTIMPL;
-}
-
-IFACEMETHODIMP MemoryChunks::GetDefaultIndexDimensionality(
- IModelObject* context_object, ULONG64* dimensionality) noexcept {
- *dimensionality = 1;
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunks::GetIterator(IModelObject* context_object,
- IModelIterator** iterator) noexcept {
- WRL::ComPtr<IDebugHostContext> sp_ctx;
- RETURN_IF_FAIL(context_object->GetContext(&sp_ctx));
- auto sp_memory_iterator{WRL::Make<MemoryChunkIterator>(sp_ctx)};
- *iterator = sp_memory_iterator.Detach();
- return S_OK;
-}
diff --git a/deps/v8/tools/v8windbg/src/list-chunks.h b/deps/v8/tools/v8windbg/src/list-chunks.h
deleted file mode 100644
index 10eec100d1..0000000000
--- a/deps/v8/tools/v8windbg/src/list-chunks.h
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2020 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef V8_TOOLS_V8WINDBG_SRC_LIST_CHUNKS_H_
-#define V8_TOOLS_V8WINDBG_SRC_LIST_CHUNKS_H_
-
-#include <crtdbg.h>
-#include <wrl/implements.h>
-
-#include <optional>
-#include <string>
-#include <vector>
-
-#include "src/base/optional.h"
-#include "tools/v8windbg/base/utilities.h"
-#include "tools/v8windbg/src/v8-debug-helper-interop.h"
-#include "tools/v8windbg/src/v8windbg-extension.h"
-
-class ListChunksAlias
- : public WRL::RuntimeClass<
- WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
- IModelMethod> {
- public:
- IFACEMETHOD(Call)
- (IModelObject* p_context_object, ULONG64 arg_count,
- _In_reads_(arg_count) IModelObject** pp_arguments, IModelObject** pp_result,
- IKeyStore** pp_metadata);
-};
-
-struct ChunkData {
- ChunkData();
- ~ChunkData();
- ChunkData(const ChunkData&);
- ChunkData(ChunkData&&);
- ChunkData& operator=(const ChunkData&);
- ChunkData& operator=(ChunkData&&);
- WRL::ComPtr<IModelObject> area_start;
- WRL::ComPtr<IModelObject> area_end;
- WRL::ComPtr<IModelObject> space;
-};
-
-class MemoryChunkIterator
- : public WRL::RuntimeClass<
- WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
- IModelIterator> {
- public:
- MemoryChunkIterator(WRL::ComPtr<IDebugHostContext>& host_context);
- ~MemoryChunkIterator() override;
-
- HRESULT PopulateChunkData();
-
- IFACEMETHOD(Reset)();
-
- IFACEMETHOD(GetNext)
- (IModelObject** object, ULONG64 dimensions, IModelObject** indexers,
- IKeyStore** metadata);
-
- const std::vector<ChunkData>& GetChunks() const { return chunks_; }
-
- HRESULT GetAt(uint64_t index, IModelObject** result) const;
-
- private:
- ULONG position_ = 0;
- std::vector<ChunkData> chunks_;
- WRL::ComPtr<IDebugHostContext> sp_ctx_;
-};
-
-class MemoryChunks
- : public WRL::RuntimeClass<
- WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
- IIndexableConcept, IIterableConcept> {
- public:
- MemoryChunks();
- ~MemoryChunks() override;
-
- // IIndexableConcept members
- IFACEMETHOD(GetDimensionality)
- (IModelObject* context_object, ULONG64* dimensionality);
-
- IFACEMETHOD(GetAt)
- (IModelObject* context_object, ULONG64 indexer_count, IModelObject** indexers,
- IModelObject** object, IKeyStore** metadata);
-
- IFACEMETHOD(SetAt)
- (IModelObject* context_object, ULONG64 indexer_count, IModelObject** indexers,
- IModelObject* value);
-
- // IIterableConcept
- IFACEMETHOD(GetDefaultIndexDimensionality)
- (IModelObject* context_object, ULONG64* dimensionality);
-
- IFACEMETHOD(GetIterator)
- (IModelObject* context_object, IModelIterator** iterator);
-
- private:
- WRL::ComPtr<MemoryChunkIterator> opt_chunks_;
-};
-
-#endif // V8_TOOLS_V8WINDBG_SRC_LIST_CHUNKS_H_
diff --git a/deps/v8/tools/v8windbg/src/v8windbg-extension.cc b/deps/v8/tools/v8windbg/src/v8windbg-extension.cc
index 7fbe39d192..55014cfc8e 100644
--- a/deps/v8/tools/v8windbg/src/v8windbg-extension.cc
+++ b/deps/v8/tools/v8windbg/src/v8windbg-extension.cc
@@ -9,14 +9,12 @@
#include "tools/v8windbg/base/utilities.h"
#include "tools/v8windbg/src/cur-isolate.h"
#include "tools/v8windbg/src/js-stack.h"
-#include "tools/v8windbg/src/list-chunks.h"
#include "tools/v8windbg/src/local-variables.h"
#include "tools/v8windbg/src/object-inspection.h"
std::unique_ptr<Extension> Extension::current_extension_ = nullptr;
const wchar_t* pcur_isolate = L"curisolate";
const wchar_t* pjs_stack = L"jsstack";
-const wchar_t* plist_chunks = L"listchunks";
const wchar_t* pv8_object = L"v8object";
HRESULT CreateExtension() {
@@ -263,7 +261,6 @@ HRESULT Extension::Initialize() {
std::vector<std::pair<const wchar_t*, WRL::ComPtr<IModelMethod>>> functions =
{{pcur_isolate, WRL::Make<CurrIsolateAlias>()},
{pjs_stack, WRL::Make<JSStackAlias>()},
- {plist_chunks, WRL::Make<ListChunksAlias>()},
{pv8_object, WRL::Make<InspectV8ObjectMethod>()}};
for (const auto& function : functions) {
WRL::ComPtr<IModelObject> method;
@@ -375,7 +372,6 @@ Extension::RegistrationType& Extension::RegistrationType::operator=(
Extension::~Extension() {
sp_debug_host_extensibility->DestroyFunctionAlias(pcur_isolate);
sp_debug_host_extensibility->DestroyFunctionAlias(pjs_stack);
- sp_debug_host_extensibility->DestroyFunctionAlias(plist_chunks);
sp_debug_host_extensibility->DestroyFunctionAlias(pv8_object);
for (const auto& registered : registered_types_) {
diff --git a/deps/v8/tools/whitespace.txt b/deps/v8/tools/whitespace.txt
index 61fd2e9486..f890e67970 100644
--- a/deps/v8/tools/whitespace.txt
+++ b/deps/v8/tools/whitespace.txt
@@ -6,9 +6,9 @@ A Smi balks into a war and says:
"I'm so deoptimized today!"
The doubles heard this and started to unbox.
The Smi looked at them when a crazy v8-autoroll account showed up...
-The autoroller bought a round of Himbeerbrause. Suddenly.....
+The autoroller bought a round of Himbeerbrause. Suddenly.......
The bartender starts to shake the bottles...........................
-I can't add trailing whitespaces, so I'm adding this line...........
+I can't add trailing whitespaces, so I'm adding this line............
I'm starting to think that just adding trailing whitespaces might not be bad.
Because whitespaces are not that funny......