libv8 3.11.8.17 → 3.16.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
@@ -47,6 +47,116 @@
|
|
47
47
|
namespace v8 {
|
48
48
|
namespace internal {
|
49
49
|
|
50
|
+
// CpuFeatures keeps track of which features are supported by the target CPU.
|
51
|
+
// Supported features must be enabled by a Scope before use.
|
52
|
+
class CpuFeatures : public AllStatic {
|
53
|
+
public:
|
54
|
+
// Detect features of the target CPU. Set safe defaults if the serializer
|
55
|
+
// is enabled (snapshots must be portable).
|
56
|
+
static void Probe();
|
57
|
+
|
58
|
+
// Check whether a feature is supported by the target CPU.
|
59
|
+
static bool IsSupported(CpuFeature f) {
|
60
|
+
ASSERT(initialized_);
|
61
|
+
if (f == VFP3 && !FLAG_enable_vfp3) return false;
|
62
|
+
if (f == VFP2 && !FLAG_enable_vfp2) return false;
|
63
|
+
if (f == SUDIV && !FLAG_enable_sudiv) return false;
|
64
|
+
if (f == UNALIGNED_ACCESSES && !FLAG_enable_unaligned_accesses) {
|
65
|
+
return false;
|
66
|
+
}
|
67
|
+
if (f == VFP32DREGS && !FLAG_enable_32dregs) return false;
|
68
|
+
return (supported_ & (1u << f)) != 0;
|
69
|
+
}
|
70
|
+
|
71
|
+
#ifdef DEBUG
|
72
|
+
// Check whether a feature is currently enabled.
|
73
|
+
static bool IsEnabled(CpuFeature f) {
|
74
|
+
ASSERT(initialized_);
|
75
|
+
Isolate* isolate = Isolate::UncheckedCurrent();
|
76
|
+
if (isolate == NULL) {
|
77
|
+
// When no isolate is available, work as if we're running in
|
78
|
+
// release mode.
|
79
|
+
return IsSupported(f);
|
80
|
+
}
|
81
|
+
unsigned enabled = static_cast<unsigned>(isolate->enabled_cpu_features());
|
82
|
+
return (enabled & (1u << f)) != 0;
|
83
|
+
}
|
84
|
+
#endif
|
85
|
+
|
86
|
+
// Enable a specified feature within a scope.
|
87
|
+
class Scope BASE_EMBEDDED {
|
88
|
+
#ifdef DEBUG
|
89
|
+
|
90
|
+
public:
|
91
|
+
explicit Scope(CpuFeature f) {
|
92
|
+
unsigned mask = 1u << f;
|
93
|
+
// VFP2 and ARMv7 are implied by VFP3.
|
94
|
+
if (f == VFP3) mask |= 1u << VFP2 | 1u << ARMv7;
|
95
|
+
ASSERT(CpuFeatures::IsSupported(f));
|
96
|
+
ASSERT(!Serializer::enabled() ||
|
97
|
+
(CpuFeatures::found_by_runtime_probing_ & mask) == 0);
|
98
|
+
isolate_ = Isolate::UncheckedCurrent();
|
99
|
+
old_enabled_ = 0;
|
100
|
+
if (isolate_ != NULL) {
|
101
|
+
old_enabled_ = static_cast<unsigned>(isolate_->enabled_cpu_features());
|
102
|
+
isolate_->set_enabled_cpu_features(old_enabled_ | mask);
|
103
|
+
}
|
104
|
+
}
|
105
|
+
~Scope() {
|
106
|
+
ASSERT_EQ(Isolate::UncheckedCurrent(), isolate_);
|
107
|
+
if (isolate_ != NULL) {
|
108
|
+
isolate_->set_enabled_cpu_features(old_enabled_);
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
private:
|
113
|
+
Isolate* isolate_;
|
114
|
+
unsigned old_enabled_;
|
115
|
+
#else
|
116
|
+
|
117
|
+
public:
|
118
|
+
explicit Scope(CpuFeature f) {}
|
119
|
+
#endif
|
120
|
+
};
|
121
|
+
|
122
|
+
class TryForceFeatureScope BASE_EMBEDDED {
|
123
|
+
public:
|
124
|
+
explicit TryForceFeatureScope(CpuFeature f)
|
125
|
+
: old_supported_(CpuFeatures::supported_) {
|
126
|
+
if (CanForce()) {
|
127
|
+
CpuFeatures::supported_ |= (1u << f);
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
~TryForceFeatureScope() {
|
132
|
+
if (CanForce()) {
|
133
|
+
CpuFeatures::supported_ = old_supported_;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
private:
|
138
|
+
static bool CanForce() {
|
139
|
+
// It's only safe to temporarily force support of CPU features
|
140
|
+
// when there's only a single isolate, which is guaranteed when
|
141
|
+
// the serializer is enabled.
|
142
|
+
return Serializer::enabled();
|
143
|
+
}
|
144
|
+
|
145
|
+
const unsigned old_supported_;
|
146
|
+
};
|
147
|
+
|
148
|
+
private:
|
149
|
+
#ifdef DEBUG
|
150
|
+
static bool initialized_;
|
151
|
+
#endif
|
152
|
+
static unsigned supported_;
|
153
|
+
static unsigned found_by_runtime_probing_;
|
154
|
+
|
155
|
+
friend class ExternalReference;
|
156
|
+
DISALLOW_COPY_AND_ASSIGN(CpuFeatures);
|
157
|
+
};
|
158
|
+
|
159
|
+
|
50
160
|
// CPU Registers.
|
51
161
|
//
|
52
162
|
// 1) We would prefer to use an enum, but enum values are assignment-
|
@@ -71,21 +181,24 @@ namespace internal {
|
|
71
181
|
// Core register
|
72
182
|
struct Register {
|
73
183
|
static const int kNumRegisters = 16;
|
74
|
-
static const int
|
184
|
+
static const int kMaxNumAllocatableRegisters = 8;
|
75
185
|
static const int kSizeInBytes = 4;
|
186
|
+
static const int kGPRsPerNonVFP2Double = 2;
|
187
|
+
|
188
|
+
inline static int NumAllocatableRegisters();
|
76
189
|
|
77
190
|
static int ToAllocationIndex(Register reg) {
|
78
|
-
ASSERT(reg.code() <
|
191
|
+
ASSERT(reg.code() < kMaxNumAllocatableRegisters);
|
79
192
|
return reg.code();
|
80
193
|
}
|
81
194
|
|
82
195
|
static Register FromAllocationIndex(int index) {
|
83
|
-
ASSERT(index >= 0 && index <
|
196
|
+
ASSERT(index >= 0 && index < kMaxNumAllocatableRegisters);
|
84
197
|
return from_code(index);
|
85
198
|
}
|
86
199
|
|
87
200
|
static const char* AllocationIndexToString(int index) {
|
88
|
-
ASSERT(index >= 0 && index <
|
201
|
+
ASSERT(index >= 0 && index < kMaxNumAllocatableRegisters);
|
89
202
|
const char* const names[] = {
|
90
203
|
"r0",
|
91
204
|
"r1",
|
@@ -165,7 +278,6 @@ const Register sp = { kRegister_sp_Code };
|
|
165
278
|
const Register lr = { kRegister_lr_Code };
|
166
279
|
const Register pc = { kRegister_pc_Code };
|
167
280
|
|
168
|
-
|
169
281
|
// Single word VFP register.
|
170
282
|
struct SwVfpRegister {
|
171
283
|
bool is_valid() const { return 0 <= code_ && code_ < 32; }
|
@@ -190,52 +302,36 @@ struct SwVfpRegister {
|
|
190
302
|
|
191
303
|
// Double word VFP register.
|
192
304
|
struct DwVfpRegister {
|
193
|
-
static const int
|
305
|
+
static const int kMaxNumRegisters = 32;
|
194
306
|
// A few double registers are reserved: one as a scratch register and one to
|
195
307
|
// hold 0.0, that does not fit in the immediate field of vmov instructions.
|
196
308
|
// d14: 0.0
|
197
309
|
// d15: scratch register.
|
198
310
|
static const int kNumReservedRegisters = 2;
|
199
|
-
static const int
|
311
|
+
static const int kMaxNumAllocatableRegisters = kMaxNumRegisters -
|
200
312
|
kNumReservedRegisters;
|
201
313
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
}
|
314
|
+
// Note: the number of registers can be different at snapshot and run-time.
|
315
|
+
// Any code included in the snapshot must be able to run both with 16 or 32
|
316
|
+
// registers.
|
317
|
+
inline static int NumRegisters();
|
318
|
+
inline static int NumAllocatableRegisters();
|
208
319
|
|
209
|
-
static
|
210
|
-
|
211
|
-
|
212
|
-
"d0",
|
213
|
-
"d1",
|
214
|
-
"d2",
|
215
|
-
"d3",
|
216
|
-
"d4",
|
217
|
-
"d5",
|
218
|
-
"d6",
|
219
|
-
"d7",
|
220
|
-
"d8",
|
221
|
-
"d9",
|
222
|
-
"d10",
|
223
|
-
"d11",
|
224
|
-
"d12",
|
225
|
-
"d13"
|
226
|
-
};
|
227
|
-
return names[index];
|
228
|
-
}
|
320
|
+
inline static int ToAllocationIndex(DwVfpRegister reg);
|
321
|
+
static const char* AllocationIndexToString(int index);
|
322
|
+
inline static DwVfpRegister FromAllocationIndex(int index);
|
229
323
|
|
230
324
|
static DwVfpRegister from_code(int code) {
|
231
325
|
DwVfpRegister r = { code };
|
232
326
|
return r;
|
233
327
|
}
|
234
328
|
|
235
|
-
|
236
|
-
|
329
|
+
bool is_valid() const {
|
330
|
+
return 0 <= code_ && code_ < kMaxNumRegisters;
|
331
|
+
}
|
237
332
|
bool is(DwVfpRegister reg) const { return code_ == reg.code_; }
|
238
333
|
SwVfpRegister low() const {
|
334
|
+
ASSERT(code_ < 16);
|
239
335
|
SwVfpRegister reg;
|
240
336
|
reg.code_ = code_ * 2;
|
241
337
|
|
@@ -243,6 +339,7 @@ struct DwVfpRegister {
|
|
243
339
|
return reg;
|
244
340
|
}
|
245
341
|
SwVfpRegister high() const {
|
342
|
+
ASSERT(code_ < 16);
|
246
343
|
SwVfpRegister reg;
|
247
344
|
reg.code_ = (code_ * 2) + 1;
|
248
345
|
|
@@ -322,6 +419,25 @@ const DwVfpRegister d12 = { 12 };
|
|
322
419
|
const DwVfpRegister d13 = { 13 };
|
323
420
|
const DwVfpRegister d14 = { 14 };
|
324
421
|
const DwVfpRegister d15 = { 15 };
|
422
|
+
const DwVfpRegister d16 = { 16 };
|
423
|
+
const DwVfpRegister d17 = { 17 };
|
424
|
+
const DwVfpRegister d18 = { 18 };
|
425
|
+
const DwVfpRegister d19 = { 19 };
|
426
|
+
const DwVfpRegister d20 = { 20 };
|
427
|
+
const DwVfpRegister d21 = { 21 };
|
428
|
+
const DwVfpRegister d22 = { 22 };
|
429
|
+
const DwVfpRegister d23 = { 23 };
|
430
|
+
const DwVfpRegister d24 = { 24 };
|
431
|
+
const DwVfpRegister d25 = { 25 };
|
432
|
+
const DwVfpRegister d26 = { 26 };
|
433
|
+
const DwVfpRegister d27 = { 27 };
|
434
|
+
const DwVfpRegister d28 = { 28 };
|
435
|
+
const DwVfpRegister d29 = { 29 };
|
436
|
+
const DwVfpRegister d30 = { 30 };
|
437
|
+
const DwVfpRegister d31 = { 31 };
|
438
|
+
|
439
|
+
const Register sfpd_lo = { kRegister_r6_Code };
|
440
|
+
const Register sfpd_hi = { kRegister_r7_Code };
|
325
441
|
|
326
442
|
// Aliases for double registers. Defined using #define instead of
|
327
443
|
// "static const DwVfpRegister&" because Clang complains otherwise when a
|
@@ -399,7 +515,7 @@ class Operand BASE_EMBEDDED {
|
|
399
515
|
public:
|
400
516
|
// immediate
|
401
517
|
INLINE(explicit Operand(int32_t immediate,
|
402
|
-
RelocInfo::Mode rmode = RelocInfo::
|
518
|
+
RelocInfo::Mode rmode = RelocInfo::NONE32));
|
403
519
|
INLINE(static Operand Zero()) {
|
404
520
|
return Operand(static_cast<int32_t>(0));
|
405
521
|
}
|
@@ -424,8 +540,8 @@ class Operand BASE_EMBEDDED {
|
|
424
540
|
// the instruction this operand is used for is a MOV or MVN instruction the
|
425
541
|
// actual instruction to use is required for this calculation. For other
|
426
542
|
// instructions instr is ignored.
|
427
|
-
bool is_single_instruction(Instr instr = 0) const;
|
428
|
-
bool
|
543
|
+
bool is_single_instruction(const Assembler* assembler, Instr instr = 0) const;
|
544
|
+
bool must_output_reloc_info(const Assembler* assembler) const;
|
429
545
|
|
430
546
|
inline int32_t immediate() const {
|
431
547
|
ASSERT(!rm_.is_valid());
|
@@ -498,107 +614,6 @@ class MemOperand BASE_EMBEDDED {
|
|
498
614
|
friend class Assembler;
|
499
615
|
};
|
500
616
|
|
501
|
-
// CpuFeatures keeps track of which features are supported by the target CPU.
|
502
|
-
// Supported features must be enabled by a Scope before use.
|
503
|
-
class CpuFeatures : public AllStatic {
|
504
|
-
public:
|
505
|
-
// Detect features of the target CPU. Set safe defaults if the serializer
|
506
|
-
// is enabled (snapshots must be portable).
|
507
|
-
static void Probe();
|
508
|
-
|
509
|
-
// Check whether a feature is supported by the target CPU.
|
510
|
-
static bool IsSupported(CpuFeature f) {
|
511
|
-
ASSERT(initialized_);
|
512
|
-
if (f == VFP3 && !FLAG_enable_vfp3) return false;
|
513
|
-
return (supported_ & (1u << f)) != 0;
|
514
|
-
}
|
515
|
-
|
516
|
-
#ifdef DEBUG
|
517
|
-
// Check whether a feature is currently enabled.
|
518
|
-
static bool IsEnabled(CpuFeature f) {
|
519
|
-
ASSERT(initialized_);
|
520
|
-
Isolate* isolate = Isolate::UncheckedCurrent();
|
521
|
-
if (isolate == NULL) {
|
522
|
-
// When no isolate is available, work as if we're running in
|
523
|
-
// release mode.
|
524
|
-
return IsSupported(f);
|
525
|
-
}
|
526
|
-
unsigned enabled = static_cast<unsigned>(isolate->enabled_cpu_features());
|
527
|
-
return (enabled & (1u << f)) != 0;
|
528
|
-
}
|
529
|
-
#endif
|
530
|
-
|
531
|
-
// Enable a specified feature within a scope.
|
532
|
-
class Scope BASE_EMBEDDED {
|
533
|
-
#ifdef DEBUG
|
534
|
-
|
535
|
-
public:
|
536
|
-
explicit Scope(CpuFeature f) {
|
537
|
-
unsigned mask = 1u << f;
|
538
|
-
ASSERT(CpuFeatures::IsSupported(f));
|
539
|
-
ASSERT(!Serializer::enabled() ||
|
540
|
-
(CpuFeatures::found_by_runtime_probing_ & mask) == 0);
|
541
|
-
isolate_ = Isolate::UncheckedCurrent();
|
542
|
-
old_enabled_ = 0;
|
543
|
-
if (isolate_ != NULL) {
|
544
|
-
old_enabled_ = static_cast<unsigned>(isolate_->enabled_cpu_features());
|
545
|
-
isolate_->set_enabled_cpu_features(old_enabled_ | mask);
|
546
|
-
}
|
547
|
-
}
|
548
|
-
~Scope() {
|
549
|
-
ASSERT_EQ(Isolate::UncheckedCurrent(), isolate_);
|
550
|
-
if (isolate_ != NULL) {
|
551
|
-
isolate_->set_enabled_cpu_features(old_enabled_);
|
552
|
-
}
|
553
|
-
}
|
554
|
-
|
555
|
-
private:
|
556
|
-
Isolate* isolate_;
|
557
|
-
unsigned old_enabled_;
|
558
|
-
#else
|
559
|
-
|
560
|
-
public:
|
561
|
-
explicit Scope(CpuFeature f) {}
|
562
|
-
#endif
|
563
|
-
};
|
564
|
-
|
565
|
-
class TryForceFeatureScope BASE_EMBEDDED {
|
566
|
-
public:
|
567
|
-
explicit TryForceFeatureScope(CpuFeature f)
|
568
|
-
: old_supported_(CpuFeatures::supported_) {
|
569
|
-
if (CanForce()) {
|
570
|
-
CpuFeatures::supported_ |= (1u << f);
|
571
|
-
}
|
572
|
-
}
|
573
|
-
|
574
|
-
~TryForceFeatureScope() {
|
575
|
-
if (CanForce()) {
|
576
|
-
CpuFeatures::supported_ = old_supported_;
|
577
|
-
}
|
578
|
-
}
|
579
|
-
|
580
|
-
private:
|
581
|
-
static bool CanForce() {
|
582
|
-
// It's only safe to temporarily force support of CPU features
|
583
|
-
// when there's only a single isolate, which is guaranteed when
|
584
|
-
// the serializer is enabled.
|
585
|
-
return Serializer::enabled();
|
586
|
-
}
|
587
|
-
|
588
|
-
const unsigned old_supported_;
|
589
|
-
};
|
590
|
-
|
591
|
-
private:
|
592
|
-
#ifdef DEBUG
|
593
|
-
static bool initialized_;
|
594
|
-
#endif
|
595
|
-
static unsigned supported_;
|
596
|
-
static unsigned found_by_runtime_probing_;
|
597
|
-
|
598
|
-
DISALLOW_COPY_AND_ASSIGN(CpuFeatures);
|
599
|
-
};
|
600
|
-
|
601
|
-
|
602
617
|
extern const Instr kMovLrPc;
|
603
618
|
extern const Instr kLdrPCMask;
|
604
619
|
extern const Instr kLdrPCPattern;
|
@@ -640,10 +655,7 @@ class Assembler : public AssemblerBase {
|
|
640
655
|
// is too small, a fatal error occurs. No deallocation of the buffer is done
|
641
656
|
// upon destruction of the assembler.
|
642
657
|
Assembler(Isolate* isolate, void* buffer, int buffer_size);
|
643
|
-
~Assembler();
|
644
|
-
|
645
|
-
// Overrides the default provided by FLAG_debug_code.
|
646
|
-
void set_emit_debug_code(bool value) { emit_debug_code_ = value; }
|
658
|
+
virtual ~Assembler();
|
647
659
|
|
648
660
|
// GetCode emits any pending (non-emitted) code and fills the descriptor
|
649
661
|
// desc. GetCode() is idempotent; it returns the same result if no other
|
@@ -677,13 +689,25 @@ class Assembler : public AssemblerBase {
|
|
677
689
|
void label_at_put(Label* L, int at_offset);
|
678
690
|
|
679
691
|
// Return the address in the constant pool of the code target address used by
|
680
|
-
// the branch/call instruction at pc.
|
681
|
-
INLINE(static Address
|
692
|
+
// the branch/call instruction at pc, or the object in a mov.
|
693
|
+
INLINE(static Address target_pointer_address_at(Address pc));
|
694
|
+
|
695
|
+
// Read/Modify the pointer in the branch/call/move instruction at pc.
|
696
|
+
INLINE(static Address target_pointer_at(Address pc));
|
697
|
+
INLINE(static void set_target_pointer_at(Address pc, Address target));
|
682
698
|
|
683
699
|
// Read/Modify the code target address in the branch/call instruction at pc.
|
684
700
|
INLINE(static Address target_address_at(Address pc));
|
685
701
|
INLINE(static void set_target_address_at(Address pc, Address target));
|
686
702
|
|
703
|
+
// Return the code target address at a call site from the return address
|
704
|
+
// of that call in the instruction stream.
|
705
|
+
INLINE(static Address target_address_from_return_address(Address pc));
|
706
|
+
|
707
|
+
// Given the address of the beginning of a call, return the address
|
708
|
+
// in the instruction stream that the call will return from.
|
709
|
+
INLINE(static Address return_address_from_call_start(Address pc));
|
710
|
+
|
687
711
|
// This sets the branch destination (which is in the constant pool on ARM).
|
688
712
|
// This is for calls and branches within generated code.
|
689
713
|
inline static void deserialization_set_special_target_at(
|
@@ -702,22 +726,6 @@ class Assembler : public AssemblerBase {
|
|
702
726
|
// Size of an instruction.
|
703
727
|
static const int kInstrSize = sizeof(Instr);
|
704
728
|
|
705
|
-
// Distance between the instruction referring to the address of the call
|
706
|
-
// target and the return address.
|
707
|
-
#ifdef USE_BLX
|
708
|
-
// Call sequence is:
|
709
|
-
// ldr ip, [pc, #...] @ call address
|
710
|
-
// blx ip
|
711
|
-
// @ return address
|
712
|
-
static const int kCallTargetAddressOffset = 2 * kInstrSize;
|
713
|
-
#else
|
714
|
-
// Call sequence is:
|
715
|
-
// mov lr, pc
|
716
|
-
// ldr pc, [pc, #...] @ call address
|
717
|
-
// @ return address
|
718
|
-
static const int kCallTargetAddressOffset = kInstrSize;
|
719
|
-
#endif
|
720
|
-
|
721
729
|
// Distance between start of patched return sequence and the emitted address
|
722
730
|
// to jump to.
|
723
731
|
#ifdef USE_BLX
|
@@ -746,6 +754,12 @@ class Assembler : public AssemblerBase {
|
|
746
754
|
static const int kPatchDebugBreakSlotAddressOffset = kInstrSize;
|
747
755
|
#endif
|
748
756
|
|
757
|
+
#ifdef USE_BLX
|
758
|
+
static const int kPatchDebugBreakSlotReturnOffset = 2 * kInstrSize;
|
759
|
+
#else
|
760
|
+
static const int kPatchDebugBreakSlotReturnOffset = kInstrSize;
|
761
|
+
#endif
|
762
|
+
|
749
763
|
// Difference between address of current opcode and value read from pc
|
750
764
|
// register.
|
751
765
|
static const int kPcLoadDelta = 8;
|
@@ -861,6 +875,12 @@ class Assembler : public AssemblerBase {
|
|
861
875
|
void mla(Register dst, Register src1, Register src2, Register srcA,
|
862
876
|
SBit s = LeaveCC, Condition cond = al);
|
863
877
|
|
878
|
+
void mls(Register dst, Register src1, Register src2, Register srcA,
|
879
|
+
Condition cond = al);
|
880
|
+
|
881
|
+
void sdiv(Register dst, Register src1, Register src2,
|
882
|
+
Condition cond = al);
|
883
|
+
|
864
884
|
void mul(Register dst, Register src1, Register src2,
|
865
885
|
SBit s = LeaveCC, Condition cond = al);
|
866
886
|
|
@@ -982,10 +1002,7 @@ class Assembler : public AssemblerBase {
|
|
982
1002
|
LFlag l = Short); // v5 and above
|
983
1003
|
|
984
1004
|
// Support for VFP.
|
985
|
-
// All these APIs support S0 to S31 and D0 to
|
986
|
-
// Currently these APIs do not support extended D registers, i.e, D16 to D31.
|
987
|
-
// However, some simple modifications can allow
|
988
|
-
// these APIs to support D16 to D31.
|
1005
|
+
// All these APIs support S0 to S31 and D0 to D31.
|
989
1006
|
|
990
1007
|
void vldr(const DwVfpRegister dst,
|
991
1008
|
const Register base,
|
@@ -1045,6 +1062,7 @@ class Assembler : public AssemblerBase {
|
|
1045
1062
|
|
1046
1063
|
void vmov(const DwVfpRegister dst,
|
1047
1064
|
double imm,
|
1065
|
+
const Register scratch = no_reg,
|
1048
1066
|
const Condition cond = al);
|
1049
1067
|
void vmov(const SwVfpRegister dst,
|
1050
1068
|
const SwVfpRegister src,
|
@@ -1052,6 +1070,10 @@ class Assembler : public AssemblerBase {
|
|
1052
1070
|
void vmov(const DwVfpRegister dst,
|
1053
1071
|
const DwVfpRegister src,
|
1054
1072
|
const Condition cond = al);
|
1073
|
+
void vmov(const DwVfpRegister dst,
|
1074
|
+
int index,
|
1075
|
+
const Register src,
|
1076
|
+
const Condition cond = al);
|
1055
1077
|
void vmov(const DwVfpRegister dst,
|
1056
1078
|
const Register src1,
|
1057
1079
|
const Register src2,
|
@@ -1113,6 +1135,10 @@ class Assembler : public AssemblerBase {
|
|
1113
1135
|
const DwVfpRegister src1,
|
1114
1136
|
const DwVfpRegister src2,
|
1115
1137
|
const Condition cond = al);
|
1138
|
+
void vmla(const DwVfpRegister dst,
|
1139
|
+
const DwVfpRegister src1,
|
1140
|
+
const DwVfpRegister src2,
|
1141
|
+
const Condition cond = al);
|
1116
1142
|
void vdiv(const DwVfpRegister dst,
|
1117
1143
|
const DwVfpRegister src1,
|
1118
1144
|
const DwVfpRegister src2,
|
@@ -1164,6 +1190,20 @@ class Assembler : public AssemblerBase {
|
|
1164
1190
|
// Jump unconditionally to given label.
|
1165
1191
|
void jmp(Label* L) { b(L, al); }
|
1166
1192
|
|
1193
|
+
static bool use_immediate_embedded_pointer_loads(
|
1194
|
+
const Assembler* assembler) {
|
1195
|
+
#ifdef USE_BLX
|
1196
|
+
return CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS) &&
|
1197
|
+
(assembler == NULL || !assembler->predictable_code_size());
|
1198
|
+
#else
|
1199
|
+
// If not using BLX, all loads from the constant pool cannot be immediate,
|
1200
|
+
// because the ldr pc, [pc + #xxxx] used for calls must be a single
|
1201
|
+
// instruction and cannot be easily distinguished out of context from
|
1202
|
+
// other loads that could use movw/movt.
|
1203
|
+
return false;
|
1204
|
+
#endif
|
1205
|
+
}
|
1206
|
+
|
1167
1207
|
// Check the code size generated from label to here.
|
1168
1208
|
int SizeOfCodeGeneratedSince(Label* label) {
|
1169
1209
|
return pc_offset() - label->pos();
|
@@ -1203,22 +1243,41 @@ class Assembler : public AssemblerBase {
|
|
1203
1243
|
|
1204
1244
|
// Record the AST id of the CallIC being compiled, so that it can be placed
|
1205
1245
|
// in the relocation information.
|
1206
|
-
void SetRecordedAstId(
|
1207
|
-
ASSERT(recorded_ast_id_
|
1246
|
+
void SetRecordedAstId(TypeFeedbackId ast_id) {
|
1247
|
+
ASSERT(recorded_ast_id_.IsNone());
|
1208
1248
|
recorded_ast_id_ = ast_id;
|
1209
1249
|
}
|
1210
1250
|
|
1211
|
-
|
1212
|
-
ASSERT(recorded_ast_id_
|
1251
|
+
TypeFeedbackId RecordedAstId() {
|
1252
|
+
ASSERT(!recorded_ast_id_.IsNone());
|
1213
1253
|
return recorded_ast_id_;
|
1214
1254
|
}
|
1215
1255
|
|
1216
|
-
void ClearRecordedAstId() { recorded_ast_id_ =
|
1256
|
+
void ClearRecordedAstId() { recorded_ast_id_ = TypeFeedbackId::None(); }
|
1217
1257
|
|
1218
1258
|
// Record a comment relocation entry that can be used by a disassembler.
|
1219
1259
|
// Use --code-comments to enable.
|
1220
1260
|
void RecordComment(const char* msg);
|
1221
1261
|
|
1262
|
+
// Record the emission of a constant pool.
|
1263
|
+
//
|
1264
|
+
// The emission of constant pool depends on the size of the code generated and
|
1265
|
+
// the number of RelocInfo recorded.
|
1266
|
+
// The Debug mechanism needs to map code offsets between two versions of a
|
1267
|
+
// function, compiled with and without debugger support (see for example
|
1268
|
+
// Debug::PrepareForBreakPoints()).
|
1269
|
+
// Compiling functions with debugger support generates additional code
|
1270
|
+
// (Debug::GenerateSlot()). This may affect the emission of the constant
|
1271
|
+
// pools and cause the version of the code with debugger support to have
|
1272
|
+
// constant pools generated in different places.
|
1273
|
+
// Recording the position and size of emitted constant pools allows to
|
1274
|
+
// correctly compute the offset mappings between the different versions of a
|
1275
|
+
// function in all situations.
|
1276
|
+
//
|
1277
|
+
// The parameter indicates the size of the constant pool (in bytes), including
|
1278
|
+
// the marker and branch over the data.
|
1279
|
+
void RecordConstPool(int size);
|
1280
|
+
|
1222
1281
|
// Writes a single byte or word of data in the code stream. Used
|
1223
1282
|
// for inline tables, e.g., jump-tables. The constant pool should be
|
1224
1283
|
// emitted before any use of db and dd to ensure that constant pools
|
@@ -1226,8 +1285,6 @@ class Assembler : public AssemblerBase {
|
|
1226
1285
|
void db(uint8_t data);
|
1227
1286
|
void dd(uint32_t data);
|
1228
1287
|
|
1229
|
-
int pc_offset() const { return pc_ - buffer_; }
|
1230
|
-
|
1231
1288
|
PositionsRecorder* positions_recorder() { return &positions_recorder_; }
|
1232
1289
|
|
1233
1290
|
// Read/patch instructions
|
@@ -1243,8 +1300,11 @@ class Assembler : public AssemblerBase {
|
|
1243
1300
|
static bool IsBranch(Instr instr);
|
1244
1301
|
static int GetBranchOffset(Instr instr);
|
1245
1302
|
static bool IsLdrRegisterImmediate(Instr instr);
|
1303
|
+
static bool IsVldrDRegisterImmediate(Instr instr);
|
1246
1304
|
static int GetLdrRegisterImmediateOffset(Instr instr);
|
1305
|
+
static int GetVldrDRegisterImmediateOffset(Instr instr);
|
1247
1306
|
static Instr SetLdrRegisterImmediateOffset(Instr instr, int offset);
|
1307
|
+
static Instr SetVldrDRegisterImmediateOffset(Instr instr, int offset);
|
1248
1308
|
static bool IsStrRegisterImmediate(Instr instr);
|
1249
1309
|
static Instr SetStrRegisterImmediateOffset(Instr instr, int offset);
|
1250
1310
|
static bool IsAddRegisterImmediate(Instr instr);
|
@@ -1259,18 +1319,24 @@ class Assembler : public AssemblerBase {
|
|
1259
1319
|
static bool IsStrRegFpNegOffset(Instr instr);
|
1260
1320
|
static bool IsLdrRegFpNegOffset(Instr instr);
|
1261
1321
|
static bool IsLdrPcImmediateOffset(Instr instr);
|
1322
|
+
static bool IsVldrDPcImmediateOffset(Instr instr);
|
1262
1323
|
static bool IsTstImmediate(Instr instr);
|
1263
1324
|
static bool IsCmpRegister(Instr instr);
|
1264
1325
|
static bool IsCmpImmediate(Instr instr);
|
1265
1326
|
static Register GetCmpImmediateRegister(Instr instr);
|
1266
1327
|
static int GetCmpImmediateRawImmediate(Instr instr);
|
1267
1328
|
static bool IsNop(Instr instr, int type = NON_MARKING_NOP);
|
1329
|
+
static bool IsMovT(Instr instr);
|
1330
|
+
static bool IsMovW(Instr instr);
|
1268
1331
|
|
1269
1332
|
// Constants in pools are accessed via pc relative addressing, which can
|
1270
|
-
// reach +/-4KB
|
1271
|
-
//
|
1272
|
-
|
1273
|
-
static const int
|
1333
|
+
// reach +/-4KB for integer PC-relative loads and +/-1KB for floating-point
|
1334
|
+
// PC-relative loads, thereby defining a maximum distance between the
|
1335
|
+
// instruction and the accessed constant.
|
1336
|
+
static const int kMaxDistToIntPool = 4*KB;
|
1337
|
+
static const int kMaxDistToFPPool = 1*KB;
|
1338
|
+
// All relocations could be integer, it therefore acts as the limit.
|
1339
|
+
static const int kMaxNumPendingRelocInfo = kMaxDistToIntPool/kInstrSize;
|
1274
1340
|
|
1275
1341
|
// Postpone the generation of the constant pool for the specified number of
|
1276
1342
|
// instructions.
|
@@ -1283,9 +1349,7 @@ class Assembler : public AssemblerBase {
|
|
1283
1349
|
// Relocation for a type-recording IC has the AST id added to it. This
|
1284
1350
|
// member variable is a way to pass the information from the call site to
|
1285
1351
|
// the relocation info.
|
1286
|
-
|
1287
|
-
|
1288
|
-
bool emit_debug_code() const { return emit_debug_code_; }
|
1352
|
+
TypeFeedbackId recorded_ast_id_;
|
1289
1353
|
|
1290
1354
|
int buffer_space() const { return reloc_info_writer.pos() - pc_; }
|
1291
1355
|
|
@@ -1312,7 +1376,9 @@ class Assembler : public AssemblerBase {
|
|
1312
1376
|
if (--const_pool_blocked_nesting_ == 0) {
|
1313
1377
|
// Check the constant pool hasn't been blocked for too long.
|
1314
1378
|
ASSERT((num_pending_reloc_info_ == 0) ||
|
1315
|
-
(pc_offset() < (first_const_pool_use_ +
|
1379
|
+
(pc_offset() < (first_const_pool_use_ + kMaxDistToIntPool)));
|
1380
|
+
ASSERT((num_pending_64_bit_reloc_info_ == 0) ||
|
1381
|
+
(pc_offset() < (first_const_pool_use_ + kMaxDistToFPPool)));
|
1316
1382
|
// Two cases:
|
1317
1383
|
// * no_const_pool_before_ >= next_buffer_check_ and the emission is
|
1318
1384
|
// still blocked
|
@@ -1328,13 +1394,6 @@ class Assembler : public AssemblerBase {
|
|
1328
1394
|
}
|
1329
1395
|
|
1330
1396
|
private:
|
1331
|
-
// Code buffer:
|
1332
|
-
// The buffer into which code and relocation info are generated.
|
1333
|
-
byte* buffer_;
|
1334
|
-
int buffer_size_;
|
1335
|
-
// True if the assembler owns the buffer, false if buffer is external.
|
1336
|
-
bool own_buffer_;
|
1337
|
-
|
1338
1397
|
int next_buffer_check_; // pc offset of next buffer check
|
1339
1398
|
|
1340
1399
|
// Code generation
|
@@ -1343,7 +1402,6 @@ class Assembler : public AssemblerBase {
|
|
1343
1402
|
// not have to check for overflow. The same is true for writes of large
|
1344
1403
|
// relocation info entries.
|
1345
1404
|
static const int kGap = 32;
|
1346
|
-
byte* pc_; // the program counter; moves forward
|
1347
1405
|
|
1348
1406
|
// Constant pool generation
|
1349
1407
|
// Pools are emitted in the instruction stream, preferably after unconditional
|
@@ -1363,13 +1421,6 @@ class Assembler : public AssemblerBase {
|
|
1363
1421
|
static const int kCheckPoolInterval = kCheckPoolIntervalInst * kInstrSize;
|
1364
1422
|
|
1365
1423
|
|
1366
|
-
// Average distance beetween a constant pool and the first instruction
|
1367
|
-
// accessing the constant pool. Longer distance should result in less I-cache
|
1368
|
-
// pollution.
|
1369
|
-
// In practice the distance will be smaller since constant pool emission is
|
1370
|
-
// forced after function return and sometimes after unconditional branches.
|
1371
|
-
static const int kAvgDistToPool = kMaxDistToPool - kCheckPoolInterval;
|
1372
|
-
|
1373
1424
|
// Emission of the constant pool may be blocked in some code sequences.
|
1374
1425
|
int const_pool_blocked_nesting_; // Block emission if this is not zero.
|
1375
1426
|
int no_const_pool_before_; // Block emission before this pc offset.
|
@@ -1394,6 +1445,9 @@ class Assembler : public AssemblerBase {
|
|
1394
1445
|
RelocInfo pending_reloc_info_[kMaxNumPendingRelocInfo];
|
1395
1446
|
// number of pending reloc info entries in the buffer
|
1396
1447
|
int num_pending_reloc_info_;
|
1448
|
+
// Number of pending reloc info entries included above which also happen to
|
1449
|
+
// be 64-bit.
|
1450
|
+
int num_pending_64_bit_reloc_info_;
|
1397
1451
|
|
1398
1452
|
// The bound position, before this we cannot do instruction elimination.
|
1399
1453
|
int last_bound_pos_;
|
@@ -1403,6 +1457,12 @@ class Assembler : public AssemblerBase {
|
|
1403
1457
|
void GrowBuffer();
|
1404
1458
|
inline void emit(Instr x);
|
1405
1459
|
|
1460
|
+
// 32-bit immediate values
|
1461
|
+
void move_32_bit_immediate(Condition cond,
|
1462
|
+
Register rd,
|
1463
|
+
SBit s,
|
1464
|
+
const Operand& x);
|
1465
|
+
|
1406
1466
|
// Instruction generation
|
1407
1467
|
void addrmod1(Instr instr, Register rn, Register rd, const Operand& x);
|
1408
1468
|
void addrmod2(Instr instr, Register rd, const MemOperand& x);
|
@@ -1416,8 +1476,16 @@ class Assembler : public AssemblerBase {
|
|
1416
1476
|
void link_to(Label* L, Label* appendix);
|
1417
1477
|
void next(Label* L);
|
1418
1478
|
|
1479
|
+
enum UseConstantPoolMode {
|
1480
|
+
USE_CONSTANT_POOL,
|
1481
|
+
DONT_USE_CONSTANT_POOL
|
1482
|
+
};
|
1483
|
+
|
1419
1484
|
// Record reloc info for current pc_
|
1420
|
-
void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0
|
1485
|
+
void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0,
|
1486
|
+
UseConstantPoolMode mode = USE_CONSTANT_POOL);
|
1487
|
+
void RecordRelocInfo(double data);
|
1488
|
+
void RecordRelocInfoConstantPoolEntryHelper(const RelocInfo& rinfo);
|
1421
1489
|
|
1422
1490
|
friend class RegExpMacroAssemblerARM;
|
1423
1491
|
friend class RelocInfo;
|
@@ -1425,7 +1493,6 @@ class Assembler : public AssemblerBase {
|
|
1425
1493
|
friend class BlockConstPoolScope;
|
1426
1494
|
|
1427
1495
|
PositionsRecorder positions_recorder_;
|
1428
|
-
bool emit_debug_code_;
|
1429
1496
|
friend class PositionsRecorder;
|
1430
1497
|
friend class EnsureSpace;
|
1431
1498
|
};
|