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
@@ -43,6 +43,7 @@ class LCodeGen;
|
|
43
43
|
#define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \
|
44
44
|
V(AccessArgumentsAt) \
|
45
45
|
V(AddI) \
|
46
|
+
V(Allocate) \
|
46
47
|
V(AllocateObject) \
|
47
48
|
V(ApplyArguments) \
|
48
49
|
V(ArgumentsElements) \
|
@@ -87,6 +88,7 @@ class LCodeGen;
|
|
87
88
|
V(Deoptimize) \
|
88
89
|
V(DivI) \
|
89
90
|
V(DoubleToI) \
|
91
|
+
V(DummyUse) \
|
90
92
|
V(ElementsKind) \
|
91
93
|
V(FastLiteral) \
|
92
94
|
V(FixedArrayBaseLength) \
|
@@ -102,6 +104,7 @@ class LCodeGen;
|
|
102
104
|
V(InstanceOfKnownGlobal) \
|
103
105
|
V(InstructionGap) \
|
104
106
|
V(Integer32ToDouble) \
|
107
|
+
V(Uint32ToDouble) \
|
105
108
|
V(InvokeFunction) \
|
106
109
|
V(IsConstructCallAndBranch) \
|
107
110
|
V(IsNilAndBranch) \
|
@@ -109,7 +112,6 @@ class LCodeGen;
|
|
109
112
|
V(IsStringAndBranch) \
|
110
113
|
V(IsSmiAndBranch) \
|
111
114
|
V(IsUndetectableAndBranch) \
|
112
|
-
V(StringCompareAndBranch) \
|
113
115
|
V(JSArrayLength) \
|
114
116
|
V(Label) \
|
115
117
|
V(LazyBailout) \
|
@@ -119,18 +121,21 @@ class LCodeGen;
|
|
119
121
|
V(LoadFunctionPrototype) \
|
120
122
|
V(LoadGlobalCell) \
|
121
123
|
V(LoadGlobalGeneric) \
|
122
|
-
V(
|
123
|
-
V(LoadKeyedFastDoubleElement) \
|
124
|
+
V(LoadKeyed) \
|
124
125
|
V(LoadKeyedGeneric) \
|
125
|
-
V(LoadKeyedSpecializedArrayElement) \
|
126
126
|
V(LoadNamedField) \
|
127
127
|
V(LoadNamedFieldPolymorphic) \
|
128
128
|
V(LoadNamedGeneric) \
|
129
|
+
V(MapEnumLength) \
|
130
|
+
V(MathExp) \
|
131
|
+
V(MathFloorOfDiv) \
|
132
|
+
V(MathMinMax) \
|
129
133
|
V(MathPowHalf) \
|
130
134
|
V(ModI) \
|
131
135
|
V(MulI) \
|
132
136
|
V(NumberTagD) \
|
133
137
|
V(NumberTagI) \
|
138
|
+
V(NumberTagU) \
|
134
139
|
V(NumberUntagD) \
|
135
140
|
V(ObjectLiteral) \
|
136
141
|
V(OsrEntry) \
|
@@ -141,6 +146,7 @@ class LCodeGen;
|
|
141
146
|
V(PushArgument) \
|
142
147
|
V(RegExpLiteral) \
|
143
148
|
V(Return) \
|
149
|
+
V(SeqStringSetChar) \
|
144
150
|
V(ShiftI) \
|
145
151
|
V(SmiTag) \
|
146
152
|
V(SmiUntag) \
|
@@ -148,15 +154,14 @@ class LCodeGen;
|
|
148
154
|
V(StoreContextSlot) \
|
149
155
|
V(StoreGlobalCell) \
|
150
156
|
V(StoreGlobalGeneric) \
|
151
|
-
V(
|
152
|
-
V(StoreKeyedFastElement) \
|
157
|
+
V(StoreKeyed) \
|
153
158
|
V(StoreKeyedGeneric) \
|
154
|
-
V(StoreKeyedSpecializedArrayElement) \
|
155
159
|
V(StoreNamedField) \
|
156
160
|
V(StoreNamedGeneric) \
|
157
161
|
V(StringAdd) \
|
158
162
|
V(StringCharCodeAt) \
|
159
163
|
V(StringCharFromCode) \
|
164
|
+
V(StringCompareAndBranch) \
|
160
165
|
V(StringLength) \
|
161
166
|
V(SubI) \
|
162
167
|
V(TaggedToI) \
|
@@ -164,6 +169,7 @@ class LCodeGen;
|
|
164
169
|
V(Throw) \
|
165
170
|
V(ToFastProperties) \
|
166
171
|
V(TransitionElementsKind) \
|
172
|
+
V(TrapAllocationMemento) \
|
167
173
|
V(Typeof) \
|
168
174
|
V(TypeofIsAndBranch) \
|
169
175
|
V(UnaryMathOperation) \
|
@@ -247,16 +253,15 @@ class LInstruction: public ZoneObject {
|
|
247
253
|
void MarkAsCall() { is_call_ = true; }
|
248
254
|
|
249
255
|
// Interface to the register allocator and iterators.
|
250
|
-
bool
|
256
|
+
bool ClobbersTemps() const { return is_call_; }
|
257
|
+
bool ClobbersRegisters() const { return is_call_; }
|
258
|
+
virtual bool ClobbersDoubleRegisters() const {
|
259
|
+
return is_call_ || !CpuFeatures::IsSupported(SSE2);
|
260
|
+
}
|
251
261
|
|
252
262
|
virtual bool HasResult() const = 0;
|
253
263
|
virtual LOperand* result() = 0;
|
254
264
|
|
255
|
-
virtual int InputCount() = 0;
|
256
|
-
virtual LOperand* InputAt(int i) = 0;
|
257
|
-
virtual int TempCount() = 0;
|
258
|
-
virtual LOperand* TempAt(int i) = 0;
|
259
|
-
|
260
265
|
LOperand* FirstInput() { return InputAt(0); }
|
261
266
|
LOperand* Output() { return HasResult() ? result() : NULL; }
|
262
267
|
|
@@ -265,6 +270,15 @@ class LInstruction: public ZoneObject {
|
|
265
270
|
#endif
|
266
271
|
|
267
272
|
private:
|
273
|
+
// Iterator support.
|
274
|
+
friend class InputIterator;
|
275
|
+
virtual int InputCount() = 0;
|
276
|
+
virtual LOperand* InputAt(int i) = 0;
|
277
|
+
|
278
|
+
friend class TempIterator;
|
279
|
+
virtual int TempCount() = 0;
|
280
|
+
virtual LOperand* TempAt(int i) = 0;
|
281
|
+
|
268
282
|
LEnvironment* environment_;
|
269
283
|
SetOncePointer<LPointerMap> pointer_map_;
|
270
284
|
HValue* hydrogen_value_;
|
@@ -284,16 +298,18 @@ class LTemplateInstruction: public LInstruction {
|
|
284
298
|
void set_result(LOperand* operand) { results_[0] = operand; }
|
285
299
|
LOperand* result() { return results_[0]; }
|
286
300
|
|
287
|
-
int InputCount() { return I; }
|
288
|
-
LOperand* InputAt(int i) { return inputs_[i]; }
|
289
|
-
|
290
|
-
int TempCount() { return T; }
|
291
|
-
LOperand* TempAt(int i) { return temps_[i]; }
|
292
|
-
|
293
301
|
protected:
|
294
302
|
EmbeddedContainer<LOperand*, R> results_;
|
295
303
|
EmbeddedContainer<LOperand*, I> inputs_;
|
296
304
|
EmbeddedContainer<LOperand*, T> temps_;
|
305
|
+
|
306
|
+
private:
|
307
|
+
// Iterator support.
|
308
|
+
virtual int InputCount() { return I; }
|
309
|
+
virtual LOperand* InputAt(int i) { return inputs_[i]; }
|
310
|
+
|
311
|
+
virtual int TempCount() { return T; }
|
312
|
+
virtual LOperand* TempAt(int i) { return temps_[i]; }
|
297
313
|
};
|
298
314
|
|
299
315
|
|
@@ -327,8 +343,10 @@ class LGap: public LTemplateInstruction<0, 0, 0> {
|
|
327
343
|
LAST_INNER_POSITION = AFTER
|
328
344
|
};
|
329
345
|
|
330
|
-
LParallelMove* GetOrCreateParallelMove(InnerPosition pos) {
|
331
|
-
if (parallel_moves_[pos] == NULL)
|
346
|
+
LParallelMove* GetOrCreateParallelMove(InnerPosition pos, Zone* zone) {
|
347
|
+
if (parallel_moves_[pos] == NULL) {
|
348
|
+
parallel_moves_[pos] = new(zone) LParallelMove(zone);
|
349
|
+
}
|
332
350
|
return parallel_moves_[pos];
|
333
351
|
}
|
334
352
|
|
@@ -345,6 +363,7 @@ class LGap: public LTemplateInstruction<0, 0, 0> {
|
|
345
363
|
class LInstructionGap: public LGap {
|
346
364
|
public:
|
347
365
|
explicit LInstructionGap(HBasicBlock* block) : LGap(block) { }
|
366
|
+
virtual bool ClobbersDoubleRegisters() const { return false; }
|
348
367
|
|
349
368
|
DECLARE_CONCRETE_INSTRUCTION(InstructionGap, "gap")
|
350
369
|
};
|
@@ -371,6 +390,15 @@ class LLazyBailout: public LTemplateInstruction<0, 0, 0> {
|
|
371
390
|
};
|
372
391
|
|
373
392
|
|
393
|
+
class LDummyUse: public LTemplateInstruction<1, 1, 0> {
|
394
|
+
public:
|
395
|
+
explicit LDummyUse(LOperand* value) {
|
396
|
+
inputs_[0] = value;
|
397
|
+
}
|
398
|
+
DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use")
|
399
|
+
};
|
400
|
+
|
401
|
+
|
374
402
|
class LDeoptimize: public LTemplateInstruction<0, 0, 0> {
|
375
403
|
public:
|
376
404
|
DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
|
@@ -411,11 +439,11 @@ class LCallStub: public LTemplateInstruction<1, 1, 0> {
|
|
411
439
|
inputs_[0] = context;
|
412
440
|
}
|
413
441
|
|
442
|
+
LOperand* context() { return inputs_[0]; }
|
443
|
+
|
414
444
|
DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
|
415
445
|
DECLARE_HYDROGEN_ACCESSOR(CallStub)
|
416
446
|
|
417
|
-
LOperand* context() { return inputs_[0]; }
|
418
|
-
|
419
447
|
TranscendentalCache::Type transcendental_type() {
|
420
448
|
return hydrogen()->transcendental_type();
|
421
449
|
}
|
@@ -455,10 +483,11 @@ class LWrapReceiver: public LTemplateInstruction<1, 2, 1> {
|
|
455
483
|
temps_[0] = temp;
|
456
484
|
}
|
457
485
|
|
458
|
-
DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver")
|
459
|
-
|
460
486
|
LOperand* receiver() { return inputs_[0]; }
|
461
487
|
LOperand* function() { return inputs_[1]; }
|
488
|
+
LOperand* temp() { return temps_[0]; }
|
489
|
+
|
490
|
+
DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver")
|
462
491
|
};
|
463
492
|
|
464
493
|
|
@@ -474,12 +503,12 @@ class LApplyArguments: public LTemplateInstruction<1, 4, 0> {
|
|
474
503
|
inputs_[3] = elements;
|
475
504
|
}
|
476
505
|
|
477
|
-
DECLARE_CONCRETE_INSTRUCTION(ApplyArguments, "apply-arguments")
|
478
|
-
|
479
506
|
LOperand* function() { return inputs_[0]; }
|
480
507
|
LOperand* receiver() { return inputs_[1]; }
|
481
508
|
LOperand* length() { return inputs_[2]; }
|
482
509
|
LOperand* elements() { return inputs_[3]; }
|
510
|
+
|
511
|
+
DECLARE_CONCRETE_INSTRUCTION(ApplyArguments, "apply-arguments")
|
483
512
|
};
|
484
513
|
|
485
514
|
|
@@ -491,12 +520,12 @@ class LAccessArgumentsAt: public LTemplateInstruction<1, 3, 0> {
|
|
491
520
|
inputs_[2] = index;
|
492
521
|
}
|
493
522
|
|
494
|
-
DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at")
|
495
|
-
|
496
523
|
LOperand* arguments() { return inputs_[0]; }
|
497
524
|
LOperand* length() { return inputs_[1]; }
|
498
525
|
LOperand* index() { return inputs_[2]; }
|
499
526
|
|
527
|
+
DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at")
|
528
|
+
|
500
529
|
virtual void PrintDataTo(StringStream* stream);
|
501
530
|
};
|
502
531
|
|
@@ -507,6 +536,8 @@ class LArgumentsLength: public LTemplateInstruction<1, 1, 0> {
|
|
507
536
|
inputs_[0] = elements;
|
508
537
|
}
|
509
538
|
|
539
|
+
LOperand* elements() { return inputs_[0]; }
|
540
|
+
|
510
541
|
DECLARE_CONCRETE_INSTRUCTION(ArgumentsLength, "arguments-length")
|
511
542
|
};
|
512
543
|
|
@@ -526,6 +557,10 @@ class LModI: public LTemplateInstruction<1, 2, 1> {
|
|
526
557
|
temps_[0] = temp;
|
527
558
|
}
|
528
559
|
|
560
|
+
LOperand* left() { return inputs_[0]; }
|
561
|
+
LOperand* right() { return inputs_[1]; }
|
562
|
+
LOperand* temp() { return temps_[0]; }
|
563
|
+
|
529
564
|
DECLARE_CONCRETE_INSTRUCTION(ModI, "mod-i")
|
530
565
|
DECLARE_HYDROGEN_ACCESSOR(Mod)
|
531
566
|
};
|
@@ -539,11 +574,35 @@ class LDivI: public LTemplateInstruction<1, 2, 1> {
|
|
539
574
|
temps_[0] = temp;
|
540
575
|
}
|
541
576
|
|
577
|
+
LOperand* left() { return inputs_[0]; }
|
578
|
+
LOperand* right() { return inputs_[1]; }
|
579
|
+
|
580
|
+
bool is_flooring() { return hydrogen_value()->IsMathFloorOfDiv(); }
|
581
|
+
|
542
582
|
DECLARE_CONCRETE_INSTRUCTION(DivI, "div-i")
|
543
583
|
DECLARE_HYDROGEN_ACCESSOR(Div)
|
544
584
|
};
|
545
585
|
|
546
586
|
|
587
|
+
class LMathFloorOfDiv: public LTemplateInstruction<1, 2, 1> {
|
588
|
+
public:
|
589
|
+
LMathFloorOfDiv(LOperand* left,
|
590
|
+
LOperand* right,
|
591
|
+
LOperand* temp = NULL) {
|
592
|
+
inputs_[0] = left;
|
593
|
+
inputs_[1] = right;
|
594
|
+
temps_[0] = temp;
|
595
|
+
}
|
596
|
+
|
597
|
+
LOperand* left() { return inputs_[0]; }
|
598
|
+
LOperand* right() { return inputs_[1]; }
|
599
|
+
LOperand* temp() { return temps_[0]; }
|
600
|
+
|
601
|
+
DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div")
|
602
|
+
DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv)
|
603
|
+
};
|
604
|
+
|
605
|
+
|
547
606
|
class LMulI: public LTemplateInstruction<1, 2, 1> {
|
548
607
|
public:
|
549
608
|
LMulI(LOperand* left, LOperand* right, LOperand* temp) {
|
@@ -552,6 +611,10 @@ class LMulI: public LTemplateInstruction<1, 2, 1> {
|
|
552
611
|
temps_[0] = temp;
|
553
612
|
}
|
554
613
|
|
614
|
+
LOperand* left() { return inputs_[0]; }
|
615
|
+
LOperand* right() { return inputs_[1]; }
|
616
|
+
LOperand* temp() { return temps_[0]; }
|
617
|
+
|
555
618
|
DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i")
|
556
619
|
DECLARE_HYDROGEN_ACCESSOR(Mul)
|
557
620
|
};
|
@@ -564,12 +627,15 @@ class LCmpIDAndBranch: public LControlInstruction<2, 0> {
|
|
564
627
|
inputs_[1] = right;
|
565
628
|
}
|
566
629
|
|
630
|
+
LOperand* left() { return inputs_[0]; }
|
631
|
+
LOperand* right() { return inputs_[1]; }
|
632
|
+
|
567
633
|
DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
|
568
634
|
DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
|
569
635
|
|
570
636
|
Token::Value op() const { return hydrogen()->token(); }
|
571
637
|
bool is_double() const {
|
572
|
-
return hydrogen()->
|
638
|
+
return hydrogen()->representation().IsDouble();
|
573
639
|
}
|
574
640
|
|
575
641
|
virtual void PrintDataTo(StringStream* stream);
|
@@ -594,6 +660,27 @@ class LUnaryMathOperation: public LTemplateInstruction<1, 2, 0> {
|
|
594
660
|
};
|
595
661
|
|
596
662
|
|
663
|
+
class LMathExp: public LTemplateInstruction<1, 1, 2> {
|
664
|
+
public:
|
665
|
+
LMathExp(LOperand* value,
|
666
|
+
LOperand* temp1,
|
667
|
+
LOperand* temp2) {
|
668
|
+
inputs_[0] = value;
|
669
|
+
temps_[0] = temp1;
|
670
|
+
temps_[1] = temp2;
|
671
|
+
ExternalReference::InitializeMathExpData();
|
672
|
+
}
|
673
|
+
|
674
|
+
LOperand* value() { return inputs_[0]; }
|
675
|
+
LOperand* temp1() { return temps_[0]; }
|
676
|
+
LOperand* temp2() { return temps_[1]; }
|
677
|
+
|
678
|
+
DECLARE_CONCRETE_INSTRUCTION(MathExp, "math-exp")
|
679
|
+
|
680
|
+
virtual void PrintDataTo(StringStream* stream);
|
681
|
+
};
|
682
|
+
|
683
|
+
|
597
684
|
class LMathPowHalf: public LTemplateInstruction<1, 2, 1> {
|
598
685
|
public:
|
599
686
|
LMathPowHalf(LOperand* context, LOperand* value, LOperand* temp) {
|
@@ -619,6 +706,9 @@ class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
|
|
619
706
|
inputs_[1] = right;
|
620
707
|
}
|
621
708
|
|
709
|
+
LOperand* left() { return inputs_[0]; }
|
710
|
+
LOperand* right() { return inputs_[1]; }
|
711
|
+
|
622
712
|
DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch,
|
623
713
|
"cmp-object-eq-and-branch")
|
624
714
|
};
|
@@ -630,6 +720,8 @@ class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
|
|
630
720
|
inputs_[0] = left;
|
631
721
|
}
|
632
722
|
|
723
|
+
LOperand* left() { return inputs_[0]; }
|
724
|
+
|
633
725
|
DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
|
634
726
|
"cmp-constant-eq-and-branch")
|
635
727
|
DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
|
@@ -643,6 +735,9 @@ class LIsNilAndBranch: public LControlInstruction<1, 1> {
|
|
643
735
|
temps_[0] = temp;
|
644
736
|
}
|
645
737
|
|
738
|
+
LOperand* value() { return inputs_[0]; }
|
739
|
+
LOperand* temp() { return temps_[0]; }
|
740
|
+
|
646
741
|
DECLARE_CONCRETE_INSTRUCTION(IsNilAndBranch, "is-nil-and-branch")
|
647
742
|
DECLARE_HYDROGEN_ACCESSOR(IsNilAndBranch)
|
648
743
|
|
@@ -660,6 +755,9 @@ class LIsObjectAndBranch: public LControlInstruction<1, 1> {
|
|
660
755
|
temps_[0] = temp;
|
661
756
|
}
|
662
757
|
|
758
|
+
LOperand* value() { return inputs_[0]; }
|
759
|
+
LOperand* temp() { return temps_[0]; }
|
760
|
+
|
663
761
|
DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
|
664
762
|
|
665
763
|
virtual void PrintDataTo(StringStream* stream);
|
@@ -673,6 +771,9 @@ class LIsStringAndBranch: public LControlInstruction<1, 1> {
|
|
673
771
|
temps_[0] = temp;
|
674
772
|
}
|
675
773
|
|
774
|
+
LOperand* value() { return inputs_[0]; }
|
775
|
+
LOperand* temp() { return temps_[0]; }
|
776
|
+
|
676
777
|
DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch, "is-string-and-branch")
|
677
778
|
|
678
779
|
virtual void PrintDataTo(StringStream* stream);
|
@@ -685,6 +786,8 @@ class LIsSmiAndBranch: public LControlInstruction<1, 0> {
|
|
685
786
|
inputs_[0] = value;
|
686
787
|
}
|
687
788
|
|
789
|
+
LOperand* value() { return inputs_[0]; }
|
790
|
+
|
688
791
|
DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
|
689
792
|
DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
|
690
793
|
|
@@ -699,6 +802,9 @@ class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
|
|
699
802
|
temps_[0] = temp;
|
700
803
|
}
|
701
804
|
|
805
|
+
LOperand* value() { return inputs_[0]; }
|
806
|
+
LOperand* temp() { return temps_[0]; }
|
807
|
+
|
702
808
|
DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
|
703
809
|
"is-undetectable-and-branch")
|
704
810
|
|
@@ -714,6 +820,9 @@ class LStringCompareAndBranch: public LControlInstruction<3, 0> {
|
|
714
820
|
inputs_[2] = right;
|
715
821
|
}
|
716
822
|
|
823
|
+
LOperand* left() { return inputs_[1]; }
|
824
|
+
LOperand* right() { return inputs_[2]; }
|
825
|
+
|
717
826
|
DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch,
|
718
827
|
"string-compare-and-branch")
|
719
828
|
DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch)
|
@@ -731,6 +840,9 @@ class LHasInstanceTypeAndBranch: public LControlInstruction<1, 1> {
|
|
731
840
|
temps_[0] = temp;
|
732
841
|
}
|
733
842
|
|
843
|
+
LOperand* value() { return inputs_[0]; }
|
844
|
+
LOperand* temp() { return temps_[0]; }
|
845
|
+
|
734
846
|
DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
|
735
847
|
"has-instance-type-and-branch")
|
736
848
|
DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
|
@@ -745,6 +857,8 @@ class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
|
|
745
857
|
inputs_[0] = value;
|
746
858
|
}
|
747
859
|
|
860
|
+
LOperand* value() { return inputs_[0]; }
|
861
|
+
|
748
862
|
DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index")
|
749
863
|
DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex)
|
750
864
|
};
|
@@ -756,8 +870,11 @@ class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
|
|
756
870
|
inputs_[0] = value;
|
757
871
|
}
|
758
872
|
|
873
|
+
LOperand* value() { return inputs_[0]; }
|
874
|
+
|
759
875
|
DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
|
760
876
|
"has-cached-array-index-and-branch")
|
877
|
+
|
761
878
|
virtual void PrintDataTo(StringStream* stream);
|
762
879
|
};
|
763
880
|
|
@@ -768,6 +885,8 @@ class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
|
|
768
885
|
temps_[0] = temp;
|
769
886
|
}
|
770
887
|
|
888
|
+
LOperand* temp() { return temps_[0]; }
|
889
|
+
|
771
890
|
DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch,
|
772
891
|
"is-construct-call-and-branch")
|
773
892
|
};
|
@@ -781,6 +900,10 @@ class LClassOfTestAndBranch: public LControlInstruction<1, 2> {
|
|
781
900
|
temps_[1] = temp2;
|
782
901
|
}
|
783
902
|
|
903
|
+
LOperand* value() { return inputs_[0]; }
|
904
|
+
LOperand* temp() { return temps_[0]; }
|
905
|
+
LOperand* temp2() { return temps_[1]; }
|
906
|
+
|
784
907
|
DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
|
785
908
|
"class-of-test-and-branch")
|
786
909
|
DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
|
@@ -812,9 +935,9 @@ class LInstanceOf: public LTemplateInstruction<1, 3, 0> {
|
|
812
935
|
inputs_[2] = right;
|
813
936
|
}
|
814
937
|
|
815
|
-
DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
|
816
|
-
|
817
938
|
LOperand* context() { return inputs_[0]; }
|
939
|
+
|
940
|
+
DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
|
818
941
|
};
|
819
942
|
|
820
943
|
|
@@ -826,6 +949,9 @@ class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 2, 1> {
|
|
826
949
|
temps_[0] = temp;
|
827
950
|
}
|
828
951
|
|
952
|
+
LOperand* value() { return inputs_[1]; }
|
953
|
+
LOperand* temp() { return temps_[0]; }
|
954
|
+
|
829
955
|
DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal,
|
830
956
|
"instance-of-known-global")
|
831
957
|
DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal)
|
@@ -854,6 +980,7 @@ class LBoundsCheck: public LTemplateInstruction<0, 2, 0> {
|
|
854
980
|
LOperand* length() { return inputs_[1]; }
|
855
981
|
|
856
982
|
DECLARE_CONCRETE_INSTRUCTION(BoundsCheck, "bounds-check")
|
983
|
+
DECLARE_HYDROGEN_ACCESSOR(BoundsCheck)
|
857
984
|
};
|
858
985
|
|
859
986
|
|
@@ -864,10 +991,13 @@ class LBitI: public LTemplateInstruction<1, 2, 0> {
|
|
864
991
|
inputs_[1] = right;
|
865
992
|
}
|
866
993
|
|
867
|
-
|
994
|
+
LOperand* left() { return inputs_[0]; }
|
995
|
+
LOperand* right() { return inputs_[1]; }
|
868
996
|
|
869
997
|
DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i")
|
870
998
|
DECLARE_HYDROGEN_ACCESSOR(Bitwise)
|
999
|
+
|
1000
|
+
Token::Value op() const { return hydrogen()->op(); }
|
871
1001
|
};
|
872
1002
|
|
873
1003
|
|
@@ -879,12 +1009,14 @@ class LShiftI: public LTemplateInstruction<1, 2, 0> {
|
|
879
1009
|
inputs_[1] = right;
|
880
1010
|
}
|
881
1011
|
|
882
|
-
|
883
|
-
|
884
|
-
bool can_deopt() const { return can_deopt_; }
|
1012
|
+
LOperand* left() { return inputs_[0]; }
|
1013
|
+
LOperand* right() { return inputs_[1]; }
|
885
1014
|
|
886
1015
|
DECLARE_CONCRETE_INSTRUCTION(ShiftI, "shift-i")
|
887
1016
|
|
1017
|
+
Token::Value op() const { return op_; }
|
1018
|
+
bool can_deopt() const { return can_deopt_; }
|
1019
|
+
|
888
1020
|
private:
|
889
1021
|
Token::Value op_;
|
890
1022
|
bool can_deopt_;
|
@@ -898,6 +1030,9 @@ class LSubI: public LTemplateInstruction<1, 2, 0> {
|
|
898
1030
|
inputs_[1] = right;
|
899
1031
|
}
|
900
1032
|
|
1033
|
+
LOperand* left() { return inputs_[0]; }
|
1034
|
+
LOperand* right() { return inputs_[1]; }
|
1035
|
+
|
901
1036
|
DECLARE_CONCRETE_INSTRUCTION(SubI, "sub-i")
|
902
1037
|
DECLARE_HYDROGEN_ACCESSOR(Sub)
|
903
1038
|
};
|
@@ -918,6 +1053,8 @@ class LConstantD: public LTemplateInstruction<1, 0, 1> {
|
|
918
1053
|
temps_[0] = temp;
|
919
1054
|
}
|
920
1055
|
|
1056
|
+
LOperand* temp() { return temps_[0]; }
|
1057
|
+
|
921
1058
|
DECLARE_CONCRETE_INSTRUCTION(ConstantD, "constant-d")
|
922
1059
|
DECLARE_HYDROGEN_ACCESSOR(Constant)
|
923
1060
|
|
@@ -936,11 +1073,14 @@ class LConstantT: public LTemplateInstruction<1, 0, 0> {
|
|
936
1073
|
|
937
1074
|
class LBranch: public LControlInstruction<1, 1> {
|
938
1075
|
public:
|
939
|
-
|
1076
|
+
LBranch(LOperand* value, LOperand* temp) {
|
940
1077
|
inputs_[0] = value;
|
941
1078
|
temps_[0] = temp;
|
942
1079
|
}
|
943
1080
|
|
1081
|
+
LOperand* value() { return inputs_[0]; }
|
1082
|
+
LOperand* temp() { return temps_[0]; }
|
1083
|
+
|
944
1084
|
DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
|
945
1085
|
DECLARE_HYDROGEN_ACCESSOR(Branch)
|
946
1086
|
|
@@ -954,6 +1094,8 @@ class LCmpMapAndBranch: public LTemplateInstruction<0, 1, 0> {
|
|
954
1094
|
inputs_[0] = value;
|
955
1095
|
}
|
956
1096
|
|
1097
|
+
LOperand* value() { return inputs_[0]; }
|
1098
|
+
|
957
1099
|
DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch")
|
958
1100
|
DECLARE_HYDROGEN_ACCESSOR(CompareMap)
|
959
1101
|
|
@@ -975,6 +1117,8 @@ class LJSArrayLength: public LTemplateInstruction<1, 1, 0> {
|
|
975
1117
|
inputs_[0] = value;
|
976
1118
|
}
|
977
1119
|
|
1120
|
+
LOperand* value() { return inputs_[0]; }
|
1121
|
+
|
978
1122
|
DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length")
|
979
1123
|
DECLARE_HYDROGEN_ACCESSOR(JSArrayLength)
|
980
1124
|
};
|
@@ -986,18 +1130,34 @@ class LFixedArrayBaseLength: public LTemplateInstruction<1, 1, 0> {
|
|
986
1130
|
inputs_[0] = value;
|
987
1131
|
}
|
988
1132
|
|
1133
|
+
LOperand* value() { return inputs_[0]; }
|
1134
|
+
|
989
1135
|
DECLARE_CONCRETE_INSTRUCTION(FixedArrayBaseLength,
|
990
1136
|
"fixed-array-base-length")
|
991
1137
|
DECLARE_HYDROGEN_ACCESSOR(FixedArrayBaseLength)
|
992
1138
|
};
|
993
1139
|
|
994
1140
|
|
1141
|
+
class LMapEnumLength: public LTemplateInstruction<1, 1, 0> {
|
1142
|
+
public:
|
1143
|
+
explicit LMapEnumLength(LOperand* value) {
|
1144
|
+
inputs_[0] = value;
|
1145
|
+
}
|
1146
|
+
|
1147
|
+
LOperand* value() { return inputs_[0]; }
|
1148
|
+
|
1149
|
+
DECLARE_CONCRETE_INSTRUCTION(MapEnumLength, "map-enum-length")
|
1150
|
+
};
|
1151
|
+
|
1152
|
+
|
995
1153
|
class LElementsKind: public LTemplateInstruction<1, 1, 0> {
|
996
1154
|
public:
|
997
1155
|
explicit LElementsKind(LOperand* value) {
|
998
1156
|
inputs_[0] = value;
|
999
1157
|
}
|
1000
1158
|
|
1159
|
+
LOperand* value() { return inputs_[0]; }
|
1160
|
+
|
1001
1161
|
DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
|
1002
1162
|
DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
|
1003
1163
|
};
|
@@ -1010,6 +1170,9 @@ class LValueOf: public LTemplateInstruction<1, 1, 1> {
|
|
1010
1170
|
temps_[0] = temp;
|
1011
1171
|
}
|
1012
1172
|
|
1173
|
+
LOperand* value() { return inputs_[0]; }
|
1174
|
+
LOperand* temp() { return temps_[0]; }
|
1175
|
+
|
1013
1176
|
DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
|
1014
1177
|
DECLARE_HYDROGEN_ACCESSOR(ValueOf)
|
1015
1178
|
};
|
@@ -1023,6 +1186,9 @@ class LDateField: public LTemplateInstruction<1, 1, 1> {
|
|
1023
1186
|
temps_[0] = temp;
|
1024
1187
|
}
|
1025
1188
|
|
1189
|
+
LOperand* date() { return inputs_[0]; }
|
1190
|
+
LOperand* temp() { return temps_[0]; }
|
1191
|
+
|
1026
1192
|
DECLARE_CONCRETE_INSTRUCTION(DateField, "date-field")
|
1027
1193
|
DECLARE_HYDROGEN_ACCESSOR(DateField)
|
1028
1194
|
|
@@ -1033,6 +1199,30 @@ class LDateField: public LTemplateInstruction<1, 1, 1> {
|
|
1033
1199
|
};
|
1034
1200
|
|
1035
1201
|
|
1202
|
+
class LSeqStringSetChar: public LTemplateInstruction<1, 3, 0> {
|
1203
|
+
public:
|
1204
|
+
LSeqStringSetChar(String::Encoding encoding,
|
1205
|
+
LOperand* string,
|
1206
|
+
LOperand* index,
|
1207
|
+
LOperand* value) : encoding_(encoding) {
|
1208
|
+
inputs_[0] = string;
|
1209
|
+
inputs_[1] = index;
|
1210
|
+
inputs_[2] = value;
|
1211
|
+
}
|
1212
|
+
|
1213
|
+
String::Encoding encoding() { return encoding_; }
|
1214
|
+
LOperand* string() { return inputs_[0]; }
|
1215
|
+
LOperand* index() { return inputs_[1]; }
|
1216
|
+
LOperand* value() { return inputs_[2]; }
|
1217
|
+
|
1218
|
+
DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char")
|
1219
|
+
DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar)
|
1220
|
+
|
1221
|
+
private:
|
1222
|
+
String::Encoding encoding_;
|
1223
|
+
};
|
1224
|
+
|
1225
|
+
|
1036
1226
|
class LThrow: public LTemplateInstruction<0, 2, 0> {
|
1037
1227
|
public:
|
1038
1228
|
LThrow(LOperand* context, LOperand* value) {
|
@@ -1053,6 +1243,8 @@ class LBitNotI: public LTemplateInstruction<1, 1, 0> {
|
|
1053
1243
|
inputs_[0] = value;
|
1054
1244
|
}
|
1055
1245
|
|
1246
|
+
LOperand* value() { return inputs_[0]; }
|
1247
|
+
|
1056
1248
|
DECLARE_CONCRETE_INSTRUCTION(BitNotI, "bit-not-i")
|
1057
1249
|
};
|
1058
1250
|
|
@@ -1064,11 +1256,29 @@ class LAddI: public LTemplateInstruction<1, 2, 0> {
|
|
1064
1256
|
inputs_[1] = right;
|
1065
1257
|
}
|
1066
1258
|
|
1259
|
+
LOperand* left() { return inputs_[0]; }
|
1260
|
+
LOperand* right() { return inputs_[1]; }
|
1261
|
+
|
1067
1262
|
DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i")
|
1068
1263
|
DECLARE_HYDROGEN_ACCESSOR(Add)
|
1069
1264
|
};
|
1070
1265
|
|
1071
1266
|
|
1267
|
+
class LMathMinMax: public LTemplateInstruction<1, 2, 0> {
|
1268
|
+
public:
|
1269
|
+
LMathMinMax(LOperand* left, LOperand* right) {
|
1270
|
+
inputs_[0] = left;
|
1271
|
+
inputs_[1] = right;
|
1272
|
+
}
|
1273
|
+
|
1274
|
+
LOperand* left() { return inputs_[0]; }
|
1275
|
+
LOperand* right() { return inputs_[1]; }
|
1276
|
+
|
1277
|
+
DECLARE_CONCRETE_INSTRUCTION(MathMinMax, "min-max")
|
1278
|
+
DECLARE_HYDROGEN_ACCESSOR(MathMinMax)
|
1279
|
+
};
|
1280
|
+
|
1281
|
+
|
1072
1282
|
class LPower: public LTemplateInstruction<1, 2, 0> {
|
1073
1283
|
public:
|
1074
1284
|
LPower(LOperand* left, LOperand* right) {
|
@@ -1076,6 +1286,9 @@ class LPower: public LTemplateInstruction<1, 2, 0> {
|
|
1076
1286
|
inputs_[1] = right;
|
1077
1287
|
}
|
1078
1288
|
|
1289
|
+
LOperand* left() { return inputs_[0]; }
|
1290
|
+
LOperand* right() { return inputs_[1]; }
|
1291
|
+
|
1079
1292
|
DECLARE_CONCRETE_INSTRUCTION(Power, "power")
|
1080
1293
|
DECLARE_HYDROGEN_ACCESSOR(Power)
|
1081
1294
|
};
|
@@ -1087,6 +1300,8 @@ class LRandom: public LTemplateInstruction<1, 1, 0> {
|
|
1087
1300
|
inputs_[0] = global_object;
|
1088
1301
|
}
|
1089
1302
|
|
1303
|
+
LOperand* global_object() { return inputs_[0]; }
|
1304
|
+
|
1090
1305
|
DECLARE_CONCRETE_INSTRUCTION(Random, "random")
|
1091
1306
|
DECLARE_HYDROGEN_ACCESSOR(Random)
|
1092
1307
|
};
|
@@ -1100,6 +1315,9 @@ class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
|
|
1100
1315
|
inputs_[1] = right;
|
1101
1316
|
}
|
1102
1317
|
|
1318
|
+
LOperand* left() { return inputs_[0]; }
|
1319
|
+
LOperand* right() { return inputs_[1]; }
|
1320
|
+
|
1103
1321
|
Token::Value op() const { return op_; }
|
1104
1322
|
|
1105
1323
|
virtual Opcode opcode() const { return LInstruction::kArithmeticD; }
|
@@ -1123,24 +1341,26 @@ class LArithmeticT: public LTemplateInstruction<1, 3, 0> {
|
|
1123
1341
|
inputs_[2] = right;
|
1124
1342
|
}
|
1125
1343
|
|
1344
|
+
LOperand* context() { return inputs_[0]; }
|
1345
|
+
LOperand* left() { return inputs_[1]; }
|
1346
|
+
LOperand* right() { return inputs_[2]; }
|
1347
|
+
|
1126
1348
|
virtual Opcode opcode() const { return LInstruction::kArithmeticT; }
|
1127
1349
|
virtual void CompileToNative(LCodeGen* generator);
|
1128
1350
|
virtual const char* Mnemonic() const;
|
1129
1351
|
|
1130
1352
|
Token::Value op() const { return op_; }
|
1131
|
-
LOperand* context() { return inputs_[0]; }
|
1132
|
-
LOperand* left() { return inputs_[1]; }
|
1133
|
-
LOperand* right() { return inputs_[2]; }
|
1134
1353
|
|
1135
1354
|
private:
|
1136
1355
|
Token::Value op_;
|
1137
1356
|
};
|
1138
1357
|
|
1139
1358
|
|
1140
|
-
class LReturn: public LTemplateInstruction<0,
|
1359
|
+
class LReturn: public LTemplateInstruction<0, 2, 0> {
|
1141
1360
|
public:
|
1142
|
-
explicit LReturn(LOperand* value) {
|
1361
|
+
explicit LReturn(LOperand* value, LOperand* context) {
|
1143
1362
|
inputs_[0] = value;
|
1363
|
+
inputs_[1] = context;
|
1144
1364
|
}
|
1145
1365
|
|
1146
1366
|
DECLARE_CONCRETE_INSTRUCTION(Return, "return")
|
@@ -1153,10 +1373,10 @@ class LLoadNamedField: public LTemplateInstruction<1, 1, 0> {
|
|
1153
1373
|
inputs_[0] = object;
|
1154
1374
|
}
|
1155
1375
|
|
1376
|
+
LOperand* object() { return inputs_[0]; }
|
1377
|
+
|
1156
1378
|
DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field")
|
1157
1379
|
DECLARE_HYDROGEN_ACCESSOR(LoadNamedField)
|
1158
|
-
|
1159
|
-
LOperand* object() { return inputs_[0]; }
|
1160
1380
|
};
|
1161
1381
|
|
1162
1382
|
|
@@ -1167,11 +1387,11 @@ class LLoadNamedFieldPolymorphic: public LTemplateInstruction<1, 2, 0> {
|
|
1167
1387
|
inputs_[1] = object;
|
1168
1388
|
}
|
1169
1389
|
|
1170
|
-
DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field-polymorphic")
|
1171
|
-
DECLARE_HYDROGEN_ACCESSOR(LoadNamedFieldPolymorphic)
|
1172
|
-
|
1173
1390
|
LOperand* context() { return inputs_[0]; }
|
1174
1391
|
LOperand* object() { return inputs_[1]; }
|
1392
|
+
|
1393
|
+
DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field-polymorphic")
|
1394
|
+
DECLARE_HYDROGEN_ACCESSOR(LoadNamedFieldPolymorphic)
|
1175
1395
|
};
|
1176
1396
|
|
1177
1397
|
|
@@ -1182,11 +1402,12 @@ class LLoadNamedGeneric: public LTemplateInstruction<1, 2, 0> {
|
|
1182
1402
|
inputs_[1] = object;
|
1183
1403
|
}
|
1184
1404
|
|
1405
|
+
LOperand* context() { return inputs_[0]; }
|
1406
|
+
LOperand* object() { return inputs_[1]; }
|
1407
|
+
|
1185
1408
|
DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
|
1186
1409
|
DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
|
1187
1410
|
|
1188
|
-
LOperand* context() { return inputs_[0]; }
|
1189
|
-
LOperand* object() { return inputs_[1]; }
|
1190
1411
|
Handle<Object> name() const { return hydrogen()->name(); }
|
1191
1412
|
};
|
1192
1413
|
|
@@ -1198,10 +1419,11 @@ class LLoadFunctionPrototype: public LTemplateInstruction<1, 1, 1> {
|
|
1198
1419
|
temps_[0] = temp;
|
1199
1420
|
}
|
1200
1421
|
|
1422
|
+
LOperand* function() { return inputs_[0]; }
|
1423
|
+
LOperand* temp() { return temps_[0]; }
|
1424
|
+
|
1201
1425
|
DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype")
|
1202
1426
|
DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype)
|
1203
|
-
|
1204
|
-
LOperand* function() { return inputs_[0]; }
|
1205
1427
|
};
|
1206
1428
|
|
1207
1429
|
|
@@ -1211,6 +1433,8 @@ class LLoadElements: public LTemplateInstruction<1, 1, 0> {
|
|
1211
1433
|
inputs_[0] = object;
|
1212
1434
|
}
|
1213
1435
|
|
1436
|
+
LOperand* object() { return inputs_[0]; }
|
1437
|
+
|
1214
1438
|
DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements")
|
1215
1439
|
};
|
1216
1440
|
|
@@ -1221,62 +1445,55 @@ class LLoadExternalArrayPointer: public LTemplateInstruction<1, 1, 0> {
|
|
1221
1445
|
inputs_[0] = object;
|
1222
1446
|
}
|
1223
1447
|
|
1448
|
+
LOperand* object() { return inputs_[0]; }
|
1449
|
+
|
1224
1450
|
DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer,
|
1225
1451
|
"load-external-array-pointer")
|
1226
1452
|
};
|
1227
1453
|
|
1228
1454
|
|
1229
|
-
class
|
1455
|
+
class LLoadKeyed: public LTemplateInstruction<1, 2, 0> {
|
1230
1456
|
public:
|
1231
|
-
|
1457
|
+
LLoadKeyed(LOperand* elements, LOperand* key) {
|
1232
1458
|
inputs_[0] = elements;
|
1233
1459
|
inputs_[1] = key;
|
1234
1460
|
}
|
1235
|
-
|
1236
|
-
DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element")
|
1237
|
-
DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement)
|
1238
|
-
|
1239
1461
|
LOperand* elements() { return inputs_[0]; }
|
1240
1462
|
LOperand* key() { return inputs_[1]; }
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1463
|
+
ElementsKind elements_kind() const {
|
1464
|
+
return hydrogen()->elements_kind();
|
1465
|
+
}
|
1466
|
+
bool is_external() const {
|
1467
|
+
return hydrogen()->is_external();
|
1468
|
+
}
|
1244
1469
|
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
inputs_[0] = elements;
|
1249
|
-
inputs_[1] = key;
|
1470
|
+
virtual bool ClobbersDoubleRegisters() const {
|
1471
|
+
return !CpuFeatures::IsSupported(SSE2) &&
|
1472
|
+
!IsDoubleOrFloatElementsKind(hydrogen()->elements_kind());
|
1250
1473
|
}
|
1251
1474
|
|
1252
|
-
DECLARE_CONCRETE_INSTRUCTION(
|
1253
|
-
|
1254
|
-
DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement)
|
1475
|
+
DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
|
1476
|
+
DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
|
1255
1477
|
|
1256
|
-
|
1257
|
-
LOperand* key() { return inputs_[1]; }
|
1478
|
+
virtual void PrintDataTo(StringStream* stream);
|
1258
1479
|
uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
|
1263
|
-
public:
|
1264
|
-
LLoadKeyedSpecializedArrayElement(LOperand* external_pointer, LOperand* key) {
|
1265
|
-
inputs_[0] = external_pointer;
|
1266
|
-
inputs_[1] = key;
|
1480
|
+
bool key_is_smi() {
|
1481
|
+
return hydrogen()->key()->representation().IsTagged();
|
1267
1482
|
}
|
1483
|
+
};
|
1268
1484
|
|
1269
|
-
DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement,
|
1270
|
-
"load-keyed-specialized-array-element")
|
1271
|
-
DECLARE_HYDROGEN_ACCESSOR(LoadKeyedSpecializedArrayElement)
|
1272
1485
|
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1486
|
+
inline static bool ExternalArrayOpRequiresTemp(
|
1487
|
+
Representation key_representation,
|
1488
|
+
ElementsKind elements_kind) {
|
1489
|
+
// Operations that require the key to be divided by two to be converted into
|
1490
|
+
// an index cannot fold the scale operation into a load and need an extra
|
1491
|
+
// temp register to do the work.
|
1492
|
+
return key_representation.IsTagged() &&
|
1493
|
+
(elements_kind == EXTERNAL_BYTE_ELEMENTS ||
|
1494
|
+
elements_kind == EXTERNAL_UNSIGNED_BYTE_ELEMENTS ||
|
1495
|
+
elements_kind == EXTERNAL_PIXEL_ELEMENTS);
|
1496
|
+
}
|
1280
1497
|
|
1281
1498
|
|
1282
1499
|
class LLoadKeyedGeneric: public LTemplateInstruction<1, 3, 0> {
|
@@ -1287,11 +1504,11 @@ class LLoadKeyedGeneric: public LTemplateInstruction<1, 3, 0> {
|
|
1287
1504
|
inputs_[2] = key;
|
1288
1505
|
}
|
1289
1506
|
|
1290
|
-
DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
|
1291
|
-
|
1292
1507
|
LOperand* context() { return inputs_[0]; }
|
1293
1508
|
LOperand* object() { return inputs_[1]; }
|
1294
1509
|
LOperand* key() { return inputs_[2]; }
|
1510
|
+
|
1511
|
+
DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
|
1295
1512
|
};
|
1296
1513
|
|
1297
1514
|
|
@@ -1309,11 +1526,12 @@ class LLoadGlobalGeneric: public LTemplateInstruction<1, 2, 0> {
|
|
1309
1526
|
inputs_[1] = global_object;
|
1310
1527
|
}
|
1311
1528
|
|
1529
|
+
LOperand* context() { return inputs_[0]; }
|
1530
|
+
LOperand* global_object() { return inputs_[1]; }
|
1531
|
+
|
1312
1532
|
DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic")
|
1313
1533
|
DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric)
|
1314
1534
|
|
1315
|
-
LOperand* context() { return inputs_[0]; }
|
1316
|
-
LOperand* global_object() { return inputs_[1]; }
|
1317
1535
|
Handle<Object> name() const { return hydrogen()->name(); }
|
1318
1536
|
bool for_typeof() const { return hydrogen()->for_typeof(); }
|
1319
1537
|
};
|
@@ -1325,10 +1543,10 @@ class LStoreGlobalCell: public LTemplateInstruction<0, 1, 0> {
|
|
1325
1543
|
inputs_[0] = value;
|
1326
1544
|
}
|
1327
1545
|
|
1546
|
+
LOperand* value() { return inputs_[0]; }
|
1547
|
+
|
1328
1548
|
DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell")
|
1329
1549
|
DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell)
|
1330
|
-
|
1331
|
-
LOperand* value() { return inputs_[0]; }
|
1332
1550
|
};
|
1333
1551
|
|
1334
1552
|
|
@@ -1342,13 +1560,14 @@ class LStoreGlobalGeneric: public LTemplateInstruction<0, 3, 0> {
|
|
1342
1560
|
inputs_[2] = value;
|
1343
1561
|
}
|
1344
1562
|
|
1563
|
+
LOperand* context() { return inputs_[0]; }
|
1564
|
+
LOperand* global_object() { return inputs_[1]; }
|
1565
|
+
LOperand* value() { return inputs_[2]; }
|
1566
|
+
|
1345
1567
|
DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic")
|
1346
1568
|
DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric)
|
1347
1569
|
|
1348
|
-
LOperand* context() { return InputAt(0); }
|
1349
|
-
LOperand* global_object() { return InputAt(1); }
|
1350
1570
|
Handle<Object> name() const { return hydrogen()->name(); }
|
1351
|
-
LOperand* value() { return InputAt(2); }
|
1352
1571
|
StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
1353
1572
|
};
|
1354
1573
|
|
@@ -1359,10 +1578,11 @@ class LLoadContextSlot: public LTemplateInstruction<1, 1, 0> {
|
|
1359
1578
|
inputs_[0] = context;
|
1360
1579
|
}
|
1361
1580
|
|
1581
|
+
LOperand* context() { return inputs_[0]; }
|
1582
|
+
|
1362
1583
|
DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot")
|
1363
1584
|
DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot)
|
1364
1585
|
|
1365
|
-
LOperand* context() { return InputAt(0); }
|
1366
1586
|
int slot_index() { return hydrogen()->slot_index(); }
|
1367
1587
|
|
1368
1588
|
virtual void PrintDataTo(StringStream* stream);
|
@@ -1377,11 +1597,13 @@ class LStoreContextSlot: public LTemplateInstruction<0, 2, 1> {
|
|
1377
1597
|
temps_[0] = temp;
|
1378
1598
|
}
|
1379
1599
|
|
1600
|
+
LOperand* context() { return inputs_[0]; }
|
1601
|
+
LOperand* value() { return inputs_[1]; }
|
1602
|
+
LOperand* temp() { return temps_[0]; }
|
1603
|
+
|
1380
1604
|
DECLARE_CONCRETE_INSTRUCTION(StoreContextSlot, "store-context-slot")
|
1381
1605
|
DECLARE_HYDROGEN_ACCESSOR(StoreContextSlot)
|
1382
1606
|
|
1383
|
-
LOperand* context() { return InputAt(0); }
|
1384
|
-
LOperand* value() { return InputAt(1); }
|
1385
1607
|
int slot_index() { return hydrogen()->slot_index(); }
|
1386
1608
|
|
1387
1609
|
virtual void PrintDataTo(StringStream* stream);
|
@@ -1394,6 +1616,8 @@ class LPushArgument: public LTemplateInstruction<0, 1, 0> {
|
|
1394
1616
|
inputs_[0] = value;
|
1395
1617
|
}
|
1396
1618
|
|
1619
|
+
LOperand* value() { return inputs_[0]; }
|
1620
|
+
|
1397
1621
|
DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument")
|
1398
1622
|
};
|
1399
1623
|
|
@@ -1421,6 +1645,7 @@ class LThisFunction: public LTemplateInstruction<1, 0, 0> {
|
|
1421
1645
|
class LContext: public LTemplateInstruction<1, 0, 0> {
|
1422
1646
|
public:
|
1423
1647
|
DECLARE_CONCRETE_INSTRUCTION(Context, "context")
|
1648
|
+
DECLARE_HYDROGEN_ACCESSOR(Context)
|
1424
1649
|
};
|
1425
1650
|
|
1426
1651
|
|
@@ -1430,9 +1655,9 @@ class LOuterContext: public LTemplateInstruction<1, 1, 0> {
|
|
1430
1655
|
inputs_[0] = context;
|
1431
1656
|
}
|
1432
1657
|
|
1433
|
-
|
1658
|
+
LOperand* context() { return inputs_[0]; }
|
1434
1659
|
|
1435
|
-
|
1660
|
+
DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
|
1436
1661
|
};
|
1437
1662
|
|
1438
1663
|
|
@@ -1442,6 +1667,8 @@ class LDeclareGlobals: public LTemplateInstruction<0, 1, 0> {
|
|
1442
1667
|
inputs_[0] = context;
|
1443
1668
|
}
|
1444
1669
|
|
1670
|
+
LOperand* context() { return inputs_[0]; }
|
1671
|
+
|
1445
1672
|
DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals")
|
1446
1673
|
DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals)
|
1447
1674
|
};
|
@@ -1453,9 +1680,9 @@ class LGlobalObject: public LTemplateInstruction<1, 1, 0> {
|
|
1453
1680
|
inputs_[0] = context;
|
1454
1681
|
}
|
1455
1682
|
|
1456
|
-
|
1683
|
+
LOperand* context() { return inputs_[0]; }
|
1457
1684
|
|
1458
|
-
|
1685
|
+
DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object")
|
1459
1686
|
};
|
1460
1687
|
|
1461
1688
|
|
@@ -1465,9 +1692,9 @@ class LGlobalReceiver: public LTemplateInstruction<1, 1, 0> {
|
|
1465
1692
|
inputs_[0] = global_object;
|
1466
1693
|
}
|
1467
1694
|
|
1468
|
-
|
1695
|
+
LOperand* global() { return inputs_[0]; }
|
1469
1696
|
|
1470
|
-
|
1697
|
+
DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver")
|
1471
1698
|
};
|
1472
1699
|
|
1473
1700
|
|
@@ -1490,12 +1717,12 @@ class LInvokeFunction: public LTemplateInstruction<1, 2, 0> {
|
|
1490
1717
|
inputs_[1] = function;
|
1491
1718
|
}
|
1492
1719
|
|
1493
|
-
DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
|
1494
|
-
DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
|
1495
|
-
|
1496
1720
|
LOperand* context() { return inputs_[0]; }
|
1497
1721
|
LOperand* function() { return inputs_[1]; }
|
1498
1722
|
|
1723
|
+
DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
|
1724
|
+
DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
|
1725
|
+
|
1499
1726
|
virtual void PrintDataTo(StringStream* stream);
|
1500
1727
|
|
1501
1728
|
int arity() const { return hydrogen()->argument_count() - 1; }
|
@@ -1510,12 +1737,12 @@ class LCallKeyed: public LTemplateInstruction<1, 2, 0> {
|
|
1510
1737
|
inputs_[1] = key;
|
1511
1738
|
}
|
1512
1739
|
|
1513
|
-
DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
|
1514
|
-
DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
|
1515
|
-
|
1516
1740
|
LOperand* context() { return inputs_[0]; }
|
1517
1741
|
LOperand* key() { return inputs_[1]; }
|
1518
1742
|
|
1743
|
+
DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
|
1744
|
+
DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
|
1745
|
+
|
1519
1746
|
virtual void PrintDataTo(StringStream* stream);
|
1520
1747
|
|
1521
1748
|
int arity() const { return hydrogen()->argument_count() - 1; }
|
@@ -1528,12 +1755,13 @@ class LCallNamed: public LTemplateInstruction<1, 1, 0> {
|
|
1528
1755
|
inputs_[0] = context;
|
1529
1756
|
}
|
1530
1757
|
|
1758
|
+
LOperand* context() { return inputs_[0]; }
|
1759
|
+
|
1531
1760
|
DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named")
|
1532
1761
|
DECLARE_HYDROGEN_ACCESSOR(CallNamed)
|
1533
1762
|
|
1534
1763
|
virtual void PrintDataTo(StringStream* stream);
|
1535
1764
|
|
1536
|
-
LOperand* context() { return inputs_[0]; }
|
1537
1765
|
Handle<String> name() const { return hydrogen()->name(); }
|
1538
1766
|
int arity() const { return hydrogen()->argument_count() - 1; }
|
1539
1767
|
};
|
@@ -1546,11 +1774,12 @@ class LCallFunction: public LTemplateInstruction<1, 2, 0> {
|
|
1546
1774
|
inputs_[1] = function;
|
1547
1775
|
}
|
1548
1776
|
|
1777
|
+
LOperand* context() { return inputs_[0]; }
|
1778
|
+
LOperand* function() { return inputs_[1]; }
|
1779
|
+
|
1549
1780
|
DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
|
1550
1781
|
DECLARE_HYDROGEN_ACCESSOR(CallFunction)
|
1551
1782
|
|
1552
|
-
LOperand* context() { return inputs_[0]; }
|
1553
|
-
LOperand* function() { return inputs_[1]; }
|
1554
1783
|
int arity() const { return hydrogen()->argument_count() - 1; }
|
1555
1784
|
};
|
1556
1785
|
|
@@ -1561,12 +1790,13 @@ class LCallGlobal: public LTemplateInstruction<1, 1, 0> {
|
|
1561
1790
|
inputs_[0] = context;
|
1562
1791
|
}
|
1563
1792
|
|
1793
|
+
LOperand* context() { return inputs_[0]; }
|
1794
|
+
|
1564
1795
|
DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global")
|
1565
1796
|
DECLARE_HYDROGEN_ACCESSOR(CallGlobal)
|
1566
1797
|
|
1567
1798
|
virtual void PrintDataTo(StringStream* stream);
|
1568
1799
|
|
1569
|
-
LOperand* context() { return inputs_[0]; }
|
1570
1800
|
Handle<String> name() const {return hydrogen()->name(); }
|
1571
1801
|
int arity() const { return hydrogen()->argument_count() - 1; }
|
1572
1802
|
};
|
@@ -1591,13 +1821,14 @@ class LCallNew: public LTemplateInstruction<1, 2, 0> {
|
|
1591
1821
|
inputs_[1] = constructor;
|
1592
1822
|
}
|
1593
1823
|
|
1824
|
+
LOperand* context() { return inputs_[0]; }
|
1825
|
+
LOperand* constructor() { return inputs_[1]; }
|
1826
|
+
|
1594
1827
|
DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
|
1595
1828
|
DECLARE_HYDROGEN_ACCESSOR(CallNew)
|
1596
1829
|
|
1597
1830
|
virtual void PrintDataTo(StringStream* stream);
|
1598
1831
|
|
1599
|
-
LOperand* context() { return inputs_[0]; }
|
1600
|
-
LOperand* constructor() { return inputs_[1]; }
|
1601
1832
|
int arity() const { return hydrogen()->argument_count() - 1; }
|
1602
1833
|
};
|
1603
1834
|
|
@@ -1607,10 +1838,12 @@ class LCallRuntime: public LTemplateInstruction<1, 1, 0> {
|
|
1607
1838
|
explicit LCallRuntime(LOperand* context) {
|
1608
1839
|
inputs_[0] = context;
|
1609
1840
|
}
|
1841
|
+
|
1842
|
+
LOperand* context() { return inputs_[0]; }
|
1843
|
+
|
1610
1844
|
DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
|
1611
1845
|
DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
|
1612
1846
|
|
1613
|
-
LOperand* context() { return inputs_[0]; }
|
1614
1847
|
const Runtime::Function* function() const { return hydrogen()->function(); }
|
1615
1848
|
int arity() const { return hydrogen()->argument_count(); }
|
1616
1849
|
};
|
@@ -1622,20 +1855,50 @@ class LInteger32ToDouble: public LTemplateInstruction<1, 1, 0> {
|
|
1622
1855
|
inputs_[0] = value;
|
1623
1856
|
}
|
1624
1857
|
|
1858
|
+
LOperand* value() { return inputs_[0]; }
|
1859
|
+
|
1625
1860
|
DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double")
|
1626
1861
|
};
|
1627
1862
|
|
1628
1863
|
|
1864
|
+
class LUint32ToDouble: public LTemplateInstruction<1, 1, 1> {
|
1865
|
+
public:
|
1866
|
+
explicit LUint32ToDouble(LOperand* value, LOperand* temp) {
|
1867
|
+
inputs_[0] = value;
|
1868
|
+
temps_[0] = temp;
|
1869
|
+
}
|
1870
|
+
|
1871
|
+
LOperand* value() { return inputs_[0]; }
|
1872
|
+
LOperand* temp() { return temps_[0]; }
|
1873
|
+
|
1874
|
+
DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double")
|
1875
|
+
};
|
1876
|
+
|
1877
|
+
|
1629
1878
|
class LNumberTagI: public LTemplateInstruction<1, 1, 0> {
|
1630
1879
|
public:
|
1631
1880
|
explicit LNumberTagI(LOperand* value) {
|
1632
1881
|
inputs_[0] = value;
|
1633
1882
|
}
|
1634
1883
|
|
1884
|
+
LOperand* value() { return inputs_[0]; }
|
1885
|
+
|
1635
1886
|
DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i")
|
1636
1887
|
};
|
1637
1888
|
|
1638
1889
|
|
1890
|
+
class LNumberTagU: public LTemplateInstruction<1, 1, 0> {
|
1891
|
+
public:
|
1892
|
+
explicit LNumberTagU(LOperand* value) {
|
1893
|
+
inputs_[0] = value;
|
1894
|
+
}
|
1895
|
+
|
1896
|
+
LOperand* value() { return inputs_[0]; }
|
1897
|
+
|
1898
|
+
DECLARE_CONCRETE_INSTRUCTION(NumberTagU, "number-tag-u")
|
1899
|
+
};
|
1900
|
+
|
1901
|
+
|
1639
1902
|
class LNumberTagD: public LTemplateInstruction<1, 1, 1> {
|
1640
1903
|
public:
|
1641
1904
|
LNumberTagD(LOperand* value, LOperand* temp) {
|
@@ -1643,7 +1906,11 @@ class LNumberTagD: public LTemplateInstruction<1, 1, 1> {
|
|
1643
1906
|
temps_[0] = temp;
|
1644
1907
|
}
|
1645
1908
|
|
1909
|
+
LOperand* value() { return inputs_[0]; }
|
1910
|
+
LOperand* temp() { return temps_[0]; }
|
1911
|
+
|
1646
1912
|
DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d")
|
1913
|
+
DECLARE_HYDROGEN_ACCESSOR(Change)
|
1647
1914
|
};
|
1648
1915
|
|
1649
1916
|
|
@@ -1655,6 +1922,9 @@ class LDoubleToI: public LTemplateInstruction<1, 1, 1> {
|
|
1655
1922
|
temps_[0] = temp;
|
1656
1923
|
}
|
1657
1924
|
|
1925
|
+
LOperand* value() { return inputs_[0]; }
|
1926
|
+
LOperand* temp() { return temps_[0]; }
|
1927
|
+
|
1658
1928
|
DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
|
1659
1929
|
DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
|
1660
1930
|
|
@@ -1670,6 +1940,9 @@ class LTaggedToI: public LTemplateInstruction<1, 1, 1> {
|
|
1670
1940
|
temps_[0] = temp;
|
1671
1941
|
}
|
1672
1942
|
|
1943
|
+
LOperand* value() { return inputs_[0]; }
|
1944
|
+
LOperand* temp() { return temps_[0]; }
|
1945
|
+
|
1673
1946
|
DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
|
1674
1947
|
DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
|
1675
1948
|
|
@@ -1683,6 +1956,8 @@ class LSmiTag: public LTemplateInstruction<1, 1, 0> {
|
|
1683
1956
|
inputs_[0] = value;
|
1684
1957
|
}
|
1685
1958
|
|
1959
|
+
LOperand* value() { return inputs_[0]; }
|
1960
|
+
|
1686
1961
|
DECLARE_CONCRETE_INSTRUCTION(SmiTag, "smi-tag")
|
1687
1962
|
};
|
1688
1963
|
|
@@ -1694,6 +1969,9 @@ class LNumberUntagD: public LTemplateInstruction<1, 1, 1> {
|
|
1694
1969
|
temps_[0] = temp;
|
1695
1970
|
}
|
1696
1971
|
|
1972
|
+
LOperand* value() { return inputs_[0]; }
|
1973
|
+
LOperand* temp() { return temps_[0]; }
|
1974
|
+
|
1697
1975
|
DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
|
1698
1976
|
DECLARE_HYDROGEN_ACCESSOR(Change);
|
1699
1977
|
};
|
@@ -1706,6 +1984,8 @@ class LSmiUntag: public LTemplateInstruction<1, 1, 0> {
|
|
1706
1984
|
inputs_[0] = value;
|
1707
1985
|
}
|
1708
1986
|
|
1987
|
+
LOperand* value() { return inputs_[0]; }
|
1988
|
+
|
1709
1989
|
DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag")
|
1710
1990
|
|
1711
1991
|
bool needs_check() const { return needs_check_; }
|
@@ -1727,14 +2007,16 @@ class LStoreNamedField: public LTemplateInstruction<0, 2, 2> {
|
|
1727
2007
|
temps_[1] = temp_map;
|
1728
2008
|
}
|
1729
2009
|
|
2010
|
+
LOperand* object() { return inputs_[0]; }
|
2011
|
+
LOperand* value() { return inputs_[1]; }
|
2012
|
+
LOperand* temp() { return temps_[0]; }
|
2013
|
+
LOperand* temp_map() { return temps_[1]; }
|
2014
|
+
|
1730
2015
|
DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
|
1731
2016
|
DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
|
1732
2017
|
|
1733
2018
|
virtual void PrintDataTo(StringStream* stream);
|
1734
2019
|
|
1735
|
-
LOperand* object() { return inputs_[0]; }
|
1736
|
-
LOperand* value() { return inputs_[1]; }
|
1737
|
-
|
1738
2020
|
Handle<Object> name() const { return hydrogen()->name(); }
|
1739
2021
|
bool is_in_object() { return hydrogen()->is_in_object(); }
|
1740
2022
|
int offset() { return hydrogen()->offset(); }
|
@@ -1750,89 +2032,44 @@ class LStoreNamedGeneric: public LTemplateInstruction<0, 3, 0> {
|
|
1750
2032
|
inputs_[2] = value;
|
1751
2033
|
}
|
1752
2034
|
|
2035
|
+
LOperand* context() { return inputs_[0]; }
|
2036
|
+
LOperand* object() { return inputs_[1]; }
|
2037
|
+
LOperand* value() { return inputs_[2]; }
|
2038
|
+
|
1753
2039
|
DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
|
1754
2040
|
DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
|
1755
2041
|
|
1756
2042
|
virtual void PrintDataTo(StringStream* stream);
|
1757
|
-
|
1758
|
-
LOperand* context() { return inputs_[0]; }
|
1759
|
-
LOperand* object() { return inputs_[1]; }
|
1760
|
-
LOperand* value() { return inputs_[2]; }
|
1761
2043
|
Handle<Object> name() const { return hydrogen()->name(); }
|
1762
2044
|
StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
1763
2045
|
};
|
1764
2046
|
|
1765
2047
|
|
1766
|
-
class
|
2048
|
+
class LStoreKeyed: public LTemplateInstruction<0, 3, 0> {
|
1767
2049
|
public:
|
1768
|
-
|
2050
|
+
LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) {
|
1769
2051
|
inputs_[0] = obj;
|
1770
2052
|
inputs_[1] = key;
|
1771
2053
|
inputs_[2] = val;
|
1772
2054
|
}
|
1773
2055
|
|
1774
|
-
|
1775
|
-
|
1776
|
-
DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement)
|
1777
|
-
|
1778
|
-
virtual void PrintDataTo(StringStream* stream);
|
1779
|
-
|
1780
|
-
LOperand* object() { return inputs_[0]; }
|
2056
|
+
bool is_external() const { return hydrogen()->is_external(); }
|
2057
|
+
LOperand* elements() { return inputs_[0]; }
|
1781
2058
|
LOperand* key() { return inputs_[1]; }
|
1782
2059
|
LOperand* value() { return inputs_[2]; }
|
1783
|
-
|
1784
|
-
|
1785
|
-
|
1786
|
-
|
1787
|
-
class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
|
1788
|
-
public:
|
1789
|
-
LStoreKeyedFastDoubleElement(LOperand* elements,
|
1790
|
-
LOperand* key,
|
1791
|
-
LOperand* val) {
|
1792
|
-
inputs_[0] = elements;
|
1793
|
-
inputs_[1] = key;
|
1794
|
-
inputs_[2] = val;
|
2060
|
+
ElementsKind elements_kind() const {
|
2061
|
+
return hydrogen()->elements_kind();
|
1795
2062
|
}
|
1796
2063
|
|
1797
|
-
DECLARE_CONCRETE_INSTRUCTION(
|
1798
|
-
|
1799
|
-
DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement)
|
2064
|
+
DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
|
2065
|
+
DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
|
1800
2066
|
|
1801
2067
|
virtual void PrintDataTo(StringStream* stream);
|
1802
|
-
|
1803
|
-
LOperand* elements() { return inputs_[0]; }
|
1804
|
-
LOperand* key() { return inputs_[1]; }
|
1805
|
-
LOperand* value() { return inputs_[2]; }
|
1806
2068
|
uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
1807
|
-
|
1808
2069
|
bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
|
1809
2070
|
};
|
1810
2071
|
|
1811
2072
|
|
1812
|
-
class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
|
1813
|
-
public:
|
1814
|
-
LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
|
1815
|
-
LOperand* key,
|
1816
|
-
LOperand* val) {
|
1817
|
-
inputs_[0] = external_pointer;
|
1818
|
-
inputs_[1] = key;
|
1819
|
-
inputs_[2] = val;
|
1820
|
-
}
|
1821
|
-
|
1822
|
-
DECLARE_CONCRETE_INSTRUCTION(StoreKeyedSpecializedArrayElement,
|
1823
|
-
"store-keyed-specialized-array-element")
|
1824
|
-
DECLARE_HYDROGEN_ACCESSOR(StoreKeyedSpecializedArrayElement)
|
1825
|
-
|
1826
|
-
LOperand* external_pointer() { return inputs_[0]; }
|
1827
|
-
LOperand* key() { return inputs_[1]; }
|
1828
|
-
LOperand* value() { return inputs_[2]; }
|
1829
|
-
ElementsKind elements_kind() const {
|
1830
|
-
return hydrogen()->elements_kind();
|
1831
|
-
}
|
1832
|
-
uint32_t additional_index() const { return hydrogen()->index_offset(); }
|
1833
|
-
};
|
1834
|
-
|
1835
|
-
|
1836
2073
|
class LStoreKeyedGeneric: public LTemplateInstruction<0, 4, 0> {
|
1837
2074
|
public:
|
1838
2075
|
LStoreKeyedGeneric(LOperand* context,
|
@@ -1845,40 +2082,63 @@ class LStoreKeyedGeneric: public LTemplateInstruction<0, 4, 0> {
|
|
1845
2082
|
inputs_[3] = value;
|
1846
2083
|
}
|
1847
2084
|
|
2085
|
+
LOperand* context() { return inputs_[0]; }
|
2086
|
+
LOperand* object() { return inputs_[1]; }
|
2087
|
+
LOperand* key() { return inputs_[2]; }
|
2088
|
+
LOperand* value() { return inputs_[3]; }
|
2089
|
+
|
1848
2090
|
DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
|
1849
2091
|
DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
|
1850
2092
|
|
1851
2093
|
virtual void PrintDataTo(StringStream* stream);
|
1852
2094
|
|
1853
|
-
LOperand* context() { return inputs_[0]; }
|
1854
|
-
LOperand* object() { return inputs_[1]; }
|
1855
|
-
LOperand* key() { return inputs_[2]; }
|
1856
|
-
LOperand* value() { return inputs_[3]; }
|
1857
2095
|
StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
|
1858
2096
|
};
|
1859
2097
|
|
1860
2098
|
|
1861
|
-
class LTransitionElementsKind: public LTemplateInstruction<
|
2099
|
+
class LTransitionElementsKind: public LTemplateInstruction<0, 2, 2> {
|
1862
2100
|
public:
|
1863
2101
|
LTransitionElementsKind(LOperand* object,
|
2102
|
+
LOperand* context,
|
1864
2103
|
LOperand* new_map_temp,
|
1865
|
-
LOperand*
|
2104
|
+
LOperand* temp) {
|
1866
2105
|
inputs_[0] = object;
|
2106
|
+
inputs_[1] = context;
|
1867
2107
|
temps_[0] = new_map_temp;
|
1868
|
-
temps_[1] =
|
2108
|
+
temps_[1] = temp;
|
1869
2109
|
}
|
1870
2110
|
|
2111
|
+
LOperand* context() { return inputs_[1]; }
|
2112
|
+
LOperand* object() { return inputs_[0]; }
|
2113
|
+
LOperand* new_map_temp() { return temps_[0]; }
|
2114
|
+
LOperand* temp() { return temps_[1]; }
|
2115
|
+
|
1871
2116
|
DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
|
1872
2117
|
"transition-elements-kind")
|
1873
2118
|
DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
|
1874
2119
|
|
1875
2120
|
virtual void PrintDataTo(StringStream* stream);
|
1876
2121
|
|
1877
|
-
LOperand* object() { return inputs_[0]; }
|
1878
|
-
LOperand* new_map_reg() { return temps_[0]; }
|
1879
|
-
LOperand* temp_reg() { return temps_[1]; }
|
1880
2122
|
Handle<Map> original_map() { return hydrogen()->original_map(); }
|
1881
2123
|
Handle<Map> transitioned_map() { return hydrogen()->transitioned_map(); }
|
2124
|
+
ElementsKind from_kind() { return hydrogen()->from_kind(); }
|
2125
|
+
ElementsKind to_kind() { return hydrogen()->to_kind(); }
|
2126
|
+
};
|
2127
|
+
|
2128
|
+
|
2129
|
+
class LTrapAllocationMemento : public LTemplateInstruction<0, 1, 1> {
|
2130
|
+
public:
|
2131
|
+
LTrapAllocationMemento(LOperand* object,
|
2132
|
+
LOperand* temp) {
|
2133
|
+
inputs_[0] = object;
|
2134
|
+
temps_[0] = temp;
|
2135
|
+
}
|
2136
|
+
|
2137
|
+
LOperand* object() { return inputs_[0]; }
|
2138
|
+
LOperand* temp() { return temps_[0]; }
|
2139
|
+
|
2140
|
+
DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento,
|
2141
|
+
"trap-allocation-memento")
|
1882
2142
|
};
|
1883
2143
|
|
1884
2144
|
|
@@ -1890,12 +2150,12 @@ class LStringAdd: public LTemplateInstruction<1, 3, 0> {
|
|
1890
2150
|
inputs_[2] = right;
|
1891
2151
|
}
|
1892
2152
|
|
1893
|
-
DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
|
1894
|
-
DECLARE_HYDROGEN_ACCESSOR(StringAdd)
|
1895
|
-
|
1896
2153
|
LOperand* context() { return inputs_[0]; }
|
1897
2154
|
LOperand* left() { return inputs_[1]; }
|
1898
2155
|
LOperand* right() { return inputs_[2]; }
|
2156
|
+
|
2157
|
+
DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
|
2158
|
+
DECLARE_HYDROGEN_ACCESSOR(StringAdd)
|
1899
2159
|
};
|
1900
2160
|
|
1901
2161
|
|
@@ -1907,12 +2167,12 @@ class LStringCharCodeAt: public LTemplateInstruction<1, 3, 0> {
|
|
1907
2167
|
inputs_[2] = index;
|
1908
2168
|
}
|
1909
2169
|
|
1910
|
-
DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
|
1911
|
-
DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
|
1912
|
-
|
1913
2170
|
LOperand* context() { return inputs_[0]; }
|
1914
2171
|
LOperand* string() { return inputs_[1]; }
|
1915
2172
|
LOperand* index() { return inputs_[2]; }
|
2173
|
+
|
2174
|
+
DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
|
2175
|
+
DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
|
1916
2176
|
};
|
1917
2177
|
|
1918
2178
|
|
@@ -1923,11 +2183,11 @@ class LStringCharFromCode: public LTemplateInstruction<1, 2, 0> {
|
|
1923
2183
|
inputs_[1] = char_code;
|
1924
2184
|
}
|
1925
2185
|
|
1926
|
-
DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
|
1927
|
-
DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
|
1928
|
-
|
1929
2186
|
LOperand* context() { return inputs_[0]; }
|
1930
2187
|
LOperand* char_code() { return inputs_[1]; }
|
2188
|
+
|
2189
|
+
DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
|
2190
|
+
DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
|
1931
2191
|
};
|
1932
2192
|
|
1933
2193
|
|
@@ -1937,10 +2197,10 @@ class LStringLength: public LTemplateInstruction<1, 1, 0> {
|
|
1937
2197
|
inputs_[0] = string;
|
1938
2198
|
}
|
1939
2199
|
|
2200
|
+
LOperand* string() { return inputs_[0]; }
|
2201
|
+
|
1940
2202
|
DECLARE_CONCRETE_INSTRUCTION(StringLength, "string-length")
|
1941
2203
|
DECLARE_HYDROGEN_ACCESSOR(StringLength)
|
1942
|
-
|
1943
|
-
LOperand* string() { return inputs_[0]; }
|
1944
2204
|
};
|
1945
2205
|
|
1946
2206
|
|
@@ -1964,6 +2224,9 @@ class LCheckInstanceType: public LTemplateInstruction<0, 1, 1> {
|
|
1964
2224
|
temps_[0] = temp;
|
1965
2225
|
}
|
1966
2226
|
|
2227
|
+
LOperand* value() { return inputs_[0]; }
|
2228
|
+
LOperand* temp() { return temps_[0]; }
|
2229
|
+
|
1967
2230
|
DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type")
|
1968
2231
|
DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType)
|
1969
2232
|
};
|
@@ -1975,22 +2238,28 @@ class LCheckMaps: public LTemplateInstruction<0, 1, 0> {
|
|
1975
2238
|
inputs_[0] = value;
|
1976
2239
|
}
|
1977
2240
|
|
2241
|
+
LOperand* value() { return inputs_[0]; }
|
2242
|
+
|
1978
2243
|
DECLARE_CONCRETE_INSTRUCTION(CheckMaps, "check-maps")
|
1979
2244
|
DECLARE_HYDROGEN_ACCESSOR(CheckMaps)
|
1980
2245
|
};
|
1981
2246
|
|
1982
2247
|
|
1983
|
-
class LCheckPrototypeMaps: public LTemplateInstruction<
|
2248
|
+
class LCheckPrototypeMaps: public LTemplateInstruction<1, 0, 1> {
|
1984
2249
|
public:
|
1985
2250
|
explicit LCheckPrototypeMaps(LOperand* temp) {
|
1986
2251
|
temps_[0] = temp;
|
1987
2252
|
}
|
1988
2253
|
|
2254
|
+
LOperand* temp() { return temps_[0]; }
|
2255
|
+
|
1989
2256
|
DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps")
|
1990
2257
|
DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps)
|
1991
2258
|
|
1992
|
-
Handle<JSObject>
|
1993
|
-
|
2259
|
+
ZoneList<Handle<JSObject> >* prototypes() const {
|
2260
|
+
return hydrogen()->prototypes();
|
2261
|
+
}
|
2262
|
+
ZoneList<Handle<Map> >* maps() const { return hydrogen()->maps(); }
|
1994
2263
|
};
|
1995
2264
|
|
1996
2265
|
|
@@ -2000,6 +2269,8 @@ class LCheckSmi: public LTemplateInstruction<0, 1, 0> {
|
|
2000
2269
|
inputs_[0] = value;
|
2001
2270
|
}
|
2002
2271
|
|
2272
|
+
LOperand* value() { return inputs_[0]; }
|
2273
|
+
|
2003
2274
|
DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi")
|
2004
2275
|
};
|
2005
2276
|
|
@@ -2047,6 +2318,8 @@ class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> {
|
|
2047
2318
|
inputs_[0] = value;
|
2048
2319
|
}
|
2049
2320
|
|
2321
|
+
LOperand* value() { return inputs_[0]; }
|
2322
|
+
|
2050
2323
|
DECLARE_CONCRETE_INSTRUCTION(CheckNonSmi, "check-non-smi")
|
2051
2324
|
};
|
2052
2325
|
|
@@ -2058,10 +2331,28 @@ class LAllocateObject: public LTemplateInstruction<1, 1, 1> {
|
|
2058
2331
|
temps_[0] = temp;
|
2059
2332
|
}
|
2060
2333
|
|
2334
|
+
LOperand* context() { return inputs_[0]; }
|
2335
|
+
LOperand* temp() { return temps_[0]; }
|
2336
|
+
|
2061
2337
|
DECLARE_CONCRETE_INSTRUCTION(AllocateObject, "allocate-object")
|
2062
2338
|
DECLARE_HYDROGEN_ACCESSOR(AllocateObject)
|
2339
|
+
};
|
2340
|
+
|
2341
|
+
|
2342
|
+
class LAllocate: public LTemplateInstruction<1, 2, 1> {
|
2343
|
+
public:
|
2344
|
+
LAllocate(LOperand* context, LOperand* size, LOperand* temp) {
|
2345
|
+
inputs_[0] = context;
|
2346
|
+
inputs_[1] = size;
|
2347
|
+
temps_[0] = temp;
|
2348
|
+
}
|
2063
2349
|
|
2064
2350
|
LOperand* context() { return inputs_[0]; }
|
2351
|
+
LOperand* size() { return inputs_[1]; }
|
2352
|
+
LOperand* temp() { return temps_[0]; }
|
2353
|
+
|
2354
|
+
DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate")
|
2355
|
+
DECLARE_HYDROGEN_ACCESSOR(Allocate)
|
2065
2356
|
};
|
2066
2357
|
|
2067
2358
|
|
@@ -2138,6 +2429,8 @@ class LToFastProperties: public LTemplateInstruction<1, 1, 0> {
|
|
2138
2429
|
inputs_[0] = value;
|
2139
2430
|
}
|
2140
2431
|
|
2432
|
+
LOperand* value() { return inputs_[0]; }
|
2433
|
+
|
2141
2434
|
DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties")
|
2142
2435
|
DECLARE_HYDROGEN_ACCESSOR(ToFastProperties)
|
2143
2436
|
};
|
@@ -2150,6 +2443,9 @@ class LTypeof: public LTemplateInstruction<1, 2, 0> {
|
|
2150
2443
|
inputs_[1] = value;
|
2151
2444
|
}
|
2152
2445
|
|
2446
|
+
LOperand* context() { return inputs_[0]; }
|
2447
|
+
LOperand* value() { return inputs_[1]; }
|
2448
|
+
|
2153
2449
|
DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
|
2154
2450
|
};
|
2155
2451
|
|
@@ -2160,6 +2456,8 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
|
|
2160
2456
|
inputs_[0] = value;
|
2161
2457
|
}
|
2162
2458
|
|
2459
|
+
LOperand* value() { return inputs_[0]; }
|
2460
|
+
|
2163
2461
|
DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
|
2164
2462
|
DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
|
2165
2463
|
|
@@ -2177,11 +2475,11 @@ class LDeleteProperty: public LTemplateInstruction<1, 3, 0> {
|
|
2177
2475
|
inputs_[2] = key;
|
2178
2476
|
}
|
2179
2477
|
|
2180
|
-
DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
|
2181
|
-
|
2182
2478
|
LOperand* context() { return inputs_[0]; }
|
2183
2479
|
LOperand* object() { return inputs_[1]; }
|
2184
2480
|
LOperand* key() { return inputs_[2]; }
|
2481
|
+
|
2482
|
+
DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
|
2185
2483
|
};
|
2186
2484
|
|
2187
2485
|
|
@@ -2203,8 +2501,9 @@ class LOsrEntry: public LTemplateInstruction<0, 0, 0> {
|
|
2203
2501
|
// slot, i.e., that must also be restored to the spill slot on OSR entry.
|
2204
2502
|
// NULL if the register has no assigned spill slot. Indexed by allocation
|
2205
2503
|
// index.
|
2206
|
-
LOperand* register_spills_[Register::
|
2207
|
-
LOperand* double_register_spills_[
|
2504
|
+
LOperand* register_spills_[Register::kMaxNumAllocatableRegisters];
|
2505
|
+
LOperand* double_register_spills_[
|
2506
|
+
DoubleRegister::kMaxNumAllocatableRegisters];
|
2208
2507
|
};
|
2209
2508
|
|
2210
2509
|
|
@@ -2301,69 +2600,19 @@ class LLoadFieldByIndex: public LTemplateInstruction<1, 2, 0> {
|
|
2301
2600
|
|
2302
2601
|
|
2303
2602
|
class LChunkBuilder;
|
2304
|
-
class
|
2603
|
+
class LPlatformChunk: public LChunk {
|
2305
2604
|
public:
|
2306
|
-
|
2307
|
-
|
2308
|
-
|
2309
|
-
graph_(graph),
|
2310
|
-
instructions_(32),
|
2311
|
-
pointer_maps_(8),
|
2312
|
-
inlined_closures_(1) { }
|
2313
|
-
|
2314
|
-
void AddInstruction(LInstruction* instruction, HBasicBlock* block);
|
2315
|
-
LConstantOperand* DefineConstantOperand(HConstant* constant);
|
2316
|
-
Handle<Object> LookupLiteral(LConstantOperand* operand) const;
|
2317
|
-
Representation LookupLiteralRepresentation(LConstantOperand* operand) const;
|
2605
|
+
LPlatformChunk(CompilationInfo* info, HGraph* graph)
|
2606
|
+
: LChunk(info, graph),
|
2607
|
+
num_double_slots_(0) { }
|
2318
2608
|
|
2319
2609
|
int GetNextSpillIndex(bool is_double);
|
2320
2610
|
LOperand* GetNextSpillSlot(bool is_double);
|
2321
2611
|
|
2322
|
-
int
|
2323
|
-
int GetParameterStackSlot(int index) const;
|
2324
|
-
int spill_slot_count() const { return spill_slot_count_; }
|
2325
|
-
CompilationInfo* info() const { return info_; }
|
2326
|
-
HGraph* graph() const { return graph_; }
|
2327
|
-
const ZoneList<LInstruction*>* instructions() const { return &instructions_; }
|
2328
|
-
void AddGapMove(int index, LOperand* from, LOperand* to);
|
2329
|
-
LGap* GetGapAt(int index) const;
|
2330
|
-
bool IsGapAt(int index) const;
|
2331
|
-
int NearestGapPos(int index) const;
|
2332
|
-
void MarkEmptyBlocks();
|
2333
|
-
const ZoneList<LPointerMap*>* pointer_maps() const { return &pointer_maps_; }
|
2334
|
-
LLabel* GetLabel(int block_id) const {
|
2335
|
-
HBasicBlock* block = graph_->blocks()->at(block_id);
|
2336
|
-
int first_instruction = block->first_instruction_index();
|
2337
|
-
return LLabel::cast(instructions_[first_instruction]);
|
2338
|
-
}
|
2339
|
-
int LookupDestination(int block_id) const {
|
2340
|
-
LLabel* cur = GetLabel(block_id);
|
2341
|
-
while (cur->replacement() != NULL) {
|
2342
|
-
cur = cur->replacement();
|
2343
|
-
}
|
2344
|
-
return cur->block_id();
|
2345
|
-
}
|
2346
|
-
Label* GetAssemblyLabel(int block_id) const {
|
2347
|
-
LLabel* label = GetLabel(block_id);
|
2348
|
-
ASSERT(!label->HasReplacement());
|
2349
|
-
return label->label();
|
2350
|
-
}
|
2351
|
-
|
2352
|
-
const ZoneList<Handle<JSFunction> >* inlined_closures() const {
|
2353
|
-
return &inlined_closures_;
|
2354
|
-
}
|
2355
|
-
|
2356
|
-
void AddInlinedClosure(Handle<JSFunction> closure) {
|
2357
|
-
inlined_closures_.Add(closure);
|
2358
|
-
}
|
2612
|
+
int num_double_slots() const { return num_double_slots_; }
|
2359
2613
|
|
2360
2614
|
private:
|
2361
|
-
int
|
2362
|
-
CompilationInfo* info_;
|
2363
|
-
HGraph* const graph_;
|
2364
|
-
ZoneList<LInstruction*> instructions_;
|
2365
|
-
ZoneList<LPointerMap*> pointer_maps_;
|
2366
|
-
ZoneList<Handle<JSFunction> > inlined_closures_;
|
2615
|
+
int num_double_slots_;
|
2367
2616
|
};
|
2368
2617
|
|
2369
2618
|
|
@@ -2373,7 +2622,7 @@ class LChunkBuilder BASE_EMBEDDED {
|
|
2373
2622
|
: chunk_(NULL),
|
2374
2623
|
info_(info),
|
2375
2624
|
graph_(graph),
|
2376
|
-
zone_(graph->
|
2625
|
+
zone_(graph->zone()),
|
2377
2626
|
status_(UNUSED),
|
2378
2627
|
current_instruction_(NULL),
|
2379
2628
|
current_block_(NULL),
|
@@ -2382,16 +2631,19 @@ class LChunkBuilder BASE_EMBEDDED {
|
|
2382
2631
|
allocator_(allocator),
|
2383
2632
|
position_(RelocInfo::kNoPosition),
|
2384
2633
|
instruction_pending_deoptimization_environment_(NULL),
|
2385
|
-
pending_deoptimization_ast_id_(
|
2634
|
+
pending_deoptimization_ast_id_(BailoutId::None()) { }
|
2386
2635
|
|
2387
2636
|
// Build the sequence for the graph.
|
2388
|
-
|
2637
|
+
LPlatformChunk* Build();
|
2389
2638
|
|
2390
2639
|
// Declare methods that deal with the individual node types.
|
2391
2640
|
#define DECLARE_DO(type) LInstruction* Do##type(H##type* node);
|
2392
2641
|
HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO)
|
2393
2642
|
#undef DECLARE_DO
|
2394
2643
|
|
2644
|
+
static HValue* SimplifiedDividendForMathFloorOfDiv(HValue* val);
|
2645
|
+
static HValue* SimplifiedDivisorForMathFloorOfDiv(HValue* val);
|
2646
|
+
|
2395
2647
|
private:
|
2396
2648
|
enum Status {
|
2397
2649
|
UNUSED,
|
@@ -2400,21 +2652,22 @@ class LChunkBuilder BASE_EMBEDDED {
|
|
2400
2652
|
ABORTED
|
2401
2653
|
};
|
2402
2654
|
|
2403
|
-
|
2655
|
+
LPlatformChunk* chunk() const { return chunk_; }
|
2404
2656
|
CompilationInfo* info() const { return info_; }
|
2405
2657
|
HGraph* graph() const { return graph_; }
|
2406
|
-
Zone* zone() { return zone_; }
|
2658
|
+
Zone* zone() const { return zone_; }
|
2407
2659
|
|
2408
2660
|
bool is_unused() const { return status_ == UNUSED; }
|
2409
2661
|
bool is_building() const { return status_ == BUILDING; }
|
2410
2662
|
bool is_done() const { return status_ == DONE; }
|
2411
2663
|
bool is_aborted() const { return status_ == ABORTED; }
|
2412
2664
|
|
2413
|
-
void Abort(const char*
|
2665
|
+
void Abort(const char* reason);
|
2414
2666
|
|
2415
2667
|
// Methods for getting operands for Use / Define / Temp.
|
2416
2668
|
LUnallocated* ToUnallocated(Register reg);
|
2417
2669
|
LUnallocated* ToUnallocated(XMMRegister reg);
|
2670
|
+
LUnallocated* ToUnallocated(X87TopOfStackRegister reg);
|
2418
2671
|
|
2419
2672
|
// Methods for setting up define-use relationships.
|
2420
2673
|
MUST_USE_RESULT LOperand* Use(HValue* value, LUnallocated* operand);
|
@@ -2475,6 +2728,8 @@ class LChunkBuilder BASE_EMBEDDED {
|
|
2475
2728
|
template<int I, int T>
|
2476
2729
|
LInstruction* DefineFixedDouble(LTemplateInstruction<1, I, T>* instr,
|
2477
2730
|
XMMRegister reg);
|
2731
|
+
template<int I, int T>
|
2732
|
+
LInstruction* DefineX87TOS(LTemplateInstruction<1, I, T>* instr);
|
2478
2733
|
// Assigns an environment to an instruction. An instruction which can
|
2479
2734
|
// deoptimize must have an environment.
|
2480
2735
|
LInstruction* AssignEnvironment(LInstruction* instr);
|
@@ -2504,7 +2759,7 @@ class LChunkBuilder BASE_EMBEDDED {
|
|
2504
2759
|
LInstruction* DoArithmeticT(Token::Value op,
|
2505
2760
|
HArithmeticBinaryOperation* instr);
|
2506
2761
|
|
2507
|
-
|
2762
|
+
LPlatformChunk* chunk_;
|
2508
2763
|
CompilationInfo* info_;
|
2509
2764
|
HGraph* const graph_;
|
2510
2765
|
Zone* zone_;
|
@@ -2516,7 +2771,7 @@ class LChunkBuilder BASE_EMBEDDED {
|
|
2516
2771
|
LAllocator* allocator_;
|
2517
2772
|
int position_;
|
2518
2773
|
LInstruction* instruction_pending_deoptimization_environment_;
|
2519
|
-
|
2774
|
+
BailoutId pending_deoptimization_ast_id_;
|
2520
2775
|
|
2521
2776
|
DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
|
2522
2777
|
};
|