summaryrefslogtreecommitdiff
path: root/deps/v8/tools
diff options
context:
space:
mode:
authorMichaƫl Zasso <mic.besace@gmail.com>2015-10-06 08:42:38 +0200
committerAli Ijaz Sheikh <ofrobots@google.com>2015-10-14 11:20:34 -0700
commitd8011d1683fe0d977de2bea1147f5213d4490c5a (patch)
tree54967df8dc1732e59eef39e5c5b39fe99ad88977 /deps/v8/tools
parentd1a2e5357ef0357cec9b516fa9ac78cc38a984aa (diff)
downloadandroid-node-v8-d8011d1683fe0d977de2bea1147f5213d4490c5a.tar.gz
android-node-v8-d8011d1683fe0d977de2bea1147f5213d4490c5a.tar.bz2
android-node-v8-d8011d1683fe0d977de2bea1147f5213d4490c5a.zip
deps: upgrade V8 to 4.6.85.23
PR-URL: https://github.com/nodejs/node/pull/3351 Reviewed-By: indutny - Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'deps/v8/tools')
-rwxr-xr-xdeps/v8/tools/check-inline-includes.sh19
-rwxr-xr-xdeps/v8/tools/check-unused-bailouts.sh16
-rw-r--r--deps/v8/tools/external-reference-check.py1
-rw-r--r--deps/v8/tools/gdb-v8-support.py1
-rw-r--r--deps/v8/tools/gdbinit9
-rw-r--r--deps/v8/tools/gen-postmortem-metadata.py14
-rw-r--r--deps/v8/tools/gyp/v8.gyp200
-rwxr-xr-xdeps/v8/tools/js2c.py6
-rwxr-xr-xdeps/v8/tools/run-deopt-fuzzer.py4
-rwxr-xr-xdeps/v8/tools/run-tests.py44
-rwxr-xr-xdeps/v8/tools/run_perf.py518
-rw-r--r--deps/v8/tools/testrunner/local/execution.py2
-rw-r--r--deps/v8/tools/testrunner/local/progress.py8
-rw-r--r--deps/v8/tools/testrunner/local/testsuite.py100
-rw-r--r--deps/v8/tools/testrunner/objects/testcase.py17
-rw-r--r--deps/v8/tools/unittests/run_perf_test.py53
-rw-r--r--deps/v8/tools/v8heapconst.py396
-rw-r--r--deps/v8/tools/whitespace.txt2
18 files changed, 899 insertions, 511 deletions
diff --git a/deps/v8/tools/check-inline-includes.sh b/deps/v8/tools/check-inline-includes.sh
new file mode 100755
index 0000000000..536afb1dd4
--- /dev/null
+++ b/deps/v8/tools/check-inline-includes.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# Copyright 2015 the V8 project authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+v8_root=$(readlink -f $(dirname $BASH_SOURCE)/../)
+headers=$(find "$v8_root/src" -name '*.h' -not -name '*-inl.h')
+
+for header in $headers; do
+ inline_header_include=$(grep '#include ".*-inl.h"' "$header")
+ if [ -n "$inline_header_include" ]; then
+ echo "The following non-inline header seems to include an inline header:"
+ echo " Header : $header"
+ echo " Include: $inline_header_include"
+ echo
+ fi
+done
+
+echo "Kthxbye."
diff --git a/deps/v8/tools/check-unused-bailouts.sh b/deps/v8/tools/check-unused-bailouts.sh
new file mode 100755
index 0000000000..da4d4a7f46
--- /dev/null
+++ b/deps/v8/tools/check-unused-bailouts.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+# Copyright 2015 the V8 project authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+v8_root=$(readlink -f $(dirname $BASH_SOURCE)/../)
+bailouts=$(grep -oP 'V\(\K(k[^,]*)' "$v8_root/src/bailout-reason.h")
+
+for bailout in $bailouts; do
+ bailout_uses=$(grep -r $bailout "$v8_root/src" "$v8_root/test/cctest" | wc -l)
+ if [ $bailout_uses -eq "1" ]; then
+ echo "Bailout reason \"$bailout\" seems to be unused."
+ fi
+done
+
+echo "Kthxbye."
diff --git a/deps/v8/tools/external-reference-check.py b/deps/v8/tools/external-reference-check.py
index bced8d478d..287eca4251 100644
--- a/deps/v8/tools/external-reference-check.py
+++ b/deps/v8/tools/external-reference-check.py
@@ -16,6 +16,7 @@ WORKSPACE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
# Ignore those.
BLACKLISTED = [
+ "fixed_typed_array_base_data_offset",
"page_flags",
"math_exp_constants",
"math_exp_log_table",
diff --git a/deps/v8/tools/gdb-v8-support.py b/deps/v8/tools/gdb-v8-support.py
index 8f5ff5bb5e..5d26146fc7 100644
--- a/deps/v8/tools/gdb-v8-support.py
+++ b/deps/v8/tools/gdb-v8-support.py
@@ -25,6 +25,7 @@
# (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 re
kSmiTag = 0
kSmiTagSize = 1
diff --git a/deps/v8/tools/gdbinit b/deps/v8/tools/gdbinit
index 72030e269a..5e6af9d6a8 100644
--- a/deps/v8/tools/gdbinit
+++ b/deps/v8/tools/gdbinit
@@ -20,6 +20,15 @@ Print a v8 Code object from an internal code address
Usage: jco pc
end
+# Print TypeFeedbackVector
+define jfv
+print ((v8::internal::TypeFeedbackVector*)($arg0))->Print()
+end
+document jfv
+Print a v8 TypeFeedbackVector object
+Usage: jtv tagged_ptr
+end
+
# Print DescriptorArray.
define jda
print ((v8::internal::DescriptorArray*)($arg0))->Print()
diff --git a/deps/v8/tools/gen-postmortem-metadata.py b/deps/v8/tools/gen-postmortem-metadata.py
index 0f90b26698..29416cebd2 100644
--- a/deps/v8/tools/gen-postmortem-metadata.py
+++ b/deps/v8/tools/gen-postmortem-metadata.py
@@ -132,15 +132,6 @@ consts_misc = [
'value': 'JavaScriptFrameConstants::kFunctionOffset' },
{ 'name': 'off_fp_args',
'value': 'JavaScriptFrameConstants::kLastParameterOffset' },
-
- { 'name': 'scopeinfo_idx_nparams',
- 'value': 'ScopeInfo::kParameterCount' },
- { 'name': 'scopeinfo_idx_nstacklocals',
- 'value': 'ScopeInfo::kStackLocalCount' },
- { 'name': 'scopeinfo_idx_ncontextlocals',
- 'value': 'ScopeInfo::kContextLocalCount' },
- { 'name': 'scopeinfo_idx_first_vars',
- 'value': 'ScopeInfo::kVariablePartIndex' },
];
#
@@ -150,13 +141,12 @@ extras_accessors = [
'HeapObject, map, Map, kMapOffset',
'JSObject, elements, Object, kElementsOffset',
'FixedArray, data, uintptr_t, kHeaderSize',
- 'JSTypedArray, length, Object, kLengthOffset',
'Map, instance_attributes, int, kInstanceAttributesOffset',
- 'Map, inobject_properties, int, kInObjectPropertiesOffset',
+ 'Map, inobject_properties_of_constructor_function_index_offset, int, kInObjectPropertiesOrConstructorFunctionIndexOffset',
'Map, instance_size, int, kInstanceSizeOffset',
'Map, bit_field, char, kBitFieldOffset',
'Map, bit_field2, char, kBitField2Offset',
- 'Map, bit_field3, int, kBitField3Offset',
+ 'Map, bit_field3, SMI, kBitField3Offset',
'Map, prototype, Object, kPrototypeOffset',
'NameDictionaryShape, prefix_size, int, kPrefixSize',
'NameDictionaryShape, entry_size, int, kEntrySize',
diff --git a/deps/v8/tools/gyp/v8.gyp b/deps/v8/tools/gyp/v8.gyp
index 400991c43f..1e5705d7a5 100644
--- a/deps/v8/tools/gyp/v8.gyp
+++ b/deps/v8/tools/gyp/v8.gyp
@@ -179,6 +179,7 @@
],
'sources': [
'<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
+ '<(SHARED_INTERMEDIATE_DIR)/code-stub-libraries.cc',
'<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
'<(SHARED_INTERMEDIATE_DIR)/extras-libraries.cc',
'<(INTERMEDIATE_DIR)/snapshot.cc',
@@ -224,6 +225,7 @@
],
'sources': [
'<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
+ '<(SHARED_INTERMEDIATE_DIR)/code-stub-libraries.cc',
'<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
'<(SHARED_INTERMEDIATE_DIR)/extras-libraries.cc',
'../../src/snapshot/snapshot-empty.cc',
@@ -419,13 +421,13 @@
'../../src/bootstrapper.h',
'../../src/builtins.cc',
'../../src/builtins.h',
- '../../src/bytecodes-irregexp.h',
'../../src/cached-powers.cc',
'../../src/cached-powers.h',
+ '../../src/cancelable-task.cc',
+ '../../src/cancelable-task.h',
'../../src/char-predicates.cc',
'../../src/char-predicates-inl.h',
'../../src/char-predicates.h',
- '../../src/checks.cc',
'../../src/checks.h',
'../../src/circular-queue-inl.h',
'../../src/circular-queue.h',
@@ -455,6 +457,7 @@
'../../src/compiler/basic-block-instrumentor.h',
'../../src/compiler/change-lowering.cc',
'../../src/compiler/change-lowering.h',
+ '../../src/compiler/c-linkage.cc',
'../../src/compiler/coalesced-live-ranges.cc',
'../../src/compiler/coalesced-live-ranges.h',
'../../src/compiler/code-generator-impl.h',
@@ -475,6 +478,7 @@
'../../src/compiler/dead-code-elimination.cc',
'../../src/compiler/dead-code-elimination.h',
'../../src/compiler/diamond.h',
+ '../../src/compiler/frame.cc',
'../../src/compiler/frame.h',
'../../src/compiler/frame-elider.cc',
'../../src/compiler/frame-elider.h',
@@ -482,7 +486,6 @@
"../../src/compiler/frame-states.h",
'../../src/compiler/gap-resolver.cc',
'../../src/compiler/gap-resolver.h',
- '../../src/compiler/graph-builder.h',
'../../src/compiler/graph-reducer.cc',
'../../src/compiler/graph-reducer.h',
'../../src/compiler/graph-replay.cc',
@@ -501,8 +504,12 @@
'../../src/compiler/instruction-selector.h',
'../../src/compiler/instruction.cc',
'../../src/compiler/instruction.h',
+ '../../src/compiler/interpreter-assembler.cc',
+ '../../src/compiler/interpreter-assembler.h',
'../../src/compiler/js-builtin-reducer.cc',
'../../src/compiler/js-builtin-reducer.h',
+ '../../src/compiler/js-context-relaxation.cc',
+ '../../src/compiler/js-context-relaxation.h',
'../../src/compiler/js-context-specialization.cc',
'../../src/compiler/js-context-specialization.h',
'../../src/compiler/js-frame-specialization.cc',
@@ -519,11 +526,12 @@
'../../src/compiler/js-operator.h',
'../../src/compiler/js-type-feedback.cc',
'../../src/compiler/js-type-feedback.h',
+ '../../src/compiler/js-type-feedback-lowering.cc',
+ '../../src/compiler/js-type-feedback-lowering.h',
'../../src/compiler/js-typed-lowering.cc',
'../../src/compiler/js-typed-lowering.h',
'../../src/compiler/jump-threading.cc',
'../../src/compiler/jump-threading.h',
- '../../src/compiler/linkage-impl.h',
'../../src/compiler/linkage.cc',
'../../src/compiler/linkage.h',
'../../src/compiler/liveness-analyzer.cc',
@@ -565,6 +573,8 @@
'../../src/compiler/pipeline.h',
'../../src/compiler/pipeline-statistics.cc',
'../../src/compiler/pipeline-statistics.h',
+ '../../src/compiler/preprocess-live-ranges.cc',
+ '../../src/compiler/preprocess-live-ranges.h',
'../../src/compiler/raw-machine-assembler.cc',
'../../src/compiler/raw-machine-assembler.h',
'../../src/compiler/register-allocator.cc',
@@ -602,6 +612,8 @@
'../../src/compiler/zone-pool.h',
'../../src/compiler.cc',
'../../src/compiler.h',
+ '../../src/context-measure.cc',
+ '../../src/context-measure.h',
'../../src/contexts.cc',
'../../src/contexts.h',
'../../src/conversions-inl.h',
@@ -617,8 +629,16 @@
'../../src/dateparser-inl.h',
'../../src/dateparser.cc',
'../../src/dateparser.h',
- '../../src/debug.cc',
- '../../src/debug.h',
+ '../../src/debug/debug-evaluate.cc',
+ '../../src/debug/debug-evaluate.h',
+ '../../src/debug/debug-frames.cc',
+ '../../src/debug/debug-frames.h',
+ '../../src/debug/debug-scopes.cc',
+ '../../src/debug/debug-scopes.h',
+ '../../src/debug/debug.cc',
+ '../../src/debug/debug.h',
+ '../../src/debug/liveedit.cc',
+ '../../src/debug/liveedit.h',
'../../src/deoptimizer.cc',
'../../src/deoptimizer.h',
'../../src/disasm.h',
@@ -661,10 +681,12 @@
'../../src/frames-inl.h',
'../../src/frames.cc',
'../../src/frames.h',
- '../../src/full-codegen.cc',
- '../../src/full-codegen.h',
+ '../../src/full-codegen/full-codegen.cc',
+ '../../src/full-codegen/full-codegen.h',
'../../src/func-name-inferrer.cc',
'../../src/func-name-inferrer.h',
+ '../../src/futex-emulation.cc',
+ '../../src/futex-emulation.h',
'../../src/gdb-jit.cc',
'../../src/gdb-jit.h',
'../../src/global-handles.cc',
@@ -776,15 +798,18 @@
'../../src/ic/ic-compiler.h',
'../../src/interface-descriptors.cc',
'../../src/interface-descriptors.h',
- '../../src/interpreter-irregexp.cc',
- '../../src/interpreter-irregexp.h',
+ '../../src/interpreter/bytecodes.cc',
+ '../../src/interpreter/bytecodes.h',
+ '../../src/interpreter/bytecode-generator.cc',
+ '../../src/interpreter/bytecode-generator.h',
+ '../../src/interpreter/bytecode-array-builder.cc',
+ '../../src/interpreter/bytecode-array-builder.h',
+ '../../src/interpreter/interpreter.cc',
+ '../../src/interpreter/interpreter.h',
'../../src/isolate.cc',
'../../src/isolate.h',
'../../src/json-parser.h',
'../../src/json-stringifier.h',
- '../../src/jsregexp-inl.h',
- '../../src/jsregexp.cc',
- '../../src/jsregexp.h',
'../../src/layout-descriptor-inl.h',
'../../src/layout-descriptor.cc',
'../../src/layout-descriptor.h',
@@ -798,8 +823,6 @@
'../../src/lithium.cc',
'../../src/lithium.h',
'../../src/lithium-inl.h',
- '../../src/liveedit.cc',
- '../../src/liveedit.h',
'../../src/log-inl.h',
'../../src/log-utils.cc',
'../../src/log-utils.h',
@@ -842,15 +865,21 @@
'../../src/property.cc',
'../../src/property.h',
'../../src/prototype.h',
- '../../src/regexp-macro-assembler-irregexp-inl.h',
- '../../src/regexp-macro-assembler-irregexp.cc',
- '../../src/regexp-macro-assembler-irregexp.h',
- '../../src/regexp-macro-assembler-tracer.cc',
- '../../src/regexp-macro-assembler-tracer.h',
- '../../src/regexp-macro-assembler.cc',
- '../../src/regexp-macro-assembler.h',
- '../../src/regexp-stack.cc',
- '../../src/regexp-stack.h',
+ '../../src/regexp/bytecodes-irregexp.h',
+ '../../src/regexp/interpreter-irregexp.cc',
+ '../../src/regexp/interpreter-irregexp.h',
+ '../../src/regexp/jsregexp-inl.h',
+ '../../src/regexp/jsregexp.cc',
+ '../../src/regexp/jsregexp.h',
+ '../../src/regexp/regexp-macro-assembler-irregexp-inl.h',
+ '../../src/regexp/regexp-macro-assembler-irregexp.cc',
+ '../../src/regexp/regexp-macro-assembler-irregexp.h',
+ '../../src/regexp/regexp-macro-assembler-tracer.cc',
+ '../../src/regexp/regexp-macro-assembler-tracer.h',
+ '../../src/regexp/regexp-macro-assembler.cc',
+ '../../src/regexp/regexp-macro-assembler.h',
+ '../../src/regexp/regexp-stack.cc',
+ '../../src/regexp/regexp-stack.h',
'../../src/rewriter.cc',
'../../src/rewriter.h',
'../../src/runtime-profiler.cc',
@@ -864,6 +893,7 @@
'../../src/runtime/runtime-debug.cc',
'../../src/runtime/runtime-forin.cc',
'../../src/runtime/runtime-function.cc',
+ '../../src/runtime/runtime-futex.cc',
'../../src/runtime/runtime-generator.cc',
'../../src/runtime/runtime-i18n.cc',
'../../src/runtime/runtime-internal.cc',
@@ -877,6 +907,7 @@
'../../src/runtime/runtime-proxy.cc',
'../../src/runtime/runtime-regexp.cc',
'../../src/runtime/runtime-scopes.cc',
+ '../../src/runtime/runtime-simd.cc',
'../../src/runtime/runtime-strings.cc',
'../../src/runtime/runtime-symbol.cc',
'../../src/runtime/runtime-test.cc',
@@ -900,8 +931,8 @@
'../../src/signature.h',
'../../src/simulator.h',
'../../src/small-pointer-list.h',
- '../../src/smart-pointers.h',
'../../src/snapshot/natives.h',
+ '../../src/snapshot/natives-common.cc',
'../../src/snapshot/serialize.cc',
'../../src/snapshot/serialize.h',
'../../src/snapshot/snapshot.h',
@@ -914,7 +945,6 @@
'../../src/startup-data-util.h',
'../../src/string-builder.cc',
'../../src/string-builder.h',
- '../../src/string-search.cc',
'../../src/string-search.h',
'../../src/string-stream.cc',
'../../src/string-stream.h',
@@ -987,12 +1017,10 @@
'../../src/arm/constants-arm.h',
'../../src/arm/constants-arm.cc',
'../../src/arm/cpu-arm.cc',
- '../../src/arm/debug-arm.cc',
'../../src/arm/deoptimizer-arm.cc',
'../../src/arm/disasm-arm.cc',
'../../src/arm/frames-arm.cc',
'../../src/arm/frames-arm.h',
- '../../src/arm/full-codegen-arm.cc',
'../../src/arm/interface-descriptors-arm.cc',
'../../src/arm/interface-descriptors-arm.h',
'../../src/arm/lithium-arm.cc',
@@ -1003,19 +1031,20 @@
'../../src/arm/lithium-gap-resolver-arm.h',
'../../src/arm/macro-assembler-arm.cc',
'../../src/arm/macro-assembler-arm.h',
- '../../src/arm/regexp-macro-assembler-arm.cc',
- '../../src/arm/regexp-macro-assembler-arm.h',
'../../src/arm/simulator-arm.cc',
'../../src/arm/simulator-arm.h',
'../../src/compiler/arm/code-generator-arm.cc',
'../../src/compiler/arm/instruction-codes-arm.h',
'../../src/compiler/arm/instruction-selector-arm.cc',
- '../../src/compiler/arm/linkage-arm.cc',
+ '../../src/debug/arm/debug-arm.cc',
+ '../../src/full-codegen/arm/full-codegen-arm.cc',
'../../src/ic/arm/access-compiler-arm.cc',
'../../src/ic/arm/handler-compiler-arm.cc',
'../../src/ic/arm/ic-arm.cc',
'../../src/ic/arm/ic-compiler-arm.cc',
'../../src/ic/arm/stub-cache-arm.cc',
+ '../../src/regexp/arm/regexp-macro-assembler-arm.cc',
+ '../../src/regexp/arm/regexp-macro-assembler-arm.h',
],
}],
['v8_target_arch=="arm64"', {
@@ -1030,7 +1059,6 @@
'../../src/arm64/code-stubs-arm64.h',
'../../src/arm64/constants-arm64.h',
'../../src/arm64/cpu-arm64.cc',
- '../../src/arm64/debug-arm64.cc',
'../../src/arm64/decoder-arm64.cc',
'../../src/arm64/decoder-arm64.h',
'../../src/arm64/decoder-arm64-inl.h',
@@ -1042,7 +1070,6 @@
'../../src/arm64/disasm-arm64.h',
'../../src/arm64/frames-arm64.cc',
'../../src/arm64/frames-arm64.h',
- '../../src/arm64/full-codegen-arm64.cc',
'../../src/arm64/instructions-arm64.cc',
'../../src/arm64/instructions-arm64.h',
'../../src/arm64/instrument-arm64.cc',
@@ -1058,8 +1085,6 @@
'../../src/arm64/macro-assembler-arm64.cc',
'../../src/arm64/macro-assembler-arm64.h',
'../../src/arm64/macro-assembler-arm64-inl.h',
- '../../src/arm64/regexp-macro-assembler-arm64.cc',
- '../../src/arm64/regexp-macro-assembler-arm64.h',
'../../src/arm64/simulator-arm64.cc',
'../../src/arm64/simulator-arm64.h',
'../../src/arm64/utils-arm64.cc',
@@ -1067,12 +1092,15 @@
'../../src/compiler/arm64/code-generator-arm64.cc',
'../../src/compiler/arm64/instruction-codes-arm64.h',
'../../src/compiler/arm64/instruction-selector-arm64.cc',
- '../../src/compiler/arm64/linkage-arm64.cc',
+ '../../src/debug/arm64/debug-arm64.cc',
+ '../../src/full-codegen/arm64/full-codegen-arm64.cc',
'../../src/ic/arm64/access-compiler-arm64.cc',
'../../src/ic/arm64/handler-compiler-arm64.cc',
'../../src/ic/arm64/ic-arm64.cc',
'../../src/ic/arm64/ic-compiler-arm64.cc',
'../../src/ic/arm64/stub-cache-arm64.cc',
+ '../../src/regexp/arm64/regexp-macro-assembler-arm64.cc',
+ '../../src/regexp/arm64/regexp-macro-assembler-arm64.h',
],
}],
['v8_target_arch=="ia32"', {
@@ -1086,12 +1114,10 @@
'../../src/ia32/codegen-ia32.cc',
'../../src/ia32/codegen-ia32.h',
'../../src/ia32/cpu-ia32.cc',
- '../../src/ia32/debug-ia32.cc',
'../../src/ia32/deoptimizer-ia32.cc',
'../../src/ia32/disasm-ia32.cc',
'../../src/ia32/frames-ia32.cc',
'../../src/ia32/frames-ia32.h',
- '../../src/ia32/full-codegen-ia32.cc',
'../../src/ia32/interface-descriptors-ia32.cc',
'../../src/ia32/lithium-codegen-ia32.cc',
'../../src/ia32/lithium-codegen-ia32.h',
@@ -1101,17 +1127,18 @@
'../../src/ia32/lithium-ia32.h',
'../../src/ia32/macro-assembler-ia32.cc',
'../../src/ia32/macro-assembler-ia32.h',
- '../../src/ia32/regexp-macro-assembler-ia32.cc',
- '../../src/ia32/regexp-macro-assembler-ia32.h',
'../../src/compiler/ia32/code-generator-ia32.cc',
'../../src/compiler/ia32/instruction-codes-ia32.h',
'../../src/compiler/ia32/instruction-selector-ia32.cc',
- '../../src/compiler/ia32/linkage-ia32.cc',
+ '../../src/debug/ia32/debug-ia32.cc',
+ '../../src/full-codegen/ia32/full-codegen-ia32.cc',
'../../src/ic/ia32/access-compiler-ia32.cc',
'../../src/ic/ia32/handler-compiler-ia32.cc',
'../../src/ic/ia32/ic-ia32.cc',
'../../src/ic/ia32/ic-compiler-ia32.cc',
'../../src/ic/ia32/stub-cache-ia32.cc',
+ '../../src/regexp/ia32/regexp-macro-assembler-ia32.cc',
+ '../../src/regexp/ia32/regexp-macro-assembler-ia32.h',
],
}],
['v8_target_arch=="x87"', {
@@ -1125,12 +1152,10 @@
'../../src/x87/codegen-x87.cc',
'../../src/x87/codegen-x87.h',
'../../src/x87/cpu-x87.cc',
- '../../src/x87/debug-x87.cc',
'../../src/x87/deoptimizer-x87.cc',
'../../src/x87/disasm-x87.cc',
'../../src/x87/frames-x87.cc',
'../../src/x87/frames-x87.h',
- '../../src/x87/full-codegen-x87.cc',
'../../src/x87/interface-descriptors-x87.cc',
'../../src/x87/lithium-codegen-x87.cc',
'../../src/x87/lithium-codegen-x87.h',
@@ -1140,17 +1165,18 @@
'../../src/x87/lithium-x87.h',
'../../src/x87/macro-assembler-x87.cc',
'../../src/x87/macro-assembler-x87.h',
- '../../src/x87/regexp-macro-assembler-x87.cc',
- '../../src/x87/regexp-macro-assembler-x87.h',
'../../src/compiler/x87/code-generator-x87.cc',
'../../src/compiler/x87/instruction-codes-x87.h',
'../../src/compiler/x87/instruction-selector-x87.cc',
- '../../src/compiler/x87/linkage-x87.cc',
+ '../../src/debug/x87/debug-x87.cc',
+ '../../src/full-codegen/x87/full-codegen-x87.cc',
'../../src/ic/x87/access-compiler-x87.cc',
'../../src/ic/x87/handler-compiler-x87.cc',
'../../src/ic/x87/ic-x87.cc',
'../../src/ic/x87/ic-compiler-x87.cc',
'../../src/ic/x87/stub-cache-x87.cc',
+ '../../src/regexp/x87/regexp-macro-assembler-x87.cc',
+ '../../src/regexp/x87/regexp-macro-assembler-x87.h',
],
}],
['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
@@ -1166,12 +1192,10 @@
'../../src/mips/constants-mips.cc',
'../../src/mips/constants-mips.h',
'../../src/mips/cpu-mips.cc',
- '../../src/mips/debug-mips.cc',
'../../src/mips/deoptimizer-mips.cc',
'../../src/mips/disasm-mips.cc',
'../../src/mips/frames-mips.cc',
'../../src/mips/frames-mips.h',
- '../../src/mips/full-codegen-mips.cc',
'../../src/mips/interface-descriptors-mips.cc',
'../../src/mips/lithium-codegen-mips.cc',
'../../src/mips/lithium-codegen-mips.h',
@@ -1181,19 +1205,20 @@
'../../src/mips/lithium-mips.h',
'../../src/mips/macro-assembler-mips.cc',
'../../src/mips/macro-assembler-mips.h',
- '../../src/mips/regexp-macro-assembler-mips.cc',
- '../../src/mips/regexp-macro-assembler-mips.h',
'../../src/mips/simulator-mips.cc',
'../../src/mips/simulator-mips.h',
'../../src/compiler/mips/code-generator-mips.cc',
'../../src/compiler/mips/instruction-codes-mips.h',
'../../src/compiler/mips/instruction-selector-mips.cc',
- '../../src/compiler/mips/linkage-mips.cc',
+ '../../src/full-codegen/mips/full-codegen-mips.cc',
+ '../../src/debug/mips/debug-mips.cc',
'../../src/ic/mips/access-compiler-mips.cc',
'../../src/ic/mips/handler-compiler-mips.cc',
'../../src/ic/mips/ic-mips.cc',
'../../src/ic/mips/ic-compiler-mips.cc',
'../../src/ic/mips/stub-cache-mips.cc',
+ '../../src/regexp/mips/regexp-macro-assembler-mips.cc',
+ '../../src/regexp/mips/regexp-macro-assembler-mips.h',
],
}],
['v8_target_arch=="mips64el"', {
@@ -1209,12 +1234,10 @@
'../../src/mips64/constants-mips64.cc',
'../../src/mips64/constants-mips64.h',
'../../src/mips64/cpu-mips64.cc',
- '../../src/mips64/debug-mips64.cc',
'../../src/mips64/deoptimizer-mips64.cc',
'../../src/mips64/disasm-mips64.cc',
'../../src/mips64/frames-mips64.cc',
'../../src/mips64/frames-mips64.h',
- '../../src/mips64/full-codegen-mips64.cc',
'../../src/mips64/interface-descriptors-mips64.cc',
'../../src/mips64/lithium-codegen-mips64.cc',
'../../src/mips64/lithium-codegen-mips64.h',
@@ -1224,19 +1247,20 @@
'../../src/mips64/lithium-mips64.h',
'../../src/mips64/macro-assembler-mips64.cc',
'../../src/mips64/macro-assembler-mips64.h',
- '../../src/mips64/regexp-macro-assembler-mips64.cc',
- '../../src/mips64/regexp-macro-assembler-mips64.h',
'../../src/mips64/simulator-mips64.cc',
'../../src/mips64/simulator-mips64.h',
'../../src/compiler/mips64/code-generator-mips64.cc',
'../../src/compiler/mips64/instruction-codes-mips64.h',
'../../src/compiler/mips64/instruction-selector-mips64.cc',
- '../../src/compiler/mips64/linkage-mips64.cc',
+ '../../src/debug/mips64/debug-mips64.cc',
+ '../../src/full-codegen/mips64/full-codegen-mips64.cc',
'../../src/ic/mips64/access-compiler-mips64.cc',
'../../src/ic/mips64/handler-compiler-mips64.cc',
'../../src/ic/mips64/ic-mips64.cc',
'../../src/ic/mips64/ic-compiler-mips64.cc',
'../../src/ic/mips64/stub-cache-mips64.cc',
+ '../../src/regexp/mips64/regexp-macro-assembler-mips64.cc',
+ '../../src/regexp/mips64/regexp-macro-assembler-mips64.h',
],
}],
['v8_target_arch=="x64" or v8_target_arch=="x32"', {
@@ -1250,12 +1274,10 @@
'../../src/x64/codegen-x64.cc',
'../../src/x64/codegen-x64.h',
'../../src/x64/cpu-x64.cc',
- '../../src/x64/debug-x64.cc',
'../../src/x64/deoptimizer-x64.cc',
'../../src/x64/disasm-x64.cc',
'../../src/x64/frames-x64.cc',
'../../src/x64/frames-x64.h',
- '../../src/x64/full-codegen-x64.cc',
'../../src/x64/interface-descriptors-x64.cc',
'../../src/x64/lithium-codegen-x64.cc',
'../../src/x64/lithium-codegen-x64.h',
@@ -1265,13 +1287,15 @@
'../../src/x64/lithium-x64.h',
'../../src/x64/macro-assembler-x64.cc',
'../../src/x64/macro-assembler-x64.h',
- '../../src/x64/regexp-macro-assembler-x64.cc',
- '../../src/x64/regexp-macro-assembler-x64.h',
+ '../../src/debug/x64/debug-x64.cc',
+ '../../src/full-codegen/x64/full-codegen-x64.cc',
'../../src/ic/x64/access-compiler-x64.cc',
'../../src/ic/x64/handler-compiler-x64.cc',
'../../src/ic/x64/ic-x64.cc',
'../../src/ic/x64/ic-compiler-x64.cc',
'../../src/ic/x64/stub-cache-x64.cc',
+ '../../src/regexp/x64/regexp-macro-assembler-x64.cc',
+ '../../src/regexp/x64/regexp-macro-assembler-x64.h',
],
}],
['v8_target_arch=="x64"', {
@@ -1279,7 +1303,6 @@
'../../src/compiler/x64/code-generator-x64.cc',
'../../src/compiler/x64/instruction-codes-x64.h',
'../../src/compiler/x64/instruction-selector-x64.cc',
- '../../src/compiler/x64/linkage-x64.cc',
],
}],
['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
@@ -1295,12 +1318,10 @@
'../../src/ppc/constants-ppc.h',
'../../src/ppc/constants-ppc.cc',
'../../src/ppc/cpu-ppc.cc',
- '../../src/ppc/debug-ppc.cc',
'../../src/ppc/deoptimizer-ppc.cc',
'../../src/ppc/disasm-ppc.cc',
'../../src/ppc/frames-ppc.cc',
'../../src/ppc/frames-ppc.h',
- '../../src/ppc/full-codegen-ppc.cc',
'../../src/ppc/interface-descriptors-ppc.cc',
'../../src/ppc/interface-descriptors-ppc.h',
'../../src/ppc/lithium-ppc.cc',
@@ -1311,19 +1332,20 @@
'../../src/ppc/lithium-gap-resolver-ppc.h',
'../../src/ppc/macro-assembler-ppc.cc',
'../../src/ppc/macro-assembler-ppc.h',
- '../../src/ppc/regexp-macro-assembler-ppc.cc',
- '../../src/ppc/regexp-macro-assembler-ppc.h',
'../../src/ppc/simulator-ppc.cc',
'../../src/ppc/simulator-ppc.h',
'../../src/compiler/ppc/code-generator-ppc.cc',
'../../src/compiler/ppc/instruction-codes-ppc.h',
'../../src/compiler/ppc/instruction-selector-ppc.cc',
- '../../src/compiler/ppc/linkage-ppc.cc',
+ '../../src/debug/ppc/debug-ppc.cc',
+ '../../src/full-codegen/ppc/full-codegen-ppc.cc',
'../../src/ic/ppc/access-compiler-ppc.cc',
'../../src/ic/ppc/handler-compiler-ppc.cc',
'../../src/ic/ppc/ic-ppc.cc',
'../../src/ic/ppc/ic-compiler-ppc.cc',
'../../src/ic/ppc/stub-cache-ppc.cc',
+ '../../src/regexp/ppc/regexp-macro-assembler-ppc.cc',
+ '../../src/regexp/ppc/regexp-macro-assembler-ppc.h',
],
}],
['OS=="win"', {
@@ -1374,6 +1396,9 @@
}],
],
}],
+ ['v8_wasm!=0', {
+ 'dependencies': ['../../third_party/wasm/src/wasm/wasm.gyp:wasm'],
+ }],
],
},
{
@@ -1432,6 +1457,7 @@
'../../src/base/safe_conversions_impl.h',
'../../src/base/safe_math.h',
'../../src/base/safe_math_impl.h',
+ '../../src/base/smart-pointers.h',
'../../src/base/sys-info.cc',
'../../src/base/sys-info.h',
'../../src/base/utils/random-number-generator.cc',
@@ -1685,6 +1711,7 @@
'inputs': [
'../../tools/concatenate-files.py',
'<(SHARED_INTERMEDIATE_DIR)/libraries.bin',
+ '<(SHARED_INTERMEDIATE_DIR)/libraries-code-stub.bin',
'<(SHARED_INTERMEDIATE_DIR)/libraries-experimental.bin',
'<(SHARED_INTERMEDIATE_DIR)/libraries-extras.bin',
],
@@ -1750,8 +1777,8 @@
'library_files': [
'../../src/macros.py',
'../../src/messages.h',
- '../../src/runtime.js',
'../../src/prologue.js',
+ '../../src/runtime.js',
'../../src/v8natives.js',
'../../src/symbol.js',
'../../src/array.js',
@@ -1774,12 +1801,12 @@
'../../src/json.js',
'../../src/array-iterator.js',
'../../src/string-iterator.js',
- '../../src/debug-debugger.js',
- '../../src/mirror-debugger.js',
- '../../src/liveedit-debugger.js',
'../../src/templates.js',
'../../src/harmony-array.js',
'../../src/harmony-typedarray.js',
+ '../../src/debug/mirrors.js',
+ '../../src/debug/debug.js',
+ '../../src/debug/liveedit.js',
],
'experimental_library_files': [
'../../src/macros.py',
@@ -1794,9 +1821,17 @@
'../../src/harmony-reflect.js',
'../../src/harmony-spread.js',
'../../src/harmony-object.js',
+ '../../src/harmony-object-observe.js',
'../../src/harmony-sharedarraybuffer.js',
+ '../../src/harmony-simd.js',
+ ],
+ 'code_stub_library_files': [
+ '../../src/macros.py',
+ '../../src/messages.h',
+ '../../src/code-stubs.js',
],
'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries.bin',
+ 'libraries_code_stub_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-code-stub.bin',
'libraries_experimental_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental.bin',
'libraries_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-extras.bin',
},
@@ -1854,6 +1889,31 @@
],
},
{
+ 'action_name': 'js2c_code_stubs',
+ 'inputs': [
+ '../../tools/js2c.py',
+ '<@(code_stub_library_files)',
+ ],
+ 'outputs': [
+ '<(SHARED_INTERMEDIATE_DIR)/code-stub-libraries.cc',
+ ],
+ 'action': [
+ 'python',
+ '../../tools/js2c.py',
+ '<(SHARED_INTERMEDIATE_DIR)/code-stub-libraries.cc',
+ 'CODE_STUB',
+ '<@(code_stub_library_files)'
+ ],
+ 'conditions': [
+ [ 'v8_use_external_startup_data==1', {
+ 'outputs': ['<@(libraries_code_stub_bin_file)'],
+ 'action': [
+ '--startup_blob', '<@(libraries_code_stub_bin_file)'
+ ],
+ }],
+ ],
+ },
+ {
'action_name': 'js2c_extras',
'inputs': [
'../../tools/js2c.py',
diff --git a/deps/v8/tools/js2c.py b/deps/v8/tools/js2c.py
index b5436f90bb..c280537379 100755
--- a/deps/v8/tools/js2c.py
+++ b/deps/v8/tools/js2c.py
@@ -196,7 +196,7 @@ def ReadMacros(lines):
return (constants, macros)
-TEMPLATE_PATTERN = re.compile(r'^\s+T\(([A-Z][a-zA-Z]*),')
+TEMPLATE_PATTERN = re.compile(r'^\s+T\(([A-Z][a-zA-Z0-9]*),')
def ReadMessageTemplates(lines):
templates = []
@@ -377,7 +377,7 @@ class Sources:
def IsDebuggerFile(filename):
- return filename.endswith("-debugger.js")
+ return "debug" in filename
def IsMacroFile(filename):
return filename.endswith("macros.py")
@@ -447,7 +447,7 @@ def PrepareSources(source_files, native_type, emit_js):
result.is_debugger_id.append(is_debugger)
name = os.path.basename(source)[:-3]
- result.names.append(name if not is_debugger else name[:-9])
+ result.names.append(name)
return result
diff --git a/deps/v8/tools/run-deopt-fuzzer.py b/deps/v8/tools/run-deopt-fuzzer.py
index 4e361ae9c8..7fbf402d95 100755
--- a/deps/v8/tools/run-deopt-fuzzer.py
+++ b/deps/v8/tools/run-deopt-fuzzer.py
@@ -417,7 +417,7 @@ def Execute(arch, mode, args, options, suites, workspace):
test_backup[s] = s.tests
analysis_flags = ["--deopt-every-n-times", "%d" % MAX_DEOPT,
"--print-deopt-stress"]
- s.tests = [ t.CopyAddingFlags(analysis_flags) for t in s.tests ]
+ s.tests = [ t.CopyAddingFlags(t.variant, analysis_flags) for t in s.tests ]
num_tests += len(s.tests)
for t in s.tests:
t.id = test_id
@@ -464,7 +464,7 @@ def Execute(arch, mode, args, options, suites, workspace):
print "%s %s" % (t.path, distribution)
for i in distribution:
fuzzing_flags = ["--deopt-every-n-times", "%d" % i]
- s.tests.append(t.CopyAddingFlags(fuzzing_flags))
+ s.tests.append(t.CopyAddingFlags(t.variant, fuzzing_flags))
num_tests += len(s.tests)
for t in s.tests:
t.id = test_id
diff --git a/deps/v8/tools/run-tests.py b/deps/v8/tools/run-tests.py
index 76476271f1..9c6f30a365 100755
--- a/deps/v8/tools/run-tests.py
+++ b/deps/v8/tools/run-tests.py
@@ -44,7 +44,7 @@ import time
from testrunner.local import execution
from testrunner.local import progress
from testrunner.local import testsuite
-from testrunner.local.testsuite import VARIANT_FLAGS
+from testrunner.local.testsuite import ALL_VARIANTS
from testrunner.local import utils
from testrunner.local import verbose
from testrunner.network import network_execution
@@ -322,8 +322,17 @@ def RandomSeed():
return seed
+def BuildbotToV8Mode(config):
+ """Convert buildbot build configs to configs understood by the v8 runner.
+
+ V8 configs are always lower case and without the additional _x64 suffix for
+ 64 bit builds on windows with ninja.
+ """
+ mode = config[:-4] if config.endswith('_x64') else config
+ return mode.lower()
+
def ProcessOptions(options):
- global VARIANT_FLAGS
+ global ALL_VARIANTS
global VARIANTS
# Architecture and mode related stuff.
@@ -334,7 +343,7 @@ def ProcessOptions(options):
options.mode = ",".join([tokens[1] for tokens in options.arch_and_mode])
options.mode = options.mode.split(",")
for mode in options.mode:
- if not mode.lower() in MODES:
+ if not BuildbotToV8Mode(mode) in MODES:
print "Unknown mode %s" % mode
return False
if options.arch in ["auto", "native"]:
@@ -414,8 +423,8 @@ def ProcessOptions(options):
VARIANTS = ["stress"]
if options.variants:
VARIANTS = options.variants.split(",")
- if not set(VARIANTS).issubset(VARIANT_FLAGS.keys()):
- print "All variants must be in %s" % str(VARIANT_FLAGS.keys())
+ if not set(VARIANTS).issubset(ALL_VARIANTS):
+ print "All variants must be in %s" % str(ALL_VARIANTS)
return False
if options.predictable:
VARIANTS = ["default"]
@@ -496,7 +505,7 @@ def Main():
else:
args_suites = OrderedDict() # Used as set
for arg in args:
- args_suites[arg.split(os.path.sep)[0]] = True
+ args_suites[arg.split('/')[0]] = True
suite_paths = [ s for s in args_suites if s in suite_paths ]
suites = []
@@ -531,7 +540,7 @@ def Execute(arch, mode, args, options, suites, workspace):
# TODO(machenbach): Get rid of different output folder location on
# buildbot. Currently this is capitalized Release and Debug.
shell_dir = os.path.join(workspace, options.outdir, mode)
- mode = mode.lower()
+ mode = BuildbotToV8Mode(mode)
else:
shell_dir = os.path.join(
workspace,
@@ -612,10 +621,11 @@ def Execute(arch, mode, args, options, suites, workspace):
if options.cat:
verbose.PrintTestSource(s.tests)
continue
- variant_flags = [VARIANT_FLAGS[var] for var in VARIANTS]
- variant_tests = [ t.CopyAddingFlags(v)
+ variant_gen = s.CreateVariantGenerator(VARIANTS)
+ variant_tests = [ t.CopyAddingFlags(v, flags)
for t in s.tests
- for v in s.VariantFlags(t, variant_flags) ]
+ for v in variant_gen.FilterVariantsByTest(t)
+ for flags in variant_gen.GetFlagSets(t, v) ]
if options.random_seed_stress_count > 1:
# Duplicate test for random seed stress mode.
@@ -628,9 +638,9 @@ def Execute(arch, mode, args, options, suites, workspace):
else:
yield ["--random-seed=%d" % RandomSeed()]
s.tests = [
- t.CopyAddingFlags(v)
+ t.CopyAddingFlags(t.variant, flags)
for t in variant_tests
- for v in iter_seed_flags()
+ for flags in iter_seed_flags()
]
else:
s.tests = variant_tests
@@ -653,11 +663,13 @@ def Execute(arch, mode, args, options, suites, workspace):
options.junitout, options.junittestsuite))
if options.json_test_results:
progress_indicator.Register(progress.JsonTestProgressIndicator(
- options.json_test_results, arch, MODES[mode]["execution_mode"]))
+ options.json_test_results, arch, MODES[mode]["execution_mode"],
+ ctx.random_seed))
run_networked = not options.no_network
if not run_networked:
- print("Network distribution disabled, running tests locally.")
+ if verbose_output:
+ print("Network distribution disabled, running tests locally.")
elif utils.GuessOS() != "linux":
print("Network distribution is only supported on Linux, sorry!")
run_networked = False
@@ -685,6 +697,10 @@ def Execute(arch, mode, args, options, suites, workspace):
if options.time:
verbose.PrintTestDurations(suites, overall_duration)
+
+ if num_tests == 0:
+ print("Warning: no tests were run!")
+
return exit_code
diff --git a/deps/v8/tools/run_perf.py b/deps/v8/tools/run_perf.py
index c04e4e77c3..31331686fa 100755
--- a/deps/v8/tools/run_perf.py
+++ b/deps/v8/tools/run_perf.py
@@ -126,16 +126,16 @@ def LoadAndroidBuildTools(path): # pragma: no cover
assert os.path.exists(path)
sys.path.insert(0, path)
- from pylib.device import device_utils # pylint: disable=F0401
+ from pylib.device import adb_wrapper # pylint: disable=F0401
from pylib.device import device_errors # pylint: disable=F0401
+ from pylib.device import device_utils # pylint: disable=F0401
from pylib.perf import cache_control # pylint: disable=F0401
from pylib.perf import perf_control # pylint: disable=F0401
- import pylib.android_commands # pylint: disable=F0401
+ global adb_wrapper
global cache_control
global device_errors
global device_utils
global perf_control
- global pylib
def GeometricMean(values):
@@ -169,6 +169,174 @@ class Results(object):
return str(self.ToDict())
+class Measurement(object):
+ """Represents a series of results of one trace.
+
+ The results are from repetitive runs of the same executable. They are
+ gathered by repeated calls to ConsumeOutput.
+ """
+ def __init__(self, graphs, units, results_regexp, stddev_regexp):
+ self.name = graphs[-1]
+ self.graphs = graphs
+ self.units = units
+ self.results_regexp = results_regexp
+ self.stddev_regexp = stddev_regexp
+ self.results = []
+ self.errors = []
+ self.stddev = ""
+
+ def ConsumeOutput(self, stdout):
+ try:
+ result = re.search(self.results_regexp, stdout, re.M).group(1)
+ self.results.append(str(float(result)))
+ except ValueError:
+ self.errors.append("Regexp \"%s\" returned a non-numeric for test %s."
+ % (self.results_regexp, self.name))
+ except:
+ self.errors.append("Regexp \"%s\" didn't match for test %s."
+ % (self.results_regexp, self.name))
+
+ try:
+ if self.stddev_regexp and self.stddev:
+ self.errors.append("Test %s should only run once since a stddev "
+ "is provided by the test." % self.name)
+ if self.stddev_regexp:
+ self.stddev = re.search(self.stddev_regexp, stdout, re.M).group(1)
+ except:
+ self.errors.append("Regexp \"%s\" didn't match for test %s."
+ % (self.stddev_regexp, self.name))
+
+ def GetResults(self):
+ return Results([{
+ "graphs": self.graphs,
+ "units": self.units,
+ "results": self.results,
+ "stddev": self.stddev,
+ }], self.errors)
+
+
+class NullMeasurement(object):
+ """Null object to avoid having extra logic for configurations that didn't
+ run like running without patch on trybots.
+ """
+ def ConsumeOutput(self, stdout):
+ pass
+
+ def GetResults(self):
+ return Results()
+
+
+def Unzip(iterable):
+ left = []
+ right = []
+ for l, r in iterable:
+ left.append(l)
+ right.append(r)
+ return lambda: iter(left), lambda: iter(right)
+
+
+def AccumulateResults(
+ graph_names, trace_configs, iter_output, trybot, no_patch, calc_total):
+ """Iterates over the output of multiple benchmark reruns and accumulates
+ results for a configured list of traces.
+
+ Args:
+ graph_names: List of names that configure the base path of the traces. E.g.
+ ['v8', 'Octane'].
+ trace_configs: List of "TraceConfig" instances. Each trace config defines
+ how to perform a measurement.
+ iter_output: Iterator over the standard output of each test run.
+ trybot: Indicates that this is run in trybot mode, i.e. run twice, once
+ with once without patch.
+ no_patch: Indicates weather this is a trybot run without patch.
+ calc_total: Boolean flag to speficy the calculation of a summary trace.
+ Returns: A "Results" object.
+ """
+ measurements = [
+ trace.CreateMeasurement(trybot, no_patch) for trace in trace_configs]
+ for stdout in iter_output():
+ for measurement in measurements:
+ measurement.ConsumeOutput(stdout)
+
+ res = reduce(lambda r, m: r + m.GetResults(), measurements, Results())
+
+ if not res.traces or not calc_total:
+ return res
+
+ # Assume all traces have the same structure.
+ if len(set(map(lambda t: len(t["results"]), res.traces))) != 1:
+ res.errors.append("Not all traces have the same number of results.")
+ return res
+
+ # Calculate the geometric means for all traces. Above we made sure that
+ # there is at least one trace and that the number of results is the same
+ # for each trace.
+ n_results = len(res.traces[0]["results"])
+ total_results = [GeometricMean(t["results"][i] for t in res.traces)
+ for i in range(0, n_results)]
+ res.traces.append({
+ "graphs": graph_names + ["Total"],
+ "units": res.traces[0]["units"],
+ "results": total_results,
+ "stddev": "",
+ })
+ return res
+
+
+def AccumulateGenericResults(graph_names, suite_units, iter_output):
+ """Iterates over the output of multiple benchmark reruns and accumulates
+ generic results.
+
+ Args:
+ graph_names: List of names that configure the base path of the traces. E.g.
+ ['v8', 'Octane'].
+ suite_units: Measurement default units as defined by the benchmark suite.
+ iter_output: Iterator over the standard output of each test run.
+ Returns: A "Results" object.
+ """
+ traces = OrderedDict()
+ for stdout in iter_output():
+ if stdout is None:
+ # The None value is used as a null object to simplify logic.
+ continue
+ for line in stdout.strip().splitlines():
+ match = GENERIC_RESULTS_RE.match(line)
+ if match:
+ stddev = ""
+ graph = match.group(1)
+ trace = match.group(2)
+ body = match.group(3)
+ units = match.group(4)
+ match_stddev = RESULT_STDDEV_RE.match(body)
+ match_list = RESULT_LIST_RE.match(body)
+ errors = []
+ if match_stddev:
+ result, stddev = map(str.strip, match_stddev.group(1).split(","))
+ results = [result]
+ elif match_list:
+ results = map(str.strip, match_list.group(1).split(","))
+ else:
+ results = [body.strip()]
+
+ try:
+ results = map(lambda r: str(float(r)), results)
+ except ValueError:
+ results = []
+ errors = ["Found non-numeric in %s" %
+ "/".join(graph_names + [graph, trace])]
+
+ trace_result = traces.setdefault(trace, Results([{
+ "graphs": graph_names + [graph, trace],
+ "units": (units or suite_units).strip(),
+ "results": [],
+ "stddev": "",
+ }], errors))
+ trace_result.traces[0]["results"].extend(results)
+ trace_result.traces[0]["stddev"] = stddev
+
+ return reduce(lambda r, t: r + t, traces.itervalues(), Results())
+
+
class Node(object):
"""Represents a node in the suite tree structure."""
def __init__(self, *args):
@@ -196,13 +364,13 @@ class DefaultSentinel(Node):
self.total = False
-class Graph(Node):
+class GraphConfig(Node):
"""Represents a suite definition.
Can either be a leaf or an inner node that provides default values.
"""
def __init__(self, suite, parent, arch):
- super(Graph, self).__init__()
+ super(GraphConfig, self).__init__()
self._suite = suite
assert isinstance(suite.get("path", []), list)
@@ -248,49 +416,26 @@ class Graph(Node):
self.stddev_regexp = suite.get("stddev_regexp", stddev_default)
-class Trace(Graph):
- """Represents a leaf in the suite tree structure.
-
- Handles collection of measurements.
- """
+class TraceConfig(GraphConfig):
+ """Represents a leaf in the suite tree structure."""
def __init__(self, suite, parent, arch):
- super(Trace, self).__init__(suite, parent, arch)
+ super(TraceConfig, self).__init__(suite, parent, arch)
assert self.results_regexp
- self.results = []
- self.errors = []
- self.stddev = ""
-
- def ConsumeOutput(self, stdout):
- try:
- result = re.search(self.results_regexp, stdout, re.M).group(1)
- self.results.append(str(float(result)))
- except ValueError:
- self.errors.append("Regexp \"%s\" returned a non-numeric for test %s."
- % (self.results_regexp, self.graphs[-1]))
- except:
- self.errors.append("Regexp \"%s\" didn't match for test %s."
- % (self.results_regexp, self.graphs[-1]))
- try:
- if self.stddev_regexp and self.stddev:
- self.errors.append("Test %s should only run once since a stddev "
- "is provided by the test." % self.graphs[-1])
- if self.stddev_regexp:
- self.stddev = re.search(self.stddev_regexp, stdout, re.M).group(1)
- except:
- self.errors.append("Regexp \"%s\" didn't match for test %s."
- % (self.stddev_regexp, self.graphs[-1]))
+ def CreateMeasurement(self, trybot, no_patch):
+ if not trybot and no_patch:
+ # Use null object for no-patch logic if this is not a trybot run.
+ return NullMeasurement()
- def GetResults(self):
- return Results([{
- "graphs": self.graphs,
- "units": self.units,
- "results": self.results,
- "stddev": self.stddev,
- }], self.errors)
+ return Measurement(
+ self.graphs,
+ self.units,
+ self.results_regexp,
+ self.stddev_regexp,
+ )
-class Runnable(Graph):
+class RunnableConfig(GraphConfig):
"""Represents a runnable suite definition (i.e. has a main file).
"""
@property
@@ -315,119 +460,85 @@ class Runnable(Graph):
cmd = [os.path.join(shell_dir, self.binary)]
return cmd + self.GetCommandFlags(extra_flags=extra_flags)
- def Run(self, runner):
+ def Run(self, runner, trybot):
"""Iterates over several runs and handles the output for all traces."""
- for stdout in runner():
- for trace in self._children:
- trace.ConsumeOutput(stdout)
- res = reduce(lambda r, t: r + t.GetResults(), self._children, Results())
-
- if not res.traces or not self.total:
- return res
-
- # Assume all traces have the same structure.
- if len(set(map(lambda t: len(t["results"]), res.traces))) != 1:
- res.errors.append("Not all traces have the same number of results.")
- return res
-
- # Calculate the geometric means for all traces. Above we made sure that
- # there is at least one trace and that the number of results is the same
- # for each trace.
- n_results = len(res.traces[0]["results"])
- total_results = [GeometricMean(t["results"][i] for t in res.traces)
- for i in range(0, n_results)]
- res.traces.append({
- "graphs": self.graphs + ["Total"],
- "units": res.traces[0]["units"],
- "results": total_results,
- "stddev": "",
- })
- return res
+ stdout_with_patch, stdout_no_patch = Unzip(runner())
+ return (
+ AccumulateResults(
+ self.graphs,
+ self._children,
+ iter_output=stdout_with_patch,
+ trybot=trybot,
+ no_patch=False,
+ calc_total=self.total,
+ ),
+ AccumulateResults(
+ self.graphs,
+ self._children,
+ iter_output=stdout_no_patch,
+ trybot=trybot,
+ no_patch=True,
+ calc_total=self.total,
+ ),
+ )
-class RunnableTrace(Trace, Runnable):
+
+class RunnableTraceConfig(TraceConfig, RunnableConfig):
"""Represents a runnable suite definition that is a leaf."""
def __init__(self, suite, parent, arch):
- super(RunnableTrace, self).__init__(suite, parent, arch)
+ super(RunnableTraceConfig, self).__init__(suite, parent, arch)
- def Run(self, runner):
+ def Run(self, runner, trybot):
"""Iterates over several runs and handles the output."""
- for stdout in runner():
- self.ConsumeOutput(stdout)
- return self.GetResults()
+ measurement_with_patch = self.CreateMeasurement(trybot, False)
+ measurement_no_patch = self.CreateMeasurement(trybot, True)
+ for stdout_with_patch, stdout_no_patch in runner():
+ measurement_with_patch.ConsumeOutput(stdout_with_patch)
+ measurement_no_patch.ConsumeOutput(stdout_no_patch)
+ return (
+ measurement_with_patch.GetResults(),
+ measurement_no_patch.GetResults(),
+ )
-class RunnableGeneric(Runnable):
+class RunnableGenericConfig(RunnableConfig):
"""Represents a runnable suite definition with generic traces."""
def __init__(self, suite, parent, arch):
- super(RunnableGeneric, self).__init__(suite, parent, arch)
+ super(RunnableGenericConfig, self).__init__(suite, parent, arch)
- def Run(self, runner):
- """Iterates over several runs and handles the output."""
- traces = OrderedDict()
- for stdout in runner():
- for line in stdout.strip().splitlines():
- match = GENERIC_RESULTS_RE.match(line)
- if match:
- stddev = ""
- graph = match.group(1)
- trace = match.group(2)
- body = match.group(3)
- units = match.group(4)
- match_stddev = RESULT_STDDEV_RE.match(body)
- match_list = RESULT_LIST_RE.match(body)
- errors = []
- if match_stddev:
- result, stddev = map(str.strip, match_stddev.group(1).split(","))
- results = [result]
- elif match_list:
- results = map(str.strip, match_list.group(1).split(","))
- else:
- results = [body.strip()]
-
- try:
- results = map(lambda r: str(float(r)), results)
- except ValueError:
- results = []
- errors = ["Found non-numeric in %s" %
- "/".join(self.graphs + [graph, trace])]
-
- trace_result = traces.setdefault(trace, Results([{
- "graphs": self.graphs + [graph, trace],
- "units": (units or self.units).strip(),
- "results": [],
- "stddev": "",
- }], errors))
- trace_result.traces[0]["results"].extend(results)
- trace_result.traces[0]["stddev"] = stddev
-
- return reduce(lambda r, t: r + t, traces.itervalues(), Results())
-
-
-def MakeGraph(suite, arch, parent):
- """Factory method for making graph objects."""
- if isinstance(parent, Runnable):
+ def Run(self, runner, trybot):
+ stdout_with_patch, stdout_no_patch = Unzip(runner())
+ return (
+ AccumulateGenericResults(self.graphs, self.units, stdout_with_patch),
+ AccumulateGenericResults(self.graphs, self.units, stdout_no_patch),
+ )
+
+
+def MakeGraphConfig(suite, arch, parent):
+ """Factory method for making graph configuration objects."""
+ if isinstance(parent, RunnableConfig):
# Below a runnable can only be traces.
- return Trace(suite, parent, arch)
+ return TraceConfig(suite, parent, arch)
elif suite.get("main") is not None:
# A main file makes this graph runnable. Empty strings are accepted.
if suite.get("tests"):
# This graph has subgraphs (traces).
- return Runnable(suite, parent, arch)
+ return RunnableConfig(suite, parent, arch)
else:
# This graph has no subgraphs, it's a leaf.
- return RunnableTrace(suite, parent, arch)
+ return RunnableTraceConfig(suite, parent, arch)
elif suite.get("generic"):
# This is a generic suite definition. It is either a runnable executable
# or has a main js file.
- return RunnableGeneric(suite, parent, arch)
+ return RunnableGenericConfig(suite, parent, arch)
elif suite.get("tests"):
# This is neither a leaf nor a runnable.
- return Graph(suite, parent, arch)
+ return GraphConfig(suite, parent, arch)
else: # pragma: no cover
raise Exception("Invalid suite configuration.")
-def BuildGraphs(suite, arch, parent=None):
+def BuildGraphConfigs(suite, arch, parent=None):
"""Builds a tree structure of graph objects that corresponds to the suite
configuration.
"""
@@ -437,9 +548,9 @@ def BuildGraphs(suite, arch, parent=None):
if arch not in suite.get("archs", SUPPORTED_ARCHS):
return None
- graph = MakeGraph(suite, arch, parent)
+ graph = MakeGraphConfig(suite, arch, parent)
for subsuite in suite.get("tests", []):
- BuildGraphs(subsuite, arch, graph)
+ BuildGraphConfigs(subsuite, arch, graph)
parent.AppendChild(graph)
return graph
@@ -449,7 +560,7 @@ def FlattenRunnables(node, node_cb):
runnables.
"""
node_cb(node)
- if isinstance(node, Runnable):
+ if isinstance(node, RunnableConfig):
yield node
elif isinstance(node, Node):
for child in node._children:
@@ -462,6 +573,7 @@ def FlattenRunnables(node, node_cb):
class Platform(object):
def __init__(self, options):
self.shell_dir = options.shell_dir
+ self.shell_dir_no_patch = options.shell_dir_no_patch
self.extra_flags = options.extra_flags.split()
@staticmethod
@@ -471,6 +583,27 @@ class Platform(object):
else:
return DesktopPlatform(options)
+ def _Run(self, runnable, count, no_patch=False):
+ raise NotImplementedError() # pragma: no cover
+
+ def Run(self, runnable, count):
+ """Execute the benchmark's main file.
+
+ If options.shell_dir_no_patch is specified, the benchmark is run once with
+ and once without patch.
+ Args:
+ runnable: A Runnable benchmark instance.
+ count: The number of this (repeated) run.
+ Returns: A tuple with the benchmark outputs with and without patch. The
+ latter will be None if options.shell_dir_no_patch was not
+ specified.
+ """
+ stdout = self._Run(runnable, count, no_patch=False)
+ if self.shell_dir_no_patch:
+ return stdout, self._Run(runnable, count, no_patch=True)
+ else:
+ return stdout, None
+
class DesktopPlatform(Platform):
def __init__(self, options):
@@ -483,24 +616,27 @@ class DesktopPlatform(Platform):
pass
def PreTests(self, node, path):
- if isinstance(node, Runnable):
+ if isinstance(node, RunnableConfig):
node.ChangeCWD(path)
- def Run(self, runnable, count):
+ def _Run(self, runnable, count, no_patch=False):
+ suffix = ' - without patch' if no_patch else ''
+ shell_dir = self.shell_dir_no_patch if no_patch else self.shell_dir
+ title = ">>> %%s (#%d)%s:" % ((count + 1), suffix)
try:
output = commands.Execute(
- runnable.GetCommand(self.shell_dir, self.extra_flags),
+ runnable.GetCommand(shell_dir, self.extra_flags),
timeout=runnable.timeout,
)
- except OSError as e:
- print ">>> OSError (#%d):" % (count + 1)
+ except OSError as e: # pragma: no cover
+ print title % "OSError"
print e
return ""
- print ">>> Stdout (#%d):" % (count + 1)
+ print title % "Stdout"
print output.stdout
if output.stderr: # pragma: no cover
# Print stderr for debugging.
- print ">>> Stderr (#%d):" % (count + 1)
+ print title % "Stderr"
print output.stderr
if output.timed_out:
print ">>> Test timed out after %ss." % runnable.timeout
@@ -516,15 +652,13 @@ class AndroidPlatform(Platform): # pragma: no cover
if not options.device:
# Detect attached device if not specified.
- devices = pylib.android_commands.GetAttachedDevices(
- hardware=True, emulator=False, offline=False)
+ devices = adb_wrapper.AdbWrapper.Devices()
assert devices and len(devices) == 1, (
"None or multiple devices detected. Please specify the device on "
"the command-line with --device")
- options.device = devices[0]
- adb_wrapper = pylib.android_commands.AndroidCommands(options.device)
- self.device = device_utils.DeviceUtils(adb_wrapper)
- self.adb = adb_wrapper.Adb()
+ options.device = str(devices[0])
+ self.adb_wrapper = adb_wrapper.AdbWrapper(options.device)
+ self.device = device_utils.DeviceUtils(self.adb_wrapper)
def PreExecution(self):
perf = perf_control.PerfControl(self.device)
@@ -538,10 +672,6 @@ class AndroidPlatform(Platform): # pragma: no cover
perf.SetDefaultPerfMode()
self.device.RunShellCommand(["rm", "-rf", AndroidPlatform.DEVICE_DIR])
- def _SendCommand(self, cmd):
- logging.info("adb -s %s %s" % (str(self.device), cmd))
- return self.adb.SendCommand(cmd, timeout_time=60)
-
def _PushFile(self, host_dir, file_name, target_rel=".",
skip_if_missing=False):
file_on_host = os.path.join(host_dir, file_name)
@@ -565,51 +695,59 @@ class AndroidPlatform(Platform): # pragma: no cover
# Work-around for "text file busy" errors. Push the files to a temporary
# location and then copy them with a shell command.
- output = self._SendCommand(
- "push %s %s" % (file_on_host, file_on_device_tmp))
+ output = self.adb_wrapper.Push(file_on_host, file_on_device_tmp)
# Success looks like this: "3035 KB/s (12512056 bytes in 4.025s)".
# Errors look like this: "failed to copy ... ".
if output and not re.search('^[0-9]', output.splitlines()[-1]):
logging.critical('PUSH FAILED: ' + output)
- self._SendCommand("shell mkdir -p %s" % folder_on_device)
- self._SendCommand("shell cp %s %s" % (file_on_device_tmp, file_on_device))
+ self.adb_wrapper.Shell("mkdir -p %s" % folder_on_device)
+ self.adb_wrapper.Shell("cp %s %s" % (file_on_device_tmp, file_on_device))
- def PreTests(self, node, path):
- suite_dir = os.path.abspath(os.path.dirname(path))
- if node.path:
- bench_rel = os.path.normpath(os.path.join(*node.path))
- bench_abs = os.path.join(suite_dir, bench_rel)
- else:
- bench_rel = "."
- bench_abs = suite_dir
-
- self._PushFile(self.shell_dir, node.binary, "bin")
+ def _PushExecutable(self, shell_dir, target_dir, binary):
+ self._PushFile(shell_dir, binary, target_dir)
# Push external startup data. Backwards compatible for revisions where
# these files didn't exist.
self._PushFile(
- self.shell_dir,
+ shell_dir,
"natives_blob.bin",
- "bin",
+ target_dir,
skip_if_missing=True,
)
self._PushFile(
- self.shell_dir,
+ shell_dir,
"snapshot_blob.bin",
- "bin",
+ target_dir,
skip_if_missing=True,
)
- if isinstance(node, Runnable):
+ def PreTests(self, node, path):
+ suite_dir = os.path.abspath(os.path.dirname(path))
+ if node.path:
+ bench_rel = os.path.normpath(os.path.join(*node.path))
+ bench_abs = os.path.join(suite_dir, bench_rel)
+ else:
+ bench_rel = "."
+ bench_abs = suite_dir
+
+ self._PushExecutable(self.shell_dir, "bin", node.binary)
+ if self.shell_dir_no_patch:
+ self._PushExecutable(
+ self.shell_dir_no_patch, "bin_no_patch", node.binary)
+
+ if isinstance(node, RunnableConfig):
self._PushFile(bench_abs, node.main, bench_rel)
for resource in node.resources:
self._PushFile(bench_abs, resource, bench_rel)
- def Run(self, runnable, count):
+ def _Run(self, runnable, count, no_patch=False):
+ suffix = ' - without patch' if no_patch else ''
+ target_dir = "bin_no_patch" if no_patch else "bin"
+ title = ">>> %%s (#%d)%s:" % ((count + 1), suffix)
cache = cache_control.CacheControl(self.device)
cache.DropRamCaches()
binary_on_device = os.path.join(
- AndroidPlatform.DEVICE_DIR, "bin", runnable.binary)
+ AndroidPlatform.DEVICE_DIR, target_dir, runnable.binary)
cmd = [binary_on_device] + runnable.GetCommandFlags(self.extra_flags)
# Relative path to benchmark directory.
@@ -626,7 +764,7 @@ class AndroidPlatform(Platform): # pragma: no cover
retries=0,
)
stdout = "\n".join(output)
- print ">>> Stdout (#%d):" % (count + 1)
+ print title % "Stdout"
print stdout
except device_errors.CommandTimeoutError:
print ">>> Test timed out after %ss." % runnable.timeout
@@ -656,8 +794,13 @@ def Main(args):
default="")
parser.add_option("--json-test-results",
help="Path to a file for storing json results.")
+ parser.add_option("--json-test-results-no-patch",
+ help="Path to a file for storing json results from run "
+ "without patch.")
parser.add_option("--outdir", help="Base directory with compile output",
default="out")
+ parser.add_option("--outdir-no-patch",
+ help="Base directory with compile output without patch")
(options, args) = parser.parse_args(args)
if len(args) == 0: # pragma: no cover
@@ -671,21 +814,35 @@ def Main(args):
print "Unknown architecture %s" % options.arch
return 1
- if (options.device and not options.android_build_tools): # pragma: no cover
+ if options.device and not options.android_build_tools: # pragma: no cover
print "Specifying a device requires Android build tools."
return 1
+ if (options.json_test_results_no_patch and
+ not options.outdir_no_patch): # pragma: no cover
+ print("For writing json test results without patch, an outdir without "
+ "patch must be specified.")
+ return 1
+
workspace = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if options.buildbot:
- options.shell_dir = os.path.join(workspace, options.outdir, "Release")
+ build_config = "Release"
+ else:
+ build_config = "%s.release" % options.arch
+
+ options.shell_dir = os.path.join(workspace, options.outdir, build_config)
+
+ if options.outdir_no_patch:
+ options.shell_dir_no_patch = os.path.join(
+ workspace, options.outdir_no_patch, build_config)
else:
- options.shell_dir = os.path.join(workspace, options.outdir,
- "%s.release" % options.arch)
+ options.shell_dir_no_patch = None
platform = Platform.GetPlatform(options)
results = Results()
+ results_no_patch = Results()
for path in args:
path = os.path.abspath(path)
@@ -703,7 +860,7 @@ def Main(args):
platform.PreExecution()
# Build the graph/trace tree structure.
- root = BuildGraphs(suite, options.arch)
+ root = BuildGraphConfigs(suite, options.arch)
# Callback to be called on each node on traversal.
def NodeCB(node):
@@ -721,8 +878,10 @@ def Main(args):
yield platform.Run(runnable, i)
# Let runnable iterate over all runs and handle output.
- results += runnable.Run(Runner)
-
+ result, result_no_patch = runnable.Run(
+ Runner, trybot=options.shell_dir_no_patch)
+ results += result
+ results_no_patch += result_no_patch
platform.PostExecution()
if options.json_test_results:
@@ -730,6 +889,11 @@ def Main(args):
else: # pragma: no cover
print results
+ if options.json_test_results_no_patch:
+ results_no_patch.WriteToFile(options.json_test_results_no_patch)
+ else: # pragma: no cover
+ print results_no_patch
+
return min(1, len(results.errors))
if __name__ == "__main__": # pragma: no cover
diff --git a/deps/v8/tools/testrunner/local/execution.py b/deps/v8/tools/testrunner/local/execution.py
index dccd52a359..4c63fb6e63 100644
--- a/deps/v8/tools/testrunner/local/execution.py
+++ b/deps/v8/tools/testrunner/local/execution.py
@@ -104,6 +104,8 @@ class Runner(object):
"--stress-opt" in self.context.mode_flags or
"--stress-opt" in self.context.extra_flags):
timeout *= 4
+ if "--noenable-vfp3" in self.context.extra_flags:
+ timeout *= 2
# FIXME(machenbach): Make this more OO. Don't expose default outcomes or
# the like.
if statusfile.IsSlow(test.outcomes or [statusfile.PASS]):
diff --git a/deps/v8/tools/testrunner/local/progress.py b/deps/v8/tools/testrunner/local/progress.py
index 469d64bc00..60ec635262 100644
--- a/deps/v8/tools/testrunner/local/progress.py
+++ b/deps/v8/tools/testrunner/local/progress.py
@@ -313,10 +313,11 @@ class JUnitTestProgressIndicator(ProgressIndicator):
class JsonTestProgressIndicator(ProgressIndicator):
- def __init__(self, json_test_results, arch, mode):
+ def __init__(self, json_test_results, arch, mode, random_seed):
self.json_test_results = json_test_results
self.arch = arch
self.mode = mode
+ self.random_seed = random_seed
self.results = []
self.tests = []
@@ -370,6 +371,11 @@ class JsonTestProgressIndicator(ProgressIndicator):
"result": test.suite.GetOutcome(test),
"expected": list(test.outcomes or ["PASS"]),
"duration": test.duration,
+
+ # TODO(machenbach): This stores only the global random seed from the
+ # context and not possible overrides when using random-seed stress.
+ "random_seed": self.random_seed,
+ "variant": test.variant,
})
diff --git a/deps/v8/tools/testrunner/local/testsuite.py b/deps/v8/tools/testrunner/local/testsuite.py
index 91a3e04525..c8e43521e7 100644
--- a/deps/v8/tools/testrunner/local/testsuite.py
+++ b/deps/v8/tools/testrunner/local/testsuite.py
@@ -35,15 +35,47 @@ from . import utils
from ..objects import testcase
# Use this to run several variants of the tests.
-VARIANT_FLAGS = {
- "default": [],
- "stress": ["--stress-opt", "--always-opt"],
- "turbofan": ["--turbo", "--always-opt"],
- "nocrankshaft": ["--nocrankshaft"]}
+ALL_VARIANT_FLAGS = {
+ "default": [[]],
+ "stress": [["--stress-opt", "--always-opt"]],
+ "turbofan": [["--turbo", "--always-opt"]],
+ "nocrankshaft": [["--nocrankshaft"]],
+}
+
+# FAST_VARIANTS implies no --always-opt.
+FAST_VARIANT_FLAGS = {
+ "default": [[]],
+ "stress": [["--stress-opt"]],
+ "turbofan": [["--turbo"]],
+ "nocrankshaft": [["--nocrankshaft"]],
+}
+
+ALL_VARIANTS = set(["default", "stress", "turbofan", "nocrankshaft"])
+FAST_VARIANTS = set(["default", "turbofan"])
+STANDARD_VARIANT = set(["default"])
+
+
+class VariantGenerator(object):
+ def __init__(self, suite, variants):
+ self.suite = suite
+ self.all_variants = ALL_VARIANTS & variants
+ self.fast_variants = FAST_VARIANTS & variants
+ self.standard_variant = STANDARD_VARIANT & variants
+
+ def FilterVariantsByTest(self, testcase):
+ if testcase.outcomes and statusfile.OnlyStandardVariant(
+ testcase.outcomes):
+ return self.standard_variant
+ if testcase.outcomes and statusfile.OnlyFastVariants(testcase.outcomes):
+ return self.fast_variants
+ return self.all_variants
+
+ def GetFlagSets(self, testcase, variant):
+ if testcase.outcomes and statusfile.OnlyFastVariants(testcase.outcomes):
+ return FAST_VARIANT_FLAGS[variant]
+ else:
+ return ALL_VARIANT_FLAGS[variant]
-FAST_VARIANT_FLAGS = [
- f for v, f in VARIANT_FLAGS.iteritems() if v in ["default", "turbofan"]
-]
class TestSuite(object):
@@ -89,15 +121,19 @@ class TestSuite(object):
def ListTests(self, context):
raise NotImplementedError
- def VariantFlags(self, testcase, default_flags):
- if testcase.outcomes and statusfile.OnlyStandardVariant(testcase.outcomes):
- return [[]]
- if testcase.outcomes and statusfile.OnlyFastVariants(testcase.outcomes):
- # FAST_VARIANTS implies no --always-opt.
- return [ filter(lambda flag: flag != "--always-opt", f)
- for f in filter(lambda flags: flags in FAST_VARIANT_FLAGS,
- default_flags) ]
- return default_flags
+ def _VariantGeneratorFactory(self):
+ """The variant generator class to be used."""
+ return VariantGenerator
+
+ def CreateVariantGenerator(self, variants):
+ """Return a generator for the testing variants of this suite.
+
+ Args:
+ variants: List of variant names to be run as specified by the test
+ runner.
+ Returns: An object of type VariantGenerator.
+ """
+ return self._VariantGeneratorFactory()(self, set(variants))
def DownloadData(self):
pass
@@ -175,10 +211,17 @@ class TestSuite(object):
print("Unused rule: %s -> %s" % (rule, self.wildcards[rule]))
def FilterTestCasesByArgs(self, args):
+ """Filter test cases based on command-line arguments.
+
+ An argument with an asterisk in the end will match all test cases
+ that have the argument as a prefix. Without asterisk, only exact matches
+ will be used with the exeption of the test-suite name as argument.
+ """
filtered = []
- filtered_args = []
+ globs = []
+ exact_matches = []
for a in args:
- argpath = a.split(os.path.sep)
+ argpath = a.split('/')
if argpath[0] != self.name:
continue
if len(argpath) == 1 or (len(argpath) == 2 and argpath[1] == '*'):
@@ -186,12 +229,18 @@ class TestSuite(object):
path = os.path.sep.join(argpath[1:])
if path[-1] == '*':
path = path[:-1]
- filtered_args.append(path)
+ globs.append(path)
+ else:
+ exact_matches.append(path)
for t in self.tests:
- for a in filtered_args:
+ for a in globs:
if t.path.startswith(a):
filtered.append(t)
break
+ for a in exact_matches:
+ if t.path == a:
+ filtered.append(t)
+ break
self.tests = filtered
def GetFlagsForTestCase(self, testcase, context):
@@ -239,6 +288,11 @@ class TestSuite(object):
return self.total_duration
+class StandardVariantGenerator(VariantGenerator):
+ def FilterVariantsByTest(self, testcase):
+ return self.standard_variant
+
+
class GoogleTestSuite(TestSuite):
def __init__(self, name, root):
super(GoogleTestSuite, self).__init__(name, root)
@@ -272,8 +326,8 @@ class GoogleTestSuite(TestSuite):
["--gtest_print_time=0"] +
context.mode_flags)
- def VariantFlags(self, testcase, default_flags):
- return [[]]
+ def _VariantGeneratorFactory(self):
+ return StandardVariantGenerator
def shell(self):
return self.name
diff --git a/deps/v8/tools/testrunner/objects/testcase.py b/deps/v8/tools/testrunner/objects/testcase.py
index c7b445eaab..0ab06361b1 100644
--- a/deps/v8/tools/testrunner/objects/testcase.py
+++ b/deps/v8/tools/testrunner/objects/testcase.py
@@ -29,10 +29,12 @@
from . import output
class TestCase(object):
- def __init__(self, suite, path, flags=None, dependency=None):
+ def __init__(self, suite, path, variant='default', flags=None,
+ dependency=None):
self.suite = suite # TestSuite object
self.path = path # string, e.g. 'div-mod', 'test-api/foo'
self.flags = flags or [] # list of strings, flags specific to this test
+ self.variant = variant # name of the used testing variant
self.dependency = dependency # |path| for testcase that must be run first
self.outcomes = set([])
self.output = None
@@ -40,8 +42,9 @@ class TestCase(object):
self.duration = None # assigned during execution
self.run = 1 # The nth time this test is executed.
- def CopyAddingFlags(self, flags):
- copy = TestCase(self.suite, self.path, self.flags + flags, self.dependency)
+ def CopyAddingFlags(self, variant, flags):
+ copy = TestCase(self.suite, self.path, variant, self.flags + flags,
+ self.dependency)
copy.outcomes = self.outcomes
return copy
@@ -51,16 +54,16 @@ class TestCase(object):
and returns them as a JSON serializable object.
"""
assert self.id is not None
- return [self.suitename(), self.path, self.flags,
+ return [self.suitename(), self.path, self.variant, self.flags,
self.dependency, list(self.outcomes or []), self.id]
@staticmethod
def UnpackTask(task):
"""Creates a new TestCase object based on packed task data."""
# For the order of the fields, refer to PackTask() above.
- test = TestCase(str(task[0]), task[1], task[2], task[3])
- test.outcomes = set(task[4])
- test.id = task[5]
+ test = TestCase(str(task[0]), task[1], task[2], task[3], task[4])
+ test.outcomes = set(task[5])
+ test.id = task[6]
test.run = 1
return test
diff --git a/deps/v8/tools/unittests/run_perf_test.py b/deps/v8/tools/unittests/run_perf_test.py
index f9ea0c09c9..f3e5aff49f 100644
--- a/deps/v8/tools/unittests/run_perf_test.py
+++ b/deps/v8/tools/unittests/run_perf_test.py
@@ -139,17 +139,17 @@ class PerfTest(unittest.TestCase):
all_args += args
return run_perf.Main(all_args)
- def _LoadResults(self):
- with open(self._test_output) as f:
+ def _LoadResults(self, file_name=None):
+ with open(file_name or self._test_output) as f:
return json.load(f)
- def _VerifyResults(self, suite, units, traces):
+ def _VerifyResults(self, suite, units, traces, file_name=None):
self.assertEquals([
{"units": units,
"graphs": [suite, trace["name"]],
"results": trace["results"],
"stddev": trace["stddev"]} for trace in traces],
- self._LoadResults()["traces"])
+ self._LoadResults(file_name)["traces"])
def _VerifyErrors(self, errors):
self.assertEquals(errors, self._LoadResults()["errors"])
@@ -402,17 +402,56 @@ class PerfTest(unittest.TestCase):
# require lots of complicated mocks for the android tools.
def testAndroid(self):
self._WriteTestInput(V8_JSON)
- platform = run_perf.Platform
+ # FIXME(machenbach): This is not test-local!
+ platform = run_perf.AndroidPlatform
platform.PreExecution = MagicMock(return_value=None)
platform.PostExecution = MagicMock(return_value=None)
platform.PreTests = MagicMock(return_value=None)
platform.Run = MagicMock(
- return_value="Richards: 1.234\nDeltaBlue: 10657567\n")
+ return_value=("Richards: 1.234\nDeltaBlue: 10657567\n", None))
run_perf.AndroidPlatform = MagicMock(return_value=platform)
self.assertEquals(
0, self._CallMain("--android-build-tools", "/some/dir",
- "--arch", "android_arm"))
+ "--arch", "arm"))
self._VerifyResults("test", "score", [
{"name": "Richards", "results": ["1.234"], "stddev": ""},
{"name": "DeltaBlue", "results": ["10657567.0"], "stddev": ""},
])
+
+ def testTwoRuns_Trybot(self):
+ test_input = dict(V8_JSON)
+ test_input["run_count"] = 2
+ self._WriteTestInput(test_input)
+ self._MockCommand([".", ".", ".", "."],
+ ["Richards: 100\nDeltaBlue: 200\n",
+ "Richards: 200\nDeltaBlue: 20\n",
+ "Richards: 50\nDeltaBlue: 200\n",
+ "Richards: 100\nDeltaBlue: 20\n"])
+ test_output_no_patch = path.join(TEST_WORKSPACE, "results_no_patch.json")
+ self.assertEquals(0, self._CallMain(
+ "--outdir-no-patch", "out-no-patch",
+ "--json-test-results-no-patch", test_output_no_patch,
+ ))
+ self._VerifyResults("test", "score", [
+ {"name": "Richards", "results": ["100.0", "200.0"], "stddev": ""},
+ {"name": "DeltaBlue", "results": ["20.0", "20.0"], "stddev": ""},
+ ])
+ self._VerifyResults("test", "score", [
+ {"name": "Richards", "results": ["50.0", "100.0"], "stddev": ""},
+ {"name": "DeltaBlue", "results": ["200.0", "200.0"], "stddev": ""},
+ ], test_output_no_patch)
+ self._VerifyErrors([])
+ self._VerifyMockMultiple(
+ (path.join("out", "x64.release", "d7"), "--flag", "run.js"),
+ (path.join("out-no-patch", "x64.release", "d7"), "--flag", "run.js"),
+ (path.join("out", "x64.release", "d7"), "--flag", "run.js"),
+ (path.join("out-no-patch", "x64.release", "d7"), "--flag", "run.js"),
+ )
+
+ def testUnzip(self):
+ def Gen():
+ for i in [1, 2, 3]:
+ yield i, i + 1
+ l, r = run_perf.Unzip(Gen())
+ self.assertEquals([1, 2, 3], list(l()))
+ self.assertEquals([2, 3, 4], list(r()))
diff --git a/deps/v8/tools/v8heapconst.py b/deps/v8/tools/v8heapconst.py
index af8b6b6890..f3d5d15ab5 100644
--- a/deps/v8/tools/v8heapconst.py
+++ b/deps/v8/tools/v8heapconst.py
@@ -51,86 +51,87 @@ INSTANCE_TYPES = {
22: "SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE",
26: "SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE",
128: "SYMBOL_TYPE",
+ 134: "FLOAT32X4_TYPE",
129: "MAP_TYPE",
130: "CODE_TYPE",
131: "ODDBALL_TYPE",
- 181: "CELL_TYPE",
- 183: "PROPERTY_CELL_TYPE",
+ 182: "CELL_TYPE",
+ 184: "PROPERTY_CELL_TYPE",
132: "HEAP_NUMBER_TYPE",
133: "MUTABLE_HEAP_NUMBER_TYPE",
- 134: "FLOAT32X4_TYPE",
135: "FOREIGN_TYPE",
136: "BYTE_ARRAY_TYPE",
- 137: "FREE_SPACE_TYPE",
- 138: "EXTERNAL_INT8_ARRAY_TYPE",
- 139: "EXTERNAL_UINT8_ARRAY_TYPE",
- 140: "EXTERNAL_INT16_ARRAY_TYPE",
- 141: "EXTERNAL_UINT16_ARRAY_TYPE",
- 142: "EXTERNAL_INT32_ARRAY_TYPE",
- 143: "EXTERNAL_UINT32_ARRAY_TYPE",
- 144: "EXTERNAL_FLOAT32_ARRAY_TYPE",
- 145: "EXTERNAL_FLOAT64_ARRAY_TYPE",
- 146: "EXTERNAL_UINT8_CLAMPED_ARRAY_TYPE",
- 147: "FIXED_INT8_ARRAY_TYPE",
- 148: "FIXED_UINT8_ARRAY_TYPE",
- 149: "FIXED_INT16_ARRAY_TYPE",
- 150: "FIXED_UINT16_ARRAY_TYPE",
- 151: "FIXED_INT32_ARRAY_TYPE",
- 152: "FIXED_UINT32_ARRAY_TYPE",
- 153: "FIXED_FLOAT32_ARRAY_TYPE",
- 154: "FIXED_FLOAT64_ARRAY_TYPE",
- 155: "FIXED_UINT8_CLAMPED_ARRAY_TYPE",
- 157: "FILLER_TYPE",
- 158: "DECLARED_ACCESSOR_DESCRIPTOR_TYPE",
- 159: "DECLARED_ACCESSOR_INFO_TYPE",
- 160: "EXECUTABLE_ACCESSOR_INFO_TYPE",
- 161: "ACCESSOR_PAIR_TYPE",
- 162: "ACCESS_CHECK_INFO_TYPE",
- 163: "INTERCEPTOR_INFO_TYPE",
- 164: "CALL_HANDLER_INFO_TYPE",
- 165: "FUNCTION_TEMPLATE_INFO_TYPE",
- 166: "OBJECT_TEMPLATE_INFO_TYPE",
- 167: "SIGNATURE_INFO_TYPE",
- 168: "TYPE_SWITCH_INFO_TYPE",
- 170: "ALLOCATION_MEMENTO_TYPE",
- 169: "ALLOCATION_SITE_TYPE",
- 171: "SCRIPT_TYPE",
- 172: "CODE_CACHE_TYPE",
- 173: "POLYMORPHIC_CODE_CACHE_TYPE",
- 174: "TYPE_FEEDBACK_INFO_TYPE",
- 175: "ALIASED_ARGUMENTS_ENTRY_TYPE",
- 176: "BOX_TYPE",
- 184: "PROTOTYPE_INFO_TYPE",
- 179: "FIXED_ARRAY_TYPE",
- 156: "FIXED_DOUBLE_ARRAY_TYPE",
- 180: "SHARED_FUNCTION_INFO_TYPE",
- 182: "WEAK_CELL_TYPE",
- 188: "JS_MESSAGE_OBJECT_TYPE",
- 187: "JS_VALUE_TYPE",
- 189: "JS_DATE_TYPE",
- 190: "JS_OBJECT_TYPE",
- 191: "JS_CONTEXT_EXTENSION_OBJECT_TYPE",
- 192: "JS_GENERATOR_OBJECT_TYPE",
- 193: "JS_MODULE_TYPE",
- 194: "JS_GLOBAL_OBJECT_TYPE",
- 195: "JS_BUILTINS_OBJECT_TYPE",
- 196: "JS_GLOBAL_PROXY_TYPE",
- 197: "JS_ARRAY_TYPE",
- 198: "JS_ARRAY_BUFFER_TYPE",
- 199: "JS_TYPED_ARRAY_TYPE",
- 200: "JS_DATA_VIEW_TYPE",
- 186: "JS_PROXY_TYPE",
- 201: "JS_SET_TYPE",
- 202: "JS_MAP_TYPE",
- 203: "JS_SET_ITERATOR_TYPE",
- 204: "JS_MAP_ITERATOR_TYPE",
- 205: "JS_WEAK_MAP_TYPE",
- 206: "JS_WEAK_SET_TYPE",
- 207: "JS_REGEXP_TYPE",
- 208: "JS_FUNCTION_TYPE",
- 185: "JS_FUNCTION_PROXY_TYPE",
- 177: "DEBUG_INFO_TYPE",
- 178: "BREAK_POINT_INFO_TYPE",
+ 137: "BYTECODE_ARRAY_TYPE",
+ 138: "FREE_SPACE_TYPE",
+ 139: "EXTERNAL_INT8_ARRAY_TYPE",
+ 140: "EXTERNAL_UINT8_ARRAY_TYPE",
+ 141: "EXTERNAL_INT16_ARRAY_TYPE",
+ 142: "EXTERNAL_UINT16_ARRAY_TYPE",
+ 143: "EXTERNAL_INT32_ARRAY_TYPE",
+ 144: "EXTERNAL_UINT32_ARRAY_TYPE",
+ 145: "EXTERNAL_FLOAT32_ARRAY_TYPE",
+ 146: "EXTERNAL_FLOAT64_ARRAY_TYPE",
+ 147: "EXTERNAL_UINT8_CLAMPED_ARRAY_TYPE",
+ 148: "FIXED_INT8_ARRAY_TYPE",
+ 149: "FIXED_UINT8_ARRAY_TYPE",
+ 150: "FIXED_INT16_ARRAY_TYPE",
+ 151: "FIXED_UINT16_ARRAY_TYPE",
+ 152: "FIXED_INT32_ARRAY_TYPE",
+ 153: "FIXED_UINT32_ARRAY_TYPE",
+ 154: "FIXED_FLOAT32_ARRAY_TYPE",
+ 155: "FIXED_FLOAT64_ARRAY_TYPE",
+ 156: "FIXED_UINT8_CLAMPED_ARRAY_TYPE",
+ 158: "FILLER_TYPE",
+ 159: "DECLARED_ACCESSOR_DESCRIPTOR_TYPE",
+ 160: "DECLARED_ACCESSOR_INFO_TYPE",
+ 161: "EXECUTABLE_ACCESSOR_INFO_TYPE",
+ 162: "ACCESSOR_PAIR_TYPE",
+ 163: "ACCESS_CHECK_INFO_TYPE",
+ 164: "INTERCEPTOR_INFO_TYPE",
+ 165: "CALL_HANDLER_INFO_TYPE",
+ 166: "FUNCTION_TEMPLATE_INFO_TYPE",
+ 167: "OBJECT_TEMPLATE_INFO_TYPE",
+ 168: "SIGNATURE_INFO_TYPE",
+ 169: "TYPE_SWITCH_INFO_TYPE",
+ 171: "ALLOCATION_MEMENTO_TYPE",
+ 170: "ALLOCATION_SITE_TYPE",
+ 172: "SCRIPT_TYPE",
+ 173: "CODE_CACHE_TYPE",
+ 174: "POLYMORPHIC_CODE_CACHE_TYPE",
+ 175: "TYPE_FEEDBACK_INFO_TYPE",
+ 176: "ALIASED_ARGUMENTS_ENTRY_TYPE",
+ 177: "BOX_TYPE",
+ 185: "PROTOTYPE_INFO_TYPE",
+ 180: "FIXED_ARRAY_TYPE",
+ 157: "FIXED_DOUBLE_ARRAY_TYPE",
+ 181: "SHARED_FUNCTION_INFO_TYPE",
+ 183: "WEAK_CELL_TYPE",
+ 189: "JS_MESSAGE_OBJECT_TYPE",
+ 188: "JS_VALUE_TYPE",
+ 190: "JS_DATE_TYPE",
+ 191: "JS_OBJECT_TYPE",
+ 192: "JS_CONTEXT_EXTENSION_OBJECT_TYPE",
+ 193: "JS_GENERATOR_OBJECT_TYPE",
+ 194: "JS_MODULE_TYPE",
+ 195: "JS_GLOBAL_OBJECT_TYPE",
+ 196: "JS_BUILTINS_OBJECT_TYPE",
+ 197: "JS_GLOBAL_PROXY_TYPE",
+ 198: "JS_ARRAY_TYPE",
+ 199: "JS_ARRAY_BUFFER_TYPE",
+ 200: "JS_TYPED_ARRAY_TYPE",
+ 201: "JS_DATA_VIEW_TYPE",
+ 187: "JS_PROXY_TYPE",
+ 202: "JS_SET_TYPE",
+ 203: "JS_MAP_TYPE",
+ 204: "JS_SET_ITERATOR_TYPE",
+ 205: "JS_MAP_ITERATOR_TYPE",
+ 206: "JS_WEAK_MAP_TYPE",
+ 207: "JS_WEAK_SET_TYPE",
+ 208: "JS_REGEXP_TYPE",
+ 209: "JS_FUNCTION_TYPE",
+ 186: "JS_FUNCTION_PROXY_TYPE",
+ 178: "DEBUG_INFO_TYPE",
+ 179: "BREAK_POINT_INFO_TYPE",
}
# List of known V8 maps.
@@ -138,35 +139,35 @@ KNOWN_MAPS = {
0x08081: (136, "ByteArrayMap"),
0x080ad: (129, "MetaMap"),
0x080d9: (131, "NullMap"),
- 0x08105: (179, "FixedArrayMap"),
+ 0x08105: (180, "FixedArrayMap"),
0x08131: (4, "OneByteInternalizedStringMap"),
- 0x0815d: (182, "WeakCellMap"),
- 0x08189: (131, "UndefinedMap"),
- 0x081b5: (132, "HeapNumberMap"),
- 0x081e1: (137, "FreeSpaceMap"),
- 0x0820d: (157, "OnePointerFillerMap"),
- 0x08239: (157, "TwoPointerFillerMap"),
- 0x08265: (131, "TheHoleMap"),
+ 0x0815d: (183, "WeakCellMap"),
+ 0x08189: (131, "TheHoleMap"),
+ 0x081b5: (138, "FreeSpaceMap"),
+ 0x081e1: (158, "OnePointerFillerMap"),
+ 0x0820d: (158, "TwoPointerFillerMap"),
+ 0x08239: (131, "UndefinedMap"),
+ 0x08265: (132, "HeapNumberMap"),
0x08291: (131, "BooleanMap"),
0x082bd: (131, "UninitializedMap"),
- 0x082e9: (181, "CellMap"),
- 0x08315: (183, "GlobalPropertyCellMap"),
- 0x08341: (180, "SharedFunctionInfoMap"),
+ 0x082e9: (182, "CellMap"),
+ 0x08315: (184, "GlobalPropertyCellMap"),
+ 0x08341: (181, "SharedFunctionInfoMap"),
0x0836d: (133, "MutableHeapNumberMap"),
0x08399: (134, "Float32x4Map"),
- 0x083c5: (179, "NativeContextMap"),
+ 0x083c5: (180, "NativeContextMap"),
0x083f1: (130, "CodeMap"),
- 0x0841d: (179, "ScopeInfoMap"),
- 0x08449: (179, "FixedCOWArrayMap"),
- 0x08475: (156, "FixedDoubleArrayMap"),
+ 0x0841d: (180, "ScopeInfoMap"),
+ 0x08449: (180, "FixedCOWArrayMap"),
+ 0x08475: (157, "FixedDoubleArrayMap"),
0x084a1: (68, "OneByteStringMap"),
- 0x084cd: (179, "FunctionContextMap"),
+ 0x084cd: (180, "FunctionContextMap"),
0x084f9: (131, "NoInterceptorResultSentinelMap"),
0x08525: (131, "ArgumentsMarkerMap"),
0x08551: (131, "ExceptionMap"),
0x0857d: (131, "TerminationExceptionMap"),
- 0x085a9: (179, "HashTableMap"),
- 0x085d5: (179, "OrderedHashTableMap"),
+ 0x085a9: (180, "HashTableMap"),
+ 0x085d5: (180, "OrderedHashTableMap"),
0x08601: (128, "SymbolMap"),
0x0862d: (64, "StringMap"),
0x08659: (69, "ConsOneByteStringMap"),
@@ -187,54 +188,55 @@ KNOWN_MAPS = {
0x088ed: (26, "ShortExternalInternalizedStringWithOneByteDataMap"),
0x08919: (22, "ShortExternalOneByteInternalizedStringMap"),
0x08945: (86, "ShortExternalOneByteStringMap"),
- 0x08971: (138, "ExternalInt8ArrayMap"),
- 0x0899d: (139, "ExternalUint8ArrayMap"),
- 0x089c9: (140, "ExternalInt16ArrayMap"),
- 0x089f5: (141, "ExternalUint16ArrayMap"),
- 0x08a21: (142, "ExternalInt32ArrayMap"),
- 0x08a4d: (143, "ExternalUint32ArrayMap"),
- 0x08a79: (144, "ExternalFloat32ArrayMap"),
- 0x08aa5: (145, "ExternalFloat64ArrayMap"),
- 0x08ad1: (146, "ExternalUint8ClampedArrayMap"),
- 0x08afd: (148, "FixedUint8ArrayMap"),
- 0x08b29: (147, "FixedInt8ArrayMap"),
- 0x08b55: (150, "FixedUint16ArrayMap"),
- 0x08b81: (149, "FixedInt16ArrayMap"),
- 0x08bad: (152, "FixedUint32ArrayMap"),
- 0x08bd9: (151, "FixedInt32ArrayMap"),
- 0x08c05: (153, "FixedFloat32ArrayMap"),
- 0x08c31: (154, "FixedFloat64ArrayMap"),
- 0x08c5d: (155, "FixedUint8ClampedArrayMap"),
- 0x08c89: (179, "SloppyArgumentsElementsMap"),
- 0x08cb5: (179, "CatchContextMap"),
- 0x08ce1: (179, "WithContextMap"),
- 0x08d0d: (179, "BlockContextMap"),
- 0x08d39: (179, "ModuleContextMap"),
- 0x08d65: (179, "ScriptContextMap"),
- 0x08d91: (179, "ScriptContextTableMap"),
- 0x08dbd: (188, "JSMessageObjectMap"),
+ 0x08971: (139, "ExternalInt8ArrayMap"),
+ 0x0899d: (140, "ExternalUint8ArrayMap"),
+ 0x089c9: (141, "ExternalInt16ArrayMap"),
+ 0x089f5: (142, "ExternalUint16ArrayMap"),
+ 0x08a21: (143, "ExternalInt32ArrayMap"),
+ 0x08a4d: (144, "ExternalUint32ArrayMap"),
+ 0x08a79: (145, "ExternalFloat32ArrayMap"),
+ 0x08aa5: (146, "ExternalFloat64ArrayMap"),
+ 0x08ad1: (147, "ExternalUint8ClampedArrayMap"),
+ 0x08afd: (149, "FixedUint8ArrayMap"),
+ 0x08b29: (148, "FixedInt8ArrayMap"),
+ 0x08b55: (151, "FixedUint16ArrayMap"),
+ 0x08b81: (150, "FixedInt16ArrayMap"),
+ 0x08bad: (153, "FixedUint32ArrayMap"),
+ 0x08bd9: (152, "FixedInt32ArrayMap"),
+ 0x08c05: (154, "FixedFloat32ArrayMap"),
+ 0x08c31: (155, "FixedFloat64ArrayMap"),
+ 0x08c5d: (156, "FixedUint8ClampedArrayMap"),
+ 0x08c89: (180, "SloppyArgumentsElementsMap"),
+ 0x08cb5: (180, "CatchContextMap"),
+ 0x08ce1: (180, "WithContextMap"),
+ 0x08d0d: (180, "BlockContextMap"),
+ 0x08d39: (180, "ModuleContextMap"),
+ 0x08d65: (180, "ScriptContextMap"),
+ 0x08d91: (180, "ScriptContextTableMap"),
+ 0x08dbd: (189, "JSMessageObjectMap"),
0x08de9: (135, "ForeignMap"),
- 0x08e15: (190, "NeanderMap"),
- 0x08e41: (190, "ExternalMap"),
- 0x08e6d: (170, "AllocationMementoMap"),
- 0x08e99: (169, "AllocationSiteMap"),
- 0x08ec5: (173, "PolymorphicCodeCacheMap"),
- 0x08ef1: (171, "ScriptMap"),
- 0x0907d: (176, "BoxMap"),
- 0x090a9: (160, "ExecutableAccessorInfoMap"),
- 0x090d5: (161, "AccessorPairMap"),
- 0x09101: (162, "AccessCheckInfoMap"),
- 0x0912d: (163, "InterceptorInfoMap"),
- 0x09159: (164, "CallHandlerInfoMap"),
- 0x09185: (165, "FunctionTemplateInfoMap"),
- 0x091b1: (166, "ObjectTemplateInfoMap"),
- 0x091dd: (168, "TypeSwitchInfoMap"),
- 0x09209: (172, "CodeCacheMap"),
- 0x09235: (174, "TypeFeedbackInfoMap"),
- 0x09261: (175, "AliasedArgumentsEntryMap"),
- 0x0928d: (177, "DebugInfoMap"),
- 0x092b9: (178, "BreakPointInfoMap"),
- 0x092e5: (184, "PrototypeInfoMap"),
+ 0x08e15: (191, "NeanderMap"),
+ 0x08e41: (191, "ExternalMap"),
+ 0x08e6d: (171, "AllocationMementoMap"),
+ 0x08e99: (170, "AllocationSiteMap"),
+ 0x08ec5: (174, "PolymorphicCodeCacheMap"),
+ 0x08ef1: (172, "ScriptMap"),
+ 0x09101: (161, "ExecutableAccessorInfoMap"),
+ 0x09159: (162, "AccessorPairMap"),
+ 0x09209: (185, "PrototypeInfoMap"),
+ 0x09839: (137, "BytecodeArrayMap"),
+ 0x09865: (177, "BoxMap"),
+ 0x09891: (163, "AccessCheckInfoMap"),
+ 0x098bd: (164, "InterceptorInfoMap"),
+ 0x098e9: (165, "CallHandlerInfoMap"),
+ 0x09915: (166, "FunctionTemplateInfoMap"),
+ 0x09941: (167, "ObjectTemplateInfoMap"),
+ 0x0996d: (169, "TypeSwitchInfoMap"),
+ 0x09999: (173, "CodeCacheMap"),
+ 0x099c5: (175, "TypeFeedbackInfoMap"),
+ 0x099f1: (176, "AliasedArgumentsEntryMap"),
+ 0x09a1d: (178, "DebugInfoMap"),
+ 0x09a49: (179, "BreakPointInfoMap"),
}
# List of known V8 objects.
@@ -242,60 +244,66 @@ KNOWN_OBJECTS = {
("OLD_SPACE", 0x08081): "NullValue",
("OLD_SPACE", 0x08091): "EmptyDescriptorArray",
("OLD_SPACE", 0x08099): "EmptyFixedArray",
- ("OLD_SPACE", 0x080bd): "UndefinedValue",
- ("OLD_SPACE", 0x080e5): "NanValue",
- ("OLD_SPACE", 0x080f1): "TheHoleValue",
- ("OLD_SPACE", 0x08111): "TrueValue",
- ("OLD_SPACE", 0x08131): "FalseValue",
- ("OLD_SPACE", 0x08155): "empty_string",
- ("OLD_SPACE", 0x08161): "UninitializedValue",
- ("OLD_SPACE", 0x0818d): "EmptyByteArray",
- ("OLD_SPACE", 0x08195): "NoInterceptorResultSentinel",
- ("OLD_SPACE", 0x081d1): "ArgumentsMarker",
- ("OLD_SPACE", 0x081fd): "Exception",
- ("OLD_SPACE", 0x08225): "TerminationException",
- ("OLD_SPACE", 0x08259): "NumberStringCache",
- ("OLD_SPACE", 0x08a61): "SingleCharacterStringCache",
- ("OLD_SPACE", 0x08ef9): "StringSplitCache",
- ("OLD_SPACE", 0x09301): "RegExpMultipleCache",
- ("OLD_SPACE", 0x09709): "EmptyExternalInt8Array",
- ("OLD_SPACE", 0x09715): "EmptyExternalUint8Array",
- ("OLD_SPACE", 0x09721): "EmptyExternalInt16Array",
- ("OLD_SPACE", 0x0972d): "EmptyExternalUint16Array",
- ("OLD_SPACE", 0x09739): "EmptyExternalInt32Array",
- ("OLD_SPACE", 0x09745): "EmptyExternalUint32Array",
- ("OLD_SPACE", 0x09751): "EmptyExternalFloat32Array",
- ("OLD_SPACE", 0x0975d): "EmptyExternalFloat64Array",
- ("OLD_SPACE", 0x09769): "EmptyExternalUint8ClampedArray",
- ("OLD_SPACE", 0x09775): "EmptyFixedUint8Array",
- ("OLD_SPACE", 0x0977d): "EmptyFixedInt8Array",
- ("OLD_SPACE", 0x09785): "EmptyFixedUint16Array",
- ("OLD_SPACE", 0x0978d): "EmptyFixedInt16Array",
- ("OLD_SPACE", 0x09795): "EmptyFixedUint32Array",
- ("OLD_SPACE", 0x0979d): "EmptyFixedInt32Array",
- ("OLD_SPACE", 0x097a5): "EmptyFixedFloat32Array",
- ("OLD_SPACE", 0x097ad): "EmptyFixedFloat64Array",
- ("OLD_SPACE", 0x097b5): "EmptyFixedUint8ClampedArray",
- ("OLD_SPACE", 0x097bd): "InfinityValue",
- ("OLD_SPACE", 0x097c9): "MinusZeroValue",
- ("OLD_SPACE", 0x097d5): "MessageListeners",
- ("OLD_SPACE", 0x097f1): "CodeStubs",
- ("OLD_SPACE", 0x12439): "ArrayProtector",
- ("OLD_SPACE", 0x12dfd): "KeyedLoadDummyVector",
- ("OLD_SPACE", 0x13cc5): "NonMonomorphicCache",
- ("OLD_SPACE", 0x14009): "PolymorphicCodeCache",
- ("OLD_SPACE", 0x14011): "NativesSourceCache",
- ("OLD_SPACE", 0x142d1): "ExperimentalNativesSourceCache",
- ("OLD_SPACE", 0x14309): "ExtraNativesSourceCache",
- ("OLD_SPACE", 0x14315): "EmptyScript",
- ("OLD_SPACE", 0x14351): "IntrinsicFunctionNames",
- ("OLD_SPACE", 0x233d5): "UndefinedCell",
- ("OLD_SPACE", 0x233dd): "ObservationState",
- ("OLD_SPACE", 0x233e9): "SymbolRegistry",
- ("OLD_SPACE", 0x2429d): "EmptySlowElementDictionary",
- ("OLD_SPACE", 0x242c5): "AllocationSitesScratchpad",
- ("OLD_SPACE", 0x246cd): "WeakObjectToCodeTable",
- ("OLD_SPACE", 0x4a5c1): "StringTable",
- ("CODE_SPACE", 0x180c1): "JsEntryCode",
- ("CODE_SPACE", 0x25c41): "JsConstructEntryCode",
+ ("OLD_SPACE", 0x080bd): "TheHoleValue",
+ ("OLD_SPACE", 0x080dd): "UndefinedValue",
+ ("OLD_SPACE", 0x08105): "NanValue",
+ ("OLD_SPACE", 0x08115): "TrueValue",
+ ("OLD_SPACE", 0x08135): "FalseValue",
+ ("OLD_SPACE", 0x08159): "empty_string",
+ ("OLD_SPACE", 0x08165): "UninitializedValue",
+ ("OLD_SPACE", 0x08191): "EmptyByteArray",
+ ("OLD_SPACE", 0x08199): "NoInterceptorResultSentinel",
+ ("OLD_SPACE", 0x081d5): "ArgumentsMarker",
+ ("OLD_SPACE", 0x08201): "Exception",
+ ("OLD_SPACE", 0x08229): "TerminationException",
+ ("OLD_SPACE", 0x0825d): "NumberStringCache",
+ ("OLD_SPACE", 0x08a65): "SingleCharacterStringCache",
+ ("OLD_SPACE", 0x08efd): "StringSplitCache",
+ ("OLD_SPACE", 0x09305): "RegExpMultipleCache",
+ ("OLD_SPACE", 0x0970d): "EmptyExternalInt8Array",
+ ("OLD_SPACE", 0x09719): "EmptyExternalUint8Array",
+ ("OLD_SPACE", 0x09725): "EmptyExternalInt16Array",
+ ("OLD_SPACE", 0x09731): "EmptyExternalUint16Array",
+ ("OLD_SPACE", 0x0973d): "EmptyExternalInt32Array",
+ ("OLD_SPACE", 0x09749): "EmptyExternalUint32Array",
+ ("OLD_SPACE", 0x09755): "EmptyExternalFloat32Array",
+ ("OLD_SPACE", 0x09761): "EmptyExternalFloat64Array",
+ ("OLD_SPACE", 0x0976d): "EmptyExternalUint8ClampedArray",
+ ("OLD_SPACE", 0x09779): "EmptyFixedUint8Array",
+ ("OLD_SPACE", 0x09789): "EmptyFixedInt8Array",
+ ("OLD_SPACE", 0x09799): "EmptyFixedUint16Array",
+ ("OLD_SPACE", 0x097a9): "EmptyFixedInt16Array",
+ ("OLD_SPACE", 0x097b9): "EmptyFixedUint32Array",
+ ("OLD_SPACE", 0x097c9): "EmptyFixedInt32Array",
+ ("OLD_SPACE", 0x097d9): "EmptyFixedFloat32Array",
+ ("OLD_SPACE", 0x097e9): "EmptyFixedFloat64Array",
+ ("OLD_SPACE", 0x097f9): "EmptyFixedUint8ClampedArray",
+ ("OLD_SPACE", 0x0980d): "InfinityValue",
+ ("OLD_SPACE", 0x0981d): "MinusZeroValue",
+ ("OLD_SPACE", 0x0982d): "MinusInfinityValue",
+ ("OLD_SPACE", 0x09839): "MessageListeners",
+ ("OLD_SPACE", 0x09855): "CodeStubs",
+ ("OLD_SPACE", 0x0e52d): "ArrayProtector",
+ ("OLD_SPACE", 0x0e9a1): "KeyedLoadDummyVector",
+ ("OLD_SPACE", 0x13ded): "NonMonomorphicCache",
+ ("OLD_SPACE", 0x14131): "PolymorphicCodeCache",
+ ("OLD_SPACE", 0x14139): "NativesSourceCache",
+ ("OLD_SPACE", 0x14429): "ExperimentalNativesSourceCache",
+ ("OLD_SPACE", 0x14461): "ExtraNativesSourceCache",
+ ("OLD_SPACE", 0x1446d): "CodeStubNativesSourceCache",
+ ("OLD_SPACE", 0x1448d): "EmptyScript",
+ ("OLD_SPACE", 0x144cd): "IntrinsicFunctionNames",
+ ("OLD_SPACE", 0x240e1): "UndefinedCell",
+ ("OLD_SPACE", 0x240e9): "ObservationState",
+ ("OLD_SPACE", 0x240f5): "SymbolRegistry",
+ ("OLD_SPACE", 0x24f9d): "EmptySlowElementDictionary",
+ ("OLD_SPACE", 0x24fc5): "AllocationSitesScratchpad",
+ ("OLD_SPACE", 0x253cd): "WeakObjectToCodeTable",
+ ("OLD_SPACE", 0x25461): "EmptyPropertyCell",
+ ("OLD_SPACE", 0x25471): "CodeStubContext",
+ ("OLD_SPACE", 0x2ba11): "CodeStubExportsObject",
+ ("OLD_SPACE", 0x2be89): "EmptyBytecodeArray",
+ ("OLD_SPACE", 0x594dd): "StringTable",
+ ("CODE_SPACE", 0x16341): "JsEntryCode",
+ ("CODE_SPACE", 0x26a61): "JsConstructEntryCode",
}
diff --git a/deps/v8/tools/whitespace.txt b/deps/v8/tools/whitespace.txt
index d8a81c9c13..d1395f5d91 100644
--- a/deps/v8/tools/whitespace.txt
+++ b/deps/v8/tools/whitespace.txt
@@ -5,4 +5,4 @@ Try to write something funny. And please don't add trailing whitespace.
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 Smi looked at them when a crazy v8-autoroll account showed up..