libv8 3.11.8.17 → 3.16.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/Gemfile +1 -1
- data/Rakefile +6 -7
- data/lib/libv8/version.rb +1 -1
- data/vendor/v8/.gitignore +24 -3
- data/vendor/v8/AUTHORS +7 -0
- data/vendor/v8/ChangeLog +839 -0
- data/vendor/v8/DEPS +1 -1
- data/vendor/v8/Makefile.android +92 -0
- data/vendor/v8/OWNERS +11 -0
- data/vendor/v8/PRESUBMIT.py +71 -0
- data/vendor/v8/SConstruct +34 -39
- data/vendor/v8/build/android.gypi +56 -37
- data/vendor/v8/build/common.gypi +112 -30
- data/vendor/v8/build/gyp_v8 +1 -1
- data/vendor/v8/build/standalone.gypi +15 -11
- data/vendor/v8/include/v8-debug.h +9 -1
- data/vendor/v8/include/v8-preparser.h +4 -3
- data/vendor/v8/include/v8-profiler.h +25 -25
- data/vendor/v8/include/v8-testing.h +4 -3
- data/vendor/v8/include/v8.h +994 -540
- data/vendor/v8/preparser/preparser-process.cc +3 -3
- data/vendor/v8/samples/lineprocessor.cc +20 -27
- data/vendor/v8/samples/process.cc +18 -14
- data/vendor/v8/samples/shell.cc +16 -15
- data/vendor/v8/src/SConscript +15 -14
- data/vendor/v8/src/accessors.cc +169 -77
- data/vendor/v8/src/accessors.h +4 -0
- data/vendor/v8/src/allocation-inl.h +2 -2
- data/vendor/v8/src/allocation.h +7 -7
- data/vendor/v8/src/api.cc +810 -497
- data/vendor/v8/src/api.h +85 -60
- data/vendor/v8/src/arm/assembler-arm-inl.h +179 -22
- data/vendor/v8/src/arm/assembler-arm.cc +633 -264
- data/vendor/v8/src/arm/assembler-arm.h +264 -197
- data/vendor/v8/src/arm/builtins-arm.cc +117 -27
- data/vendor/v8/src/arm/code-stubs-arm.cc +1241 -700
- data/vendor/v8/src/arm/code-stubs-arm.h +35 -138
- data/vendor/v8/src/arm/codegen-arm.cc +285 -16
- data/vendor/v8/src/arm/codegen-arm.h +22 -0
- data/vendor/v8/src/arm/constants-arm.cc +5 -3
- data/vendor/v8/src/arm/constants-arm.h +24 -11
- data/vendor/v8/src/arm/debug-arm.cc +3 -3
- data/vendor/v8/src/arm/deoptimizer-arm.cc +382 -92
- data/vendor/v8/src/arm/disasm-arm.cc +61 -12
- data/vendor/v8/src/arm/frames-arm.h +0 -14
- data/vendor/v8/src/arm/full-codegen-arm.cc +332 -304
- data/vendor/v8/src/arm/ic-arm.cc +180 -259
- data/vendor/v8/src/arm/lithium-arm.cc +364 -316
- data/vendor/v8/src/arm/lithium-arm.h +512 -275
- data/vendor/v8/src/arm/lithium-codegen-arm.cc +1768 -809
- data/vendor/v8/src/arm/lithium-codegen-arm.h +97 -35
- data/vendor/v8/src/arm/lithium-gap-resolver-arm.cc +12 -5
- data/vendor/v8/src/arm/macro-assembler-arm.cc +439 -228
- data/vendor/v8/src/arm/macro-assembler-arm.h +116 -70
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.cc +54 -44
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.h +3 -10
- data/vendor/v8/src/arm/simulator-arm.cc +272 -238
- data/vendor/v8/src/arm/simulator-arm.h +38 -8
- data/vendor/v8/src/arm/stub-cache-arm.cc +522 -895
- data/vendor/v8/src/array.js +101 -70
- data/vendor/v8/src/assembler.cc +270 -19
- data/vendor/v8/src/assembler.h +110 -15
- data/vendor/v8/src/ast.cc +79 -69
- data/vendor/v8/src/ast.h +255 -301
- data/vendor/v8/src/atomicops.h +7 -1
- data/vendor/v8/src/atomicops_internals_tsan.h +335 -0
- data/vendor/v8/src/bootstrapper.cc +481 -418
- data/vendor/v8/src/bootstrapper.h +4 -4
- data/vendor/v8/src/builtins.cc +498 -311
- data/vendor/v8/src/builtins.h +75 -47
- data/vendor/v8/src/checks.cc +2 -1
- data/vendor/v8/src/checks.h +8 -0
- data/vendor/v8/src/code-stubs-hydrogen.cc +253 -0
- data/vendor/v8/src/code-stubs.cc +249 -84
- data/vendor/v8/src/code-stubs.h +501 -169
- data/vendor/v8/src/codegen.cc +36 -18
- data/vendor/v8/src/codegen.h +25 -3
- data/vendor/v8/src/collection.js +54 -17
- data/vendor/v8/src/compilation-cache.cc +24 -16
- data/vendor/v8/src/compilation-cache.h +15 -6
- data/vendor/v8/src/compiler.cc +497 -195
- data/vendor/v8/src/compiler.h +246 -38
- data/vendor/v8/src/contexts.cc +64 -24
- data/vendor/v8/src/contexts.h +60 -29
- data/vendor/v8/src/conversions-inl.h +24 -14
- data/vendor/v8/src/conversions.h +7 -4
- data/vendor/v8/src/counters.cc +21 -12
- data/vendor/v8/src/counters.h +44 -16
- data/vendor/v8/src/cpu-profiler.h +1 -1
- data/vendor/v8/src/d8-debug.cc +2 -2
- data/vendor/v8/src/d8-readline.cc +13 -2
- data/vendor/v8/src/d8.cc +681 -273
- data/vendor/v8/src/d8.gyp +4 -4
- data/vendor/v8/src/d8.h +38 -18
- data/vendor/v8/src/d8.js +0 -617
- data/vendor/v8/src/data-flow.h +55 -0
- data/vendor/v8/src/date.js +1 -42
- data/vendor/v8/src/dateparser-inl.h +5 -1
- data/vendor/v8/src/debug-agent.cc +10 -15
- data/vendor/v8/src/debug-debugger.js +147 -149
- data/vendor/v8/src/debug.cc +323 -164
- data/vendor/v8/src/debug.h +26 -14
- data/vendor/v8/src/deoptimizer.cc +765 -290
- data/vendor/v8/src/deoptimizer.h +130 -28
- data/vendor/v8/src/disassembler.cc +10 -4
- data/vendor/v8/src/elements-kind.cc +7 -2
- data/vendor/v8/src/elements-kind.h +19 -0
- data/vendor/v8/src/elements.cc +607 -285
- data/vendor/v8/src/elements.h +36 -13
- data/vendor/v8/src/execution.cc +52 -31
- data/vendor/v8/src/execution.h +4 -4
- data/vendor/v8/src/extensions/externalize-string-extension.cc +5 -4
- data/vendor/v8/src/extensions/gc-extension.cc +5 -1
- data/vendor/v8/src/extensions/statistics-extension.cc +153 -0
- data/vendor/v8/src/{inspector.h → extensions/statistics-extension.h} +12 -23
- data/vendor/v8/src/factory.cc +101 -134
- data/vendor/v8/src/factory.h +36 -31
- data/vendor/v8/src/flag-definitions.h +102 -25
- data/vendor/v8/src/flags.cc +9 -5
- data/vendor/v8/src/frames-inl.h +10 -0
- data/vendor/v8/src/frames.cc +116 -26
- data/vendor/v8/src/frames.h +96 -12
- data/vendor/v8/src/full-codegen.cc +219 -74
- data/vendor/v8/src/full-codegen.h +63 -21
- data/vendor/v8/src/func-name-inferrer.cc +8 -7
- data/vendor/v8/src/func-name-inferrer.h +5 -3
- data/vendor/v8/src/gdb-jit.cc +71 -57
- data/vendor/v8/src/global-handles.cc +230 -101
- data/vendor/v8/src/global-handles.h +26 -27
- data/vendor/v8/src/globals.h +17 -19
- data/vendor/v8/src/handles-inl.h +59 -12
- data/vendor/v8/src/handles.cc +180 -200
- data/vendor/v8/src/handles.h +80 -11
- data/vendor/v8/src/hashmap.h +60 -40
- data/vendor/v8/src/heap-inl.h +107 -45
- data/vendor/v8/src/heap-profiler.cc +38 -19
- data/vendor/v8/src/heap-profiler.h +24 -14
- data/vendor/v8/src/heap.cc +1123 -738
- data/vendor/v8/src/heap.h +385 -146
- data/vendor/v8/src/hydrogen-instructions.cc +700 -217
- data/vendor/v8/src/hydrogen-instructions.h +1158 -472
- data/vendor/v8/src/hydrogen.cc +3319 -1662
- data/vendor/v8/src/hydrogen.h +411 -170
- data/vendor/v8/src/ia32/assembler-ia32-inl.h +46 -16
- data/vendor/v8/src/ia32/assembler-ia32.cc +131 -61
- data/vendor/v8/src/ia32/assembler-ia32.h +115 -57
- data/vendor/v8/src/ia32/builtins-ia32.cc +99 -5
- data/vendor/v8/src/ia32/code-stubs-ia32.cc +787 -495
- data/vendor/v8/src/ia32/code-stubs-ia32.h +10 -100
- data/vendor/v8/src/ia32/codegen-ia32.cc +227 -23
- data/vendor/v8/src/ia32/codegen-ia32.h +14 -0
- data/vendor/v8/src/ia32/deoptimizer-ia32.cc +428 -87
- data/vendor/v8/src/ia32/disasm-ia32.cc +28 -1
- data/vendor/v8/src/ia32/frames-ia32.h +6 -16
- data/vendor/v8/src/ia32/full-codegen-ia32.cc +280 -272
- data/vendor/v8/src/ia32/ic-ia32.cc +150 -250
- data/vendor/v8/src/ia32/lithium-codegen-ia32.cc +1600 -517
- data/vendor/v8/src/ia32/lithium-codegen-ia32.h +90 -24
- data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.cc +10 -6
- data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.h +2 -2
- data/vendor/v8/src/ia32/lithium-ia32.cc +405 -302
- data/vendor/v8/src/ia32/lithium-ia32.h +526 -271
- data/vendor/v8/src/ia32/macro-assembler-ia32.cc +378 -119
- data/vendor/v8/src/ia32/macro-assembler-ia32.h +62 -28
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.cc +43 -30
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.h +2 -10
- data/vendor/v8/src/ia32/stub-cache-ia32.cc +492 -678
- data/vendor/v8/src/ic-inl.h +9 -4
- data/vendor/v8/src/ic.cc +836 -923
- data/vendor/v8/src/ic.h +228 -247
- data/vendor/v8/src/incremental-marking-inl.h +26 -30
- data/vendor/v8/src/incremental-marking.cc +276 -248
- data/vendor/v8/src/incremental-marking.h +29 -37
- data/vendor/v8/src/interface.cc +34 -25
- data/vendor/v8/src/interface.h +69 -25
- data/vendor/v8/src/interpreter-irregexp.cc +2 -2
- data/vendor/v8/src/isolate.cc +382 -76
- data/vendor/v8/src/isolate.h +109 -56
- data/vendor/v8/src/json-parser.h +217 -104
- data/vendor/v8/src/json-stringifier.h +745 -0
- data/vendor/v8/src/json.js +10 -132
- data/vendor/v8/src/jsregexp-inl.h +106 -0
- data/vendor/v8/src/jsregexp.cc +517 -285
- data/vendor/v8/src/jsregexp.h +145 -117
- data/vendor/v8/src/list-inl.h +35 -22
- data/vendor/v8/src/list.h +46 -19
- data/vendor/v8/src/lithium-allocator-inl.h +22 -2
- data/vendor/v8/src/lithium-allocator.cc +85 -70
- data/vendor/v8/src/lithium-allocator.h +21 -39
- data/vendor/v8/src/lithium.cc +259 -5
- data/vendor/v8/src/lithium.h +131 -32
- data/vendor/v8/src/liveedit-debugger.js +52 -3
- data/vendor/v8/src/liveedit.cc +393 -113
- data/vendor/v8/src/liveedit.h +7 -3
- data/vendor/v8/src/log-utils.cc +4 -2
- data/vendor/v8/src/log.cc +170 -140
- data/vendor/v8/src/log.h +62 -11
- data/vendor/v8/src/macro-assembler.h +17 -0
- data/vendor/v8/src/macros.py +2 -0
- data/vendor/v8/src/mark-compact-inl.h +3 -23
- data/vendor/v8/src/mark-compact.cc +801 -830
- data/vendor/v8/src/mark-compact.h +154 -47
- data/vendor/v8/src/marking-thread.cc +85 -0
- data/vendor/v8/src/{inspector.cc → marking-thread.h} +32 -24
- data/vendor/v8/src/math.js +12 -18
- data/vendor/v8/src/messages.cc +18 -8
- data/vendor/v8/src/messages.js +314 -261
- data/vendor/v8/src/mips/assembler-mips-inl.h +58 -6
- data/vendor/v8/src/mips/assembler-mips.cc +92 -75
- data/vendor/v8/src/mips/assembler-mips.h +54 -60
- data/vendor/v8/src/mips/builtins-mips.cc +116 -17
- data/vendor/v8/src/mips/code-stubs-mips.cc +919 -556
- data/vendor/v8/src/mips/code-stubs-mips.h +22 -131
- data/vendor/v8/src/mips/codegen-mips.cc +281 -6
- data/vendor/v8/src/mips/codegen-mips.h +22 -0
- data/vendor/v8/src/mips/constants-mips.cc +2 -0
- data/vendor/v8/src/mips/constants-mips.h +12 -2
- data/vendor/v8/src/mips/deoptimizer-mips.cc +286 -50
- data/vendor/v8/src/mips/disasm-mips.cc +13 -0
- data/vendor/v8/src/mips/full-codegen-mips.cc +297 -284
- data/vendor/v8/src/mips/ic-mips.cc +182 -263
- data/vendor/v8/src/mips/lithium-codegen-mips.cc +1208 -556
- data/vendor/v8/src/mips/lithium-codegen-mips.h +72 -19
- data/vendor/v8/src/mips/lithium-gap-resolver-mips.cc +9 -2
- data/vendor/v8/src/mips/lithium-mips.cc +290 -302
- data/vendor/v8/src/mips/lithium-mips.h +463 -266
- data/vendor/v8/src/mips/macro-assembler-mips.cc +208 -115
- data/vendor/v8/src/mips/macro-assembler-mips.h +67 -24
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.cc +40 -25
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.h +3 -9
- data/vendor/v8/src/mips/simulator-mips.cc +112 -40
- data/vendor/v8/src/mips/simulator-mips.h +5 -0
- data/vendor/v8/src/mips/stub-cache-mips.cc +502 -884
- data/vendor/v8/src/mirror-debugger.js +157 -30
- data/vendor/v8/src/mksnapshot.cc +88 -14
- data/vendor/v8/src/object-observe.js +235 -0
- data/vendor/v8/src/objects-debug.cc +178 -176
- data/vendor/v8/src/objects-inl.h +1333 -486
- data/vendor/v8/src/objects-printer.cc +125 -43
- data/vendor/v8/src/objects-visiting-inl.h +578 -6
- data/vendor/v8/src/objects-visiting.cc +2 -2
- data/vendor/v8/src/objects-visiting.h +172 -79
- data/vendor/v8/src/objects.cc +3533 -2885
- data/vendor/v8/src/objects.h +1352 -1131
- data/vendor/v8/src/optimizing-compiler-thread.cc +152 -0
- data/vendor/v8/src/optimizing-compiler-thread.h +111 -0
- data/vendor/v8/src/parser.cc +390 -500
- data/vendor/v8/src/parser.h +45 -33
- data/vendor/v8/src/platform-cygwin.cc +10 -21
- data/vendor/v8/src/platform-freebsd.cc +36 -41
- data/vendor/v8/src/platform-linux.cc +160 -124
- data/vendor/v8/src/platform-macos.cc +30 -27
- data/vendor/v8/src/platform-nullos.cc +17 -1
- data/vendor/v8/src/platform-openbsd.cc +19 -50
- data/vendor/v8/src/platform-posix.cc +14 -0
- data/vendor/v8/src/platform-solaris.cc +20 -53
- data/vendor/v8/src/platform-win32.cc +49 -26
- data/vendor/v8/src/platform.h +40 -1
- data/vendor/v8/src/preparser.cc +8 -5
- data/vendor/v8/src/preparser.h +2 -2
- data/vendor/v8/src/prettyprinter.cc +16 -0
- data/vendor/v8/src/prettyprinter.h +2 -0
- data/vendor/v8/src/profile-generator-inl.h +1 -0
- data/vendor/v8/src/profile-generator.cc +209 -147
- data/vendor/v8/src/profile-generator.h +15 -12
- data/vendor/v8/src/property-details.h +46 -31
- data/vendor/v8/src/property.cc +27 -46
- data/vendor/v8/src/property.h +163 -83
- data/vendor/v8/src/proxy.js +7 -2
- data/vendor/v8/src/regexp-macro-assembler-irregexp.cc +4 -13
- data/vendor/v8/src/regexp-macro-assembler-irregexp.h +1 -2
- data/vendor/v8/src/regexp-macro-assembler-tracer.cc +1 -11
- data/vendor/v8/src/regexp-macro-assembler-tracer.h +0 -1
- data/vendor/v8/src/regexp-macro-assembler.cc +31 -14
- data/vendor/v8/src/regexp-macro-assembler.h +14 -11
- data/vendor/v8/src/regexp-stack.cc +1 -0
- data/vendor/v8/src/regexp.js +9 -8
- data/vendor/v8/src/rewriter.cc +18 -7
- data/vendor/v8/src/runtime-profiler.cc +52 -43
- data/vendor/v8/src/runtime-profiler.h +0 -25
- data/vendor/v8/src/runtime.cc +2006 -2023
- data/vendor/v8/src/runtime.h +56 -49
- data/vendor/v8/src/safepoint-table.cc +12 -18
- data/vendor/v8/src/safepoint-table.h +11 -8
- data/vendor/v8/src/scanner.cc +1 -0
- data/vendor/v8/src/scanner.h +4 -10
- data/vendor/v8/src/scopeinfo.cc +35 -9
- data/vendor/v8/src/scopeinfo.h +64 -3
- data/vendor/v8/src/scopes.cc +251 -156
- data/vendor/v8/src/scopes.h +61 -27
- data/vendor/v8/src/serialize.cc +348 -396
- data/vendor/v8/src/serialize.h +125 -114
- data/vendor/v8/src/small-pointer-list.h +11 -11
- data/vendor/v8/src/{smart-array-pointer.h → smart-pointers.h} +64 -15
- data/vendor/v8/src/snapshot-common.cc +64 -15
- data/vendor/v8/src/snapshot-empty.cc +7 -1
- data/vendor/v8/src/snapshot.h +9 -2
- data/vendor/v8/src/spaces-inl.h +17 -0
- data/vendor/v8/src/spaces.cc +477 -183
- data/vendor/v8/src/spaces.h +238 -58
- data/vendor/v8/src/splay-tree-inl.h +8 -7
- data/vendor/v8/src/splay-tree.h +24 -10
- data/vendor/v8/src/store-buffer.cc +12 -5
- data/vendor/v8/src/store-buffer.h +2 -4
- data/vendor/v8/src/string-search.h +22 -6
- data/vendor/v8/src/string-stream.cc +11 -8
- data/vendor/v8/src/string.js +47 -15
- data/vendor/v8/src/stub-cache.cc +461 -224
- data/vendor/v8/src/stub-cache.h +164 -102
- data/vendor/v8/src/sweeper-thread.cc +105 -0
- data/vendor/v8/src/sweeper-thread.h +81 -0
- data/vendor/v8/src/token.h +1 -0
- data/vendor/v8/src/transitions-inl.h +220 -0
- data/vendor/v8/src/transitions.cc +160 -0
- data/vendor/v8/src/transitions.h +207 -0
- data/vendor/v8/src/type-info.cc +182 -181
- data/vendor/v8/src/type-info.h +31 -19
- data/vendor/v8/src/unicode-inl.h +62 -106
- data/vendor/v8/src/unicode.cc +57 -67
- data/vendor/v8/src/unicode.h +45 -91
- data/vendor/v8/src/uri.js +57 -29
- data/vendor/v8/src/utils.h +105 -5
- data/vendor/v8/src/v8-counters.cc +54 -11
- data/vendor/v8/src/v8-counters.h +134 -19
- data/vendor/v8/src/v8.cc +29 -29
- data/vendor/v8/src/v8.h +1 -0
- data/vendor/v8/src/v8conversions.cc +26 -22
- data/vendor/v8/src/v8globals.h +56 -43
- data/vendor/v8/src/v8natives.js +83 -30
- data/vendor/v8/src/v8threads.cc +42 -21
- data/vendor/v8/src/v8threads.h +4 -1
- data/vendor/v8/src/v8utils.cc +9 -93
- data/vendor/v8/src/v8utils.h +37 -33
- data/vendor/v8/src/variables.cc +6 -3
- data/vendor/v8/src/variables.h +6 -13
- data/vendor/v8/src/version.cc +2 -2
- data/vendor/v8/src/vm-state-inl.h +11 -0
- data/vendor/v8/src/x64/assembler-x64-inl.h +39 -8
- data/vendor/v8/src/x64/assembler-x64.cc +78 -64
- data/vendor/v8/src/x64/assembler-x64.h +38 -33
- data/vendor/v8/src/x64/builtins-x64.cc +105 -7
- data/vendor/v8/src/x64/code-stubs-x64.cc +790 -413
- data/vendor/v8/src/x64/code-stubs-x64.h +10 -106
- data/vendor/v8/src/x64/codegen-x64.cc +210 -8
- data/vendor/v8/src/x64/codegen-x64.h +20 -1
- data/vendor/v8/src/x64/deoptimizer-x64.cc +336 -75
- data/vendor/v8/src/x64/disasm-x64.cc +15 -0
- data/vendor/v8/src/x64/frames-x64.h +0 -14
- data/vendor/v8/src/x64/full-codegen-x64.cc +293 -270
- data/vendor/v8/src/x64/ic-x64.cc +153 -251
- data/vendor/v8/src/x64/lithium-codegen-x64.cc +1379 -531
- data/vendor/v8/src/x64/lithium-codegen-x64.h +67 -23
- data/vendor/v8/src/x64/lithium-gap-resolver-x64.cc +2 -2
- data/vendor/v8/src/x64/lithium-x64.cc +349 -289
- data/vendor/v8/src/x64/lithium-x64.h +460 -250
- data/vendor/v8/src/x64/macro-assembler-x64.cc +350 -177
- data/vendor/v8/src/x64/macro-assembler-x64.h +67 -49
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.cc +46 -33
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.h +2 -3
- data/vendor/v8/src/x64/stub-cache-x64.cc +484 -653
- data/vendor/v8/src/zone-inl.h +9 -27
- data/vendor/v8/src/zone.cc +5 -5
- data/vendor/v8/src/zone.h +53 -27
- data/vendor/v8/test/benchmarks/testcfg.py +5 -0
- data/vendor/v8/test/cctest/cctest.cc +4 -0
- data/vendor/v8/test/cctest/cctest.gyp +3 -1
- data/vendor/v8/test/cctest/cctest.h +57 -9
- data/vendor/v8/test/cctest/cctest.status +15 -15
- data/vendor/v8/test/cctest/test-accessors.cc +26 -0
- data/vendor/v8/test/cctest/test-alloc.cc +22 -30
- data/vendor/v8/test/cctest/test-api.cc +1943 -314
- data/vendor/v8/test/cctest/test-assembler-arm.cc +133 -13
- data/vendor/v8/test/cctest/test-assembler-ia32.cc +1 -1
- data/vendor/v8/test/cctest/test-assembler-mips.cc +12 -0
- data/vendor/v8/test/cctest/test-ast.cc +4 -2
- data/vendor/v8/test/cctest/test-compiler.cc +61 -29
- data/vendor/v8/test/cctest/test-dataflow.cc +2 -2
- data/vendor/v8/test/cctest/test-debug.cc +212 -33
- data/vendor/v8/test/cctest/test-decls.cc +257 -11
- data/vendor/v8/test/cctest/test-dictionary.cc +24 -10
- data/vendor/v8/test/cctest/test-disasm-arm.cc +118 -1
- data/vendor/v8/test/cctest/test-disasm-ia32.cc +3 -2
- data/vendor/v8/test/cctest/test-flags.cc +14 -1
- data/vendor/v8/test/cctest/test-func-name-inference.cc +7 -4
- data/vendor/v8/test/cctest/test-global-object.cc +51 -0
- data/vendor/v8/test/cctest/test-hashing.cc +32 -23
- data/vendor/v8/test/cctest/test-heap-profiler.cc +131 -77
- data/vendor/v8/test/cctest/test-heap.cc +1084 -143
- data/vendor/v8/test/cctest/test-list.cc +1 -1
- data/vendor/v8/test/cctest/test-liveedit.cc +3 -2
- data/vendor/v8/test/cctest/test-lockers.cc +12 -13
- data/vendor/v8/test/cctest/test-log.cc +10 -8
- data/vendor/v8/test/cctest/test-macro-assembler-x64.cc +2 -2
- data/vendor/v8/test/cctest/test-mark-compact.cc +44 -22
- data/vendor/v8/test/cctest/test-object-observe.cc +434 -0
- data/vendor/v8/test/cctest/test-parsing.cc +86 -39
- data/vendor/v8/test/cctest/test-platform-linux.cc +6 -0
- data/vendor/v8/test/cctest/test-platform-win32.cc +7 -0
- data/vendor/v8/test/cctest/test-random.cc +5 -4
- data/vendor/v8/test/cctest/test-regexp.cc +137 -101
- data/vendor/v8/test/cctest/test-serialize.cc +150 -230
- data/vendor/v8/test/cctest/test-sockets.cc +1 -1
- data/vendor/v8/test/cctest/test-spaces.cc +139 -0
- data/vendor/v8/test/cctest/test-strings.cc +736 -74
- data/vendor/v8/test/cctest/test-thread-termination.cc +10 -11
- data/vendor/v8/test/cctest/test-threads.cc +4 -4
- data/vendor/v8/test/cctest/test-utils.cc +16 -0
- data/vendor/v8/test/cctest/test-weakmaps.cc +7 -3
- data/vendor/v8/test/cctest/testcfg.py +64 -5
- data/vendor/v8/test/es5conform/testcfg.py +5 -0
- data/vendor/v8/test/message/message.status +1 -1
- data/vendor/v8/test/message/overwritten-builtins.out +3 -0
- data/vendor/v8/test/message/testcfg.py +89 -8
- data/vendor/v8/test/message/try-catch-finally-no-message.out +26 -26
- data/vendor/v8/test/mjsunit/accessor-map-sharing.js +18 -2
- data/vendor/v8/test/mjsunit/allocation-site-info.js +126 -0
- data/vendor/v8/test/mjsunit/array-bounds-check-removal.js +62 -1
- data/vendor/v8/test/mjsunit/array-iteration.js +1 -1
- data/vendor/v8/test/mjsunit/array-literal-transitions.js +2 -0
- data/vendor/v8/test/mjsunit/array-natives-elements.js +317 -0
- data/vendor/v8/test/mjsunit/array-reduce.js +8 -8
- data/vendor/v8/test/mjsunit/array-slice.js +12 -0
- data/vendor/v8/test/mjsunit/array-store-and-grow.js +4 -1
- data/vendor/v8/test/mjsunit/assert-opt-and-deopt.js +1 -1
- data/vendor/v8/test/mjsunit/bugs/bug-2337.js +53 -0
- data/vendor/v8/test/mjsunit/compare-known-objects-slow.js +69 -0
- data/vendor/v8/test/mjsunit/compiler/alloc-object-huge.js +3 -1
- data/vendor/v8/test/mjsunit/compiler/inline-accessors.js +368 -0
- data/vendor/v8/test/mjsunit/compiler/inline-arguments.js +87 -1
- data/vendor/v8/test/mjsunit/compiler/inline-closures.js +49 -0
- data/vendor/v8/test/mjsunit/compiler/inline-construct.js +55 -43
- data/vendor/v8/test/mjsunit/compiler/inline-literals.js +39 -0
- data/vendor/v8/test/mjsunit/compiler/multiply-add.js +69 -0
- data/vendor/v8/test/mjsunit/compiler/optimized-closures.js +57 -0
- data/vendor/v8/test/mjsunit/compiler/parallel-proto-change.js +44 -0
- data/vendor/v8/test/mjsunit/compiler/property-static.js +69 -0
- data/vendor/v8/test/mjsunit/compiler/proto-chain-constant.js +55 -0
- data/vendor/v8/test/mjsunit/compiler/proto-chain-load.js +44 -0
- data/vendor/v8/test/mjsunit/compiler/regress-gvn.js +3 -2
- data/vendor/v8/test/mjsunit/compiler/regress-or.js +6 -2
- data/vendor/v8/test/mjsunit/compiler/rotate.js +224 -0
- data/vendor/v8/test/mjsunit/compiler/uint32.js +173 -0
- data/vendor/v8/test/mjsunit/count-based-osr.js +2 -1
- data/vendor/v8/test/mjsunit/d8-os.js +3 -3
- data/vendor/v8/test/mjsunit/date-parse.js +3 -0
- data/vendor/v8/test/mjsunit/date.js +22 -0
- data/vendor/v8/test/mjsunit/debug-break-inline.js +1 -0
- data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized-double.js +22 -12
- data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized.js +21 -10
- data/vendor/v8/test/mjsunit/debug-liveedit-compile-error.js +60 -0
- data/vendor/v8/test/mjsunit/debug-liveedit-double-call.js +142 -0
- data/vendor/v8/test/mjsunit/debug-liveedit-literals.js +94 -0
- data/vendor/v8/test/mjsunit/debug-liveedit-restart-frame.js +153 -0
- data/vendor/v8/test/mjsunit/debug-multiple-breakpoints.js +1 -1
- data/vendor/v8/test/mjsunit/debug-script-breakpoints-closure.js +67 -0
- data/vendor/v8/test/mjsunit/debug-script-breakpoints-nested.js +82 -0
- data/vendor/v8/test/mjsunit/debug-script.js +4 -2
- data/vendor/v8/test/mjsunit/debug-set-variable-value.js +308 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part1.js +190 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part2.js +83 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part3.js +80 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part4.js +80 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part5.js +77 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part6.js +79 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part7.js +79 -0
- data/vendor/v8/test/mjsunit/{debug-stepout-scope.js → debug-stepout-scope-part8.js} +0 -189
- data/vendor/v8/test/mjsunit/delete-non-configurable.js +74 -0
- data/vendor/v8/test/mjsunit/deopt-minus-zero.js +56 -0
- data/vendor/v8/test/mjsunit/elements-kind.js +6 -4
- data/vendor/v8/test/mjsunit/elements-length-no-holey.js +33 -0
- data/vendor/v8/test/mjsunit/elements-transition-hoisting.js +46 -19
- data/vendor/v8/test/mjsunit/error-accessors.js +54 -0
- data/vendor/v8/test/mjsunit/error-constructors.js +1 -14
- data/vendor/v8/test/mjsunit/error-tostring.js +8 -0
- data/vendor/v8/test/mjsunit/eval-stack-trace.js +204 -0
- data/vendor/v8/test/mjsunit/external-array.js +364 -1
- data/vendor/v8/test/mjsunit/fast-array-length.js +37 -0
- data/vendor/v8/test/mjsunit/fast-non-keyed.js +113 -0
- data/vendor/v8/test/mjsunit/fast-prototype.js +117 -0
- data/vendor/v8/test/mjsunit/function-call.js +14 -18
- data/vendor/v8/test/mjsunit/fuzz-natives-part1.js +230 -0
- data/vendor/v8/test/mjsunit/fuzz-natives-part2.js +229 -0
- data/vendor/v8/test/mjsunit/fuzz-natives-part3.js +229 -0
- data/vendor/v8/test/mjsunit/{fuzz-natives.js → fuzz-natives-part4.js} +12 -2
- data/vendor/v8/test/mjsunit/generated-transition-stub.js +218 -0
- data/vendor/v8/test/mjsunit/greedy.js +1 -1
- data/vendor/v8/test/mjsunit/harmony/block-conflicts.js +2 -1
- data/vendor/v8/test/mjsunit/harmony/block-let-crankshaft.js +1 -1
- data/vendor/v8/test/mjsunit/harmony/collections.js +69 -11
- data/vendor/v8/test/mjsunit/harmony/debug-blockscopes.js +2 -2
- data/vendor/v8/test/mjsunit/harmony/module-linking.js +180 -3
- data/vendor/v8/test/mjsunit/harmony/module-parsing.js +31 -0
- data/vendor/v8/test/mjsunit/harmony/module-recompile.js +87 -0
- data/vendor/v8/test/mjsunit/harmony/module-resolution.js +15 -2
- data/vendor/v8/test/mjsunit/harmony/object-observe.js +1056 -0
- data/vendor/v8/test/mjsunit/harmony/proxies-json.js +178 -0
- data/vendor/v8/test/mjsunit/harmony/proxies.js +25 -10
- data/vendor/v8/test/mjsunit/json-parser-recursive.js +33 -0
- data/vendor/v8/test/mjsunit/json-stringify-recursive.js +52 -0
- data/vendor/v8/test/mjsunit/json.js +38 -2
- data/vendor/v8/test/mjsunit/json2.js +153 -0
- data/vendor/v8/test/mjsunit/limit-locals.js +5 -4
- data/vendor/v8/test/mjsunit/manual-parallel-recompile.js +79 -0
- data/vendor/v8/test/mjsunit/math-exp-precision.js +64 -0
- data/vendor/v8/test/mjsunit/math-floor-negative.js +59 -0
- data/vendor/v8/test/mjsunit/math-floor-of-div-minus-zero.js +41 -0
- data/vendor/v8/test/mjsunit/math-floor-of-div-nosudiv.js +288 -0
- data/vendor/v8/test/mjsunit/math-floor-of-div.js +81 -9
- data/vendor/v8/test/mjsunit/{math-floor.js → math-floor-part1.js} +1 -72
- data/vendor/v8/test/mjsunit/math-floor-part2.js +76 -0
- data/vendor/v8/test/mjsunit/math-floor-part3.js +78 -0
- data/vendor/v8/test/mjsunit/math-floor-part4.js +76 -0
- data/vendor/v8/test/mjsunit/mirror-object.js +43 -9
- data/vendor/v8/test/mjsunit/mjsunit.js +1 -1
- data/vendor/v8/test/mjsunit/mjsunit.status +52 -27
- data/vendor/v8/test/mjsunit/mul-exhaustive-part1.js +491 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part10.js +470 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part2.js +525 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part3.js +532 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part4.js +509 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part5.js +505 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part6.js +554 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part7.js +497 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part8.js +526 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part9.js +533 -0
- data/vendor/v8/test/mjsunit/new-function.js +34 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part1.js +1172 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part2.js +1178 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part3.js +1178 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part4.js +1177 -0
- data/vendor/v8/test/mjsunit/object-define-property.js +107 -2
- data/vendor/v8/test/mjsunit/override-read-only-property.js +6 -4
- data/vendor/v8/test/mjsunit/packed-elements.js +2 -2
- data/vendor/v8/test/mjsunit/parse-int-float.js +4 -4
- data/vendor/v8/test/mjsunit/pixel-array-rounding.js +1 -1
- data/vendor/v8/test/mjsunit/readonly.js +228 -0
- data/vendor/v8/test/mjsunit/regexp-capture-3.js +16 -18
- data/vendor/v8/test/mjsunit/regexp-capture.js +2 -0
- data/vendor/v8/test/mjsunit/regexp-global.js +122 -0
- data/vendor/v8/test/mjsunit/regexp-results-cache.js +78 -0
- data/vendor/v8/test/mjsunit/regress/regress-1117.js +12 -3
- data/vendor/v8/test/mjsunit/regress/regress-1118.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-115100.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-1199637.js +1 -3
- data/vendor/v8/test/mjsunit/regress/regress-121407.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-131923.js +30 -0
- data/vendor/v8/test/mjsunit/regress/regress-131994.js +70 -0
- data/vendor/v8/test/mjsunit/regress/regress-133211.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-133211b.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-136048.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-137768.js +73 -0
- data/vendor/v8/test/mjsunit/regress/regress-143967.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-145201.js +107 -0
- data/vendor/v8/test/mjsunit/regress/regress-147497.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-148378.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-1563.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-1591.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-164442.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-165637.js +61 -0
- data/vendor/v8/test/mjsunit/regress/regress-166379.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-166553.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-1692.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-171641.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-1980.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-2073.js +99 -0
- data/vendor/v8/test/mjsunit/regress/regress-2119.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2156.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-2163.js +70 -0
- data/vendor/v8/test/mjsunit/regress/regress-2170.js +58 -0
- data/vendor/v8/test/mjsunit/regress/regress-2172.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-2185-2.js +145 -0
- data/vendor/v8/test/mjsunit/regress/regress-2185.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-2186.js +49 -0
- data/vendor/v8/test/mjsunit/regress/regress-2193.js +58 -0
- data/vendor/v8/test/mjsunit/regress/regress-2219.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2225.js +65 -0
- data/vendor/v8/test/mjsunit/regress/regress-2226.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2234.js +41 -0
- data/vendor/v8/test/mjsunit/regress/regress-2243.js +31 -0
- data/vendor/v8/test/mjsunit/regress/regress-2249.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-2250.js +68 -0
- data/vendor/v8/test/mjsunit/regress/regress-2261.js +113 -0
- data/vendor/v8/test/mjsunit/regress/regress-2263.js +30 -0
- data/vendor/v8/test/mjsunit/regress/regress-2284.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2285.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2286.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2289.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-2291.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2294.js +70 -0
- data/vendor/v8/test/mjsunit/regress/regress-2296.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-2315.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-2318.js +66 -0
- data/vendor/v8/test/mjsunit/regress/regress-2322.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2326.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-2336.js +53 -0
- data/vendor/v8/test/mjsunit/regress/regress-2339.js +59 -0
- data/vendor/v8/test/mjsunit/regress/regress-2346.js +123 -0
- data/vendor/v8/test/mjsunit/regress/regress-2373.js +29 -0
- data/vendor/v8/test/mjsunit/regress/regress-2374.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-2398.js +41 -0
- data/vendor/v8/test/mjsunit/regress/regress-2410.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2416.js +75 -0
- data/vendor/v8/test/mjsunit/regress/regress-2419.js +37 -0
- data/vendor/v8/test/mjsunit/regress/regress-2433.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2437.js +156 -0
- data/vendor/v8/test/mjsunit/regress/regress-2438.js +52 -0
- data/vendor/v8/test/mjsunit/regress/regress-2443.js +129 -0
- data/vendor/v8/test/mjsunit/regress/regress-2444.js +120 -0
- data/vendor/v8/test/mjsunit/regress/regress-2489.js +50 -0
- data/vendor/v8/test/mjsunit/regress/regress-2499.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-334.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-492.js +39 -1
- data/vendor/v8/test/mjsunit/regress/regress-builtin-array-op.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-cnlt-elements.js +43 -0
- data/vendor/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js +46 -0
- data/vendor/v8/test/mjsunit/regress/regress-convert-enum.js +60 -0
- data/vendor/v8/test/mjsunit/regress/regress-convert-enum2.js +46 -0
- data/vendor/v8/test/mjsunit/regress/regress-convert-transition.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-119926.js +3 -1
- data/vendor/v8/test/mjsunit/regress/regress-crbug-125148.js +90 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-134055.js +63 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-134609.js +59 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-135008.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-135066.js +55 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-137689.js +47 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-138887.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-140083.js +44 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-142087.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-142218.js +44 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-145961.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-146910.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-147475.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-148376.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-150545.js +53 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-150729.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-157019.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-157520.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-158185.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-160010.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-162085.js +71 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-168545.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-170856.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-172345.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-173974.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-18639.js +9 -5
- data/vendor/v8/test/mjsunit/regress/regress-debug-code-recompilation.js +2 -1
- data/vendor/v8/test/mjsunit/regress/regress-deep-proto.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-delete-empty-double.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-iteration-order.js +42 -0
- data/vendor/v8/test/mjsunit/regress/regress-json-stringify-gc.js +41 -0
- data/vendor/v8/test/mjsunit/regress/regress-latin-1.js +78 -0
- data/vendor/v8/test/mjsunit/regress/regress-load-elements.js +49 -0
- data/vendor/v8/test/mjsunit/regress/regress-observe-empty-double-array.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js +37 -0
- data/vendor/v8/test/mjsunit/shift-for-integer-div.js +59 -0
- data/vendor/v8/test/mjsunit/stack-traces-gc.js +119 -0
- data/vendor/v8/test/mjsunit/stack-traces-overflow.js +122 -0
- data/vendor/v8/test/mjsunit/stack-traces.js +39 -1
- data/vendor/v8/test/mjsunit/str-to-num.js +7 -2
- data/vendor/v8/test/mjsunit/strict-mode.js +36 -11
- data/vendor/v8/test/mjsunit/string-charcodeat.js +3 -0
- data/vendor/v8/test/mjsunit/string-natives.js +72 -0
- data/vendor/v8/test/mjsunit/string-split.js +17 -0
- data/vendor/v8/test/mjsunit/testcfg.py +76 -6
- data/vendor/v8/test/mjsunit/tools/tickprocessor.js +4 -1
- data/vendor/v8/test/mjsunit/try-finally-continue.js +72 -0
- data/vendor/v8/test/mjsunit/typed-array-slice.js +61 -0
- data/vendor/v8/test/mjsunit/unbox-double-arrays.js +2 -0
- data/vendor/v8/test/mjsunit/uri.js +12 -0
- data/vendor/v8/test/mjsunit/with-readonly.js +4 -2
- data/vendor/v8/test/mozilla/mozilla.status +19 -113
- data/vendor/v8/test/mozilla/testcfg.py +122 -3
- data/vendor/v8/test/preparser/preparser.status +5 -0
- data/vendor/v8/test/preparser/strict-identifiers.pyt +1 -1
- data/vendor/v8/test/preparser/testcfg.py +101 -5
- data/vendor/v8/test/sputnik/sputnik.status +1 -1
- data/vendor/v8/test/sputnik/testcfg.py +5 -0
- data/vendor/v8/test/test262/README +2 -2
- data/vendor/v8/test/test262/test262.status +13 -36
- data/vendor/v8/test/test262/testcfg.py +102 -8
- data/vendor/v8/tools/android-build.sh +0 -0
- data/vendor/v8/tools/android-ll-prof.sh +69 -0
- data/vendor/v8/tools/android-run.py +109 -0
- data/vendor/v8/tools/android-sync.sh +105 -0
- data/vendor/v8/tools/bash-completion.sh +0 -0
- data/vendor/v8/tools/check-static-initializers.sh +0 -0
- data/vendor/v8/tools/common-includes.sh +15 -22
- data/vendor/v8/tools/disasm.py +4 -4
- data/vendor/v8/tools/fuzz-harness.sh +0 -0
- data/vendor/v8/tools/gen-postmortem-metadata.py +6 -8
- data/vendor/v8/tools/grokdump.py +404 -129
- data/vendor/v8/tools/gyp/v8.gyp +105 -43
- data/vendor/v8/tools/linux-tick-processor +5 -5
- data/vendor/v8/tools/ll_prof.py +75 -15
- data/vendor/v8/tools/merge-to-branch.sh +2 -2
- data/vendor/v8/tools/plot-timer-events +70 -0
- data/vendor/v8/tools/plot-timer-events.js +510 -0
- data/vendor/v8/tools/presubmit.py +1 -0
- data/vendor/v8/tools/push-to-trunk.sh +14 -4
- data/vendor/v8/tools/run-llprof.sh +69 -0
- data/vendor/v8/tools/run-tests.py +372 -0
- data/vendor/v8/tools/run-valgrind.py +1 -1
- data/vendor/v8/tools/status-file-converter.py +39 -0
- data/vendor/v8/tools/test-server.py +224 -0
- data/vendor/v8/tools/test-wrapper-gypbuild.py +13 -16
- data/vendor/v8/tools/test.py +10 -19
- data/vendor/v8/tools/testrunner/README +174 -0
- data/vendor/v8/tools/testrunner/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/local/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/local/commands.py +153 -0
- data/vendor/v8/tools/testrunner/local/execution.py +182 -0
- data/vendor/v8/tools/testrunner/local/old_statusfile.py +460 -0
- data/vendor/v8/tools/testrunner/local/progress.py +238 -0
- data/vendor/v8/tools/testrunner/local/statusfile.py +145 -0
- data/vendor/v8/tools/testrunner/local/testsuite.py +187 -0
- data/vendor/v8/tools/testrunner/local/utils.py +108 -0
- data/vendor/v8/tools/testrunner/local/verbose.py +99 -0
- data/vendor/v8/tools/testrunner/network/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/network/distro.py +90 -0
- data/vendor/v8/tools/testrunner/network/endpoint.py +124 -0
- data/vendor/v8/tools/testrunner/network/network_execution.py +253 -0
- data/vendor/v8/tools/testrunner/network/perfdata.py +120 -0
- data/vendor/v8/tools/testrunner/objects/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/objects/context.py +50 -0
- data/vendor/v8/tools/testrunner/objects/output.py +60 -0
- data/vendor/v8/tools/testrunner/objects/peer.py +80 -0
- data/vendor/v8/tools/testrunner/objects/testcase.py +83 -0
- data/vendor/v8/tools/testrunner/objects/workpacket.py +90 -0
- data/vendor/v8/tools/testrunner/server/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/server/compression.py +111 -0
- data/vendor/v8/tools/testrunner/server/constants.py +51 -0
- data/vendor/v8/tools/testrunner/server/daemon.py +147 -0
- data/vendor/v8/tools/testrunner/server/local_handler.py +119 -0
- data/vendor/v8/tools/testrunner/server/main.py +245 -0
- data/vendor/v8/tools/testrunner/server/presence_handler.py +120 -0
- data/vendor/v8/tools/testrunner/server/signatures.py +63 -0
- data/vendor/v8/tools/testrunner/server/status_handler.py +112 -0
- data/vendor/v8/tools/testrunner/server/work_handler.py +150 -0
- data/vendor/v8/tools/tick-processor.html +168 -0
- data/vendor/v8/tools/tickprocessor-driver.js +5 -3
- data/vendor/v8/tools/tickprocessor.js +58 -15
- metadata +534 -30
- data/patches/add-freebsd9-and-freebsd10-to-gyp-GetFlavor.patch +0 -11
- data/patches/do-not-imply-vfp3-and-armv7.patch +0 -44
- data/patches/fPIC-on-x64.patch +0 -14
- data/vendor/v8/src/liveobjectlist-inl.h +0 -126
- data/vendor/v8/src/liveobjectlist.cc +0 -2631
- data/vendor/v8/src/liveobjectlist.h +0 -319
- data/vendor/v8/test/mjsunit/mul-exhaustive.js +0 -4629
- data/vendor/v8/test/mjsunit/numops-fuzz.js +0 -4609
- data/vendor/v8/test/mjsunit/regress/regress-1969.js +0 -5045
File without changes
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Copyright 2012 the V8 project authors. All rights reserved.
|
3
|
+
# Redistribution and use in source and binary forms, with or without
|
4
|
+
# modification, are permitted provided that the following conditions are
|
5
|
+
# met:
|
6
|
+
#
|
7
|
+
# * Redistributions of source code must retain the above copyright
|
8
|
+
# notice, this list of conditions and the following disclaimer.
|
9
|
+
# * Redistributions in binary form must reproduce the above
|
10
|
+
# copyright notice, this list of conditions and the following
|
11
|
+
# disclaimer in the documentation and/or other materials provided
|
12
|
+
# with the distribution.
|
13
|
+
# * Neither the name of Google Inc. nor the names of its
|
14
|
+
# contributors may be used to endorse or promote products derived
|
15
|
+
# from this software without specific prior written permission.
|
16
|
+
#
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
18
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
19
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
20
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
21
|
+
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
22
|
+
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
23
|
+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
24
|
+
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
25
|
+
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
26
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
27
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28
|
+
|
29
|
+
# Runs d8 with the given arguments on the device under 'perf' and
|
30
|
+
# processes the profiler trace and v8 logs using ll_prof.py.
|
31
|
+
#
|
32
|
+
# Usage:
|
33
|
+
# > ./tools/android-ll-prof.sh (debug|release) "args to d8" "args to ll_prof.py"
|
34
|
+
#
|
35
|
+
# The script creates deploy directory deploy/data/local/tmp/v8, copies there
|
36
|
+
# the d8 binary either from out/android_arm.release or out/android_arm.debug,
|
37
|
+
# and then sync the deploy directory with /data/local/tmp/v8 on the device.
|
38
|
+
# You can put JS files in the deploy directory before running the script.
|
39
|
+
# Note: $ANDROID_NDK_ROOT must be set.
|
40
|
+
|
41
|
+
MODE=$1
|
42
|
+
RUN_ARGS=$2
|
43
|
+
LL_PROF_ARGS=$3
|
44
|
+
|
45
|
+
BASE=`cd $(dirname "$0")/..; pwd`
|
46
|
+
DEPLOY="$BASE/deploy"
|
47
|
+
|
48
|
+
set +e
|
49
|
+
mkdir -p "$DEPLOY/data/local/tmp/v8"
|
50
|
+
|
51
|
+
cp "$BASE/out/android_arm.$MODE/d8" "$DEPLOY/data/local/tmp/v8/d8"
|
52
|
+
|
53
|
+
adb -p "$DEPLOY" sync data
|
54
|
+
|
55
|
+
adb shell "cd /data/local/tmp/v8;\
|
56
|
+
perf record -R -e cycles -c 10000 -f -i \
|
57
|
+
./d8 --ll_prof --gc-fake-mmap=/data/local/tmp/__v8_gc__ $RUN_ARGS"
|
58
|
+
|
59
|
+
adb pull /data/local/tmp/v8/v8.log .
|
60
|
+
adb pull /data/local/tmp/v8/v8.log.ll .
|
61
|
+
adb pull /data/perf.data .
|
62
|
+
|
63
|
+
ARCH=arm-linux-androideabi-4.6
|
64
|
+
TOOLCHAIN="${ANDROID_NDK_ROOT}/toolchains/$ARCH/prebuilt/linux-x86/bin"
|
65
|
+
|
66
|
+
$BASE/tools/ll_prof.py --host-root="$BASE/deploy" \
|
67
|
+
--gc-fake-mmap=/data/local/tmp/__v8_gc__ \
|
68
|
+
--objdump="$TOOLCHAIN/arm-linux-androideabi-objdump" \
|
69
|
+
$LL_PROF_ARGS
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
#
|
3
|
+
# Copyright 2012 the V8 project authors. All rights reserved.
|
4
|
+
# Redistribution and use in source and binary forms, with or without
|
5
|
+
# modification, are permitted provided that the following conditions are
|
6
|
+
# met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright
|
9
|
+
# notice, this list of conditions and the following disclaimer.
|
10
|
+
# * Redistributions in binary form must reproduce the above
|
11
|
+
# copyright notice, this list of conditions and the following
|
12
|
+
# disclaimer in the documentation and/or other materials provided
|
13
|
+
# with the distribution.
|
14
|
+
# * Neither the name of Google Inc. nor the names of its
|
15
|
+
# contributors may be used to endorse or promote products derived
|
16
|
+
# from this software without specific prior written permission.
|
17
|
+
#
|
18
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
19
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
20
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
21
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
22
|
+
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
23
|
+
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
24
|
+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
25
|
+
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
26
|
+
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
27
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
28
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
|
30
|
+
# This script executes the passed command line on Android device
|
31
|
+
# using 'adb shell' command. Unfortunately, 'adb shell' always
|
32
|
+
# returns exit code 0, ignoring the exit code of executed command.
|
33
|
+
# Since we need to return non-zero exit code if the command failed,
|
34
|
+
# we augment the passed command line with exit code checking statement
|
35
|
+
# and output special error string in case of non-zero exit code.
|
36
|
+
# Then we parse the output of 'adb shell' and look for that error string.
|
37
|
+
|
38
|
+
import os
|
39
|
+
from os.path import join, dirname, abspath
|
40
|
+
import subprocess
|
41
|
+
import sys
|
42
|
+
import tempfile
|
43
|
+
|
44
|
+
def Check(output, errors):
|
45
|
+
failed = any([s.startswith('/system/bin/sh:') or s.startswith('ANDROID')
|
46
|
+
for s in output.split('\n')])
|
47
|
+
return 1 if failed else 0
|
48
|
+
|
49
|
+
def Execute(cmdline):
|
50
|
+
(fd_out, outname) = tempfile.mkstemp()
|
51
|
+
(fd_err, errname) = tempfile.mkstemp()
|
52
|
+
process = subprocess.Popen(
|
53
|
+
args=cmdline,
|
54
|
+
shell=True,
|
55
|
+
stdout=fd_out,
|
56
|
+
stderr=fd_err,
|
57
|
+
)
|
58
|
+
exit_code = process.wait()
|
59
|
+
os.close(fd_out)
|
60
|
+
os.close(fd_err)
|
61
|
+
output = file(outname).read()
|
62
|
+
errors = file(errname).read()
|
63
|
+
os.unlink(outname)
|
64
|
+
os.unlink(errname)
|
65
|
+
sys.stdout.write(output)
|
66
|
+
sys.stderr.write(errors)
|
67
|
+
return exit_code or Check(output, errors)
|
68
|
+
|
69
|
+
def Escape(arg):
|
70
|
+
def ShouldEscape():
|
71
|
+
for x in arg:
|
72
|
+
if not x.isalnum() and x != '-' and x != '_':
|
73
|
+
return True
|
74
|
+
return False
|
75
|
+
|
76
|
+
return arg if not ShouldEscape() else '"%s"' % (arg.replace('"', '\\"'))
|
77
|
+
|
78
|
+
def WriteToTemporaryFile(data):
|
79
|
+
(fd, fname) = tempfile.mkstemp()
|
80
|
+
os.close(fd)
|
81
|
+
tmp_file = open(fname, "w")
|
82
|
+
tmp_file.write(data)
|
83
|
+
tmp_file.close()
|
84
|
+
return fname
|
85
|
+
|
86
|
+
def Main():
|
87
|
+
if (len(sys.argv) == 1):
|
88
|
+
print("Usage: %s <command-to-run-on-device>" % sys.argv[0])
|
89
|
+
return 1
|
90
|
+
workspace = abspath(join(dirname(sys.argv[0]), '..'))
|
91
|
+
android_workspace = os.getenv("ANDROID_V8", "/data/local/v8")
|
92
|
+
args = [Escape(arg) for arg in sys.argv[1:]]
|
93
|
+
script = (" ".join(args) + "\n"
|
94
|
+
"case $? in\n"
|
95
|
+
" 0) ;;\n"
|
96
|
+
" *) echo \"ANDROID: Error returned by test\";;\n"
|
97
|
+
"esac\n")
|
98
|
+
script = script.replace(workspace, android_workspace)
|
99
|
+
script_file = WriteToTemporaryFile(script)
|
100
|
+
android_script_file = android_workspace + "/" + script_file
|
101
|
+
command = ("adb push '%s' %s;" % (script_file, android_script_file) +
|
102
|
+
"adb shell 'sh %s';" % android_script_file +
|
103
|
+
"adb shell 'rm %s'" % android_script_file)
|
104
|
+
error_code = Execute(command)
|
105
|
+
os.unlink(script_file)
|
106
|
+
return error_code
|
107
|
+
|
108
|
+
if __name__ == '__main__':
|
109
|
+
sys.exit(Main())
|
@@ -0,0 +1,105 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Copyright 2012 the V8 project authors. All rights reserved.
|
3
|
+
# Redistribution and use in source and binary forms, with or without
|
4
|
+
# modification, are permitted provided that the following conditions are
|
5
|
+
# met:
|
6
|
+
#
|
7
|
+
# * Redistributions of source code must retain the above copyright
|
8
|
+
# notice, this list of conditions and the following disclaimer.
|
9
|
+
# * Redistributions in binary form must reproduce the above
|
10
|
+
# copyright notice, this list of conditions and the following
|
11
|
+
# disclaimer in the documentation and/or other materials provided
|
12
|
+
# with the distribution.
|
13
|
+
# * Neither the name of Google Inc. nor the names of its
|
14
|
+
# contributors may be used to endorse or promote products derived
|
15
|
+
# from this software without specific prior written permission.
|
16
|
+
#
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
18
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
19
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
20
|
+
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
21
|
+
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
22
|
+
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
23
|
+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
24
|
+
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
25
|
+
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
26
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
27
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28
|
+
|
29
|
+
# This script pushes android binaries and test data to the device.
|
30
|
+
# The first argument can be either "android.release" or "android.debug".
|
31
|
+
# The second argument is a relative path to the output directory with binaries.
|
32
|
+
# The third argument is the absolute path to the V8 directory on the host.
|
33
|
+
# The fourth argument is the absolute path to the V8 directory on the device.
|
34
|
+
|
35
|
+
if [ ${#@} -lt 4 ] ; then
|
36
|
+
echo "$0: Error: need 4 arguments"
|
37
|
+
exit 1
|
38
|
+
fi
|
39
|
+
|
40
|
+
ARCH_MODE=$1
|
41
|
+
OUTDIR=$2
|
42
|
+
HOST_V8=$3
|
43
|
+
ANDROID_V8=$4
|
44
|
+
|
45
|
+
function LINUX_MD5 {
|
46
|
+
local HASH=$(md5sum $1)
|
47
|
+
echo ${HASH%% *}
|
48
|
+
}
|
49
|
+
|
50
|
+
function DARWIN_MD5 {
|
51
|
+
local HASH=$(md5 $1)
|
52
|
+
echo ${HASH} | cut -f2 -d "=" | cut -f2 -d " "
|
53
|
+
}
|
54
|
+
|
55
|
+
host_os=$(uname -s)
|
56
|
+
case "${host_os}" in
|
57
|
+
"Linux")
|
58
|
+
MD5=LINUX_MD5
|
59
|
+
;;
|
60
|
+
"Darwin")
|
61
|
+
MD5=DARWIN_MD5
|
62
|
+
;;
|
63
|
+
*)
|
64
|
+
echo "$0: Host platform ${host_os} is not supported" >& 2
|
65
|
+
exit 1
|
66
|
+
esac
|
67
|
+
|
68
|
+
function sync_file {
|
69
|
+
local FILE=$1
|
70
|
+
local ANDROID_HASH=$(adb shell "md5 \"$ANDROID_V8/$FILE\"")
|
71
|
+
local HOST_HASH=$($MD5 "$HOST_V8/$FILE")
|
72
|
+
if [ "${ANDROID_HASH%% *}" != "${HOST_HASH}" ]; then
|
73
|
+
adb push "$HOST_V8/$FILE" "$ANDROID_V8/$FILE" &> /dev/null
|
74
|
+
fi
|
75
|
+
echo -n "."
|
76
|
+
}
|
77
|
+
|
78
|
+
function sync_dir {
|
79
|
+
local DIR=$1
|
80
|
+
echo -n "sync to $ANDROID_V8/$DIR"
|
81
|
+
for FILE in $(find "$HOST_V8/$DIR" -not -path "*.svn*" -type f); do
|
82
|
+
local RELATIVE_FILE=${FILE:${#HOST_V8}}
|
83
|
+
sync_file "$RELATIVE_FILE"
|
84
|
+
done
|
85
|
+
echo ""
|
86
|
+
}
|
87
|
+
|
88
|
+
echo -n "sync to $ANDROID_V8/$OUTDIR/$ARCH_MODE"
|
89
|
+
sync_file "$OUTDIR/$ARCH_MODE/cctest"
|
90
|
+
sync_file "$OUTDIR/$ARCH_MODE/d8"
|
91
|
+
sync_file "$OUTDIR/$ARCH_MODE/preparser"
|
92
|
+
echo ""
|
93
|
+
echo -n "sync to $ANDROID_V8/tools"
|
94
|
+
sync_file tools/consarray.js
|
95
|
+
sync_file tools/codemap.js
|
96
|
+
sync_file tools/csvparser.js
|
97
|
+
sync_file tools/profile.js
|
98
|
+
sync_file tools/splaytree.js
|
99
|
+
sync_file tools/profile_view.js
|
100
|
+
sync_file tools/logreader.js
|
101
|
+
sync_file tools/tickprocessor.js
|
102
|
+
echo ""
|
103
|
+
sync_dir test/message
|
104
|
+
sync_dir test/mjsunit
|
105
|
+
sync_dir test/preparser
|
File without changes
|
File without changes
|
@@ -36,9 +36,7 @@ TEMP_BRANCH=$BRANCHNAME-temporary-branch-created-by-script
|
|
36
36
|
VERSION_FILE="src/version.cc"
|
37
37
|
CHANGELOG_ENTRY_FILE="$PERSISTFILE_BASENAME-changelog-entry"
|
38
38
|
PATCH_FILE="$PERSISTFILE_BASENAME-patch"
|
39
|
-
PATCH_OUTPUT_FILE="$PERSISTFILE_BASENAME-patch-output"
|
40
39
|
COMMITMSG_FILE="$PERSISTFILE_BASENAME-commitmsg"
|
41
|
-
TOUCHED_FILES_FILE="$PERSISTFILE_BASENAME-touched-files"
|
42
40
|
TRUNK_REVISION_FILE="$PERSISTFILE_BASENAME-trunkrevision"
|
43
41
|
START_STEP=0
|
44
42
|
CURRENT_STEP=0
|
@@ -180,26 +178,21 @@ the uploaded CL."
|
|
180
178
|
done
|
181
179
|
}
|
182
180
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
181
|
+
wait_for_resolving_conflicts() {
|
182
|
+
echo "Applying the patch \"$1\" failed. Either type \"ABORT<Return>\", or \
|
183
|
+
resolve the conflicts, stage *all* touched files with 'git add', and \
|
184
|
+
type \"RESOLVED<Return>\""
|
185
|
+
unset ANSWER
|
186
|
+
while [ "$ANSWER" != "RESOLVED" ] ; do
|
187
|
+
[[ "$ANSWER" == "ABORT" ]] && die "Applying the patch failed."
|
188
|
+
[[ -n "$ANSWER" ]] && echo "That was not 'RESOLVED' or 'ABORT'."
|
189
|
+
echo -n "> "
|
190
|
+
read ANSWER
|
191
|
+
done
|
190
192
|
}
|
191
193
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
git add "$FILE"
|
197
|
-
done
|
198
|
-
# Stage deleted files.
|
199
|
-
DELETED_FILES=$(git status -s -uno --porcelain | grep "^ D" \
|
200
|
-
| awk '{print $NF}')
|
201
|
-
for FILE in $DELETED_FILES ; do
|
202
|
-
git rm "$FILE"
|
203
|
-
done
|
204
|
-
rm -f "$TOUCHED_FILES_FILE"
|
194
|
+
# Takes a file containing the patch to apply as first argument.
|
195
|
+
apply_patch() {
|
196
|
+
git apply --index --reject $REVERSE_PATCH "$1" || \
|
197
|
+
wait_for_resolving_conflicts "$1";
|
205
198
|
}
|
data/vendor/v8/tools/disasm.py
CHANGED
@@ -53,12 +53,12 @@ _ARCH_MAP = {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
|
56
|
-
def GetDisasmLines(filename, offset, size, arch, inplace):
|
56
|
+
def GetDisasmLines(filename, offset, size, arch, inplace, arch_flags=""):
|
57
57
|
tmp_name = None
|
58
58
|
if not inplace:
|
59
59
|
# Create a temporary file containing a copy of the code.
|
60
60
|
assert arch in _ARCH_MAP, "Unsupported architecture '%s'" % arch
|
61
|
-
arch_flags = _ARCH_MAP[arch]
|
61
|
+
arch_flags = arch_flags + " " + _ARCH_MAP[arch]
|
62
62
|
tmp_name = tempfile.mktemp(".v8code")
|
63
63
|
command = "dd if=%s of=%s bs=1 count=%d skip=%d && " \
|
64
64
|
"%s %s -D -b binary %s %s" % (
|
@@ -66,8 +66,8 @@ def GetDisasmLines(filename, offset, size, arch, inplace):
|
|
66
66
|
OBJDUMP_BIN, ' '.join(_COMMON_DISASM_OPTIONS), arch_flags,
|
67
67
|
tmp_name)
|
68
68
|
else:
|
69
|
-
command = "%s %s --start-address=%d --stop-address=%d -d %s " % (
|
70
|
-
OBJDUMP_BIN, ' '.join(_COMMON_DISASM_OPTIONS),
|
69
|
+
command = "%s %s %s --start-address=%d --stop-address=%d -d %s " % (
|
70
|
+
OBJDUMP_BIN, ' '.join(_COMMON_DISASM_OPTIONS), arch_flags,
|
71
71
|
offset,
|
72
72
|
offset + size,
|
73
73
|
filename)
|
File without changes
|
@@ -61,7 +61,7 @@ consts_misc = [
|
|
61
61
|
|
62
62
|
{ 'name': 'StringEncodingMask', 'value': 'kStringEncodingMask' },
|
63
63
|
{ 'name': 'TwoByteStringTag', 'value': 'kTwoByteStringTag' },
|
64
|
-
{ 'name': 'AsciiStringTag', 'value': '
|
64
|
+
{ 'name': 'AsciiStringTag', 'value': 'kOneByteStringTag' },
|
65
65
|
|
66
66
|
{ 'name': 'StringRepresentationMask',
|
67
67
|
'value': 'kStringRepresentationMask' },
|
@@ -76,16 +76,15 @@ consts_misc = [
|
|
76
76
|
{ 'name': 'SmiTag', 'value': 'kSmiTag' },
|
77
77
|
{ 'name': 'SmiTagMask', 'value': 'kSmiTagMask' },
|
78
78
|
{ 'name': 'SmiValueShift', 'value': 'kSmiTagSize' },
|
79
|
+
{ 'name': 'SmiShiftSize', 'value': 'kSmiShiftSize' },
|
79
80
|
{ 'name': 'PointerSizeLog2', 'value': 'kPointerSizeLog2' },
|
80
81
|
|
81
|
-
{ 'name': 'prop_idx_content',
|
82
|
-
'value': 'DescriptorArray::kContentArrayIndex' },
|
83
82
|
{ 'name': 'prop_idx_first',
|
84
83
|
'value': 'DescriptorArray::kFirstIndex' },
|
85
84
|
{ 'name': 'prop_type_field',
|
86
85
|
'value': 'FIELD' },
|
87
86
|
{ 'name': 'prop_type_first_phantom',
|
88
|
-
'value': '
|
87
|
+
'value': 'TRANSITION' },
|
89
88
|
{ 'name': 'prop_type_mask',
|
90
89
|
'value': 'PropertyDetails::TypeField::kMask' },
|
91
90
|
|
@@ -107,14 +106,13 @@ extras_accessors = [
|
|
107
106
|
'JSObject, elements, Object, kElementsOffset',
|
108
107
|
'FixedArray, data, uintptr_t, kHeaderSize',
|
109
108
|
'Map, instance_attributes, int, kInstanceAttributesOffset',
|
110
|
-
'Map, instance_descriptors, int, kInstanceDescriptorsOrBitField3Offset',
|
111
109
|
'Map, inobject_properties, int, kInObjectPropertiesOffset',
|
112
110
|
'Map, instance_size, int, kInstanceSizeOffset',
|
113
111
|
'HeapNumber, value, double, kValueOffset',
|
114
112
|
'ConsString, first, String, kFirstOffset',
|
115
113
|
'ConsString, second, String, kSecondOffset',
|
116
114
|
'ExternalString, resource, Object, kResourceOffset',
|
117
|
-
'
|
115
|
+
'SeqOneByteString, chars, char, kHeaderSize',
|
118
116
|
'SharedFunctionInfo, code, Code, kCodeOffset',
|
119
117
|
'Code, instruction_start, uintptr_t, kHeaderSize',
|
120
118
|
'Code, instruction_size, int, kInstructionSizeOffset',
|
@@ -128,7 +126,7 @@ extras_accessors = [
|
|
128
126
|
expected_classes = [
|
129
127
|
'ConsString', 'FixedArray', 'HeapNumber', 'JSArray', 'JSFunction',
|
130
128
|
'JSObject', 'JSRegExp', 'JSValue', 'Map', 'Oddball', 'Script',
|
131
|
-
'
|
129
|
+
'SeqOneByteString', 'SharedFunctionInfo'
|
132
130
|
];
|
133
131
|
|
134
132
|
|
@@ -293,7 +291,7 @@ def load_objects():
|
|
293
291
|
cctype.find('Sliced') == -1):
|
294
292
|
if (cctype.find('Ascii') != -1):
|
295
293
|
cctype = re.sub('AsciiString$',
|
296
|
-
'
|
294
|
+
'SeqOneByteString', cctype);
|
297
295
|
else:
|
298
296
|
cctype = re.sub('String$',
|
299
297
|
'SeqString', cctype);
|
data/vendor/v8/tools/grokdump.py
CHANGED
@@ -27,17 +27,18 @@
|
|
27
27
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
28
28
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
29
|
|
30
|
+
import bisect
|
30
31
|
import cmd
|
32
|
+
import codecs
|
31
33
|
import ctypes
|
34
|
+
import disasm
|
32
35
|
import mmap
|
33
36
|
import optparse
|
34
37
|
import os
|
35
|
-
import disasm
|
36
|
-
import sys
|
37
|
-
import types
|
38
|
-
import codecs
|
39
38
|
import re
|
40
39
|
import struct
|
40
|
+
import sys
|
41
|
+
import types
|
41
42
|
|
42
43
|
|
43
44
|
USAGE="""usage: %prog [OPTIONS] [DUMP-FILE]
|
@@ -180,6 +181,11 @@ MINIDUMP_LOCATION_DESCRIPTOR = Descriptor([
|
|
180
181
|
("rva", ctypes.c_uint32)
|
181
182
|
])
|
182
183
|
|
184
|
+
MINIDUMP_STRING = Descriptor([
|
185
|
+
("length", ctypes.c_uint32),
|
186
|
+
("buffer", lambda t: ctypes.c_uint8 * (t.length + 2))
|
187
|
+
])
|
188
|
+
|
183
189
|
MINIDUMP_DIRECTORY = Descriptor([
|
184
190
|
("stream_type", ctypes.c_uint32),
|
185
191
|
("location", MINIDUMP_LOCATION_DESCRIPTOR.ctype)
|
@@ -290,6 +296,42 @@ MINIDUMP_CONTEXT_X86 = Descriptor([
|
|
290
296
|
MD_CONTEXT_X86_EXTENDED_REGISTERS))
|
291
297
|
])
|
292
298
|
|
299
|
+
MD_CONTEXT_ARM = 0x40000000
|
300
|
+
MD_CONTEXT_ARM_INTEGER = (MD_CONTEXT_ARM | 0x00000002)
|
301
|
+
MD_CONTEXT_ARM_FLOATING_POINT = (MD_CONTEXT_ARM | 0x00000004)
|
302
|
+
MD_FLOATINGSAVEAREA_ARM_FPR_COUNT = 32
|
303
|
+
MD_FLOATINGSAVEAREA_ARM_FPEXTRA_COUNT = 8
|
304
|
+
|
305
|
+
MINIDUMP_FLOATING_SAVE_AREA_ARM = Descriptor([
|
306
|
+
("fpscr", ctypes.c_uint64),
|
307
|
+
("regs", ctypes.c_uint64 * MD_FLOATINGSAVEAREA_ARM_FPR_COUNT),
|
308
|
+
("extra", ctypes.c_uint64 * MD_FLOATINGSAVEAREA_ARM_FPEXTRA_COUNT)
|
309
|
+
])
|
310
|
+
|
311
|
+
MINIDUMP_CONTEXT_ARM = Descriptor([
|
312
|
+
("context_flags", ctypes.c_uint32),
|
313
|
+
# MD_CONTEXT_ARM_INTEGER.
|
314
|
+
("r0", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
315
|
+
("r1", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
316
|
+
("r2", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
317
|
+
("r3", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
318
|
+
("r4", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
319
|
+
("r5", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
320
|
+
("r6", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
321
|
+
("r7", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
322
|
+
("r8", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
323
|
+
("r9", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
324
|
+
("r10", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
325
|
+
("r11", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
326
|
+
("r12", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
327
|
+
("sp", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
328
|
+
("lr", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
329
|
+
("pc", EnableOnFlag(ctypes.c_uint32, MD_CONTEXT_ARM_INTEGER)),
|
330
|
+
("cpsr", ctypes.c_uint32),
|
331
|
+
("float_save", EnableOnFlag(MINIDUMP_FLOATING_SAVE_AREA_ARM.ctype,
|
332
|
+
MD_CONTEXT_ARM_FLOATING_POINT))
|
333
|
+
])
|
334
|
+
|
293
335
|
MD_CONTEXT_AMD64 = 0x00100000
|
294
336
|
MD_CONTEXT_AMD64_CONTROL = (MD_CONTEXT_AMD64 | 0x00000001)
|
295
337
|
MD_CONTEXT_AMD64_INTEGER = (MD_CONTEXT_AMD64 | 0x00000002)
|
@@ -400,13 +442,46 @@ MINIDUMP_THREAD_LIST = Descriptor([
|
|
400
442
|
("threads", lambda t: MINIDUMP_THREAD.ctype * t.thread_count)
|
401
443
|
])
|
402
444
|
|
445
|
+
MINIDUMP_RAW_MODULE = Descriptor([
|
446
|
+
("base_of_image", ctypes.c_uint64),
|
447
|
+
("size_of_image", ctypes.c_uint32),
|
448
|
+
("checksum", ctypes.c_uint32),
|
449
|
+
("time_date_stamp", ctypes.c_uint32),
|
450
|
+
("module_name_rva", ctypes.c_uint32),
|
451
|
+
("version_info", ctypes.c_uint32 * 13),
|
452
|
+
("cv_record", MINIDUMP_LOCATION_DESCRIPTOR.ctype),
|
453
|
+
("misc_record", MINIDUMP_LOCATION_DESCRIPTOR.ctype),
|
454
|
+
("reserved0", ctypes.c_uint32 * 2),
|
455
|
+
("reserved1", ctypes.c_uint32 * 2)
|
456
|
+
])
|
457
|
+
|
458
|
+
MINIDUMP_MODULE_LIST = Descriptor([
|
459
|
+
("number_of_modules", ctypes.c_uint32),
|
460
|
+
("modules", lambda t: MINIDUMP_RAW_MODULE.ctype * t.number_of_modules)
|
461
|
+
])
|
462
|
+
|
403
463
|
MINIDUMP_RAW_SYSTEM_INFO = Descriptor([
|
404
464
|
("processor_architecture", ctypes.c_uint16)
|
405
465
|
])
|
406
466
|
|
407
467
|
MD_CPU_ARCHITECTURE_X86 = 0
|
468
|
+
MD_CPU_ARCHITECTURE_ARM = 5
|
408
469
|
MD_CPU_ARCHITECTURE_AMD64 = 9
|
409
470
|
|
471
|
+
class FuncSymbol:
|
472
|
+
def __init__(self, start, size, name):
|
473
|
+
self.start = start
|
474
|
+
self.end = self.start + size
|
475
|
+
self.name = name
|
476
|
+
|
477
|
+
def __cmp__(self, other):
|
478
|
+
if isinstance(other, FuncSymbol):
|
479
|
+
return self.start - other.start
|
480
|
+
return self.start - other
|
481
|
+
|
482
|
+
def Covers(self, addr):
|
483
|
+
return (self.start <= addr) and (addr < self.end)
|
484
|
+
|
410
485
|
class MinidumpReader(object):
|
411
486
|
"""Minidump (.dmp) reader."""
|
412
487
|
|
@@ -430,15 +505,22 @@ class MinidumpReader(object):
|
|
430
505
|
self.exception_context = None
|
431
506
|
self.memory_list = None
|
432
507
|
self.memory_list64 = None
|
508
|
+
self.module_list = None
|
433
509
|
self.thread_map = {}
|
434
510
|
|
511
|
+
self.symdir = options.symdir
|
512
|
+
self.modules_with_symbols = []
|
513
|
+
self.symbols = []
|
514
|
+
|
435
515
|
# Find MDRawSystemInfo stream and determine arch.
|
436
516
|
for d in directories:
|
437
517
|
if d.stream_type == MD_SYSTEM_INFO_STREAM:
|
438
518
|
system_info = MINIDUMP_RAW_SYSTEM_INFO.Read(
|
439
519
|
self.minidump, d.location.rva)
|
440
520
|
self.arch = system_info.processor_architecture
|
441
|
-
assert self.arch in [MD_CPU_ARCHITECTURE_AMD64,
|
521
|
+
assert self.arch in [MD_CPU_ARCHITECTURE_AMD64,
|
522
|
+
MD_CPU_ARCHITECTURE_ARM,
|
523
|
+
MD_CPU_ARCHITECTURE_X86]
|
442
524
|
assert not self.arch is None
|
443
525
|
|
444
526
|
for d in directories:
|
@@ -453,6 +535,9 @@ class MinidumpReader(object):
|
|
453
535
|
elif self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
454
536
|
self.exception_context = MINIDUMP_CONTEXT_AMD64.Read(
|
455
537
|
self.minidump, self.exception.thread_context.rva)
|
538
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
539
|
+
self.exception_context = MINIDUMP_CONTEXT_ARM.Read(
|
540
|
+
self.minidump, self.exception.thread_context.rva)
|
456
541
|
DebugPrint(self.exception_context)
|
457
542
|
elif d.stream_type == MD_THREAD_LIST_STREAM:
|
458
543
|
thread_list = MINIDUMP_THREAD_LIST.Read(self.minidump, d.location.rva)
|
@@ -461,6 +546,11 @@ class MinidumpReader(object):
|
|
461
546
|
for thread in thread_list.threads:
|
462
547
|
DebugPrint(thread)
|
463
548
|
self.thread_map[thread.id] = thread
|
549
|
+
elif d.stream_type == MD_MODULE_LIST_STREAM:
|
550
|
+
assert self.module_list is None
|
551
|
+
self.module_list = MINIDUMP_MODULE_LIST.Read(
|
552
|
+
self.minidump, d.location.rva)
|
553
|
+
assert ctypes.sizeof(self.module_list) == d.location.data_size
|
464
554
|
elif d.stream_type == MD_MEMORY_LIST_STREAM:
|
465
555
|
print >>sys.stderr, "Warning: This is not a full minidump!"
|
466
556
|
assert self.memory_list is None
|
@@ -493,6 +583,8 @@ class MinidumpReader(object):
|
|
493
583
|
def ReadUIntPtr(self, address):
|
494
584
|
if self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
495
585
|
return self.ReadU64(address)
|
586
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
587
|
+
return self.ReadU32(address)
|
496
588
|
elif self.arch == MD_CPU_ARCHITECTURE_X86:
|
497
589
|
return self.ReadU32(address)
|
498
590
|
|
@@ -503,6 +595,8 @@ class MinidumpReader(object):
|
|
503
595
|
def _ReadWord(self, location):
|
504
596
|
if self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
505
597
|
return ctypes.c_uint64.from_buffer(self.minidump, location).value
|
598
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
599
|
+
return ctypes.c_uint32.from_buffer(self.minidump, location).value
|
506
600
|
elif self.arch == MD_CPU_ARCHITECTURE_X86:
|
507
601
|
return ctypes.c_uint32.from_buffer(self.minidump, location).value
|
508
602
|
|
@@ -599,18 +693,29 @@ class MinidumpReader(object):
|
|
599
693
|
return None
|
600
694
|
|
601
695
|
def GetDisasmLines(self, address, size):
|
696
|
+
def CountUndefinedInstructions(lines):
|
697
|
+
pattern = "<UNDEFINED>"
|
698
|
+
return sum([line.count(pattern) for (ignore, line) in lines])
|
699
|
+
|
602
700
|
location = self.FindLocation(address)
|
603
701
|
if location is None: return []
|
604
702
|
arch = None
|
703
|
+
possible_objdump_flags = [""]
|
605
704
|
if self.arch == MD_CPU_ARCHITECTURE_X86:
|
606
705
|
arch = "ia32"
|
706
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
707
|
+
arch = "arm"
|
708
|
+
possible_objdump_flags = ["", "--disassembler-options=force-thumb"]
|
607
709
|
elif self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
608
710
|
arch = "x64"
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
711
|
+
results = [ disasm.GetDisasmLines(self.minidump_name,
|
712
|
+
location,
|
713
|
+
size,
|
714
|
+
arch,
|
715
|
+
False,
|
716
|
+
objdump_flags)
|
717
|
+
for objdump_flags in possible_objdump_flags ]
|
718
|
+
return min(results, key=CountUndefinedInstructions)
|
614
719
|
|
615
720
|
|
616
721
|
def Dispose(self):
|
@@ -620,30 +725,98 @@ class MinidumpReader(object):
|
|
620
725
|
def ExceptionIP(self):
|
621
726
|
if self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
622
727
|
return self.exception_context.rip
|
728
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
729
|
+
return self.exception_context.pc
|
623
730
|
elif self.arch == MD_CPU_ARCHITECTURE_X86:
|
624
731
|
return self.exception_context.eip
|
625
732
|
|
626
733
|
def ExceptionSP(self):
|
627
734
|
if self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
628
735
|
return self.exception_context.rsp
|
736
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
737
|
+
return self.exception_context.sp
|
629
738
|
elif self.arch == MD_CPU_ARCHITECTURE_X86:
|
630
739
|
return self.exception_context.esp
|
631
740
|
|
632
741
|
def FormatIntPtr(self, value):
|
633
742
|
if self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
634
743
|
return "%016x" % value
|
744
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
745
|
+
return "%08x" % value
|
635
746
|
elif self.arch == MD_CPU_ARCHITECTURE_X86:
|
636
747
|
return "%08x" % value
|
637
748
|
|
638
749
|
def PointerSize(self):
|
639
750
|
if self.arch == MD_CPU_ARCHITECTURE_AMD64:
|
640
751
|
return 8
|
752
|
+
elif self.arch == MD_CPU_ARCHITECTURE_ARM:
|
753
|
+
return 4
|
641
754
|
elif self.arch == MD_CPU_ARCHITECTURE_X86:
|
642
755
|
return 4
|
643
756
|
|
644
757
|
def Register(self, name):
|
645
758
|
return self.exception_context.__getattribute__(name)
|
646
759
|
|
760
|
+
def ReadMinidumpString(self, rva):
|
761
|
+
string = bytearray(MINIDUMP_STRING.Read(self.minidump, rva).buffer)
|
762
|
+
string = string.decode("utf16")
|
763
|
+
return string[0:len(string) - 1]
|
764
|
+
|
765
|
+
# Load FUNC records from a BreakPad symbol file
|
766
|
+
#
|
767
|
+
# http://code.google.com/p/google-breakpad/wiki/SymbolFiles
|
768
|
+
#
|
769
|
+
def _LoadSymbolsFrom(self, symfile, baseaddr):
|
770
|
+
print "Loading symbols from %s" % (symfile)
|
771
|
+
funcs = []
|
772
|
+
with open(symfile) as f:
|
773
|
+
for line in f:
|
774
|
+
result = re.match(
|
775
|
+
r"^FUNC ([a-f0-9]+) ([a-f0-9]+) ([a-f0-9]+) (.*)$", line)
|
776
|
+
if result is not None:
|
777
|
+
start = int(result.group(1), 16)
|
778
|
+
size = int(result.group(2), 16)
|
779
|
+
name = result.group(4).rstrip()
|
780
|
+
bisect.insort_left(self.symbols,
|
781
|
+
FuncSymbol(baseaddr + start, size, name))
|
782
|
+
print " ... done"
|
783
|
+
|
784
|
+
def TryLoadSymbolsFor(self, modulename, module):
|
785
|
+
try:
|
786
|
+
symfile = os.path.join(self.symdir,
|
787
|
+
modulename.replace('.', '_') + ".pdb.sym")
|
788
|
+
self._LoadSymbolsFrom(symfile, module.base_of_image)
|
789
|
+
self.modules_with_symbols.append(module)
|
790
|
+
except Exception as e:
|
791
|
+
print " ... failure (%s)" % (e)
|
792
|
+
|
793
|
+
# Returns true if address is covered by some module that has loaded symbols.
|
794
|
+
def _IsInModuleWithSymbols(self, addr):
|
795
|
+
for module in self.modules_with_symbols:
|
796
|
+
start = module.base_of_image
|
797
|
+
end = start + module.size_of_image
|
798
|
+
if (start <= addr) and (addr < end):
|
799
|
+
return True
|
800
|
+
return False
|
801
|
+
|
802
|
+
# Find symbol covering the given address and return its name in format
|
803
|
+
# <symbol name>+<offset from the start>
|
804
|
+
def FindSymbol(self, addr):
|
805
|
+
if not self._IsInModuleWithSymbols(addr):
|
806
|
+
return None
|
807
|
+
|
808
|
+
i = bisect.bisect_left(self.symbols, addr)
|
809
|
+
symbol = None
|
810
|
+
if (0 < i) and self.symbols[i - 1].Covers(addr):
|
811
|
+
symbol = self.symbols[i - 1]
|
812
|
+
elif (i < len(self.symbols)) and self.symbols[i].Covers(addr):
|
813
|
+
symbol = self.symbols[i]
|
814
|
+
else:
|
815
|
+
return None
|
816
|
+
diff = addr - symbol.start
|
817
|
+
return "%s+0x%x" % (symbol.name, diff)
|
818
|
+
|
819
|
+
|
647
820
|
|
648
821
|
# List of V8 instance types. Obtained by adding the code below to any .cc file.
|
649
822
|
#
|
@@ -705,31 +878,32 @@ INSTANCE_TYPES = {
|
|
705
878
|
153: "OBJECT_TEMPLATE_INFO_TYPE",
|
706
879
|
154: "SIGNATURE_INFO_TYPE",
|
707
880
|
155: "TYPE_SWITCH_INFO_TYPE",
|
708
|
-
156: "
|
709
|
-
157: "
|
710
|
-
158: "
|
711
|
-
159: "
|
712
|
-
160: "
|
713
|
-
|
881
|
+
156: "ALLOCATION_SITE_INFO_TYPE",
|
882
|
+
157: "SCRIPT_TYPE",
|
883
|
+
158: "CODE_CACHE_TYPE",
|
884
|
+
159: "POLYMORPHIC_CODE_CACHE_TYPE",
|
885
|
+
160: "TYPE_FEEDBACK_INFO_TYPE",
|
886
|
+
161: "ALIASED_ARGUMENTS_ENTRY_TYPE",
|
887
|
+
164: "FIXED_ARRAY_TYPE",
|
714
888
|
145: "FIXED_DOUBLE_ARRAY_TYPE",
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
889
|
+
165: "SHARED_FUNCTION_INFO_TYPE",
|
890
|
+
166: "JS_MESSAGE_OBJECT_TYPE",
|
891
|
+
169: "JS_VALUE_TYPE",
|
892
|
+
170: "JS_DATE_TYPE",
|
893
|
+
171: "JS_OBJECT_TYPE",
|
894
|
+
172: "JS_CONTEXT_EXTENSION_OBJECT_TYPE",
|
895
|
+
173: "JS_MODULE_TYPE",
|
896
|
+
174: "JS_GLOBAL_OBJECT_TYPE",
|
897
|
+
175: "JS_BUILTINS_OBJECT_TYPE",
|
898
|
+
176: "JS_GLOBAL_PROXY_TYPE",
|
899
|
+
177: "JS_ARRAY_TYPE",
|
900
|
+
168: "JS_PROXY_TYPE",
|
901
|
+
180: "JS_WEAK_MAP_TYPE",
|
902
|
+
181: "JS_REGEXP_TYPE",
|
903
|
+
182: "JS_FUNCTION_TYPE",
|
904
|
+
167: "JS_FUNCTION_PROXY_TYPE",
|
905
|
+
162: "DEBUG_INFO_TYPE",
|
906
|
+
163: "BREAK_POINT_INFO_TYPE",
|
733
907
|
}
|
734
908
|
|
735
909
|
|
@@ -756,79 +930,83 @@ INSTANCE_TYPES = {
|
|
756
930
|
# printf("}\n");
|
757
931
|
KNOWN_MAPS = {
|
758
932
|
0x08081: (134, "ByteArrayMap"),
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
933
|
+
0x080a9: (128, "MetaMap"),
|
934
|
+
0x080d1: (130, "OddballMap"),
|
935
|
+
0x080f9: (68, "AsciiSymbolMap"),
|
936
|
+
0x08121: (164, "FixedArrayMap"),
|
937
|
+
0x08149: (132, "HeapNumberMap"),
|
938
|
+
0x08171: (135, "FreeSpaceMap"),
|
939
|
+
0x08199: (146, "OnePointerFillerMap"),
|
940
|
+
0x081c1: (146, "TwoPointerFillerMap"),
|
941
|
+
0x081e9: (131, "GlobalPropertyCellMap"),
|
942
|
+
0x08211: (165, "SharedFunctionInfoMap"),
|
943
|
+
0x08239: (4, "AsciiStringMap"),
|
944
|
+
0x08261: (164, "NativeContextMap"),
|
945
|
+
0x08289: (129, "CodeMap"),
|
946
|
+
0x082b1: (164, "ScopeInfoMap"),
|
947
|
+
0x082d9: (164, "FixedCOWArrayMap"),
|
948
|
+
0x08301: (145, "FixedDoubleArrayMap"),
|
949
|
+
0x08329: (164, "HashTableMap"),
|
950
|
+
0x08351: (0, "StringMap"),
|
951
|
+
0x08379: (64, "SymbolMap"),
|
952
|
+
0x083a1: (1, "ConsStringMap"),
|
953
|
+
0x083c9: (5, "ConsAsciiStringMap"),
|
954
|
+
0x083f1: (3, "SlicedStringMap"),
|
955
|
+
0x08419: (7, "SlicedAsciiStringMap"),
|
956
|
+
0x08441: (65, "ConsSymbolMap"),
|
957
|
+
0x08469: (69, "ConsAsciiSymbolMap"),
|
958
|
+
0x08491: (66, "ExternalSymbolMap"),
|
959
|
+
0x084b9: (74, "ExternalSymbolWithAsciiDataMap"),
|
960
|
+
0x084e1: (70, "ExternalAsciiSymbolMap"),
|
961
|
+
0x08509: (2, "ExternalStringMap"),
|
962
|
+
0x08531: (10, "ExternalStringWithAsciiDataMap"),
|
963
|
+
0x08559: (6, "ExternalAsciiStringMap"),
|
964
|
+
0x08581: (82, "ShortExternalSymbolMap"),
|
965
|
+
0x085a9: (90, "ShortExternalSymbolWithAsciiDataMap"),
|
966
|
+
0x085d1: (86, "ShortExternalAsciiSymbolMap"),
|
967
|
+
0x085f9: (18, "ShortExternalStringMap"),
|
968
|
+
0x08621: (26, "ShortExternalStringWithAsciiDataMap"),
|
969
|
+
0x08649: (22, "ShortExternalAsciiStringMap"),
|
970
|
+
0x08671: (0, "UndetectableStringMap"),
|
971
|
+
0x08699: (4, "UndetectableAsciiStringMap"),
|
972
|
+
0x086c1: (144, "ExternalPixelArrayMap"),
|
973
|
+
0x086e9: (136, "ExternalByteArrayMap"),
|
974
|
+
0x08711: (137, "ExternalUnsignedByteArrayMap"),
|
975
|
+
0x08739: (138, "ExternalShortArrayMap"),
|
976
|
+
0x08761: (139, "ExternalUnsignedShortArrayMap"),
|
977
|
+
0x08789: (140, "ExternalIntArrayMap"),
|
978
|
+
0x087b1: (141, "ExternalUnsignedIntArrayMap"),
|
979
|
+
0x087d9: (142, "ExternalFloatArrayMap"),
|
980
|
+
0x08801: (143, "ExternalDoubleArrayMap"),
|
981
|
+
0x08829: (164, "NonStrictArgumentsElementsMap"),
|
982
|
+
0x08851: (164, "FunctionContextMap"),
|
983
|
+
0x08879: (164, "CatchContextMap"),
|
984
|
+
0x088a1: (164, "WithContextMap"),
|
985
|
+
0x088c9: (164, "BlockContextMap"),
|
986
|
+
0x088f1: (164, "ModuleContextMap"),
|
987
|
+
0x08919: (164, "GlobalContextMap"),
|
988
|
+
0x08941: (166, "JSMessageObjectMap"),
|
989
|
+
0x08969: (133, "ForeignMap"),
|
990
|
+
0x08991: (171, "NeanderMap"),
|
991
|
+
0x089b9: (156, "AllocationSiteInfoMap"),
|
992
|
+
0x089e1: (159, "PolymorphicCodeCacheMap"),
|
993
|
+
0x08a09: (157, "ScriptMap"),
|
994
|
+
0x08a31: (171, ""),
|
995
|
+
0x08a59: (171, "ExternalMap"),
|
996
|
+
0x08a81: (147, "AccessorInfoMap"),
|
997
|
+
0x08aa9: (148, "AccessorPairMap"),
|
998
|
+
0x08ad1: (149, "AccessCheckInfoMap"),
|
999
|
+
0x08af9: (150, "InterceptorInfoMap"),
|
1000
|
+
0x08b21: (151, "CallHandlerInfoMap"),
|
1001
|
+
0x08b49: (152, "FunctionTemplateInfoMap"),
|
1002
|
+
0x08b71: (153, "ObjectTemplateInfoMap"),
|
1003
|
+
0x08b99: (154, "SignatureInfoMap"),
|
1004
|
+
0x08bc1: (155, "TypeSwitchInfoMap"),
|
1005
|
+
0x08be9: (158, "CodeCacheMap"),
|
1006
|
+
0x08c11: (160, "TypeFeedbackInfoMap"),
|
1007
|
+
0x08c39: (161, "AliasedArgumentsEntryMap"),
|
1008
|
+
0x08c61: (162, "DebugInfoMap"),
|
1009
|
+
0x08c89: (163, "BreakPointInfoMap"),
|
832
1010
|
}
|
833
1011
|
|
834
1012
|
|
@@ -1051,12 +1229,30 @@ class ConsString(String):
|
|
1051
1229
|
|
1052
1230
|
|
1053
1231
|
class Oddball(HeapObject):
|
1232
|
+
# Should match declarations in objects.h
|
1233
|
+
KINDS = [
|
1234
|
+
"False",
|
1235
|
+
"True",
|
1236
|
+
"TheHole",
|
1237
|
+
"Null",
|
1238
|
+
"ArgumentMarker",
|
1239
|
+
"Undefined",
|
1240
|
+
"Other"
|
1241
|
+
]
|
1242
|
+
|
1054
1243
|
def ToStringOffset(self):
|
1055
1244
|
return self.heap.PointerSize()
|
1056
1245
|
|
1246
|
+
def ToNumberOffset(self):
|
1247
|
+
return self.ToStringOffset() + self.heap.PointerSize()
|
1248
|
+
|
1249
|
+
def KindOffset(self):
|
1250
|
+
return self.ToNumberOffset() + self.heap.PointerSize()
|
1251
|
+
|
1057
1252
|
def __init__(self, heap, map, address):
|
1058
1253
|
HeapObject.__init__(self, heap, map, address)
|
1059
1254
|
self.to_string = self.ObjectField(self.ToStringOffset())
|
1255
|
+
self.kind = self.SmiField(self.KindOffset())
|
1060
1256
|
|
1061
1257
|
def Print(self, p):
|
1062
1258
|
p.Print(str(self))
|
@@ -1065,7 +1261,10 @@ class Oddball(HeapObject):
|
|
1065
1261
|
if self.to_string:
|
1066
1262
|
return "Oddball(%08x, <%s>)" % (self.address, self.to_string.GetChars())
|
1067
1263
|
else:
|
1068
|
-
|
1264
|
+
kind = "???"
|
1265
|
+
if 0 <= self.kind < len(Oddball.KINDS):
|
1266
|
+
kind = Oddball.KINDS[self.kind]
|
1267
|
+
return "Oddball(%08x, kind=%s)" % (self.address, kind)
|
1069
1268
|
|
1070
1269
|
|
1071
1270
|
class FixedArray(HeapObject):
|
@@ -1086,7 +1285,13 @@ class FixedArray(HeapObject):
|
|
1086
1285
|
base_offset = self.ElementsOffset()
|
1087
1286
|
for i in xrange(self.length):
|
1088
1287
|
offset = base_offset + 4 * i
|
1089
|
-
|
1288
|
+
try:
|
1289
|
+
p.Print("[%08d] = %s" % (i, self.ObjectField(offset)))
|
1290
|
+
except TypeError:
|
1291
|
+
p.Dedent()
|
1292
|
+
p.Print("...")
|
1293
|
+
p.Print("}")
|
1294
|
+
return
|
1090
1295
|
p.Dedent()
|
1091
1296
|
p.Print("}")
|
1092
1297
|
|
@@ -1324,6 +1529,8 @@ class V8Heap(object):
|
|
1324
1529
|
def MapAlignmentMask(self):
|
1325
1530
|
if self.reader.arch == MD_CPU_ARCHITECTURE_AMD64:
|
1326
1531
|
return (1 << 4) - 1
|
1532
|
+
elif self.reader.arch == MD_CPU_ARCHITECTURE_ARM:
|
1533
|
+
return (1 << 4) - 1
|
1327
1534
|
elif self.reader.arch == MD_CPU_ARCHITECTURE_X86:
|
1328
1535
|
return (1 << 5) - 1
|
1329
1536
|
|
@@ -1394,7 +1601,7 @@ class InspectionPadawan(object):
|
|
1394
1601
|
if known_map:
|
1395
1602
|
return known_map
|
1396
1603
|
found_obj = self.heap.FindObject(tagged_address)
|
1397
|
-
if found_obj: return
|
1604
|
+
if found_obj: return found_obj
|
1398
1605
|
address = tagged_address - 1
|
1399
1606
|
if self.reader.IsValidAddress(address):
|
1400
1607
|
map_tagged_address = self.reader.ReadUIntPtr(address)
|
@@ -1451,6 +1658,24 @@ class InspectionShell(cmd.Cmd):
|
|
1451
1658
|
self.padawan = InspectionPadawan(reader, heap)
|
1452
1659
|
self.prompt = "(grok) "
|
1453
1660
|
|
1661
|
+
def do_da(self, address):
|
1662
|
+
"""
|
1663
|
+
Print ASCII string starting at specified address.
|
1664
|
+
"""
|
1665
|
+
address = int(address, 16)
|
1666
|
+
string = ""
|
1667
|
+
while self.reader.IsValidAddress(address):
|
1668
|
+
code = self.reader.ReadU8(address)
|
1669
|
+
if code < 128:
|
1670
|
+
string += chr(code)
|
1671
|
+
else:
|
1672
|
+
break
|
1673
|
+
address += 1
|
1674
|
+
if string == "":
|
1675
|
+
print "Not an ASCII string at %s" % self.reader.FormatIntPtr(address)
|
1676
|
+
else:
|
1677
|
+
print "%s\n" % string
|
1678
|
+
|
1454
1679
|
def do_dd(self, address):
|
1455
1680
|
"""
|
1456
1681
|
Interpret memory at the given address (if available) as a sequence
|
@@ -1462,6 +1687,9 @@ class InspectionShell(cmd.Cmd):
|
|
1462
1687
|
for slot in xrange(start,
|
1463
1688
|
start + self.reader.PointerSize() * 10,
|
1464
1689
|
self.reader.PointerSize()):
|
1690
|
+
if not self.reader.IsValidAddress(slot):
|
1691
|
+
print "Address is not contained within the minidump!"
|
1692
|
+
return
|
1465
1693
|
maybe_address = self.reader.ReadUIntPtr(slot)
|
1466
1694
|
heap_object = self.padawan.SenseObject(maybe_address)
|
1467
1695
|
print "%s: %s %s" % (self.reader.FormatIntPtr(slot),
|
@@ -1507,23 +1735,23 @@ class InspectionShell(cmd.Cmd):
|
|
1507
1735
|
"""
|
1508
1736
|
self.padawan.PrintKnowledge()
|
1509
1737
|
|
1510
|
-
def
|
1738
|
+
def do_kd(self, address):
|
1511
1739
|
"""
|
1512
1740
|
Teach V8 heap layout information to the inspector. Set the first
|
1513
|
-
|
1741
|
+
data-space page by passing any pointer into that page.
|
1514
1742
|
"""
|
1515
1743
|
address = int(address, 16)
|
1516
1744
|
page_address = address & ~self.heap.PageAlignmentMask()
|
1517
|
-
self.padawan.
|
1745
|
+
self.padawan.known_first_data_page = page_address
|
1518
1746
|
|
1519
|
-
def
|
1747
|
+
def do_km(self, address):
|
1520
1748
|
"""
|
1521
1749
|
Teach V8 heap layout information to the inspector. Set the first
|
1522
|
-
|
1750
|
+
map-space page by passing any pointer into that page.
|
1523
1751
|
"""
|
1524
1752
|
address = int(address, 16)
|
1525
1753
|
page_address = address & ~self.heap.PageAlignmentMask()
|
1526
|
-
self.padawan.
|
1754
|
+
self.padawan.known_first_map_page = page_address
|
1527
1755
|
|
1528
1756
|
def do_kp(self, address):
|
1529
1757
|
"""
|
@@ -1534,6 +1762,17 @@ class InspectionShell(cmd.Cmd):
|
|
1534
1762
|
page_address = address & ~self.heap.PageAlignmentMask()
|
1535
1763
|
self.padawan.known_first_pointer_page = page_address
|
1536
1764
|
|
1765
|
+
def do_list(self, smth):
|
1766
|
+
"""
|
1767
|
+
List all available memory regions.
|
1768
|
+
"""
|
1769
|
+
def print_region(reader, start, size, location):
|
1770
|
+
print " %s - %s (%d bytes)" % (reader.FormatIntPtr(start),
|
1771
|
+
reader.FormatIntPtr(start + size),
|
1772
|
+
size)
|
1773
|
+
print "Available memory regions:"
|
1774
|
+
self.reader.ForEachMemoryRegion(print_region)
|
1775
|
+
|
1537
1776
|
def do_s(self, word):
|
1538
1777
|
"""
|
1539
1778
|
Search for a given word in available memory regions. The given word
|
@@ -1557,27 +1796,37 @@ class InspectionShell(cmd.Cmd):
|
|
1557
1796
|
"""
|
1558
1797
|
raise NotImplementedError
|
1559
1798
|
|
1560
|
-
def
|
1799
|
+
def do_u(self, args):
|
1561
1800
|
"""
|
1562
|
-
|
1801
|
+
u 0x<address> 0x<size>
|
1802
|
+
Unassemble memory in the region [address, address + size)
|
1563
1803
|
"""
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
1568
|
-
|
1569
|
-
|
1570
|
-
|
1804
|
+
args = args.split(' ')
|
1805
|
+
start = int(args[0], 16)
|
1806
|
+
size = int(args[1], 16)
|
1807
|
+
lines = self.reader.GetDisasmLines(start, size)
|
1808
|
+
for line in lines:
|
1809
|
+
print FormatDisasmLine(start, self.heap, line)
|
1810
|
+
print
|
1571
1811
|
|
1572
1812
|
EIP_PROXIMITY = 64
|
1573
1813
|
|
1574
1814
|
CONTEXT_FOR_ARCH = {
|
1575
1815
|
MD_CPU_ARCHITECTURE_AMD64:
|
1576
|
-
['rax', 'rbx', 'rcx', 'rdx', 'rdi', 'rsi', 'rbp', 'rsp', 'rip'
|
1816
|
+
['rax', 'rbx', 'rcx', 'rdx', 'rdi', 'rsi', 'rbp', 'rsp', 'rip',
|
1817
|
+
'r8', 'r9', 'r10', 'r11', 'r12', 'r13', 'r14', 'r15'],
|
1818
|
+
MD_CPU_ARCHITECTURE_ARM:
|
1819
|
+
['r0', 'r1', 'r2', 'r3', 'r4', 'r5', 'r6', 'r7', 'r8', 'r9',
|
1820
|
+
'r10', 'r11', 'r12', 'sp', 'lr', 'pc'],
|
1577
1821
|
MD_CPU_ARCHITECTURE_X86:
|
1578
1822
|
['eax', 'ebx', 'ecx', 'edx', 'edi', 'esi', 'ebp', 'esp', 'eip']
|
1579
1823
|
}
|
1580
1824
|
|
1825
|
+
KNOWN_MODULES = {'chrome.exe', 'chrome.dll'}
|
1826
|
+
|
1827
|
+
def GetModuleName(reader, module):
|
1828
|
+
name = reader.ReadMinidumpString(module.module_name_rva)
|
1829
|
+
return str(os.path.basename(str(name).replace("\\", "/")))
|
1581
1830
|
|
1582
1831
|
def AnalyzeMinidump(options, minidump_name):
|
1583
1832
|
reader = MinidumpReader(options, minidump_name)
|
@@ -1594,7 +1843,18 @@ def AnalyzeMinidump(options, minidump_name):
|
|
1594
1843
|
for r in CONTEXT_FOR_ARCH[reader.arch]:
|
1595
1844
|
print " %s: %s" % (r, reader.FormatIntPtr(reader.Register(r)))
|
1596
1845
|
# TODO(vitalyr): decode eflags.
|
1597
|
-
|
1846
|
+
if reader.arch == MD_CPU_ARCHITECTURE_ARM:
|
1847
|
+
print " cpsr: %s" % bin(reader.exception_context.cpsr)[2:]
|
1848
|
+
else:
|
1849
|
+
print " eflags: %s" % bin(reader.exception_context.eflags)[2:]
|
1850
|
+
|
1851
|
+
print
|
1852
|
+
print " modules:"
|
1853
|
+
for module in reader.module_list.modules:
|
1854
|
+
name = GetModuleName(reader, module)
|
1855
|
+
if name in KNOWN_MODULES:
|
1856
|
+
print " %s at %08X" % (name, module.base_of_image)
|
1857
|
+
reader.TryLoadSymbolsFor(name, module)
|
1598
1858
|
print
|
1599
1859
|
|
1600
1860
|
stack_top = reader.ExceptionSP()
|
@@ -1608,6 +1868,9 @@ def AnalyzeMinidump(options, minidump_name):
|
|
1608
1868
|
heap = V8Heap(reader, stack_map)
|
1609
1869
|
|
1610
1870
|
print "Disassembly around exception.eip:"
|
1871
|
+
eip_symbol = reader.FindSymbol(reader.ExceptionIP())
|
1872
|
+
if eip_symbol is not None:
|
1873
|
+
print eip_symbol
|
1611
1874
|
disasm_start = reader.ExceptionIP() - EIP_PROXIMITY
|
1612
1875
|
disasm_bytes = 2 * EIP_PROXIMITY
|
1613
1876
|
if (options.full):
|
@@ -1636,8 +1899,10 @@ def AnalyzeMinidump(options, minidump_name):
|
|
1636
1899
|
for slot in xrange(stack_top, stack_bottom, reader.PointerSize()):
|
1637
1900
|
maybe_address = reader.ReadUIntPtr(slot)
|
1638
1901
|
heap_object = heap.FindObject(maybe_address)
|
1639
|
-
|
1640
|
-
|
1902
|
+
maybe_symbol = reader.FindSymbol(maybe_address)
|
1903
|
+
print "%s: %s %s" % (reader.FormatIntPtr(slot),
|
1904
|
+
reader.FormatIntPtr(maybe_address),
|
1905
|
+
maybe_symbol or "")
|
1641
1906
|
if heap_object:
|
1642
1907
|
heap_object.Print(Printer())
|
1643
1908
|
print
|
@@ -1651,7 +1916,17 @@ if __name__ == "__main__":
|
|
1651
1916
|
help="start an interactive inspector shell")
|
1652
1917
|
parser.add_option("-f", "--full", dest="full", action="store_true",
|
1653
1918
|
help="dump all information contained in the minidump")
|
1919
|
+
parser.add_option("--symdir", dest="symdir", default=".",
|
1920
|
+
help="directory containing *.pdb.sym file with symbols")
|
1921
|
+
parser.add_option("--objdump",
|
1922
|
+
default="/usr/bin/objdump",
|
1923
|
+
help="objdump tool to use [default: %default]")
|
1654
1924
|
options, args = parser.parse_args()
|
1925
|
+
if os.path.exists(options.objdump):
|
1926
|
+
disasm.OBJDUMP_BIN = options.objdump
|
1927
|
+
OBJDUMP_BIN = options.objdump
|
1928
|
+
else:
|
1929
|
+
print "Cannot find %s, falling back to default objdump" % options.objdump
|
1655
1930
|
if len(args) != 1:
|
1656
1931
|
parser.print_help()
|
1657
1932
|
sys.exit(1)
|