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
data/vendor/v8/src/hydrogen.h
CHANGED
@@ -77,7 +77,7 @@ class HBasicBlock: public ZoneObject {
|
|
77
77
|
return &deleted_phis_;
|
78
78
|
}
|
79
79
|
void RecordDeletedPhi(int merge_index) {
|
80
|
-
deleted_phis_.Add(merge_index);
|
80
|
+
deleted_phis_.Add(merge_index, zone());
|
81
81
|
}
|
82
82
|
HBasicBlock* dominator() const { return dominator_; }
|
83
83
|
HEnvironment* last_environment() const { return last_environment_; }
|
@@ -118,14 +118,17 @@ class HBasicBlock: public ZoneObject {
|
|
118
118
|
|
119
119
|
bool HasParentLoopHeader() const { return parent_loop_header_ != NULL; }
|
120
120
|
|
121
|
-
void SetJoinId(
|
121
|
+
void SetJoinId(BailoutId ast_id);
|
122
122
|
|
123
123
|
void Finish(HControlInstruction* last);
|
124
124
|
void FinishExit(HControlInstruction* instruction);
|
125
125
|
void Goto(HBasicBlock* block, FunctionState* state = NULL);
|
126
126
|
|
127
127
|
int PredecessorIndexOf(HBasicBlock* predecessor) const;
|
128
|
-
void AddSimulate(
|
128
|
+
void AddSimulate(BailoutId ast_id,
|
129
|
+
RemovableSimulate removable = FIXED_SIMULATE) {
|
130
|
+
AddInstruction(CreateSimulate(ast_id, removable));
|
131
|
+
}
|
129
132
|
void AssignCommonDominator(HBasicBlock* other);
|
130
133
|
void AssignLoopSuccessorDominators();
|
131
134
|
|
@@ -135,9 +138,7 @@ class HBasicBlock: public ZoneObject {
|
|
135
138
|
|
136
139
|
// Add the inlined function exit sequence, adding an HLeaveInlined
|
137
140
|
// instruction and updating the bailout environment.
|
138
|
-
void AddLeaveInlined(HValue* return_value,
|
139
|
-
HBasicBlock* target,
|
140
|
-
FunctionState* state = NULL);
|
141
|
+
void AddLeaveInlined(HValue* return_value, FunctionState* state);
|
141
142
|
|
142
143
|
// If a target block is tagged as an inline function return, all
|
143
144
|
// predecessors should contain the inlined exit sequence:
|
@@ -158,7 +159,7 @@ class HBasicBlock: public ZoneObject {
|
|
158
159
|
dominates_loop_successors_ = true;
|
159
160
|
}
|
160
161
|
|
161
|
-
inline Zone* zone();
|
162
|
+
inline Zone* zone() const;
|
162
163
|
|
163
164
|
#ifdef DEBUG
|
164
165
|
void Verify();
|
@@ -168,7 +169,7 @@ class HBasicBlock: public ZoneObject {
|
|
168
169
|
void RegisterPredecessor(HBasicBlock* pred);
|
169
170
|
void AddDominatedBlock(HBasicBlock* block);
|
170
171
|
|
171
|
-
HSimulate* CreateSimulate(
|
172
|
+
HSimulate* CreateSimulate(BailoutId ast_id, RemovableSimulate removable);
|
172
173
|
HDeoptimize* CreateDeoptimize(HDeoptimize::UseEnvironment has_uses);
|
173
174
|
|
174
175
|
int block_id_;
|
@@ -212,12 +213,12 @@ class HPredecessorIterator BASE_EMBEDDED {
|
|
212
213
|
|
213
214
|
class HLoopInformation: public ZoneObject {
|
214
215
|
public:
|
215
|
-
|
216
|
-
: back_edges_(4),
|
216
|
+
HLoopInformation(HBasicBlock* loop_header, Zone* zone)
|
217
|
+
: back_edges_(4, zone),
|
217
218
|
loop_header_(loop_header),
|
218
|
-
blocks_(8),
|
219
|
+
blocks_(8, zone),
|
219
220
|
stack_check_(NULL) {
|
220
|
-
blocks_.Add(loop_header);
|
221
|
+
blocks_.Add(loop_header, zone);
|
221
222
|
}
|
222
223
|
virtual ~HLoopInformation() {}
|
223
224
|
|
@@ -247,7 +248,8 @@ class HGraph: public ZoneObject {
|
|
247
248
|
explicit HGraph(CompilationInfo* info);
|
248
249
|
|
249
250
|
Isolate* isolate() { return isolate_; }
|
250
|
-
Zone* zone() { return
|
251
|
+
Zone* zone() const { return zone_; }
|
252
|
+
CompilationInfo* info() const { return info_; }
|
251
253
|
|
252
254
|
const ZoneList<HBasicBlock*>* blocks() const { return &blocks_; }
|
253
255
|
const ZoneList<HPhi*>* phi_list() const { return phi_list_; }
|
@@ -256,19 +258,25 @@ class HGraph: public ZoneObject {
|
|
256
258
|
|
257
259
|
void InitializeInferredTypes();
|
258
260
|
void InsertTypeConversions();
|
261
|
+
void MergeRemovableSimulates();
|
259
262
|
void InsertRepresentationChanges();
|
260
263
|
void MarkDeoptimizeOnUndefined();
|
261
264
|
void ComputeMinusZeroChecks();
|
265
|
+
void ComputeSafeUint32Operations();
|
266
|
+
void GlobalValueNumbering();
|
262
267
|
bool ProcessArgumentsObject();
|
263
268
|
void EliminateRedundantPhis();
|
264
269
|
void EliminateUnreachablePhis();
|
265
270
|
void Canonicalize();
|
266
271
|
void OrderBlocks();
|
267
272
|
void AssignDominators();
|
268
|
-
void
|
273
|
+
void SetupInformativeDefinitions();
|
269
274
|
void EliminateRedundantBoundsChecks();
|
270
275
|
void DehoistSimpleArrayIndexComputations();
|
276
|
+
void DeadCodeElimination();
|
277
|
+
void RestoreActualValues();
|
271
278
|
void PropagateDeoptimizingMark();
|
279
|
+
void EliminateUnusedInstructions();
|
272
280
|
|
273
281
|
// Returns false if there are phi-uses of the arguments-object
|
274
282
|
// which are not supported by the optimizing compiler.
|
@@ -280,12 +288,11 @@ class HGraph: public ZoneObject {
|
|
280
288
|
|
281
289
|
void CollectPhis();
|
282
290
|
|
283
|
-
Handle<Code> Compile(CompilationInfo* info);
|
284
|
-
|
285
291
|
void set_undefined_constant(HConstant* constant) {
|
286
292
|
undefined_constant_.set(constant);
|
287
293
|
}
|
288
294
|
HConstant* GetConstantUndefined() const { return undefined_constant_.get(); }
|
295
|
+
HConstant* GetConstant0();
|
289
296
|
HConstant* GetConstant1();
|
290
297
|
HConstant* GetConstantMinus1();
|
291
298
|
HConstant* GetConstantTrue();
|
@@ -304,7 +311,7 @@ class HGraph: public ZoneObject {
|
|
304
311
|
int GetMaximumValueID() const { return values_.length(); }
|
305
312
|
int GetNextBlockID() { return next_block_id_++; }
|
306
313
|
int GetNextValueID(HValue* value) {
|
307
|
-
values_.Add(value);
|
314
|
+
values_.Add(value, zone());
|
308
315
|
return values_.length() - 1;
|
309
316
|
}
|
310
317
|
HValue* LookupValue(int id) const {
|
@@ -312,6 +319,8 @@ class HGraph: public ZoneObject {
|
|
312
319
|
return NULL;
|
313
320
|
}
|
314
321
|
|
322
|
+
bool Optimize(SmartArrayPointer<char>* bailout_reason);
|
323
|
+
|
315
324
|
#ifdef DEBUG
|
316
325
|
void Verify(bool do_full_verify) const;
|
317
326
|
#endif
|
@@ -336,19 +345,50 @@ class HGraph: public ZoneObject {
|
|
336
345
|
osr_values_.set(values);
|
337
346
|
}
|
338
347
|
|
348
|
+
int update_type_change_checksum(int delta) {
|
349
|
+
type_change_checksum_ += delta;
|
350
|
+
return type_change_checksum_;
|
351
|
+
}
|
352
|
+
|
353
|
+
bool use_optimistic_licm() {
|
354
|
+
return use_optimistic_licm_;
|
355
|
+
}
|
356
|
+
|
357
|
+
void set_use_optimistic_licm(bool value) {
|
358
|
+
use_optimistic_licm_ = value;
|
359
|
+
}
|
360
|
+
|
361
|
+
bool has_soft_deoptimize() {
|
362
|
+
return has_soft_deoptimize_;
|
363
|
+
}
|
364
|
+
|
365
|
+
void set_has_soft_deoptimize(bool value) {
|
366
|
+
has_soft_deoptimize_ = value;
|
367
|
+
}
|
368
|
+
|
369
|
+
void MarkRecursive() {
|
370
|
+
is_recursive_ = true;
|
371
|
+
}
|
372
|
+
|
373
|
+
bool is_recursive() const {
|
374
|
+
return is_recursive_;
|
375
|
+
}
|
376
|
+
|
377
|
+
void RecordUint32Instruction(HInstruction* instr) {
|
378
|
+
if (uint32_instructions_ == NULL) {
|
379
|
+
uint32_instructions_ = new(zone()) ZoneList<HInstruction*>(4, zone());
|
380
|
+
}
|
381
|
+
uint32_instructions_->Add(instr, zone());
|
382
|
+
}
|
383
|
+
|
339
384
|
private:
|
340
|
-
void Postorder(HBasicBlock* block,
|
341
|
-
BitVector* visited,
|
342
|
-
ZoneList<HBasicBlock*>* order,
|
343
|
-
HBasicBlock* loop_header);
|
344
|
-
void PostorderLoopBlocks(HLoopInformation* loop,
|
345
|
-
BitVector* visited,
|
346
|
-
ZoneList<HBasicBlock*>* order,
|
347
|
-
HBasicBlock* loop_header);
|
348
385
|
HConstant* GetConstant(SetOncePointer<HConstant>* pointer,
|
349
|
-
Object
|
386
|
+
Handle<Object> value);
|
387
|
+
HConstant* GetConstantInt32(SetOncePointer<HConstant>* pointer,
|
388
|
+
int32_t integer_value);
|
350
389
|
|
351
390
|
void MarkAsDeoptimizingRecursively(HBasicBlock* block);
|
391
|
+
void NullifyUnreachableInstructions();
|
352
392
|
void InsertTypeConversions(HInstruction* instr);
|
353
393
|
void PropagateMinusZeroChecks(HValue* value, BitVector* visited);
|
354
394
|
void RecursivelyMarkPhiDeoptimizeOnUndefined(HPhi* phi);
|
@@ -360,6 +400,8 @@ class HGraph: public ZoneObject {
|
|
360
400
|
void InferTypes(ZoneList<HValue*>* worklist);
|
361
401
|
void InitializeInferredTypes(int from_inclusive, int to_inclusive);
|
362
402
|
void CheckForBackEdge(HBasicBlock* block, HBasicBlock* successor);
|
403
|
+
void SetupInformativeDefinitionsInBlock(HBasicBlock* block);
|
404
|
+
void SetupInformativeDefinitionsRecursively(HBasicBlock* block);
|
363
405
|
void EliminateRedundantBoundsChecks(HBasicBlock* bb, BoundsCheckTable* table);
|
364
406
|
|
365
407
|
Isolate* isolate_;
|
@@ -369,7 +411,9 @@ class HGraph: public ZoneObject {
|
|
369
411
|
ZoneList<HBasicBlock*> blocks_;
|
370
412
|
ZoneList<HValue*> values_;
|
371
413
|
ZoneList<HPhi*>* phi_list_;
|
414
|
+
ZoneList<HInstruction*>* uint32_instructions_;
|
372
415
|
SetOncePointer<HConstant> undefined_constant_;
|
416
|
+
SetOncePointer<HConstant> constant_0_;
|
373
417
|
SetOncePointer<HConstant> constant_1_;
|
374
418
|
SetOncePointer<HConstant> constant_minus1_;
|
375
419
|
SetOncePointer<HConstant> constant_true_;
|
@@ -380,29 +424,40 @@ class HGraph: public ZoneObject {
|
|
380
424
|
SetOncePointer<HBasicBlock> osr_loop_entry_;
|
381
425
|
SetOncePointer<ZoneList<HUnknownOSRValue*> > osr_values_;
|
382
426
|
|
427
|
+
CompilationInfo* info_;
|
428
|
+
Zone* zone_;
|
429
|
+
|
430
|
+
bool is_recursive_;
|
431
|
+
bool use_optimistic_licm_;
|
432
|
+
bool has_soft_deoptimize_;
|
433
|
+
int type_change_checksum_;
|
434
|
+
|
383
435
|
DISALLOW_COPY_AND_ASSIGN(HGraph);
|
384
436
|
};
|
385
437
|
|
386
438
|
|
387
|
-
Zone* HBasicBlock::zone() { return graph_->zone(); }
|
439
|
+
Zone* HBasicBlock::zone() const { return graph_->zone(); }
|
388
440
|
|
389
441
|
|
390
442
|
// Type of stack frame an environment might refer to.
|
391
|
-
enum FrameType {
|
443
|
+
enum FrameType {
|
444
|
+
JS_FUNCTION,
|
445
|
+
JS_CONSTRUCT,
|
446
|
+
JS_GETTER,
|
447
|
+
JS_SETTER,
|
448
|
+
ARGUMENTS_ADAPTOR,
|
449
|
+
STUB
|
450
|
+
};
|
392
451
|
|
393
452
|
|
394
453
|
class HEnvironment: public ZoneObject {
|
395
454
|
public:
|
396
455
|
HEnvironment(HEnvironment* outer,
|
397
456
|
Scope* scope,
|
398
|
-
Handle<JSFunction> closure
|
457
|
+
Handle<JSFunction> closure,
|
458
|
+
Zone* zone);
|
399
459
|
|
400
|
-
HEnvironment*
|
401
|
-
HEnvironment* outer = outer_;
|
402
|
-
while (outer->frame_type() != JS_FUNCTION) outer = outer->outer_;
|
403
|
-
if (drop_extra) outer->Drop(1);
|
404
|
-
return outer;
|
405
|
-
}
|
460
|
+
explicit HEnvironment(Zone* zone);
|
406
461
|
|
407
462
|
HEnvironment* arguments_environment() {
|
408
463
|
return outer()->frame_type() == ARGUMENTS_ADAPTOR ? outer() : this;
|
@@ -411,7 +466,7 @@ class HEnvironment: public ZoneObject {
|
|
411
466
|
// Simple accessors.
|
412
467
|
Handle<JSFunction> closure() const { return closure_; }
|
413
468
|
const ZoneList<HValue*>* values() const { return &values_; }
|
414
|
-
const
|
469
|
+
const GrowableBitVector* assigned_variables() const {
|
415
470
|
return &assigned_variables_;
|
416
471
|
}
|
417
472
|
FrameType frame_type() const { return frame_type_; }
|
@@ -422,8 +477,11 @@ class HEnvironment: public ZoneObject {
|
|
422
477
|
int pop_count() const { return pop_count_; }
|
423
478
|
int push_count() const { return push_count_; }
|
424
479
|
|
425
|
-
|
426
|
-
void set_ast_id(
|
480
|
+
BailoutId ast_id() const { return ast_id_; }
|
481
|
+
void set_ast_id(BailoutId id) { ast_id_ = id; }
|
482
|
+
|
483
|
+
HEnterInlined* entry() const { return entry_; }
|
484
|
+
void set_entry(HEnterInlined* entry) { entry_ = entry; }
|
427
485
|
|
428
486
|
int length() const { return values_.length(); }
|
429
487
|
bool is_special_index(int i) const {
|
@@ -462,7 +520,7 @@ class HEnvironment: public ZoneObject {
|
|
462
520
|
void Push(HValue* value) {
|
463
521
|
ASSERT(value != NULL);
|
464
522
|
++push_count_;
|
465
|
-
values_.Add(value);
|
523
|
+
values_.Add(value, zone());
|
466
524
|
}
|
467
525
|
|
468
526
|
HValue* Pop() {
|
@@ -500,15 +558,30 @@ class HEnvironment: public ZoneObject {
|
|
500
558
|
int arguments,
|
501
559
|
FunctionLiteral* function,
|
502
560
|
HConstant* undefined,
|
503
|
-
|
504
|
-
bool
|
561
|
+
InliningKind inlining_kind,
|
562
|
+
bool undefined_receiver) const;
|
563
|
+
|
564
|
+
static bool UseUndefinedReceiver(Handle<JSFunction> closure,
|
565
|
+
FunctionLiteral* function,
|
566
|
+
CallKind call_kind,
|
567
|
+
InliningKind inlining_kind) {
|
568
|
+
return (closure->shared()->native() || !function->is_classic_mode()) &&
|
569
|
+
call_kind == CALL_AS_FUNCTION && inlining_kind != CONSTRUCT_CALL_RETURN;
|
570
|
+
}
|
571
|
+
|
572
|
+
HEnvironment* DiscardInlined(bool drop_extra) {
|
573
|
+
HEnvironment* outer = outer_;
|
574
|
+
while (outer->frame_type() != JS_FUNCTION) outer = outer->outer_;
|
575
|
+
if (drop_extra) outer->Drop(1);
|
576
|
+
return outer;
|
577
|
+
}
|
505
578
|
|
506
579
|
void AddIncomingEdge(HBasicBlock* block, HEnvironment* other);
|
507
580
|
|
508
581
|
void ClearHistory() {
|
509
582
|
pop_count_ = 0;
|
510
583
|
push_count_ = 0;
|
511
|
-
assigned_variables_.
|
584
|
+
assigned_variables_.Clear();
|
512
585
|
}
|
513
586
|
|
514
587
|
void SetValueAt(int index, HValue* value) {
|
@@ -519,13 +592,16 @@ class HEnvironment: public ZoneObject {
|
|
519
592
|
void PrintTo(StringStream* stream);
|
520
593
|
void PrintToStd();
|
521
594
|
|
595
|
+
Zone* zone() const { return zone_; }
|
596
|
+
|
522
597
|
private:
|
523
|
-
|
598
|
+
HEnvironment(const HEnvironment* other, Zone* zone);
|
524
599
|
|
525
600
|
HEnvironment(HEnvironment* outer,
|
526
601
|
Handle<JSFunction> closure,
|
527
602
|
FrameType frame_type,
|
528
|
-
int arguments
|
603
|
+
int arguments,
|
604
|
+
Zone* zone);
|
529
605
|
|
530
606
|
// Create an artificial stub environment (e.g. for argument adaptor or
|
531
607
|
// constructor stub).
|
@@ -554,19 +630,40 @@ class HEnvironment: public ZoneObject {
|
|
554
630
|
Handle<JSFunction> closure_;
|
555
631
|
// Value array [parameters] [specials] [locals] [temporaries].
|
556
632
|
ZoneList<HValue*> values_;
|
557
|
-
|
633
|
+
GrowableBitVector assigned_variables_;
|
558
634
|
FrameType frame_type_;
|
559
635
|
int parameter_count_;
|
560
636
|
int specials_count_;
|
561
637
|
int local_count_;
|
562
638
|
HEnvironment* outer_;
|
639
|
+
HEnterInlined* entry_;
|
563
640
|
int pop_count_;
|
564
641
|
int push_count_;
|
565
|
-
|
642
|
+
BailoutId ast_id_;
|
643
|
+
Zone* zone_;
|
566
644
|
};
|
567
645
|
|
568
646
|
|
569
|
-
class
|
647
|
+
class HInferRepresentation BASE_EMBEDDED {
|
648
|
+
public:
|
649
|
+
explicit HInferRepresentation(HGraph* graph)
|
650
|
+
: graph_(graph),
|
651
|
+
worklist_(8, graph->zone()),
|
652
|
+
in_worklist_(graph->GetMaximumValueID(), graph->zone()) { }
|
653
|
+
|
654
|
+
void Analyze();
|
655
|
+
void AddToWorklist(HValue* current);
|
656
|
+
|
657
|
+
private:
|
658
|
+
Zone* zone() const { return graph_->zone(); }
|
659
|
+
|
660
|
+
HGraph* graph_;
|
661
|
+
ZoneList<HValue*> worklist_;
|
662
|
+
BitVector in_worklist_;
|
663
|
+
};
|
664
|
+
|
665
|
+
|
666
|
+
class HOptimizedGraphBuilder;
|
570
667
|
|
571
668
|
enum ArgumentsAllowedFlag {
|
572
669
|
ARGUMENTS_NOT_ALLOWED,
|
@@ -590,24 +687,24 @@ class AstContext {
|
|
590
687
|
// Add a hydrogen instruction to the instruction stream (recording an
|
591
688
|
// environment simulation if necessary) and then fill this context with
|
592
689
|
// the instruction as value.
|
593
|
-
virtual void ReturnInstruction(HInstruction* instr,
|
690
|
+
virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id) = 0;
|
594
691
|
|
595
692
|
// Finishes the current basic block and materialize a boolean for
|
596
693
|
// value context, nothing for effect, generate a branch for test context.
|
597
694
|
// Call this function in tail position in the Visit functions for
|
598
695
|
// expressions.
|
599
|
-
virtual void ReturnControl(HControlInstruction* instr,
|
696
|
+
virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id) = 0;
|
600
697
|
|
601
698
|
void set_for_typeof(bool for_typeof) { for_typeof_ = for_typeof; }
|
602
699
|
bool is_for_typeof() { return for_typeof_; }
|
603
700
|
|
604
701
|
protected:
|
605
|
-
AstContext(
|
702
|
+
AstContext(HOptimizedGraphBuilder* owner, Expression::Context kind);
|
606
703
|
virtual ~AstContext();
|
607
704
|
|
608
|
-
|
705
|
+
HOptimizedGraphBuilder* owner() const { return owner_; }
|
609
706
|
|
610
|
-
inline Zone* zone();
|
707
|
+
inline Zone* zone() const;
|
611
708
|
|
612
709
|
// We want to be able to assert, in a context-specific way, that the stack
|
613
710
|
// height makes sense when the context is filled.
|
@@ -616,7 +713,7 @@ class AstContext {
|
|
616
713
|
#endif
|
617
714
|
|
618
715
|
private:
|
619
|
-
|
716
|
+
HOptimizedGraphBuilder* owner_;
|
620
717
|
Expression::Context kind_;
|
621
718
|
AstContext* outer_;
|
622
719
|
bool for_typeof_;
|
@@ -625,27 +722,27 @@ class AstContext {
|
|
625
722
|
|
626
723
|
class EffectContext: public AstContext {
|
627
724
|
public:
|
628
|
-
explicit EffectContext(
|
725
|
+
explicit EffectContext(HOptimizedGraphBuilder* owner)
|
629
726
|
: AstContext(owner, Expression::kEffect) {
|
630
727
|
}
|
631
728
|
virtual ~EffectContext();
|
632
729
|
|
633
730
|
virtual void ReturnValue(HValue* value);
|
634
|
-
virtual void ReturnInstruction(HInstruction* instr,
|
635
|
-
virtual void ReturnControl(HControlInstruction* instr,
|
731
|
+
virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id);
|
732
|
+
virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id);
|
636
733
|
};
|
637
734
|
|
638
735
|
|
639
736
|
class ValueContext: public AstContext {
|
640
737
|
public:
|
641
|
-
|
738
|
+
ValueContext(HOptimizedGraphBuilder* owner, ArgumentsAllowedFlag flag)
|
642
739
|
: AstContext(owner, Expression::kValue), flag_(flag) {
|
643
740
|
}
|
644
741
|
virtual ~ValueContext();
|
645
742
|
|
646
743
|
virtual void ReturnValue(HValue* value);
|
647
|
-
virtual void ReturnInstruction(HInstruction* instr,
|
648
|
-
virtual void ReturnControl(HControlInstruction* instr,
|
744
|
+
virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id);
|
745
|
+
virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id);
|
649
746
|
|
650
747
|
bool arguments_allowed() { return flag_ == ARGUMENTS_ALLOWED; }
|
651
748
|
|
@@ -656,19 +753,21 @@ class ValueContext: public AstContext {
|
|
656
753
|
|
657
754
|
class TestContext: public AstContext {
|
658
755
|
public:
|
659
|
-
TestContext(
|
756
|
+
TestContext(HOptimizedGraphBuilder* owner,
|
660
757
|
Expression* condition,
|
758
|
+
TypeFeedbackOracle* oracle,
|
661
759
|
HBasicBlock* if_true,
|
662
760
|
HBasicBlock* if_false)
|
663
761
|
: AstContext(owner, Expression::kTest),
|
664
762
|
condition_(condition),
|
763
|
+
oracle_(oracle),
|
665
764
|
if_true_(if_true),
|
666
765
|
if_false_(if_false) {
|
667
766
|
}
|
668
767
|
|
669
768
|
virtual void ReturnValue(HValue* value);
|
670
|
-
virtual void ReturnInstruction(HInstruction* instr,
|
671
|
-
virtual void ReturnControl(HControlInstruction* instr,
|
769
|
+
virtual void ReturnInstruction(HInstruction* instr, BailoutId ast_id);
|
770
|
+
virtual void ReturnControl(HControlInstruction* instr, BailoutId ast_id);
|
672
771
|
|
673
772
|
static TestContext* cast(AstContext* context) {
|
674
773
|
ASSERT(context->IsTest());
|
@@ -676,6 +775,7 @@ class TestContext: public AstContext {
|
|
676
775
|
}
|
677
776
|
|
678
777
|
Expression* condition() const { return condition_; }
|
778
|
+
TypeFeedbackOracle* oracle() const { return oracle_; }
|
679
779
|
HBasicBlock* if_true() const { return if_true_; }
|
680
780
|
HBasicBlock* if_false() const { return if_false_; }
|
681
781
|
|
@@ -685,31 +785,24 @@ class TestContext: public AstContext {
|
|
685
785
|
void BuildBranch(HValue* value);
|
686
786
|
|
687
787
|
Expression* condition_;
|
788
|
+
TypeFeedbackOracle* oracle_;
|
688
789
|
HBasicBlock* if_true_;
|
689
790
|
HBasicBlock* if_false_;
|
690
791
|
};
|
691
792
|
|
692
793
|
|
693
|
-
enum ReturnHandlingFlag {
|
694
|
-
NORMAL_RETURN,
|
695
|
-
DROP_EXTRA_ON_RETURN,
|
696
|
-
CONSTRUCT_CALL_RETURN
|
697
|
-
};
|
698
|
-
|
699
|
-
|
700
794
|
class FunctionState {
|
701
795
|
public:
|
702
|
-
FunctionState(
|
796
|
+
FunctionState(HOptimizedGraphBuilder* owner,
|
703
797
|
CompilationInfo* info,
|
704
798
|
TypeFeedbackOracle* oracle,
|
705
|
-
|
799
|
+
InliningKind inlining_kind);
|
706
800
|
~FunctionState();
|
707
801
|
|
708
802
|
CompilationInfo* compilation_info() { return compilation_info_; }
|
709
803
|
TypeFeedbackOracle* oracle() { return oracle_; }
|
710
804
|
AstContext* call_context() { return call_context_; }
|
711
|
-
|
712
|
-
bool is_construct() { return return_handling_ == CONSTRUCT_CALL_RETURN; }
|
805
|
+
InliningKind inlining_kind() const { return inlining_kind_; }
|
713
806
|
HBasicBlock* function_return() { return function_return_; }
|
714
807
|
TestContext* test_context() { return test_context_; }
|
715
808
|
void ClearInlinedTestContext() {
|
@@ -730,7 +823,7 @@ class FunctionState {
|
|
730
823
|
bool arguments_pushed() { return arguments_elements() != NULL; }
|
731
824
|
|
732
825
|
private:
|
733
|
-
|
826
|
+
HOptimizedGraphBuilder* owner_;
|
734
827
|
|
735
828
|
CompilationInfo* compilation_info_;
|
736
829
|
TypeFeedbackOracle* oracle_;
|
@@ -739,11 +832,8 @@ class FunctionState {
|
|
739
832
|
// inlined. NULL when not inlining.
|
740
833
|
AstContext* call_context_;
|
741
834
|
|
742
|
-
//
|
743
|
-
|
744
|
-
// - DROP_EXTRA_ON_RETURN: Drop an extra value from the environment.
|
745
|
-
// - CONSTRUCT_CALL_RETURN: Either use allocated receiver or return value.
|
746
|
-
ReturnHandlingFlag return_handling_;
|
835
|
+
// The kind of call which is currently being inlined.
|
836
|
+
InliningKind inlining_kind_;
|
747
837
|
|
748
838
|
// When inlining in an effect or value context, this is the return block.
|
749
839
|
// It is NULL otherwise. When inlining in a test context, there are a
|
@@ -765,7 +855,141 @@ class FunctionState {
|
|
765
855
|
};
|
766
856
|
|
767
857
|
|
768
|
-
class HGraphBuilder
|
858
|
+
class HGraphBuilder {
|
859
|
+
public:
|
860
|
+
explicit HGraphBuilder(CompilationInfo* info)
|
861
|
+
: info_(info), graph_(NULL), current_block_(NULL) {}
|
862
|
+
virtual ~HGraphBuilder() {}
|
863
|
+
|
864
|
+
HBasicBlock* current_block() const { return current_block_; }
|
865
|
+
void set_current_block(HBasicBlock* block) { current_block_ = block; }
|
866
|
+
HEnvironment* environment() const {
|
867
|
+
return current_block()->last_environment();
|
868
|
+
}
|
869
|
+
Zone* zone() const { return info_->zone(); }
|
870
|
+
HGraph* graph() { return graph_; }
|
871
|
+
|
872
|
+
HGraph* CreateGraph();
|
873
|
+
|
874
|
+
// Adding instructions.
|
875
|
+
HInstruction* AddInstruction(HInstruction* instr);
|
876
|
+
void AddSimulate(BailoutId id,
|
877
|
+
RemovableSimulate removable = FIXED_SIMULATE);
|
878
|
+
|
879
|
+
protected:
|
880
|
+
virtual bool BuildGraph() = 0;
|
881
|
+
|
882
|
+
HBasicBlock* CreateBasicBlock(HEnvironment* env);
|
883
|
+
HBasicBlock* CreateLoopHeaderBlock();
|
884
|
+
|
885
|
+
// Building common constructs
|
886
|
+
HInstruction* BuildExternalArrayElementAccess(
|
887
|
+
HValue* external_elements,
|
888
|
+
HValue* checked_key,
|
889
|
+
HValue* val,
|
890
|
+
HValue* dependency,
|
891
|
+
ElementsKind elements_kind,
|
892
|
+
bool is_store);
|
893
|
+
|
894
|
+
HInstruction* BuildFastElementAccess(
|
895
|
+
HValue* elements,
|
896
|
+
HValue* checked_key,
|
897
|
+
HValue* val,
|
898
|
+
HValue* dependency,
|
899
|
+
ElementsKind elements_kind,
|
900
|
+
bool is_store);
|
901
|
+
|
902
|
+
HInstruction* BuildUncheckedMonomorphicElementAccess(
|
903
|
+
HValue* object,
|
904
|
+
HValue* key,
|
905
|
+
HValue* val,
|
906
|
+
HCheckMaps* mapcheck,
|
907
|
+
bool is_js_array,
|
908
|
+
ElementsKind elements_kind,
|
909
|
+
bool is_store,
|
910
|
+
Representation checked_index_representation = Representation::None());
|
911
|
+
|
912
|
+
HInstruction* BuildStoreMap(HValue* object, HValue* map, BailoutId id);
|
913
|
+
HInstruction* BuildStoreMap(HValue* object, Handle<Map> map, BailoutId id);
|
914
|
+
|
915
|
+
class IfBuilder {
|
916
|
+
public:
|
917
|
+
IfBuilder(HGraphBuilder* builder,
|
918
|
+
BailoutId id = BailoutId::StubEntry());
|
919
|
+
~IfBuilder() {
|
920
|
+
if (!finished_) End();
|
921
|
+
}
|
922
|
+
|
923
|
+
void BeginTrue(HValue* left, HValue* right, Token::Value token);
|
924
|
+
void BeginFalse();
|
925
|
+
void End();
|
926
|
+
|
927
|
+
private:
|
928
|
+
HGraphBuilder* builder_;
|
929
|
+
bool finished_;
|
930
|
+
HBasicBlock* true_block_;
|
931
|
+
HBasicBlock* false_block_;
|
932
|
+
HBasicBlock* merge_block_;
|
933
|
+
BailoutId id_;
|
934
|
+
|
935
|
+
Zone* zone() { return builder_->zone(); }
|
936
|
+
};
|
937
|
+
|
938
|
+
class LoopBuilder {
|
939
|
+
public:
|
940
|
+
enum Direction {
|
941
|
+
kPreIncrement,
|
942
|
+
kPostIncrement,
|
943
|
+
kPreDecrement,
|
944
|
+
kPostDecrement
|
945
|
+
};
|
946
|
+
|
947
|
+
LoopBuilder(HGraphBuilder* builder,
|
948
|
+
HValue* context,
|
949
|
+
Direction direction,
|
950
|
+
BailoutId id = BailoutId::StubEntry());
|
951
|
+
~LoopBuilder() {
|
952
|
+
ASSERT(finished_);
|
953
|
+
}
|
954
|
+
|
955
|
+
HValue* BeginBody(HValue* initial, HValue* terminating, Token::Value token);
|
956
|
+
void EndBody();
|
957
|
+
|
958
|
+
private:
|
959
|
+
HGraphBuilder* builder_;
|
960
|
+
HValue* context_;
|
961
|
+
HInstruction* increment_;
|
962
|
+
HPhi* phi_;
|
963
|
+
HBasicBlock* header_block_;
|
964
|
+
HBasicBlock* body_block_;
|
965
|
+
HBasicBlock* exit_block_;
|
966
|
+
Direction direction_;
|
967
|
+
BailoutId id_;
|
968
|
+
bool finished_;
|
969
|
+
|
970
|
+
Zone* zone() { return builder_->zone(); }
|
971
|
+
};
|
972
|
+
|
973
|
+
HValue* BuildAllocateElements(HContext* context,
|
974
|
+
ElementsKind kind,
|
975
|
+
HValue* capacity);
|
976
|
+
|
977
|
+
void BuildCopyElements(HContext* context,
|
978
|
+
HValue* from_elements,
|
979
|
+
ElementsKind from_elements_kind,
|
980
|
+
HValue* to_elements,
|
981
|
+
ElementsKind to_elements_kind,
|
982
|
+
HValue* length);
|
983
|
+
|
984
|
+
private:
|
985
|
+
HGraphBuilder();
|
986
|
+
CompilationInfo* info_;
|
987
|
+
HGraph* graph_;
|
988
|
+
HBasicBlock* current_block_;
|
989
|
+
};
|
990
|
+
|
991
|
+
|
992
|
+
class HOptimizedGraphBuilder: public HGraphBuilder, public AstVisitor {
|
769
993
|
public:
|
770
994
|
enum BreakType { BREAK, CONTINUE };
|
771
995
|
enum SwitchType { UNKNOWN_SWITCH, SMI_SWITCH, STRING_SWITCH };
|
@@ -801,7 +1025,8 @@ class HGraphBuilder: public AstVisitor {
|
|
801
1025
|
// structures mirroring BreakableStatement nesting.
|
802
1026
|
class BreakAndContinueScope BASE_EMBEDDED {
|
803
1027
|
public:
|
804
|
-
BreakAndContinueScope(BreakAndContinueInfo* info,
|
1028
|
+
BreakAndContinueScope(BreakAndContinueInfo* info,
|
1029
|
+
HOptimizedGraphBuilder* owner)
|
805
1030
|
: info_(info), owner_(owner), next_(owner->break_scope()) {
|
806
1031
|
owner->set_break_scope(this);
|
807
1032
|
}
|
@@ -809,7 +1034,7 @@ class HGraphBuilder: public AstVisitor {
|
|
809
1034
|
~BreakAndContinueScope() { owner_->set_break_scope(next_); }
|
810
1035
|
|
811
1036
|
BreakAndContinueInfo* info() { return info_; }
|
812
|
-
|
1037
|
+
HOptimizedGraphBuilder* owner() { return owner_; }
|
813
1038
|
BreakAndContinueScope* next() { return next_; }
|
814
1039
|
|
815
1040
|
// Search the break stack for a break or continue target.
|
@@ -817,30 +1042,21 @@ class HGraphBuilder: public AstVisitor {
|
|
817
1042
|
|
818
1043
|
private:
|
819
1044
|
BreakAndContinueInfo* info_;
|
820
|
-
|
1045
|
+
HOptimizedGraphBuilder* owner_;
|
821
1046
|
BreakAndContinueScope* next_;
|
822
1047
|
};
|
823
1048
|
|
824
|
-
|
1049
|
+
HOptimizedGraphBuilder(CompilationInfo* info, TypeFeedbackOracle* oracle);
|
825
1050
|
|
826
|
-
|
1051
|
+
virtual bool BuildGraph();
|
827
1052
|
|
828
1053
|
// Simple accessors.
|
829
|
-
HGraph* graph() const { return graph_; }
|
830
1054
|
BreakAndContinueScope* break_scope() const { return break_scope_; }
|
831
1055
|
void set_break_scope(BreakAndContinueScope* head) { break_scope_ = head; }
|
832
1056
|
|
833
|
-
HBasicBlock* current_block() const { return current_block_; }
|
834
|
-
void set_current_block(HBasicBlock* block) { current_block_ = block; }
|
835
|
-
HEnvironment* environment() const {
|
836
|
-
return current_block()->last_environment();
|
837
|
-
}
|
838
|
-
|
839
1057
|
bool inline_bailout() { return inline_bailout_; }
|
840
1058
|
|
841
|
-
|
842
|
-
HInstruction* AddInstruction(HInstruction* instr);
|
843
|
-
void AddSimulate(int ast_id);
|
1059
|
+
void AddSoftDeoptimize();
|
844
1060
|
|
845
1061
|
// Bailout environment manipulation.
|
846
1062
|
void Push(HValue* value) { environment()->Push(value); }
|
@@ -850,7 +1066,7 @@ class HGraphBuilder: public AstVisitor {
|
|
850
1066
|
|
851
1067
|
HBasicBlock* CreateJoin(HBasicBlock* first,
|
852
1068
|
HBasicBlock* second,
|
853
|
-
|
1069
|
+
BailoutId join_id);
|
854
1070
|
|
855
1071
|
TypeFeedbackOracle* oracle() const { return function_state()->oracle(); }
|
856
1072
|
|
@@ -858,9 +1074,18 @@ class HGraphBuilder: public AstVisitor {
|
|
858
1074
|
|
859
1075
|
void VisitDeclarations(ZoneList<Declaration*>* declarations);
|
860
1076
|
|
1077
|
+
void* operator new(size_t size, Zone* zone) {
|
1078
|
+
return zone->New(static_cast<int>(size));
|
1079
|
+
}
|
1080
|
+
void operator delete(void* pointer, Zone* zone) { }
|
1081
|
+
void operator delete(void* pointer) { }
|
1082
|
+
|
1083
|
+
DEFINE_AST_VISITOR_SUBCLASS_MEMBERS();
|
1084
|
+
|
861
1085
|
private:
|
862
1086
|
// Type of a member function that generates inline code for a native function.
|
863
|
-
typedef void (
|
1087
|
+
typedef void (HOptimizedGraphBuilder::*InlineFunctionGenerator)
|
1088
|
+
(CallRuntime* call);
|
864
1089
|
|
865
1090
|
// Forward declarations for inner scope classes.
|
866
1091
|
class SubgraphScope;
|
@@ -963,9 +1188,8 @@ class HGraphBuilder: public AstVisitor {
|
|
963
1188
|
HBasicBlock* true_block,
|
964
1189
|
HBasicBlock* false_block);
|
965
1190
|
|
966
|
-
// Visit an argument subexpression and emit a push to the outgoing
|
967
|
-
|
968
|
-
HValue* VisitArgument(Expression* expr);
|
1191
|
+
// Visit an argument subexpression and emit a push to the outgoing arguments.
|
1192
|
+
void VisitArgument(Expression* expr);
|
969
1193
|
|
970
1194
|
void VisitArgumentList(ZoneList<Expression*>* arguments);
|
971
1195
|
|
@@ -980,10 +1204,6 @@ class HGraphBuilder: public AstVisitor {
|
|
980
1204
|
// to push them as outgoing parameters.
|
981
1205
|
template <class Instruction> HInstruction* PreProcessCall(Instruction* call);
|
982
1206
|
|
983
|
-
void TraceRepresentation(Token::Value op,
|
984
|
-
TypeInfo info,
|
985
|
-
HValue* value,
|
986
|
-
Representation rep);
|
987
1207
|
static Representation ToRepresentation(TypeInfo info);
|
988
1208
|
|
989
1209
|
void SetUpScope(Scope* scope);
|
@@ -993,9 +1213,6 @@ class HGraphBuilder: public AstVisitor {
|
|
993
1213
|
AST_NODE_LIST(DECLARE_VISIT)
|
994
1214
|
#undef DECLARE_VISIT
|
995
1215
|
|
996
|
-
HBasicBlock* CreateBasicBlock(HEnvironment* env);
|
997
|
-
HBasicBlock* CreateLoopHeaderBlock();
|
998
|
-
|
999
1216
|
// Helpers for flow graph construction.
|
1000
1217
|
enum GlobalPropertyAccess {
|
1001
1218
|
kUseCell,
|
@@ -1014,14 +1231,18 @@ class HGraphBuilder: public AstVisitor {
|
|
1014
1231
|
int InliningAstSize(Handle<JSFunction> target);
|
1015
1232
|
bool TryInline(CallKind call_kind,
|
1016
1233
|
Handle<JSFunction> target,
|
1017
|
-
|
1018
|
-
HValue*
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1234
|
+
int arguments_count,
|
1235
|
+
HValue* implicit_return_value,
|
1236
|
+
BailoutId ast_id,
|
1237
|
+
BailoutId return_id,
|
1238
|
+
InliningKind inlining_kind);
|
1022
1239
|
|
1023
1240
|
bool TryInlineCall(Call* expr, bool drop_extra = false);
|
1024
|
-
bool TryInlineConstruct(CallNew* expr, HValue*
|
1241
|
+
bool TryInlineConstruct(CallNew* expr, HValue* implicit_return_value);
|
1242
|
+
bool TryInlineGetter(Handle<JSFunction> getter, Property* prop);
|
1243
|
+
bool TryInlineSetter(Handle<JSFunction> setter,
|
1244
|
+
Assignment* assignment,
|
1245
|
+
HValue* implicit_return_value);
|
1025
1246
|
bool TryInlineBuiltinMethodCall(Call* expr,
|
1026
1247
|
HValue* receiver,
|
1027
1248
|
Handle<Map> receiver_map,
|
@@ -1038,7 +1259,7 @@ class HGraphBuilder: public AstVisitor {
|
|
1038
1259
|
void HandleGlobalVariableAssignment(Variable* var,
|
1039
1260
|
HValue* value,
|
1040
1261
|
int position,
|
1041
|
-
|
1262
|
+
BailoutId ast_id);
|
1042
1263
|
|
1043
1264
|
void HandlePropertyAssignment(Assignment* expr);
|
1044
1265
|
void HandleCompoundAssignment(Assignment* expr);
|
@@ -1070,25 +1291,13 @@ class HGraphBuilder: public AstVisitor {
|
|
1070
1291
|
HValue* right);
|
1071
1292
|
HInstruction* BuildIncrement(bool returns_original_input,
|
1072
1293
|
CountOperation* expr);
|
1073
|
-
HLoadNamedField* BuildLoadNamedField(HValue* object,
|
1074
|
-
Property* expr,
|
1075
|
-
Handle<Map> type,
|
1076
|
-
LookupResult* result,
|
1077
|
-
bool smi_and_map_check);
|
1078
|
-
HInstruction* BuildLoadNamedGeneric(HValue* object, Property* expr);
|
1079
1294
|
HInstruction* BuildLoadKeyedGeneric(HValue* object,
|
1080
1295
|
HValue* key);
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
bool is_store);
|
1087
|
-
HInstruction* BuildFastElementAccess(HValue* elements,
|
1088
|
-
HValue* checked_key,
|
1089
|
-
HValue* val,
|
1090
|
-
ElementsKind elements_kind,
|
1091
|
-
bool is_store);
|
1296
|
+
|
1297
|
+
HInstruction* TryBuildConsolidatedElementLoad(HValue* object,
|
1298
|
+
HValue* key,
|
1299
|
+
HValue* val,
|
1300
|
+
SmallMapList* maps);
|
1092
1301
|
|
1093
1302
|
HInstruction* BuildMonomorphicElementAccess(HValue* object,
|
1094
1303
|
HValue* key,
|
@@ -1096,11 +1305,12 @@ class HGraphBuilder: public AstVisitor {
|
|
1096
1305
|
HValue* dependency,
|
1097
1306
|
Handle<Map> map,
|
1098
1307
|
bool is_store);
|
1308
|
+
|
1099
1309
|
HValue* HandlePolymorphicElementAccess(HValue* object,
|
1100
1310
|
HValue* key,
|
1101
1311
|
HValue* val,
|
1102
1312
|
Expression* prop,
|
1103
|
-
|
1313
|
+
BailoutId ast_id,
|
1104
1314
|
int position,
|
1105
1315
|
bool is_store,
|
1106
1316
|
bool* has_side_effects);
|
@@ -1109,42 +1319,65 @@ class HGraphBuilder: public AstVisitor {
|
|
1109
1319
|
HValue* key,
|
1110
1320
|
HValue* val,
|
1111
1321
|
Expression* expr,
|
1112
|
-
|
1322
|
+
BailoutId ast_id,
|
1113
1323
|
int position,
|
1114
1324
|
bool is_store,
|
1115
1325
|
bool* has_side_effects);
|
1116
1326
|
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1327
|
+
HLoadNamedField* BuildLoadNamedField(HValue* object,
|
1328
|
+
Handle<Map> map,
|
1329
|
+
LookupResult* result);
|
1330
|
+
HInstruction* BuildLoadNamedGeneric(HValue* object,
|
1331
|
+
Handle<String> name,
|
1332
|
+
Property* expr);
|
1333
|
+
HInstruction* BuildCallGetter(HValue* object,
|
1334
|
+
Handle<Map> map,
|
1335
|
+
Handle<JSFunction> getter,
|
1336
|
+
Handle<JSObject> holder);
|
1337
|
+
HInstruction* BuildLoadNamedMonomorphic(HValue* object,
|
1338
|
+
Handle<String> name,
|
1339
|
+
Property* expr,
|
1340
|
+
Handle<Map> map);
|
1341
|
+
|
1342
|
+
void AddCheckMapsWithTransitions(HValue* object,
|
1343
|
+
Handle<Map> map);
|
1344
|
+
|
1127
1345
|
HInstruction* BuildStoreNamedField(HValue* object,
|
1128
1346
|
Handle<String> name,
|
1129
1347
|
HValue* value,
|
1130
|
-
Handle<Map>
|
1131
|
-
LookupResult* lookup
|
1132
|
-
bool smi_and_map_check);
|
1348
|
+
Handle<Map> map,
|
1349
|
+
LookupResult* lookup);
|
1133
1350
|
HInstruction* BuildStoreNamedGeneric(HValue* object,
|
1134
1351
|
Handle<String> name,
|
1135
1352
|
HValue* value);
|
1353
|
+
HInstruction* BuildCallSetter(HValue* object,
|
1354
|
+
HValue* value,
|
1355
|
+
Handle<Map> map,
|
1356
|
+
Handle<JSFunction> setter,
|
1357
|
+
Handle<JSObject> holder);
|
1358
|
+
HInstruction* BuildStoreNamedMonomorphic(HValue* object,
|
1359
|
+
Handle<String> name,
|
1360
|
+
HValue* value,
|
1361
|
+
Handle<Map> map);
|
1136
1362
|
HInstruction* BuildStoreKeyedGeneric(HValue* object,
|
1137
1363
|
HValue* key,
|
1138
1364
|
HValue* value);
|
1139
1365
|
|
1140
1366
|
HValue* BuildContextChainWalk(Variable* var);
|
1141
1367
|
|
1142
|
-
|
1368
|
+
HInstruction* BuildThisFunction();
|
1369
|
+
|
1370
|
+
void AddCheckPrototypeMaps(Handle<JSObject> holder,
|
1371
|
+
Handle<Map> receiver_map);
|
1372
|
+
|
1373
|
+
void AddCheckConstantFunction(Handle<JSObject> holder,
|
1143
1374
|
HValue* receiver,
|
1144
|
-
Handle<Map> receiver_map
|
1145
|
-
bool smi_and_map_check);
|
1375
|
+
Handle<Map> receiver_map);
|
1146
1376
|
|
1147
|
-
|
1377
|
+
bool MatchRotateRight(HValue* left,
|
1378
|
+
HValue* right,
|
1379
|
+
HValue** operand,
|
1380
|
+
HValue** shift_amount);
|
1148
1381
|
|
1149
1382
|
// The translation state of the currently-being-translated function.
|
1150
1383
|
FunctionState* function_state_;
|
@@ -1159,29 +1392,25 @@ class HGraphBuilder: public AstVisitor {
|
|
1159
1392
|
// A stack of breakable statements entered.
|
1160
1393
|
BreakAndContinueScope* break_scope_;
|
1161
1394
|
|
1162
|
-
HGraph* graph_;
|
1163
|
-
HBasicBlock* current_block_;
|
1164
|
-
|
1165
1395
|
int inlined_count_;
|
1166
1396
|
ZoneList<Handle<Object> > globals_;
|
1167
1397
|
|
1168
|
-
Zone* zone_;
|
1169
|
-
|
1170
1398
|
bool inline_bailout_;
|
1171
1399
|
|
1172
1400
|
friend class FunctionState; // Pushes and pops the state stack.
|
1173
1401
|
friend class AstContext; // Pushes and pops the AST context stack.
|
1402
|
+
friend class KeyedLoadFastElementStub;
|
1174
1403
|
|
1175
|
-
DISALLOW_COPY_AND_ASSIGN(
|
1404
|
+
DISALLOW_COPY_AND_ASSIGN(HOptimizedGraphBuilder);
|
1176
1405
|
};
|
1177
1406
|
|
1178
1407
|
|
1179
|
-
Zone* AstContext::zone() { return owner_->zone(); }
|
1408
|
+
Zone* AstContext::zone() const { return owner_->zone(); }
|
1180
1409
|
|
1181
1410
|
|
1182
1411
|
class HValueMap: public ZoneObject {
|
1183
1412
|
public:
|
1184
|
-
HValueMap()
|
1413
|
+
explicit HValueMap(Zone* zone)
|
1185
1414
|
: array_size_(0),
|
1186
1415
|
lists_size_(0),
|
1187
1416
|
count_(0),
|
@@ -1189,15 +1418,15 @@ class HValueMap: public ZoneObject {
|
|
1189
1418
|
array_(NULL),
|
1190
1419
|
lists_(NULL),
|
1191
1420
|
free_list_head_(kNil) {
|
1192
|
-
ResizeLists(kInitialSize);
|
1193
|
-
Resize(kInitialSize);
|
1421
|
+
ResizeLists(kInitialSize, zone);
|
1422
|
+
Resize(kInitialSize, zone);
|
1194
1423
|
}
|
1195
1424
|
|
1196
1425
|
void Kill(GVNFlagSet flags);
|
1197
1426
|
|
1198
|
-
void Add(HValue* value) {
|
1427
|
+
void Add(HValue* value, Zone* zone) {
|
1199
1428
|
present_flags_.Add(value->gvn_flags());
|
1200
|
-
Insert(value);
|
1429
|
+
Insert(value, zone);
|
1201
1430
|
}
|
1202
1431
|
|
1203
1432
|
HValue* Lookup(HValue* value) const;
|
@@ -1221,9 +1450,9 @@ class HValueMap: public ZoneObject {
|
|
1221
1450
|
|
1222
1451
|
HValueMap(Zone* zone, const HValueMap* other);
|
1223
1452
|
|
1224
|
-
void Resize(int new_size);
|
1225
|
-
void ResizeLists(int new_size);
|
1226
|
-
void Insert(HValue* value);
|
1453
|
+
void Resize(int new_size, Zone* zone);
|
1454
|
+
void ResizeLists(int new_size, Zone* zone);
|
1455
|
+
void Insert(HValue* value, Zone* zone);
|
1227
1456
|
uint32_t Bound(uint32_t value) const { return value & (array_size_ - 1); }
|
1228
1457
|
|
1229
1458
|
int array_size_;
|
@@ -1242,6 +1471,7 @@ class HSideEffectMap BASE_EMBEDDED {
|
|
1242
1471
|
public:
|
1243
1472
|
HSideEffectMap();
|
1244
1473
|
explicit HSideEffectMap(HSideEffectMap* other);
|
1474
|
+
HSideEffectMap& operator= (const HSideEffectMap& other);
|
1245
1475
|
|
1246
1476
|
void Kill(GVNFlagSet flags);
|
1247
1477
|
|
@@ -1275,12 +1505,22 @@ class HStatistics: public Malloced {
|
|
1275
1505
|
return instance.get();
|
1276
1506
|
}
|
1277
1507
|
|
1508
|
+
void IncrementSubtotals(int64_t create_graph,
|
1509
|
+
int64_t optimize_graph,
|
1510
|
+
int64_t generate_code) {
|
1511
|
+
create_graph_ += create_graph;
|
1512
|
+
optimize_graph_ += optimize_graph;
|
1513
|
+
generate_code_ += generate_code;
|
1514
|
+
}
|
1515
|
+
|
1278
1516
|
private:
|
1279
1517
|
HStatistics()
|
1280
1518
|
: timing_(5),
|
1281
1519
|
names_(5),
|
1282
1520
|
sizes_(5),
|
1283
|
-
|
1521
|
+
create_graph_(0),
|
1522
|
+
optimize_graph_(0),
|
1523
|
+
generate_code_(0),
|
1284
1524
|
total_size_(0),
|
1285
1525
|
full_code_gen_(0),
|
1286
1526
|
source_size_(0) { }
|
@@ -1288,7 +1528,9 @@ class HStatistics: public Malloced {
|
|
1288
1528
|
List<int64_t> timing_;
|
1289
1529
|
List<const char*> names_;
|
1290
1530
|
List<unsigned> sizes_;
|
1291
|
-
int64_t
|
1531
|
+
int64_t create_graph_;
|
1532
|
+
int64_t optimize_graph_;
|
1533
|
+
int64_t generate_code_;
|
1292
1534
|
unsigned total_size_;
|
1293
1535
|
int64_t full_code_gen_;
|
1294
1536
|
double source_size_;
|
@@ -1298,7 +1540,6 @@ class HStatistics: public Malloced {
|
|
1298
1540
|
class HPhase BASE_EMBEDDED {
|
1299
1541
|
public:
|
1300
1542
|
static const char* const kFullCodeGen;
|
1301
|
-
static const char* const kTotal;
|
1302
1543
|
|
1303
1544
|
explicit HPhase(const char* name) { Begin(name, NULL, NULL, NULL); }
|
1304
1545
|
HPhase(const char* name, HGraph* graph) {
|
@@ -1333,7 +1574,7 @@ class HPhase BASE_EMBEDDED {
|
|
1333
1574
|
|
1334
1575
|
class HTracer: public Malloced {
|
1335
1576
|
public:
|
1336
|
-
void TraceCompilation(
|
1577
|
+
void TraceCompilation(CompilationInfo* info);
|
1337
1578
|
void TraceHydrogen(const char* name, HGraph* graph);
|
1338
1579
|
void TraceLithium(const char* name, LChunk* chunk);
|
1339
1580
|
void TraceLiveRanges(const char* name, LAllocator* allocator);
|
@@ -1375,7 +1616,7 @@ class HTracer: public Malloced {
|
|
1375
1616
|
WriteChars(filename, "", 0, false);
|
1376
1617
|
}
|
1377
1618
|
|
1378
|
-
void TraceLiveRange(LiveRange* range, const char* type);
|
1619
|
+
void TraceLiveRange(LiveRange* range, const char* type, Zone* zone);
|
1379
1620
|
void Trace(const char* name, HGraph* graph, LChunk* chunk);
|
1380
1621
|
void FlushToFile();
|
1381
1622
|
|