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
@@ -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
|
};
|