diff options
author | Michaƫl Zasso <mic.besace@gmail.com> | 2015-10-06 08:42:38 +0200 |
---|---|---|
committer | Ali Ijaz Sheikh <ofrobots@google.com> | 2015-10-14 11:20:34 -0700 |
commit | d8011d1683fe0d977de2bea1147f5213d4490c5a (patch) | |
tree | 54967df8dc1732e59eef39e5c5b39fe99ad88977 /deps/v8/tools | |
parent | d1a2e5357ef0357cec9b516fa9ac78cc38a984aa (diff) | |
download | android-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-x | deps/v8/tools/check-inline-includes.sh | 19 | ||||
-rwxr-xr-x | deps/v8/tools/check-unused-bailouts.sh | 16 | ||||
-rw-r--r-- | deps/v8/tools/external-reference-check.py | 1 | ||||
-rw-r--r-- | deps/v8/tools/gdb-v8-support.py | 1 | ||||
-rw-r--r-- | deps/v8/tools/gdbinit | 9 | ||||
-rw-r--r-- | deps/v8/tools/gen-postmortem-metadata.py | 14 | ||||
-rw-r--r-- | deps/v8/tools/gyp/v8.gyp | 200 | ||||
-rwxr-xr-x | deps/v8/tools/js2c.py | 6 | ||||
-rwxr-xr-x | deps/v8/tools/run-deopt-fuzzer.py | 4 | ||||
-rwxr-xr-x | deps/v8/tools/run-tests.py | 44 | ||||
-rwxr-xr-x | deps/v8/tools/run_perf.py | 518 | ||||
-rw-r--r-- | deps/v8/tools/testrunner/local/execution.py | 2 | ||||
-rw-r--r-- | deps/v8/tools/testrunner/local/progress.py | 8 | ||||
-rw-r--r-- | deps/v8/tools/testrunner/local/testsuite.py | 100 | ||||
-rw-r--r-- | deps/v8/tools/testrunner/objects/testcase.py | 17 | ||||
-rw-r--r-- | deps/v8/tools/unittests/run_perf_test.py | 53 | ||||
-rw-r--r-- | deps/v8/tools/v8heapconst.py | 396 | ||||
-rw-r--r-- | deps/v8/tools/whitespace.txt | 2 |
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.. |