libv8 3.11.8.17 → 3.16.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/Gemfile +1 -1
- data/Rakefile +6 -7
- data/lib/libv8/version.rb +1 -1
- data/vendor/v8/.gitignore +24 -3
- data/vendor/v8/AUTHORS +7 -0
- data/vendor/v8/ChangeLog +839 -0
- data/vendor/v8/DEPS +1 -1
- data/vendor/v8/Makefile.android +92 -0
- data/vendor/v8/OWNERS +11 -0
- data/vendor/v8/PRESUBMIT.py +71 -0
- data/vendor/v8/SConstruct +34 -39
- data/vendor/v8/build/android.gypi +56 -37
- data/vendor/v8/build/common.gypi +112 -30
- data/vendor/v8/build/gyp_v8 +1 -1
- data/vendor/v8/build/standalone.gypi +15 -11
- data/vendor/v8/include/v8-debug.h +9 -1
- data/vendor/v8/include/v8-preparser.h +4 -3
- data/vendor/v8/include/v8-profiler.h +25 -25
- data/vendor/v8/include/v8-testing.h +4 -3
- data/vendor/v8/include/v8.h +994 -540
- data/vendor/v8/preparser/preparser-process.cc +3 -3
- data/vendor/v8/samples/lineprocessor.cc +20 -27
- data/vendor/v8/samples/process.cc +18 -14
- data/vendor/v8/samples/shell.cc +16 -15
- data/vendor/v8/src/SConscript +15 -14
- data/vendor/v8/src/accessors.cc +169 -77
- data/vendor/v8/src/accessors.h +4 -0
- data/vendor/v8/src/allocation-inl.h +2 -2
- data/vendor/v8/src/allocation.h +7 -7
- data/vendor/v8/src/api.cc +810 -497
- data/vendor/v8/src/api.h +85 -60
- data/vendor/v8/src/arm/assembler-arm-inl.h +179 -22
- data/vendor/v8/src/arm/assembler-arm.cc +633 -264
- data/vendor/v8/src/arm/assembler-arm.h +264 -197
- data/vendor/v8/src/arm/builtins-arm.cc +117 -27
- data/vendor/v8/src/arm/code-stubs-arm.cc +1241 -700
- data/vendor/v8/src/arm/code-stubs-arm.h +35 -138
- data/vendor/v8/src/arm/codegen-arm.cc +285 -16
- data/vendor/v8/src/arm/codegen-arm.h +22 -0
- data/vendor/v8/src/arm/constants-arm.cc +5 -3
- data/vendor/v8/src/arm/constants-arm.h +24 -11
- data/vendor/v8/src/arm/debug-arm.cc +3 -3
- data/vendor/v8/src/arm/deoptimizer-arm.cc +382 -92
- data/vendor/v8/src/arm/disasm-arm.cc +61 -12
- data/vendor/v8/src/arm/frames-arm.h +0 -14
- data/vendor/v8/src/arm/full-codegen-arm.cc +332 -304
- data/vendor/v8/src/arm/ic-arm.cc +180 -259
- data/vendor/v8/src/arm/lithium-arm.cc +364 -316
- data/vendor/v8/src/arm/lithium-arm.h +512 -275
- data/vendor/v8/src/arm/lithium-codegen-arm.cc +1768 -809
- data/vendor/v8/src/arm/lithium-codegen-arm.h +97 -35
- data/vendor/v8/src/arm/lithium-gap-resolver-arm.cc +12 -5
- data/vendor/v8/src/arm/macro-assembler-arm.cc +439 -228
- data/vendor/v8/src/arm/macro-assembler-arm.h +116 -70
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.cc +54 -44
- data/vendor/v8/src/arm/regexp-macro-assembler-arm.h +3 -10
- data/vendor/v8/src/arm/simulator-arm.cc +272 -238
- data/vendor/v8/src/arm/simulator-arm.h +38 -8
- data/vendor/v8/src/arm/stub-cache-arm.cc +522 -895
- data/vendor/v8/src/array.js +101 -70
- data/vendor/v8/src/assembler.cc +270 -19
- data/vendor/v8/src/assembler.h +110 -15
- data/vendor/v8/src/ast.cc +79 -69
- data/vendor/v8/src/ast.h +255 -301
- data/vendor/v8/src/atomicops.h +7 -1
- data/vendor/v8/src/atomicops_internals_tsan.h +335 -0
- data/vendor/v8/src/bootstrapper.cc +481 -418
- data/vendor/v8/src/bootstrapper.h +4 -4
- data/vendor/v8/src/builtins.cc +498 -311
- data/vendor/v8/src/builtins.h +75 -47
- data/vendor/v8/src/checks.cc +2 -1
- data/vendor/v8/src/checks.h +8 -0
- data/vendor/v8/src/code-stubs-hydrogen.cc +253 -0
- data/vendor/v8/src/code-stubs.cc +249 -84
- data/vendor/v8/src/code-stubs.h +501 -169
- data/vendor/v8/src/codegen.cc +36 -18
- data/vendor/v8/src/codegen.h +25 -3
- data/vendor/v8/src/collection.js +54 -17
- data/vendor/v8/src/compilation-cache.cc +24 -16
- data/vendor/v8/src/compilation-cache.h +15 -6
- data/vendor/v8/src/compiler.cc +497 -195
- data/vendor/v8/src/compiler.h +246 -38
- data/vendor/v8/src/contexts.cc +64 -24
- data/vendor/v8/src/contexts.h +60 -29
- data/vendor/v8/src/conversions-inl.h +24 -14
- data/vendor/v8/src/conversions.h +7 -4
- data/vendor/v8/src/counters.cc +21 -12
- data/vendor/v8/src/counters.h +44 -16
- data/vendor/v8/src/cpu-profiler.h +1 -1
- data/vendor/v8/src/d8-debug.cc +2 -2
- data/vendor/v8/src/d8-readline.cc +13 -2
- data/vendor/v8/src/d8.cc +681 -273
- data/vendor/v8/src/d8.gyp +4 -4
- data/vendor/v8/src/d8.h +38 -18
- data/vendor/v8/src/d8.js +0 -617
- data/vendor/v8/src/data-flow.h +55 -0
- data/vendor/v8/src/date.js +1 -42
- data/vendor/v8/src/dateparser-inl.h +5 -1
- data/vendor/v8/src/debug-agent.cc +10 -15
- data/vendor/v8/src/debug-debugger.js +147 -149
- data/vendor/v8/src/debug.cc +323 -164
- data/vendor/v8/src/debug.h +26 -14
- data/vendor/v8/src/deoptimizer.cc +765 -290
- data/vendor/v8/src/deoptimizer.h +130 -28
- data/vendor/v8/src/disassembler.cc +10 -4
- data/vendor/v8/src/elements-kind.cc +7 -2
- data/vendor/v8/src/elements-kind.h +19 -0
- data/vendor/v8/src/elements.cc +607 -285
- data/vendor/v8/src/elements.h +36 -13
- data/vendor/v8/src/execution.cc +52 -31
- data/vendor/v8/src/execution.h +4 -4
- data/vendor/v8/src/extensions/externalize-string-extension.cc +5 -4
- data/vendor/v8/src/extensions/gc-extension.cc +5 -1
- data/vendor/v8/src/extensions/statistics-extension.cc +153 -0
- data/vendor/v8/src/{inspector.h → extensions/statistics-extension.h} +12 -23
- data/vendor/v8/src/factory.cc +101 -134
- data/vendor/v8/src/factory.h +36 -31
- data/vendor/v8/src/flag-definitions.h +102 -25
- data/vendor/v8/src/flags.cc +9 -5
- data/vendor/v8/src/frames-inl.h +10 -0
- data/vendor/v8/src/frames.cc +116 -26
- data/vendor/v8/src/frames.h +96 -12
- data/vendor/v8/src/full-codegen.cc +219 -74
- data/vendor/v8/src/full-codegen.h +63 -21
- data/vendor/v8/src/func-name-inferrer.cc +8 -7
- data/vendor/v8/src/func-name-inferrer.h +5 -3
- data/vendor/v8/src/gdb-jit.cc +71 -57
- data/vendor/v8/src/global-handles.cc +230 -101
- data/vendor/v8/src/global-handles.h +26 -27
- data/vendor/v8/src/globals.h +17 -19
- data/vendor/v8/src/handles-inl.h +59 -12
- data/vendor/v8/src/handles.cc +180 -200
- data/vendor/v8/src/handles.h +80 -11
- data/vendor/v8/src/hashmap.h +60 -40
- data/vendor/v8/src/heap-inl.h +107 -45
- data/vendor/v8/src/heap-profiler.cc +38 -19
- data/vendor/v8/src/heap-profiler.h +24 -14
- data/vendor/v8/src/heap.cc +1123 -738
- data/vendor/v8/src/heap.h +385 -146
- data/vendor/v8/src/hydrogen-instructions.cc +700 -217
- data/vendor/v8/src/hydrogen-instructions.h +1158 -472
- data/vendor/v8/src/hydrogen.cc +3319 -1662
- data/vendor/v8/src/hydrogen.h +411 -170
- data/vendor/v8/src/ia32/assembler-ia32-inl.h +46 -16
- data/vendor/v8/src/ia32/assembler-ia32.cc +131 -61
- data/vendor/v8/src/ia32/assembler-ia32.h +115 -57
- data/vendor/v8/src/ia32/builtins-ia32.cc +99 -5
- data/vendor/v8/src/ia32/code-stubs-ia32.cc +787 -495
- data/vendor/v8/src/ia32/code-stubs-ia32.h +10 -100
- data/vendor/v8/src/ia32/codegen-ia32.cc +227 -23
- data/vendor/v8/src/ia32/codegen-ia32.h +14 -0
- data/vendor/v8/src/ia32/deoptimizer-ia32.cc +428 -87
- data/vendor/v8/src/ia32/disasm-ia32.cc +28 -1
- data/vendor/v8/src/ia32/frames-ia32.h +6 -16
- data/vendor/v8/src/ia32/full-codegen-ia32.cc +280 -272
- data/vendor/v8/src/ia32/ic-ia32.cc +150 -250
- data/vendor/v8/src/ia32/lithium-codegen-ia32.cc +1600 -517
- data/vendor/v8/src/ia32/lithium-codegen-ia32.h +90 -24
- data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.cc +10 -6
- data/vendor/v8/src/ia32/lithium-gap-resolver-ia32.h +2 -2
- data/vendor/v8/src/ia32/lithium-ia32.cc +405 -302
- data/vendor/v8/src/ia32/lithium-ia32.h +526 -271
- data/vendor/v8/src/ia32/macro-assembler-ia32.cc +378 -119
- data/vendor/v8/src/ia32/macro-assembler-ia32.h +62 -28
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.cc +43 -30
- data/vendor/v8/src/ia32/regexp-macro-assembler-ia32.h +2 -10
- data/vendor/v8/src/ia32/stub-cache-ia32.cc +492 -678
- data/vendor/v8/src/ic-inl.h +9 -4
- data/vendor/v8/src/ic.cc +836 -923
- data/vendor/v8/src/ic.h +228 -247
- data/vendor/v8/src/incremental-marking-inl.h +26 -30
- data/vendor/v8/src/incremental-marking.cc +276 -248
- data/vendor/v8/src/incremental-marking.h +29 -37
- data/vendor/v8/src/interface.cc +34 -25
- data/vendor/v8/src/interface.h +69 -25
- data/vendor/v8/src/interpreter-irregexp.cc +2 -2
- data/vendor/v8/src/isolate.cc +382 -76
- data/vendor/v8/src/isolate.h +109 -56
- data/vendor/v8/src/json-parser.h +217 -104
- data/vendor/v8/src/json-stringifier.h +745 -0
- data/vendor/v8/src/json.js +10 -132
- data/vendor/v8/src/jsregexp-inl.h +106 -0
- data/vendor/v8/src/jsregexp.cc +517 -285
- data/vendor/v8/src/jsregexp.h +145 -117
- data/vendor/v8/src/list-inl.h +35 -22
- data/vendor/v8/src/list.h +46 -19
- data/vendor/v8/src/lithium-allocator-inl.h +22 -2
- data/vendor/v8/src/lithium-allocator.cc +85 -70
- data/vendor/v8/src/lithium-allocator.h +21 -39
- data/vendor/v8/src/lithium.cc +259 -5
- data/vendor/v8/src/lithium.h +131 -32
- data/vendor/v8/src/liveedit-debugger.js +52 -3
- data/vendor/v8/src/liveedit.cc +393 -113
- data/vendor/v8/src/liveedit.h +7 -3
- data/vendor/v8/src/log-utils.cc +4 -2
- data/vendor/v8/src/log.cc +170 -140
- data/vendor/v8/src/log.h +62 -11
- data/vendor/v8/src/macro-assembler.h +17 -0
- data/vendor/v8/src/macros.py +2 -0
- data/vendor/v8/src/mark-compact-inl.h +3 -23
- data/vendor/v8/src/mark-compact.cc +801 -830
- data/vendor/v8/src/mark-compact.h +154 -47
- data/vendor/v8/src/marking-thread.cc +85 -0
- data/vendor/v8/src/{inspector.cc → marking-thread.h} +32 -24
- data/vendor/v8/src/math.js +12 -18
- data/vendor/v8/src/messages.cc +18 -8
- data/vendor/v8/src/messages.js +314 -261
- data/vendor/v8/src/mips/assembler-mips-inl.h +58 -6
- data/vendor/v8/src/mips/assembler-mips.cc +92 -75
- data/vendor/v8/src/mips/assembler-mips.h +54 -60
- data/vendor/v8/src/mips/builtins-mips.cc +116 -17
- data/vendor/v8/src/mips/code-stubs-mips.cc +919 -556
- data/vendor/v8/src/mips/code-stubs-mips.h +22 -131
- data/vendor/v8/src/mips/codegen-mips.cc +281 -6
- data/vendor/v8/src/mips/codegen-mips.h +22 -0
- data/vendor/v8/src/mips/constants-mips.cc +2 -0
- data/vendor/v8/src/mips/constants-mips.h +12 -2
- data/vendor/v8/src/mips/deoptimizer-mips.cc +286 -50
- data/vendor/v8/src/mips/disasm-mips.cc +13 -0
- data/vendor/v8/src/mips/full-codegen-mips.cc +297 -284
- data/vendor/v8/src/mips/ic-mips.cc +182 -263
- data/vendor/v8/src/mips/lithium-codegen-mips.cc +1208 -556
- data/vendor/v8/src/mips/lithium-codegen-mips.h +72 -19
- data/vendor/v8/src/mips/lithium-gap-resolver-mips.cc +9 -2
- data/vendor/v8/src/mips/lithium-mips.cc +290 -302
- data/vendor/v8/src/mips/lithium-mips.h +463 -266
- data/vendor/v8/src/mips/macro-assembler-mips.cc +208 -115
- data/vendor/v8/src/mips/macro-assembler-mips.h +67 -24
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.cc +40 -25
- data/vendor/v8/src/mips/regexp-macro-assembler-mips.h +3 -9
- data/vendor/v8/src/mips/simulator-mips.cc +112 -40
- data/vendor/v8/src/mips/simulator-mips.h +5 -0
- data/vendor/v8/src/mips/stub-cache-mips.cc +502 -884
- data/vendor/v8/src/mirror-debugger.js +157 -30
- data/vendor/v8/src/mksnapshot.cc +88 -14
- data/vendor/v8/src/object-observe.js +235 -0
- data/vendor/v8/src/objects-debug.cc +178 -176
- data/vendor/v8/src/objects-inl.h +1333 -486
- data/vendor/v8/src/objects-printer.cc +125 -43
- data/vendor/v8/src/objects-visiting-inl.h +578 -6
- data/vendor/v8/src/objects-visiting.cc +2 -2
- data/vendor/v8/src/objects-visiting.h +172 -79
- data/vendor/v8/src/objects.cc +3533 -2885
- data/vendor/v8/src/objects.h +1352 -1131
- data/vendor/v8/src/optimizing-compiler-thread.cc +152 -0
- data/vendor/v8/src/optimizing-compiler-thread.h +111 -0
- data/vendor/v8/src/parser.cc +390 -500
- data/vendor/v8/src/parser.h +45 -33
- data/vendor/v8/src/platform-cygwin.cc +10 -21
- data/vendor/v8/src/platform-freebsd.cc +36 -41
- data/vendor/v8/src/platform-linux.cc +160 -124
- data/vendor/v8/src/platform-macos.cc +30 -27
- data/vendor/v8/src/platform-nullos.cc +17 -1
- data/vendor/v8/src/platform-openbsd.cc +19 -50
- data/vendor/v8/src/platform-posix.cc +14 -0
- data/vendor/v8/src/platform-solaris.cc +20 -53
- data/vendor/v8/src/platform-win32.cc +49 -26
- data/vendor/v8/src/platform.h +40 -1
- data/vendor/v8/src/preparser.cc +8 -5
- data/vendor/v8/src/preparser.h +2 -2
- data/vendor/v8/src/prettyprinter.cc +16 -0
- data/vendor/v8/src/prettyprinter.h +2 -0
- data/vendor/v8/src/profile-generator-inl.h +1 -0
- data/vendor/v8/src/profile-generator.cc +209 -147
- data/vendor/v8/src/profile-generator.h +15 -12
- data/vendor/v8/src/property-details.h +46 -31
- data/vendor/v8/src/property.cc +27 -46
- data/vendor/v8/src/property.h +163 -83
- data/vendor/v8/src/proxy.js +7 -2
- data/vendor/v8/src/regexp-macro-assembler-irregexp.cc +4 -13
- data/vendor/v8/src/regexp-macro-assembler-irregexp.h +1 -2
- data/vendor/v8/src/regexp-macro-assembler-tracer.cc +1 -11
- data/vendor/v8/src/regexp-macro-assembler-tracer.h +0 -1
- data/vendor/v8/src/regexp-macro-assembler.cc +31 -14
- data/vendor/v8/src/regexp-macro-assembler.h +14 -11
- data/vendor/v8/src/regexp-stack.cc +1 -0
- data/vendor/v8/src/regexp.js +9 -8
- data/vendor/v8/src/rewriter.cc +18 -7
- data/vendor/v8/src/runtime-profiler.cc +52 -43
- data/vendor/v8/src/runtime-profiler.h +0 -25
- data/vendor/v8/src/runtime.cc +2006 -2023
- data/vendor/v8/src/runtime.h +56 -49
- data/vendor/v8/src/safepoint-table.cc +12 -18
- data/vendor/v8/src/safepoint-table.h +11 -8
- data/vendor/v8/src/scanner.cc +1 -0
- data/vendor/v8/src/scanner.h +4 -10
- data/vendor/v8/src/scopeinfo.cc +35 -9
- data/vendor/v8/src/scopeinfo.h +64 -3
- data/vendor/v8/src/scopes.cc +251 -156
- data/vendor/v8/src/scopes.h +61 -27
- data/vendor/v8/src/serialize.cc +348 -396
- data/vendor/v8/src/serialize.h +125 -114
- data/vendor/v8/src/small-pointer-list.h +11 -11
- data/vendor/v8/src/{smart-array-pointer.h → smart-pointers.h} +64 -15
- data/vendor/v8/src/snapshot-common.cc +64 -15
- data/vendor/v8/src/snapshot-empty.cc +7 -1
- data/vendor/v8/src/snapshot.h +9 -2
- data/vendor/v8/src/spaces-inl.h +17 -0
- data/vendor/v8/src/spaces.cc +477 -183
- data/vendor/v8/src/spaces.h +238 -58
- data/vendor/v8/src/splay-tree-inl.h +8 -7
- data/vendor/v8/src/splay-tree.h +24 -10
- data/vendor/v8/src/store-buffer.cc +12 -5
- data/vendor/v8/src/store-buffer.h +2 -4
- data/vendor/v8/src/string-search.h +22 -6
- data/vendor/v8/src/string-stream.cc +11 -8
- data/vendor/v8/src/string.js +47 -15
- data/vendor/v8/src/stub-cache.cc +461 -224
- data/vendor/v8/src/stub-cache.h +164 -102
- data/vendor/v8/src/sweeper-thread.cc +105 -0
- data/vendor/v8/src/sweeper-thread.h +81 -0
- data/vendor/v8/src/token.h +1 -0
- data/vendor/v8/src/transitions-inl.h +220 -0
- data/vendor/v8/src/transitions.cc +160 -0
- data/vendor/v8/src/transitions.h +207 -0
- data/vendor/v8/src/type-info.cc +182 -181
- data/vendor/v8/src/type-info.h +31 -19
- data/vendor/v8/src/unicode-inl.h +62 -106
- data/vendor/v8/src/unicode.cc +57 -67
- data/vendor/v8/src/unicode.h +45 -91
- data/vendor/v8/src/uri.js +57 -29
- data/vendor/v8/src/utils.h +105 -5
- data/vendor/v8/src/v8-counters.cc +54 -11
- data/vendor/v8/src/v8-counters.h +134 -19
- data/vendor/v8/src/v8.cc +29 -29
- data/vendor/v8/src/v8.h +1 -0
- data/vendor/v8/src/v8conversions.cc +26 -22
- data/vendor/v8/src/v8globals.h +56 -43
- data/vendor/v8/src/v8natives.js +83 -30
- data/vendor/v8/src/v8threads.cc +42 -21
- data/vendor/v8/src/v8threads.h +4 -1
- data/vendor/v8/src/v8utils.cc +9 -93
- data/vendor/v8/src/v8utils.h +37 -33
- data/vendor/v8/src/variables.cc +6 -3
- data/vendor/v8/src/variables.h +6 -13
- data/vendor/v8/src/version.cc +2 -2
- data/vendor/v8/src/vm-state-inl.h +11 -0
- data/vendor/v8/src/x64/assembler-x64-inl.h +39 -8
- data/vendor/v8/src/x64/assembler-x64.cc +78 -64
- data/vendor/v8/src/x64/assembler-x64.h +38 -33
- data/vendor/v8/src/x64/builtins-x64.cc +105 -7
- data/vendor/v8/src/x64/code-stubs-x64.cc +790 -413
- data/vendor/v8/src/x64/code-stubs-x64.h +10 -106
- data/vendor/v8/src/x64/codegen-x64.cc +210 -8
- data/vendor/v8/src/x64/codegen-x64.h +20 -1
- data/vendor/v8/src/x64/deoptimizer-x64.cc +336 -75
- data/vendor/v8/src/x64/disasm-x64.cc +15 -0
- data/vendor/v8/src/x64/frames-x64.h +0 -14
- data/vendor/v8/src/x64/full-codegen-x64.cc +293 -270
- data/vendor/v8/src/x64/ic-x64.cc +153 -251
- data/vendor/v8/src/x64/lithium-codegen-x64.cc +1379 -531
- data/vendor/v8/src/x64/lithium-codegen-x64.h +67 -23
- data/vendor/v8/src/x64/lithium-gap-resolver-x64.cc +2 -2
- data/vendor/v8/src/x64/lithium-x64.cc +349 -289
- data/vendor/v8/src/x64/lithium-x64.h +460 -250
- data/vendor/v8/src/x64/macro-assembler-x64.cc +350 -177
- data/vendor/v8/src/x64/macro-assembler-x64.h +67 -49
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.cc +46 -33
- data/vendor/v8/src/x64/regexp-macro-assembler-x64.h +2 -3
- data/vendor/v8/src/x64/stub-cache-x64.cc +484 -653
- data/vendor/v8/src/zone-inl.h +9 -27
- data/vendor/v8/src/zone.cc +5 -5
- data/vendor/v8/src/zone.h +53 -27
- data/vendor/v8/test/benchmarks/testcfg.py +5 -0
- data/vendor/v8/test/cctest/cctest.cc +4 -0
- data/vendor/v8/test/cctest/cctest.gyp +3 -1
- data/vendor/v8/test/cctest/cctest.h +57 -9
- data/vendor/v8/test/cctest/cctest.status +15 -15
- data/vendor/v8/test/cctest/test-accessors.cc +26 -0
- data/vendor/v8/test/cctest/test-alloc.cc +22 -30
- data/vendor/v8/test/cctest/test-api.cc +1943 -314
- data/vendor/v8/test/cctest/test-assembler-arm.cc +133 -13
- data/vendor/v8/test/cctest/test-assembler-ia32.cc +1 -1
- data/vendor/v8/test/cctest/test-assembler-mips.cc +12 -0
- data/vendor/v8/test/cctest/test-ast.cc +4 -2
- data/vendor/v8/test/cctest/test-compiler.cc +61 -29
- data/vendor/v8/test/cctest/test-dataflow.cc +2 -2
- data/vendor/v8/test/cctest/test-debug.cc +212 -33
- data/vendor/v8/test/cctest/test-decls.cc +257 -11
- data/vendor/v8/test/cctest/test-dictionary.cc +24 -10
- data/vendor/v8/test/cctest/test-disasm-arm.cc +118 -1
- data/vendor/v8/test/cctest/test-disasm-ia32.cc +3 -2
- data/vendor/v8/test/cctest/test-flags.cc +14 -1
- data/vendor/v8/test/cctest/test-func-name-inference.cc +7 -4
- data/vendor/v8/test/cctest/test-global-object.cc +51 -0
- data/vendor/v8/test/cctest/test-hashing.cc +32 -23
- data/vendor/v8/test/cctest/test-heap-profiler.cc +131 -77
- data/vendor/v8/test/cctest/test-heap.cc +1084 -143
- data/vendor/v8/test/cctest/test-list.cc +1 -1
- data/vendor/v8/test/cctest/test-liveedit.cc +3 -2
- data/vendor/v8/test/cctest/test-lockers.cc +12 -13
- data/vendor/v8/test/cctest/test-log.cc +10 -8
- data/vendor/v8/test/cctest/test-macro-assembler-x64.cc +2 -2
- data/vendor/v8/test/cctest/test-mark-compact.cc +44 -22
- data/vendor/v8/test/cctest/test-object-observe.cc +434 -0
- data/vendor/v8/test/cctest/test-parsing.cc +86 -39
- data/vendor/v8/test/cctest/test-platform-linux.cc +6 -0
- data/vendor/v8/test/cctest/test-platform-win32.cc +7 -0
- data/vendor/v8/test/cctest/test-random.cc +5 -4
- data/vendor/v8/test/cctest/test-regexp.cc +137 -101
- data/vendor/v8/test/cctest/test-serialize.cc +150 -230
- data/vendor/v8/test/cctest/test-sockets.cc +1 -1
- data/vendor/v8/test/cctest/test-spaces.cc +139 -0
- data/vendor/v8/test/cctest/test-strings.cc +736 -74
- data/vendor/v8/test/cctest/test-thread-termination.cc +10 -11
- data/vendor/v8/test/cctest/test-threads.cc +4 -4
- data/vendor/v8/test/cctest/test-utils.cc +16 -0
- data/vendor/v8/test/cctest/test-weakmaps.cc +7 -3
- data/vendor/v8/test/cctest/testcfg.py +64 -5
- data/vendor/v8/test/es5conform/testcfg.py +5 -0
- data/vendor/v8/test/message/message.status +1 -1
- data/vendor/v8/test/message/overwritten-builtins.out +3 -0
- data/vendor/v8/test/message/testcfg.py +89 -8
- data/vendor/v8/test/message/try-catch-finally-no-message.out +26 -26
- data/vendor/v8/test/mjsunit/accessor-map-sharing.js +18 -2
- data/vendor/v8/test/mjsunit/allocation-site-info.js +126 -0
- data/vendor/v8/test/mjsunit/array-bounds-check-removal.js +62 -1
- data/vendor/v8/test/mjsunit/array-iteration.js +1 -1
- data/vendor/v8/test/mjsunit/array-literal-transitions.js +2 -0
- data/vendor/v8/test/mjsunit/array-natives-elements.js +317 -0
- data/vendor/v8/test/mjsunit/array-reduce.js +8 -8
- data/vendor/v8/test/mjsunit/array-slice.js +12 -0
- data/vendor/v8/test/mjsunit/array-store-and-grow.js +4 -1
- data/vendor/v8/test/mjsunit/assert-opt-and-deopt.js +1 -1
- data/vendor/v8/test/mjsunit/bugs/bug-2337.js +53 -0
- data/vendor/v8/test/mjsunit/compare-known-objects-slow.js +69 -0
- data/vendor/v8/test/mjsunit/compiler/alloc-object-huge.js +3 -1
- data/vendor/v8/test/mjsunit/compiler/inline-accessors.js +368 -0
- data/vendor/v8/test/mjsunit/compiler/inline-arguments.js +87 -1
- data/vendor/v8/test/mjsunit/compiler/inline-closures.js +49 -0
- data/vendor/v8/test/mjsunit/compiler/inline-construct.js +55 -43
- data/vendor/v8/test/mjsunit/compiler/inline-literals.js +39 -0
- data/vendor/v8/test/mjsunit/compiler/multiply-add.js +69 -0
- data/vendor/v8/test/mjsunit/compiler/optimized-closures.js +57 -0
- data/vendor/v8/test/mjsunit/compiler/parallel-proto-change.js +44 -0
- data/vendor/v8/test/mjsunit/compiler/property-static.js +69 -0
- data/vendor/v8/test/mjsunit/compiler/proto-chain-constant.js +55 -0
- data/vendor/v8/test/mjsunit/compiler/proto-chain-load.js +44 -0
- data/vendor/v8/test/mjsunit/compiler/regress-gvn.js +3 -2
- data/vendor/v8/test/mjsunit/compiler/regress-or.js +6 -2
- data/vendor/v8/test/mjsunit/compiler/rotate.js +224 -0
- data/vendor/v8/test/mjsunit/compiler/uint32.js +173 -0
- data/vendor/v8/test/mjsunit/count-based-osr.js +2 -1
- data/vendor/v8/test/mjsunit/d8-os.js +3 -3
- data/vendor/v8/test/mjsunit/date-parse.js +3 -0
- data/vendor/v8/test/mjsunit/date.js +22 -0
- data/vendor/v8/test/mjsunit/debug-break-inline.js +1 -0
- data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized-double.js +22 -12
- data/vendor/v8/test/mjsunit/debug-evaluate-locals-optimized.js +21 -10
- data/vendor/v8/test/mjsunit/debug-liveedit-compile-error.js +60 -0
- data/vendor/v8/test/mjsunit/debug-liveedit-double-call.js +142 -0
- data/vendor/v8/test/mjsunit/debug-liveedit-literals.js +94 -0
- data/vendor/v8/test/mjsunit/debug-liveedit-restart-frame.js +153 -0
- data/vendor/v8/test/mjsunit/debug-multiple-breakpoints.js +1 -1
- data/vendor/v8/test/mjsunit/debug-script-breakpoints-closure.js +67 -0
- data/vendor/v8/test/mjsunit/debug-script-breakpoints-nested.js +82 -0
- data/vendor/v8/test/mjsunit/debug-script.js +4 -2
- data/vendor/v8/test/mjsunit/debug-set-variable-value.js +308 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part1.js +190 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part2.js +83 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part3.js +80 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part4.js +80 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part5.js +77 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part6.js +79 -0
- data/vendor/v8/test/mjsunit/debug-stepout-scope-part7.js +79 -0
- data/vendor/v8/test/mjsunit/{debug-stepout-scope.js → debug-stepout-scope-part8.js} +0 -189
- data/vendor/v8/test/mjsunit/delete-non-configurable.js +74 -0
- data/vendor/v8/test/mjsunit/deopt-minus-zero.js +56 -0
- data/vendor/v8/test/mjsunit/elements-kind.js +6 -4
- data/vendor/v8/test/mjsunit/elements-length-no-holey.js +33 -0
- data/vendor/v8/test/mjsunit/elements-transition-hoisting.js +46 -19
- data/vendor/v8/test/mjsunit/error-accessors.js +54 -0
- data/vendor/v8/test/mjsunit/error-constructors.js +1 -14
- data/vendor/v8/test/mjsunit/error-tostring.js +8 -0
- data/vendor/v8/test/mjsunit/eval-stack-trace.js +204 -0
- data/vendor/v8/test/mjsunit/external-array.js +364 -1
- data/vendor/v8/test/mjsunit/fast-array-length.js +37 -0
- data/vendor/v8/test/mjsunit/fast-non-keyed.js +113 -0
- data/vendor/v8/test/mjsunit/fast-prototype.js +117 -0
- data/vendor/v8/test/mjsunit/function-call.js +14 -18
- data/vendor/v8/test/mjsunit/fuzz-natives-part1.js +230 -0
- data/vendor/v8/test/mjsunit/fuzz-natives-part2.js +229 -0
- data/vendor/v8/test/mjsunit/fuzz-natives-part3.js +229 -0
- data/vendor/v8/test/mjsunit/{fuzz-natives.js → fuzz-natives-part4.js} +12 -2
- data/vendor/v8/test/mjsunit/generated-transition-stub.js +218 -0
- data/vendor/v8/test/mjsunit/greedy.js +1 -1
- data/vendor/v8/test/mjsunit/harmony/block-conflicts.js +2 -1
- data/vendor/v8/test/mjsunit/harmony/block-let-crankshaft.js +1 -1
- data/vendor/v8/test/mjsunit/harmony/collections.js +69 -11
- data/vendor/v8/test/mjsunit/harmony/debug-blockscopes.js +2 -2
- data/vendor/v8/test/mjsunit/harmony/module-linking.js +180 -3
- data/vendor/v8/test/mjsunit/harmony/module-parsing.js +31 -0
- data/vendor/v8/test/mjsunit/harmony/module-recompile.js +87 -0
- data/vendor/v8/test/mjsunit/harmony/module-resolution.js +15 -2
- data/vendor/v8/test/mjsunit/harmony/object-observe.js +1056 -0
- data/vendor/v8/test/mjsunit/harmony/proxies-json.js +178 -0
- data/vendor/v8/test/mjsunit/harmony/proxies.js +25 -10
- data/vendor/v8/test/mjsunit/json-parser-recursive.js +33 -0
- data/vendor/v8/test/mjsunit/json-stringify-recursive.js +52 -0
- data/vendor/v8/test/mjsunit/json.js +38 -2
- data/vendor/v8/test/mjsunit/json2.js +153 -0
- data/vendor/v8/test/mjsunit/limit-locals.js +5 -4
- data/vendor/v8/test/mjsunit/manual-parallel-recompile.js +79 -0
- data/vendor/v8/test/mjsunit/math-exp-precision.js +64 -0
- data/vendor/v8/test/mjsunit/math-floor-negative.js +59 -0
- data/vendor/v8/test/mjsunit/math-floor-of-div-minus-zero.js +41 -0
- data/vendor/v8/test/mjsunit/math-floor-of-div-nosudiv.js +288 -0
- data/vendor/v8/test/mjsunit/math-floor-of-div.js +81 -9
- data/vendor/v8/test/mjsunit/{math-floor.js → math-floor-part1.js} +1 -72
- data/vendor/v8/test/mjsunit/math-floor-part2.js +76 -0
- data/vendor/v8/test/mjsunit/math-floor-part3.js +78 -0
- data/vendor/v8/test/mjsunit/math-floor-part4.js +76 -0
- data/vendor/v8/test/mjsunit/mirror-object.js +43 -9
- data/vendor/v8/test/mjsunit/mjsunit.js +1 -1
- data/vendor/v8/test/mjsunit/mjsunit.status +52 -27
- data/vendor/v8/test/mjsunit/mul-exhaustive-part1.js +491 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part10.js +470 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part2.js +525 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part3.js +532 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part4.js +509 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part5.js +505 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part6.js +554 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part7.js +497 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part8.js +526 -0
- data/vendor/v8/test/mjsunit/mul-exhaustive-part9.js +533 -0
- data/vendor/v8/test/mjsunit/new-function.js +34 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part1.js +1172 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part2.js +1178 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part3.js +1178 -0
- data/vendor/v8/test/mjsunit/numops-fuzz-part4.js +1177 -0
- data/vendor/v8/test/mjsunit/object-define-property.js +107 -2
- data/vendor/v8/test/mjsunit/override-read-only-property.js +6 -4
- data/vendor/v8/test/mjsunit/packed-elements.js +2 -2
- data/vendor/v8/test/mjsunit/parse-int-float.js +4 -4
- data/vendor/v8/test/mjsunit/pixel-array-rounding.js +1 -1
- data/vendor/v8/test/mjsunit/readonly.js +228 -0
- data/vendor/v8/test/mjsunit/regexp-capture-3.js +16 -18
- data/vendor/v8/test/mjsunit/regexp-capture.js +2 -0
- data/vendor/v8/test/mjsunit/regexp-global.js +122 -0
- data/vendor/v8/test/mjsunit/regexp-results-cache.js +78 -0
- data/vendor/v8/test/mjsunit/regress/regress-1117.js +12 -3
- data/vendor/v8/test/mjsunit/regress/regress-1118.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-115100.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-1199637.js +1 -3
- data/vendor/v8/test/mjsunit/regress/regress-121407.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-131923.js +30 -0
- data/vendor/v8/test/mjsunit/regress/regress-131994.js +70 -0
- data/vendor/v8/test/mjsunit/regress/regress-133211.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-133211b.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-136048.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-137768.js +73 -0
- data/vendor/v8/test/mjsunit/regress/regress-143967.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-145201.js +107 -0
- data/vendor/v8/test/mjsunit/regress/regress-147497.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-148378.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-1563.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-1591.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-164442.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-165637.js +61 -0
- data/vendor/v8/test/mjsunit/regress/regress-166379.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-166553.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-1692.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-171641.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-1980.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-2073.js +99 -0
- data/vendor/v8/test/mjsunit/regress/regress-2119.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2156.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-2163.js +70 -0
- data/vendor/v8/test/mjsunit/regress/regress-2170.js +58 -0
- data/vendor/v8/test/mjsunit/regress/regress-2172.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-2185-2.js +145 -0
- data/vendor/v8/test/mjsunit/regress/regress-2185.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-2186.js +49 -0
- data/vendor/v8/test/mjsunit/regress/regress-2193.js +58 -0
- data/vendor/v8/test/mjsunit/regress/regress-2219.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2225.js +65 -0
- data/vendor/v8/test/mjsunit/regress/regress-2226.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2234.js +41 -0
- data/vendor/v8/test/mjsunit/regress/regress-2243.js +31 -0
- data/vendor/v8/test/mjsunit/regress/regress-2249.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-2250.js +68 -0
- data/vendor/v8/test/mjsunit/regress/regress-2261.js +113 -0
- data/vendor/v8/test/mjsunit/regress/regress-2263.js +30 -0
- data/vendor/v8/test/mjsunit/regress/regress-2284.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2285.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2286.js +32 -0
- data/vendor/v8/test/mjsunit/regress/regress-2289.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-2291.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2294.js +70 -0
- data/vendor/v8/test/mjsunit/regress/regress-2296.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-2315.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-2318.js +66 -0
- data/vendor/v8/test/mjsunit/regress/regress-2322.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2326.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-2336.js +53 -0
- data/vendor/v8/test/mjsunit/regress/regress-2339.js +59 -0
- data/vendor/v8/test/mjsunit/regress/regress-2346.js +123 -0
- data/vendor/v8/test/mjsunit/regress/regress-2373.js +29 -0
- data/vendor/v8/test/mjsunit/regress/regress-2374.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-2398.js +41 -0
- data/vendor/v8/test/mjsunit/regress/regress-2410.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2416.js +75 -0
- data/vendor/v8/test/mjsunit/regress/regress-2419.js +37 -0
- data/vendor/v8/test/mjsunit/regress/regress-2433.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-2437.js +156 -0
- data/vendor/v8/test/mjsunit/regress/regress-2438.js +52 -0
- data/vendor/v8/test/mjsunit/regress/regress-2443.js +129 -0
- data/vendor/v8/test/mjsunit/regress/regress-2444.js +120 -0
- data/vendor/v8/test/mjsunit/regress/regress-2489.js +50 -0
- data/vendor/v8/test/mjsunit/regress/regress-2499.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-334.js +1 -1
- data/vendor/v8/test/mjsunit/regress/regress-492.js +39 -1
- data/vendor/v8/test/mjsunit/regress/regress-builtin-array-op.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-cnlt-elements.js +43 -0
- data/vendor/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js +46 -0
- data/vendor/v8/test/mjsunit/regress/regress-convert-enum.js +60 -0
- data/vendor/v8/test/mjsunit/regress/regress-convert-enum2.js +46 -0
- data/vendor/v8/test/mjsunit/regress/regress-convert-transition.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-119926.js +3 -1
- data/vendor/v8/test/mjsunit/regress/regress-crbug-125148.js +90 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-134055.js +63 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-134609.js +59 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-135008.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-135066.js +55 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-137689.js +47 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-138887.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-140083.js +44 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-142087.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-142218.js +44 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-145961.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-146910.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-147475.js +48 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-148376.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-150545.js +53 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-150729.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-157019.js +54 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-157520.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-158185.js +39 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-160010.js +35 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-162085.js +71 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-168545.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-170856.js +33 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-172345.js +34 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-173974.js +36 -0
- data/vendor/v8/test/mjsunit/regress/regress-crbug-18639.js +9 -5
- data/vendor/v8/test/mjsunit/regress/regress-debug-code-recompilation.js +2 -1
- data/vendor/v8/test/mjsunit/regress/regress-deep-proto.js +45 -0
- data/vendor/v8/test/mjsunit/regress/regress-delete-empty-double.js +40 -0
- data/vendor/v8/test/mjsunit/regress/regress-iteration-order.js +42 -0
- data/vendor/v8/test/mjsunit/regress/regress-json-stringify-gc.js +41 -0
- data/vendor/v8/test/mjsunit/regress/regress-latin-1.js +78 -0
- data/vendor/v8/test/mjsunit/regress/regress-load-elements.js +49 -0
- data/vendor/v8/test/mjsunit/regress/regress-observe-empty-double-array.js +38 -0
- data/vendor/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js +37 -0
- data/vendor/v8/test/mjsunit/shift-for-integer-div.js +59 -0
- data/vendor/v8/test/mjsunit/stack-traces-gc.js +119 -0
- data/vendor/v8/test/mjsunit/stack-traces-overflow.js +122 -0
- data/vendor/v8/test/mjsunit/stack-traces.js +39 -1
- data/vendor/v8/test/mjsunit/str-to-num.js +7 -2
- data/vendor/v8/test/mjsunit/strict-mode.js +36 -11
- data/vendor/v8/test/mjsunit/string-charcodeat.js +3 -0
- data/vendor/v8/test/mjsunit/string-natives.js +72 -0
- data/vendor/v8/test/mjsunit/string-split.js +17 -0
- data/vendor/v8/test/mjsunit/testcfg.py +76 -6
- data/vendor/v8/test/mjsunit/tools/tickprocessor.js +4 -1
- data/vendor/v8/test/mjsunit/try-finally-continue.js +72 -0
- data/vendor/v8/test/mjsunit/typed-array-slice.js +61 -0
- data/vendor/v8/test/mjsunit/unbox-double-arrays.js +2 -0
- data/vendor/v8/test/mjsunit/uri.js +12 -0
- data/vendor/v8/test/mjsunit/with-readonly.js +4 -2
- data/vendor/v8/test/mozilla/mozilla.status +19 -113
- data/vendor/v8/test/mozilla/testcfg.py +122 -3
- data/vendor/v8/test/preparser/preparser.status +5 -0
- data/vendor/v8/test/preparser/strict-identifiers.pyt +1 -1
- data/vendor/v8/test/preparser/testcfg.py +101 -5
- data/vendor/v8/test/sputnik/sputnik.status +1 -1
- data/vendor/v8/test/sputnik/testcfg.py +5 -0
- data/vendor/v8/test/test262/README +2 -2
- data/vendor/v8/test/test262/test262.status +13 -36
- data/vendor/v8/test/test262/testcfg.py +102 -8
- data/vendor/v8/tools/android-build.sh +0 -0
- data/vendor/v8/tools/android-ll-prof.sh +69 -0
- data/vendor/v8/tools/android-run.py +109 -0
- data/vendor/v8/tools/android-sync.sh +105 -0
- data/vendor/v8/tools/bash-completion.sh +0 -0
- data/vendor/v8/tools/check-static-initializers.sh +0 -0
- data/vendor/v8/tools/common-includes.sh +15 -22
- data/vendor/v8/tools/disasm.py +4 -4
- data/vendor/v8/tools/fuzz-harness.sh +0 -0
- data/vendor/v8/tools/gen-postmortem-metadata.py +6 -8
- data/vendor/v8/tools/grokdump.py +404 -129
- data/vendor/v8/tools/gyp/v8.gyp +105 -43
- data/vendor/v8/tools/linux-tick-processor +5 -5
- data/vendor/v8/tools/ll_prof.py +75 -15
- data/vendor/v8/tools/merge-to-branch.sh +2 -2
- data/vendor/v8/tools/plot-timer-events +70 -0
- data/vendor/v8/tools/plot-timer-events.js +510 -0
- data/vendor/v8/tools/presubmit.py +1 -0
- data/vendor/v8/tools/push-to-trunk.sh +14 -4
- data/vendor/v8/tools/run-llprof.sh +69 -0
- data/vendor/v8/tools/run-tests.py +372 -0
- data/vendor/v8/tools/run-valgrind.py +1 -1
- data/vendor/v8/tools/status-file-converter.py +39 -0
- data/vendor/v8/tools/test-server.py +224 -0
- data/vendor/v8/tools/test-wrapper-gypbuild.py +13 -16
- data/vendor/v8/tools/test.py +10 -19
- data/vendor/v8/tools/testrunner/README +174 -0
- data/vendor/v8/tools/testrunner/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/local/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/local/commands.py +153 -0
- data/vendor/v8/tools/testrunner/local/execution.py +182 -0
- data/vendor/v8/tools/testrunner/local/old_statusfile.py +460 -0
- data/vendor/v8/tools/testrunner/local/progress.py +238 -0
- data/vendor/v8/tools/testrunner/local/statusfile.py +145 -0
- data/vendor/v8/tools/testrunner/local/testsuite.py +187 -0
- data/vendor/v8/tools/testrunner/local/utils.py +108 -0
- data/vendor/v8/tools/testrunner/local/verbose.py +99 -0
- data/vendor/v8/tools/testrunner/network/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/network/distro.py +90 -0
- data/vendor/v8/tools/testrunner/network/endpoint.py +124 -0
- data/vendor/v8/tools/testrunner/network/network_execution.py +253 -0
- data/vendor/v8/tools/testrunner/network/perfdata.py +120 -0
- data/vendor/v8/tools/testrunner/objects/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/objects/context.py +50 -0
- data/vendor/v8/tools/testrunner/objects/output.py +60 -0
- data/vendor/v8/tools/testrunner/objects/peer.py +80 -0
- data/vendor/v8/tools/testrunner/objects/testcase.py +83 -0
- data/vendor/v8/tools/testrunner/objects/workpacket.py +90 -0
- data/vendor/v8/tools/testrunner/server/__init__.py +26 -0
- data/vendor/v8/tools/testrunner/server/compression.py +111 -0
- data/vendor/v8/tools/testrunner/server/constants.py +51 -0
- data/vendor/v8/tools/testrunner/server/daemon.py +147 -0
- data/vendor/v8/tools/testrunner/server/local_handler.py +119 -0
- data/vendor/v8/tools/testrunner/server/main.py +245 -0
- data/vendor/v8/tools/testrunner/server/presence_handler.py +120 -0
- data/vendor/v8/tools/testrunner/server/signatures.py +63 -0
- data/vendor/v8/tools/testrunner/server/status_handler.py +112 -0
- data/vendor/v8/tools/testrunner/server/work_handler.py +150 -0
- data/vendor/v8/tools/tick-processor.html +168 -0
- data/vendor/v8/tools/tickprocessor-driver.js +5 -3
- data/vendor/v8/tools/tickprocessor.js +58 -15
- metadata +534 -30
- data/patches/add-freebsd9-and-freebsd10-to-gyp-GetFlavor.patch +0 -11
- data/patches/do-not-imply-vfp3-and-armv7.patch +0 -44
- data/patches/fPIC-on-x64.patch +0 -14
- data/vendor/v8/src/liveobjectlist-inl.h +0 -126
- data/vendor/v8/src/liveobjectlist.cc +0 -2631
- data/vendor/v8/src/liveobjectlist.h +0 -319
- data/vendor/v8/test/mjsunit/mul-exhaustive.js +0 -4629
- data/vendor/v8/test/mjsunit/numops-fuzz.js +0 -4609
- data/vendor/v8/test/mjsunit/regress/regress-1969.js +0 -5045
data/vendor/v8/src/heap.h
CHANGED
@@ -64,7 +64,7 @@ namespace internal {
|
|
64
64
|
V(Map, ascii_symbol_map, AsciiSymbolMap) \
|
65
65
|
V(Map, ascii_string_map, AsciiStringMap) \
|
66
66
|
V(Map, heap_number_map, HeapNumberMap) \
|
67
|
-
V(Map,
|
67
|
+
V(Map, native_context_map, NativeContextMap) \
|
68
68
|
V(Map, fixed_array_map, FixedArrayMap) \
|
69
69
|
V(Map, code_map, CodeMap) \
|
70
70
|
V(Map, scope_info_map, ScopeInfoMap) \
|
@@ -87,6 +87,7 @@ namespace internal {
|
|
87
87
|
V(Object, instanceof_cache_answer, InstanceofCacheAnswer) \
|
88
88
|
V(FixedArray, single_character_string_cache, SingleCharacterStringCache) \
|
89
89
|
V(FixedArray, string_split_cache, StringSplitCache) \
|
90
|
+
V(FixedArray, regexp_multiple_cache, RegExpMultipleCache) \
|
90
91
|
V(Object, termination_exception, TerminationException) \
|
91
92
|
V(Smi, hash_seed, HashSeed) \
|
92
93
|
V(Map, string_map, StringMap) \
|
@@ -130,6 +131,7 @@ namespace internal {
|
|
130
131
|
V(Map, with_context_map, WithContextMap) \
|
131
132
|
V(Map, block_context_map, BlockContextMap) \
|
132
133
|
V(Map, module_context_map, ModuleContextMap) \
|
134
|
+
V(Map, global_context_map, GlobalContextMap) \
|
133
135
|
V(Map, oddball_map, OddballMap) \
|
134
136
|
V(Map, message_object_map, JSMessageObjectMap) \
|
135
137
|
V(Map, foreign_map, ForeignMap) \
|
@@ -150,7 +152,11 @@ namespace internal {
|
|
150
152
|
V(Smi, real_stack_limit, RealStackLimit) \
|
151
153
|
V(StringDictionary, intrinsic_function_names, IntrinsicFunctionNames) \
|
152
154
|
V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \
|
153
|
-
V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset)
|
155
|
+
V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset) \
|
156
|
+
V(Smi, getter_stub_deopt_pc_offset, GetterStubDeoptPCOffset) \
|
157
|
+
V(Smi, setter_stub_deopt_pc_offset, SetterStubDeoptPCOffset) \
|
158
|
+
V(JSObject, observation_state, ObservationState) \
|
159
|
+
V(Map, external_map, ExternalMap)
|
154
160
|
|
155
161
|
#define ROOT_LIST(V) \
|
156
162
|
STRONG_ROOT_LIST(V) \
|
@@ -172,6 +178,7 @@ namespace internal {
|
|
172
178
|
V(constructor_symbol, "constructor") \
|
173
179
|
V(code_symbol, ".code") \
|
174
180
|
V(result_symbol, ".result") \
|
181
|
+
V(dot_for_symbol, ".for.") \
|
175
182
|
V(catch_var_symbol, ".catch-var") \
|
176
183
|
V(empty_symbol, "") \
|
177
184
|
V(eval_symbol, "eval") \
|
@@ -202,6 +209,7 @@ namespace internal {
|
|
202
209
|
V(char_at_symbol, "CharAt") \
|
203
210
|
V(undefined_symbol, "undefined") \
|
204
211
|
V(value_of_symbol, "valueOf") \
|
212
|
+
V(stack_symbol, "stack") \
|
205
213
|
V(InitializeVarGlobal_symbol, "InitializeVarGlobal") \
|
206
214
|
V(InitializeConstGlobal_symbol, "InitializeConstGlobal") \
|
207
215
|
V(KeyedLoadElementMonomorphic_symbol, \
|
@@ -216,6 +224,9 @@ namespace internal {
|
|
216
224
|
V(illegal_execution_state_symbol, "illegal execution state") \
|
217
225
|
V(get_symbol, "get") \
|
218
226
|
V(set_symbol, "set") \
|
227
|
+
V(map_field_symbol, "%map") \
|
228
|
+
V(elements_field_symbol, "%elements") \
|
229
|
+
V(length_field_symbol, "%length") \
|
219
230
|
V(function_class_symbol, "Function") \
|
220
231
|
V(illegal_argument_symbol, "illegal argument") \
|
221
232
|
V(MakeReferenceError_symbol, "MakeReferenceError") \
|
@@ -240,7 +251,8 @@ namespace internal {
|
|
240
251
|
V(use_strict, "use strict") \
|
241
252
|
V(dot_symbol, ".") \
|
242
253
|
V(anonymous_function_symbol, "(anonymous function)") \
|
243
|
-
V(compare_ic_symbol, "
|
254
|
+
V(compare_ic_symbol, "==") \
|
255
|
+
V(strict_compare_ic_symbol, "===") \
|
244
256
|
V(infinity_symbol, "Infinity") \
|
245
257
|
V(minus_infinity_symbol, "-Infinity") \
|
246
258
|
V(hidden_stack_trace_symbol, "v8::hidden_stack_trace") \
|
@@ -278,14 +290,6 @@ class StoreBufferRebuilder {
|
|
278
290
|
|
279
291
|
|
280
292
|
|
281
|
-
// The all static Heap captures the interface to the global object heap.
|
282
|
-
// All JavaScript contexts by this process share the same object heap.
|
283
|
-
|
284
|
-
#ifdef DEBUG
|
285
|
-
class HeapDebugUtils;
|
286
|
-
#endif
|
287
|
-
|
288
|
-
|
289
293
|
// A queue of objects promoted during scavenge. Each object is accompanied
|
290
294
|
// by it's size to avoid dereferencing a map pointer for scanning.
|
291
295
|
class PromotionQueue {
|
@@ -427,6 +431,41 @@ class ExternalStringTable {
|
|
427
431
|
};
|
428
432
|
|
429
433
|
|
434
|
+
// The stack property of an error object is implemented as a getter that
|
435
|
+
// formats the attached raw stack trace into a string. This raw stack trace
|
436
|
+
// keeps code and function objects alive until the getter is called the first
|
437
|
+
// time. To release those objects, we call the getter after each GC for
|
438
|
+
// newly tenured error objects that are kept in a list.
|
439
|
+
class ErrorObjectList {
|
440
|
+
public:
|
441
|
+
inline void Add(JSObject* object);
|
442
|
+
|
443
|
+
inline void Iterate(ObjectVisitor* v);
|
444
|
+
|
445
|
+
void TearDown();
|
446
|
+
|
447
|
+
void RemoveUnmarked(Heap* heap);
|
448
|
+
|
449
|
+
void DeferredFormatStackTrace(Isolate* isolate);
|
450
|
+
|
451
|
+
void UpdateReferences();
|
452
|
+
|
453
|
+
void UpdateReferencesInNewSpace(Heap* heap);
|
454
|
+
|
455
|
+
private:
|
456
|
+
static const int kBudgetPerGC = 16;
|
457
|
+
|
458
|
+
ErrorObjectList() : nested_(false) { }
|
459
|
+
|
460
|
+
friend class Heap;
|
461
|
+
|
462
|
+
List<Object*> list_;
|
463
|
+
bool nested_;
|
464
|
+
|
465
|
+
DISALLOW_COPY_AND_ASSIGN(ErrorObjectList);
|
466
|
+
};
|
467
|
+
|
468
|
+
|
430
469
|
enum ArrayStorageAllocationMode {
|
431
470
|
DONT_INITIALIZE_ARRAY_ELEMENTS,
|
432
471
|
INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE
|
@@ -481,6 +520,9 @@ class Heap {
|
|
481
520
|
// Returns the amount of executable memory currently committed for the heap.
|
482
521
|
intptr_t CommittedMemoryExecutable();
|
483
522
|
|
523
|
+
// Returns the amount of phyical memory currently committed for the heap.
|
524
|
+
size_t CommittedPhysicalMemory();
|
525
|
+
|
484
526
|
// Returns the available bytes in space w/o growing.
|
485
527
|
// Heap doesn't guarantee that it can allocate an object that requires
|
486
528
|
// all available bytes. Check MaxHeapObjectSize() instead.
|
@@ -503,6 +545,24 @@ class Heap {
|
|
503
545
|
MapSpace* map_space() { return map_space_; }
|
504
546
|
CellSpace* cell_space() { return cell_space_; }
|
505
547
|
LargeObjectSpace* lo_space() { return lo_space_; }
|
548
|
+
PagedSpace* paged_space(int idx) {
|
549
|
+
switch (idx) {
|
550
|
+
case OLD_POINTER_SPACE:
|
551
|
+
return old_pointer_space();
|
552
|
+
case OLD_DATA_SPACE:
|
553
|
+
return old_data_space();
|
554
|
+
case MAP_SPACE:
|
555
|
+
return map_space();
|
556
|
+
case CELL_SPACE:
|
557
|
+
return cell_space();
|
558
|
+
case CODE_SPACE:
|
559
|
+
return code_space();
|
560
|
+
case NEW_SPACE:
|
561
|
+
case LO_SPACE:
|
562
|
+
UNREACHABLE();
|
563
|
+
}
|
564
|
+
return NULL;
|
565
|
+
}
|
506
566
|
|
507
567
|
bool always_allocate() { return always_allocate_scope_depth_ != 0; }
|
508
568
|
Address always_allocate_scope_depth_address() {
|
@@ -530,7 +590,8 @@ class Heap {
|
|
530
590
|
MUST_USE_RESULT MaybeObject* AllocateJSObject(
|
531
591
|
JSFunction* constructor, PretenureFlag pretenure = NOT_TENURED);
|
532
592
|
|
533
|
-
MUST_USE_RESULT MaybeObject* AllocateJSModule(
|
593
|
+
MUST_USE_RESULT MaybeObject* AllocateJSModule(Context* context,
|
594
|
+
ScopeInfo* scope_info);
|
534
595
|
|
535
596
|
// Allocate a JSArray with no elements
|
536
597
|
MUST_USE_RESULT MaybeObject* AllocateEmptyJSArray(
|
@@ -554,6 +615,7 @@ class Heap {
|
|
554
615
|
MUST_USE_RESULT MaybeObject* AllocateJSArrayWithElements(
|
555
616
|
FixedArrayBase* array_base,
|
556
617
|
ElementsKind elements_kind,
|
618
|
+
int length,
|
557
619
|
PretenureFlag pretenure = NOT_TENURED);
|
558
620
|
|
559
621
|
// Allocates and initializes a new global object based on a constructor.
|
@@ -565,7 +627,9 @@ class Heap {
|
|
565
627
|
// Returns a deep copy of the JavaScript object.
|
566
628
|
// Properties and elements are copied too.
|
567
629
|
// Returns failure if allocation failed.
|
568
|
-
MUST_USE_RESULT MaybeObject* CopyJSObject(
|
630
|
+
MUST_USE_RESULT MaybeObject* CopyJSObject(
|
631
|
+
JSObject* source,
|
632
|
+
AllocationSiteMode mode = DONT_TRACK_ALLOCATION_SITE);
|
569
633
|
|
570
634
|
// Allocates the function prototype.
|
571
635
|
// Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
|
@@ -636,6 +700,9 @@ class Heap {
|
|
636
700
|
// Allocates a serialized scope info.
|
637
701
|
MUST_USE_RESULT MaybeObject* AllocateScopeInfo(int length);
|
638
702
|
|
703
|
+
// Allocates an External object for v8's external API.
|
704
|
+
MUST_USE_RESULT MaybeObject* AllocateExternal(void* value);
|
705
|
+
|
639
706
|
// Allocates an empty PolymorphicCodeCache.
|
640
707
|
MUST_USE_RESULT MaybeObject* AllocatePolymorphicCodeCache();
|
641
708
|
|
@@ -651,6 +718,9 @@ class Heap {
|
|
651
718
|
// Clear the Instanceof cache (used when a prototype changes).
|
652
719
|
inline void ClearInstanceofCache();
|
653
720
|
|
721
|
+
// For use during bootup.
|
722
|
+
void RepairFreeListsAfterBoot();
|
723
|
+
|
654
724
|
// Allocates and fully initializes a String. There are two String
|
655
725
|
// encodings: ASCII and two byte. One should choose between the three string
|
656
726
|
// allocation functions based on the encoding of the string buffer used to
|
@@ -669,14 +739,22 @@ class Heap {
|
|
669
739
|
// Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
|
670
740
|
// failed.
|
671
741
|
// Please note this does not perform a garbage collection.
|
672
|
-
MUST_USE_RESULT MaybeObject*
|
673
|
-
Vector<const
|
742
|
+
MUST_USE_RESULT MaybeObject* AllocateStringFromOneByte(
|
743
|
+
Vector<const uint8_t> str,
|
674
744
|
PretenureFlag pretenure = NOT_TENURED);
|
745
|
+
// TODO(dcarney): remove this function.
|
746
|
+
MUST_USE_RESULT inline MaybeObject* AllocateStringFromOneByte(
|
747
|
+
Vector<const char> str,
|
748
|
+
PretenureFlag pretenure = NOT_TENURED) {
|
749
|
+
return AllocateStringFromOneByte(Vector<const uint8_t>::cast(str),
|
750
|
+
pretenure);
|
751
|
+
}
|
675
752
|
MUST_USE_RESULT inline MaybeObject* AllocateStringFromUtf8(
|
676
753
|
Vector<const char> str,
|
677
754
|
PretenureFlag pretenure = NOT_TENURED);
|
678
755
|
MUST_USE_RESULT MaybeObject* AllocateStringFromUtf8Slow(
|
679
756
|
Vector<const char> str,
|
757
|
+
int non_ascii_start,
|
680
758
|
PretenureFlag pretenure = NOT_TENURED);
|
681
759
|
MUST_USE_RESULT MaybeObject* AllocateStringFromTwoByte(
|
682
760
|
Vector<const uc16> str,
|
@@ -686,24 +764,29 @@ class Heap {
|
|
686
764
|
// Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
|
687
765
|
// failed.
|
688
766
|
// Please note this function does not perform a garbage collection.
|
689
|
-
MUST_USE_RESULT inline MaybeObject*
|
690
|
-
|
691
|
-
|
767
|
+
MUST_USE_RESULT inline MaybeObject* AllocateSymbolFromUtf8(
|
768
|
+
Vector<const char> str,
|
769
|
+
int chars,
|
770
|
+
uint32_t hash_field);
|
692
771
|
|
693
|
-
MUST_USE_RESULT inline MaybeObject*
|
694
|
-
Vector<const
|
772
|
+
MUST_USE_RESULT inline MaybeObject* AllocateOneByteSymbol(
|
773
|
+
Vector<const uint8_t> str,
|
695
774
|
uint32_t hash_field);
|
696
775
|
|
697
776
|
MUST_USE_RESULT inline MaybeObject* AllocateTwoByteSymbol(
|
698
777
|
Vector<const uc16> str,
|
699
778
|
uint32_t hash_field);
|
700
779
|
|
701
|
-
|
702
|
-
|
780
|
+
template<typename T>
|
781
|
+
static inline bool IsOneByte(T t, int chars);
|
703
782
|
|
704
|
-
|
705
|
-
|
706
|
-
int chars);
|
783
|
+
template<typename T>
|
784
|
+
MUST_USE_RESULT inline MaybeObject* AllocateInternalSymbol(
|
785
|
+
T t, int chars, uint32_t hash_field);
|
786
|
+
|
787
|
+
template<bool is_one_byte, typename T>
|
788
|
+
MUST_USE_RESULT MaybeObject* AllocateInternalSymbol(
|
789
|
+
T t, int chars, uint32_t hash_field);
|
707
790
|
|
708
791
|
// Allocates and partially initializes a String. There are two String
|
709
792
|
// encodings: ASCII and two byte. These functions allocate a string of the
|
@@ -712,7 +795,7 @@ class Heap {
|
|
712
795
|
// Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
|
713
796
|
// failed.
|
714
797
|
// Please note this does not perform a garbage collection.
|
715
|
-
MUST_USE_RESULT MaybeObject*
|
798
|
+
MUST_USE_RESULT MaybeObject* AllocateRawOneByteString(
|
716
799
|
int length,
|
717
800
|
PretenureFlag pretenure = NOT_TENURED);
|
718
801
|
MUST_USE_RESULT MaybeObject* AllocateRawTwoByteString(
|
@@ -771,6 +854,10 @@ class Heap {
|
|
771
854
|
// Please note this does not perform a garbage collection.
|
772
855
|
MUST_USE_RESULT MaybeObject* AllocateUninitializedFixedArray(int length);
|
773
856
|
|
857
|
+
// Move len elements within a given array from src_index index to dst_index
|
858
|
+
// index.
|
859
|
+
void MoveElements(FixedArray* array, int dst_index, int src_index, int len);
|
860
|
+
|
774
861
|
// Make a copy of src and return it. Returns
|
775
862
|
// Failure::RetryAfterGC(requested_bytes, space) if the allocation failed.
|
776
863
|
MUST_USE_RESULT inline MaybeObject* CopyFixedArray(FixedArray* src);
|
@@ -820,13 +907,16 @@ class Heap {
|
|
820
907
|
MUST_USE_RESULT MaybeObject* AllocateHashTable(
|
821
908
|
int length, PretenureFlag pretenure = NOT_TENURED);
|
822
909
|
|
823
|
-
// Allocate a
|
824
|
-
MUST_USE_RESULT MaybeObject*
|
910
|
+
// Allocate a native (but otherwise uninitialized) context.
|
911
|
+
MUST_USE_RESULT MaybeObject* AllocateNativeContext();
|
825
912
|
|
826
|
-
// Allocate a
|
827
|
-
MUST_USE_RESULT MaybeObject*
|
913
|
+
// Allocate a global context.
|
914
|
+
MUST_USE_RESULT MaybeObject* AllocateGlobalContext(JSFunction* function,
|
828
915
|
ScopeInfo* scope_info);
|
829
916
|
|
917
|
+
// Allocate a module context.
|
918
|
+
MUST_USE_RESULT MaybeObject* AllocateModuleContext(ScopeInfo* scope_info);
|
919
|
+
|
830
920
|
// Allocate a function context.
|
831
921
|
MUST_USE_RESULT MaybeObject* AllocateFunctionContext(int length,
|
832
922
|
JSFunction* function);
|
@@ -997,16 +1087,15 @@ class Heap {
|
|
997
1087
|
// Returns Failure::RetryAfterGC(requested_bytes, space) if allocation
|
998
1088
|
// failed.
|
999
1089
|
// Please note this function does not perform a garbage collection.
|
1000
|
-
MUST_USE_RESULT MaybeObject*
|
1001
|
-
MUST_USE_RESULT MaybeObject*
|
1002
|
-
|
1003
|
-
MUST_USE_RESULT MaybeObject* LookupAsciiSymbol(const char* str) {
|
1004
|
-
return LookupSymbol(CStrVector(str));
|
1090
|
+
MUST_USE_RESULT MaybeObject* LookupUtf8Symbol(Vector<const char> str);
|
1091
|
+
MUST_USE_RESULT MaybeObject* LookupUtf8Symbol(const char* str) {
|
1092
|
+
return LookupUtf8Symbol(CStrVector(str));
|
1005
1093
|
}
|
1094
|
+
MUST_USE_RESULT MaybeObject* LookupOneByteSymbol(Vector<const uint8_t> str);
|
1095
|
+
MUST_USE_RESULT MaybeObject* LookupTwoByteSymbol(Vector<const uc16> str);
|
1006
1096
|
MUST_USE_RESULT MaybeObject* LookupSymbol(String* str);
|
1007
|
-
MUST_USE_RESULT MaybeObject*
|
1008
|
-
|
1009
|
-
int length);
|
1097
|
+
MUST_USE_RESULT MaybeObject* LookupOneByteSymbol(
|
1098
|
+
Handle<SeqOneByteString> string, int from, int length);
|
1010
1099
|
|
1011
1100
|
bool LookupSymbolIfExists(String* str, String** symbol);
|
1012
1101
|
bool LookupTwoCharsSymbolIfExists(String* str, String** symbol);
|
@@ -1072,7 +1161,10 @@ class Heap {
|
|
1072
1161
|
void EnsureHeapIsIterable();
|
1073
1162
|
|
1074
1163
|
// Notify the heap that a context has been disposed.
|
1075
|
-
int NotifyContextDisposed() {
|
1164
|
+
int NotifyContextDisposed() {
|
1165
|
+
flush_monomorphic_ics_ = true;
|
1166
|
+
return ++contexts_disposed_;
|
1167
|
+
}
|
1076
1168
|
|
1077
1169
|
// Utility to invoke the scavenger. This is needed in test code to
|
1078
1170
|
// ensure correct callback for weak global handles.
|
@@ -1100,8 +1192,8 @@ class Heap {
|
|
1100
1192
|
#endif
|
1101
1193
|
|
1102
1194
|
void AddGCPrologueCallback(
|
1103
|
-
|
1104
|
-
void RemoveGCPrologueCallback(
|
1195
|
+
GCPrologueCallback callback, GCType gc_type_filter);
|
1196
|
+
void RemoveGCPrologueCallback(GCPrologueCallback callback);
|
1105
1197
|
|
1106
1198
|
void AddGCEpilogueCallback(
|
1107
1199
|
GCEpilogueCallback callback, GCType gc_type_filter);
|
@@ -1148,13 +1240,13 @@ class Heap {
|
|
1148
1240
|
// not match the empty string.
|
1149
1241
|
String* hidden_symbol() { return hidden_symbol_; }
|
1150
1242
|
|
1151
|
-
void
|
1152
|
-
|
1243
|
+
void set_native_contexts_list(Object* object) {
|
1244
|
+
native_contexts_list_ = object;
|
1153
1245
|
}
|
1154
|
-
Object*
|
1246
|
+
Object* native_contexts_list() { return native_contexts_list_; }
|
1155
1247
|
|
1156
1248
|
// Number of mark-sweeps.
|
1157
|
-
int ms_count() { return ms_count_; }
|
1249
|
+
unsigned int ms_count() { return ms_count_; }
|
1158
1250
|
|
1159
1251
|
// Iterates over all roots in the heap.
|
1160
1252
|
void IterateRoots(ObjectVisitor* v, VisitMode mode);
|
@@ -1225,21 +1317,24 @@ class Heap {
|
|
1225
1317
|
return reinterpret_cast<Address*>(&roots_[kStoreBufferTopRootIndex]);
|
1226
1318
|
}
|
1227
1319
|
|
1228
|
-
// Get address of
|
1229
|
-
Object**
|
1230
|
-
return &
|
1320
|
+
// Get address of native contexts list for serialization support.
|
1321
|
+
Object** native_contexts_list_address() {
|
1322
|
+
return &native_contexts_list_;
|
1231
1323
|
}
|
1232
1324
|
|
1233
|
-
#ifdef
|
1234
|
-
void Print();
|
1235
|
-
void PrintHandles();
|
1236
|
-
|
1325
|
+
#ifdef VERIFY_HEAP
|
1237
1326
|
// Verify the heap is in its normal state before or after a GC.
|
1238
1327
|
void Verify();
|
1239
1328
|
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1329
|
+
|
1330
|
+
bool weak_embedded_maps_verification_enabled() {
|
1331
|
+
return no_weak_embedded_maps_verification_scope_depth_ == 0;
|
1332
|
+
}
|
1333
|
+
#endif
|
1334
|
+
|
1335
|
+
#ifdef DEBUG
|
1336
|
+
void Print();
|
1337
|
+
void PrintHandles();
|
1243
1338
|
|
1244
1339
|
void OldPointerSpaceCheckStoreBuffer();
|
1245
1340
|
void MapSpaceCheckStoreBuffer();
|
@@ -1248,10 +1343,23 @@ class Heap {
|
|
1248
1343
|
// Report heap statistics.
|
1249
1344
|
void ReportHeapStatistics(const char* title);
|
1250
1345
|
void ReportCodeStatistics(const char* title);
|
1346
|
+
#endif
|
1347
|
+
|
1348
|
+
// Zapping is needed for verify heap, and always done in debug builds.
|
1349
|
+
static inline bool ShouldZapGarbage() {
|
1350
|
+
#ifdef DEBUG
|
1351
|
+
return true;
|
1352
|
+
#else
|
1353
|
+
#ifdef VERIFY_HEAP
|
1354
|
+
return FLAG_verify_heap;
|
1355
|
+
#else
|
1356
|
+
return false;
|
1357
|
+
#endif
|
1358
|
+
#endif
|
1359
|
+
}
|
1251
1360
|
|
1252
1361
|
// Fill in bogus values in from space
|
1253
1362
|
void ZapFromSpace();
|
1254
|
-
#endif
|
1255
1363
|
|
1256
1364
|
// Print short heap statistics.
|
1257
1365
|
void PrintShortHeapStatistics();
|
@@ -1289,6 +1397,7 @@ class Heap {
|
|
1289
1397
|
return disallow_allocation_failure_;
|
1290
1398
|
}
|
1291
1399
|
|
1400
|
+
void TracePathToObjectFrom(Object* target, Object* root);
|
1292
1401
|
void TracePathToObject(Object* target);
|
1293
1402
|
void TracePathToGlobal();
|
1294
1403
|
#endif
|
@@ -1303,20 +1412,9 @@ class Heap {
|
|
1303
1412
|
// Commits from space if it is uncommitted.
|
1304
1413
|
void EnsureFromSpaceIsCommitted();
|
1305
1414
|
|
1306
|
-
// Support for partial snapshots. After calling this we
|
1307
|
-
//
|
1308
|
-
|
1309
|
-
// or causing a GC. It returns true of space was reserved or false if a GC is
|
1310
|
-
// needed. For paged spaces the space requested must include the space wasted
|
1311
|
-
// at the end of each page when allocating linearly.
|
1312
|
-
void ReserveSpace(
|
1313
|
-
int new_space_size,
|
1314
|
-
int pointer_space_size,
|
1315
|
-
int data_space_size,
|
1316
|
-
int code_space_size,
|
1317
|
-
int map_space_size,
|
1318
|
-
int cell_space_size,
|
1319
|
-
int large_object_size);
|
1415
|
+
// Support for partial snapshots. After calling this we have a linear
|
1416
|
+
// space to write objects in each space.
|
1417
|
+
void ReserveSpace(int *sizes, Address* addresses);
|
1320
1418
|
|
1321
1419
|
//
|
1322
1420
|
// Support for the API.
|
@@ -1392,15 +1490,15 @@ class Heap {
|
|
1392
1490
|
STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION)
|
1393
1491
|
#undef ROOT_INDEX_DECLARATION
|
1394
1492
|
|
1395
|
-
// Utility type maps
|
1396
|
-
#define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex,
|
1397
|
-
STRUCT_LIST(DECLARE_STRUCT_MAP)
|
1398
|
-
#undef DECLARE_STRUCT_MAP
|
1399
|
-
|
1400
1493
|
#define SYMBOL_INDEX_DECLARATION(name, str) k##name##RootIndex,
|
1401
1494
|
SYMBOL_LIST(SYMBOL_INDEX_DECLARATION)
|
1402
1495
|
#undef SYMBOL_DECLARATION
|
1403
1496
|
|
1497
|
+
// Utility type maps
|
1498
|
+
#define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex,
|
1499
|
+
STRUCT_LIST(DECLARE_STRUCT_MAP)
|
1500
|
+
#undef DECLARE_STRUCT_MAP
|
1501
|
+
|
1404
1502
|
kSymbolTableRootIndex,
|
1405
1503
|
kStrongRootListLength = kSymbolTableRootIndex,
|
1406
1504
|
kRootListLength
|
@@ -1412,6 +1510,10 @@ class Heap {
|
|
1412
1510
|
STATIC_CHECK(kFalseValueRootIndex == Internals::kFalseValueRootIndex);
|
1413
1511
|
STATIC_CHECK(kempty_symbolRootIndex == Internals::kEmptySymbolRootIndex);
|
1414
1512
|
|
1513
|
+
// Generated code can embed direct references to non-writable roots if
|
1514
|
+
// they are in new space.
|
1515
|
+
static bool RootCanBeWrittenAfterInitialization(RootListIndex root_index);
|
1516
|
+
|
1415
1517
|
MUST_USE_RESULT MaybeObject* NumberToString(
|
1416
1518
|
Object* number, bool check_number_string_cache = true);
|
1417
1519
|
MUST_USE_RESULT MaybeObject* Uint32ToString(
|
@@ -1483,13 +1585,6 @@ class Heap {
|
|
1483
1585
|
|
1484
1586
|
void ClearNormalizedMapCaches();
|
1485
1587
|
|
1486
|
-
// Clears the cache of ICs related to this map.
|
1487
|
-
void ClearCacheOnMap(Map* map) {
|
1488
|
-
if (FLAG_cleanup_code_caches_at_gc) {
|
1489
|
-
map->ClearCodeCache(this);
|
1490
|
-
}
|
1491
|
-
}
|
1492
|
-
|
1493
1588
|
GCTracer* tracer() { return tracer_; }
|
1494
1589
|
|
1495
1590
|
// Returns the size of objects residing in non new spaces.
|
@@ -1509,6 +1604,24 @@ class Heap {
|
|
1509
1604
|
// Returns minimal interval between two subsequent collections.
|
1510
1605
|
int get_min_in_mutator() { return min_in_mutator_; }
|
1511
1606
|
|
1607
|
+
// TODO(hpayer): remove, should be handled by GCTracer
|
1608
|
+
void AddMarkingTime(double marking_time) {
|
1609
|
+
marking_time_ += marking_time;
|
1610
|
+
}
|
1611
|
+
|
1612
|
+
double marking_time() const {
|
1613
|
+
return marking_time_;
|
1614
|
+
}
|
1615
|
+
|
1616
|
+
// TODO(hpayer): remove, should be handled by GCTracer
|
1617
|
+
void AddSweepingTime(double sweeping_time) {
|
1618
|
+
sweeping_time_ += sweeping_time;
|
1619
|
+
}
|
1620
|
+
|
1621
|
+
double sweeping_time() const {
|
1622
|
+
return sweeping_time_;
|
1623
|
+
}
|
1624
|
+
|
1512
1625
|
MarkCompactCollector* mark_compact_collector() {
|
1513
1626
|
return &mark_compact_collector_;
|
1514
1627
|
}
|
@@ -1526,11 +1639,13 @@ class Heap {
|
|
1526
1639
|
}
|
1527
1640
|
|
1528
1641
|
bool IsSweepingComplete() {
|
1529
|
-
return
|
1530
|
-
|
1642
|
+
return !mark_compact_collector()->IsConcurrentSweepingInProgress() &&
|
1643
|
+
old_data_space()->IsLazySweepingComplete() &&
|
1644
|
+
old_pointer_space()->IsLazySweepingComplete();
|
1531
1645
|
}
|
1532
1646
|
|
1533
1647
|
bool AdvanceSweepers(int step_size) {
|
1648
|
+
ASSERT(!FLAG_parallel_sweeping && !FLAG_concurrent_sweeping);
|
1534
1649
|
bool sweeping_complete = old_data_space()->AdvanceSweeper(step_size);
|
1535
1650
|
sweeping_complete &= old_pointer_space()->AdvanceSweeper(step_size);
|
1536
1651
|
return sweeping_complete;
|
@@ -1540,6 +1655,10 @@ class Heap {
|
|
1540
1655
|
return &external_string_table_;
|
1541
1656
|
}
|
1542
1657
|
|
1658
|
+
ErrorObjectList* error_object_list() {
|
1659
|
+
return &error_object_list_;
|
1660
|
+
}
|
1661
|
+
|
1543
1662
|
// Returns the current sweep generation.
|
1544
1663
|
int sweep_generation() {
|
1545
1664
|
return sweep_generation_;
|
@@ -1547,13 +1666,8 @@ class Heap {
|
|
1547
1666
|
|
1548
1667
|
inline Isolate* isolate();
|
1549
1668
|
|
1550
|
-
|
1551
|
-
|
1552
|
-
}
|
1553
|
-
|
1554
|
-
inline void CallGlobalGCEpilogueCallback() {
|
1555
|
-
if (global_gc_epilogue_callback_ != NULL) global_gc_epilogue_callback_();
|
1556
|
-
}
|
1669
|
+
void CallGCPrologueCallbacks(GCType gc_type);
|
1670
|
+
void CallGCEpilogueCallbacks(GCType gc_type);
|
1557
1671
|
|
1558
1672
|
inline bool OldGenerationAllocationLimitReached();
|
1559
1673
|
|
@@ -1587,6 +1701,16 @@ class Heap {
|
|
1587
1701
|
set_construct_stub_deopt_pc_offset(Smi::FromInt(pc_offset));
|
1588
1702
|
}
|
1589
1703
|
|
1704
|
+
void SetGetterStubDeoptPCOffset(int pc_offset) {
|
1705
|
+
ASSERT(getter_stub_deopt_pc_offset() == Smi::FromInt(0));
|
1706
|
+
set_getter_stub_deopt_pc_offset(Smi::FromInt(pc_offset));
|
1707
|
+
}
|
1708
|
+
|
1709
|
+
void SetSetterStubDeoptPCOffset(int pc_offset) {
|
1710
|
+
ASSERT(setter_stub_deopt_pc_offset() == Smi::FromInt(0));
|
1711
|
+
set_setter_stub_deopt_pc_offset(Smi::FromInt(pc_offset));
|
1712
|
+
}
|
1713
|
+
|
1590
1714
|
// For post mortem debugging.
|
1591
1715
|
void RememberUnmappedPage(Address page, bool compacted);
|
1592
1716
|
|
@@ -1597,9 +1721,65 @@ class Heap {
|
|
1597
1721
|
}
|
1598
1722
|
|
1599
1723
|
void AgeInlineCaches() {
|
1600
|
-
|
1724
|
+
global_ic_age_ = (global_ic_age_ + 1) & SharedFunctionInfo::ICAgeBits::kMax;
|
1725
|
+
}
|
1726
|
+
|
1727
|
+
bool flush_monomorphic_ics() { return flush_monomorphic_ics_; }
|
1728
|
+
|
1729
|
+
intptr_t amount_of_external_allocated_memory() {
|
1730
|
+
return amount_of_external_allocated_memory_;
|
1731
|
+
}
|
1732
|
+
|
1733
|
+
// ObjectStats are kept in two arrays, counts and sizes. Related stats are
|
1734
|
+
// stored in a contiguous linear buffer. Stats groups are stored one after
|
1735
|
+
// another.
|
1736
|
+
enum {
|
1737
|
+
FIRST_CODE_KIND_SUB_TYPE = LAST_TYPE + 1,
|
1738
|
+
FIRST_FIXED_ARRAY_SUB_TYPE =
|
1739
|
+
FIRST_CODE_KIND_SUB_TYPE + Code::LAST_CODE_KIND + 1,
|
1740
|
+
OBJECT_STATS_COUNT =
|
1741
|
+
FIRST_FIXED_ARRAY_SUB_TYPE + LAST_FIXED_ARRAY_SUB_TYPE + 1
|
1742
|
+
};
|
1743
|
+
|
1744
|
+
void RecordObjectStats(InstanceType type, int sub_type, size_t size) {
|
1745
|
+
ASSERT(type <= LAST_TYPE);
|
1746
|
+
if (sub_type < 0) {
|
1747
|
+
object_counts_[type]++;
|
1748
|
+
object_sizes_[type] += size;
|
1749
|
+
} else {
|
1750
|
+
if (type == CODE_TYPE) {
|
1751
|
+
ASSERT(sub_type <= Code::LAST_CODE_KIND);
|
1752
|
+
object_counts_[FIRST_CODE_KIND_SUB_TYPE + sub_type]++;
|
1753
|
+
object_sizes_[FIRST_CODE_KIND_SUB_TYPE + sub_type] += size;
|
1754
|
+
} else if (type == FIXED_ARRAY_TYPE) {
|
1755
|
+
ASSERT(sub_type <= LAST_FIXED_ARRAY_SUB_TYPE);
|
1756
|
+
object_counts_[FIRST_FIXED_ARRAY_SUB_TYPE + sub_type]++;
|
1757
|
+
object_sizes_[FIRST_FIXED_ARRAY_SUB_TYPE + sub_type] += size;
|
1758
|
+
}
|
1759
|
+
}
|
1601
1760
|
}
|
1602
1761
|
|
1762
|
+
void CheckpointObjectStats();
|
1763
|
+
|
1764
|
+
// We don't use a ScopedLock here since we want to lock the heap
|
1765
|
+
// only when FLAG_parallel_recompilation is true.
|
1766
|
+
class RelocationLock {
|
1767
|
+
public:
|
1768
|
+
explicit RelocationLock(Heap* heap) : heap_(heap) {
|
1769
|
+
if (FLAG_parallel_recompilation) {
|
1770
|
+
heap_->relocation_mutex_->Lock();
|
1771
|
+
}
|
1772
|
+
}
|
1773
|
+
~RelocationLock() {
|
1774
|
+
if (FLAG_parallel_recompilation) {
|
1775
|
+
heap_->relocation_mutex_->Unlock();
|
1776
|
+
}
|
1777
|
+
}
|
1778
|
+
|
1779
|
+
private:
|
1780
|
+
Heap* heap_;
|
1781
|
+
};
|
1782
|
+
|
1603
1783
|
private:
|
1604
1784
|
Heap();
|
1605
1785
|
|
@@ -1631,6 +1811,8 @@ class Heap {
|
|
1631
1811
|
|
1632
1812
|
int global_ic_age_;
|
1633
1813
|
|
1814
|
+
bool flush_monomorphic_ics_;
|
1815
|
+
|
1634
1816
|
int scan_on_scavenge_pages_;
|
1635
1817
|
|
1636
1818
|
#if defined(V8_TARGET_ARCH_X64)
|
@@ -1652,7 +1834,7 @@ class Heap {
|
|
1652
1834
|
// Returns the amount of external memory registered since last global gc.
|
1653
1835
|
intptr_t PromotedExternalMemorySize();
|
1654
1836
|
|
1655
|
-
int ms_count_; // how many mark-sweep collections happened
|
1837
|
+
unsigned int ms_count_; // how many mark-sweep collections happened
|
1656
1838
|
unsigned int gc_count_; // how many gc happened
|
1657
1839
|
|
1658
1840
|
// For post mortem debugging.
|
@@ -1684,8 +1866,6 @@ class Heap {
|
|
1684
1866
|
// Do we expect to be able to handle allocation failure at this
|
1685
1867
|
// time?
|
1686
1868
|
bool disallow_allocation_failure_;
|
1687
|
-
|
1688
|
-
HeapDebugUtils* debug_utils_;
|
1689
1869
|
#endif // DEBUG
|
1690
1870
|
|
1691
1871
|
// Indicates that the new space should be kept small due to high promotion
|
@@ -1724,7 +1904,7 @@ class Heap {
|
|
1724
1904
|
// last GC.
|
1725
1905
|
int old_gen_exhausted_;
|
1726
1906
|
|
1727
|
-
Object*
|
1907
|
+
Object* native_contexts_list_;
|
1728
1908
|
|
1729
1909
|
StoreBufferRebuilder store_buffer_rebuilder_;
|
1730
1910
|
|
@@ -1802,7 +1982,6 @@ class Heap {
|
|
1802
1982
|
bool PerformGarbageCollection(GarbageCollector collector,
|
1803
1983
|
GCTracer* tracer);
|
1804
1984
|
|
1805
|
-
|
1806
1985
|
inline void UpdateOldSpaceLimits();
|
1807
1986
|
|
1808
1987
|
// Allocate an uninitialized object in map space. The behavior is identical
|
@@ -1829,9 +2008,9 @@ class Heap {
|
|
1829
2008
|
|
1830
2009
|
void CreateFixedStubs();
|
1831
2010
|
|
1832
|
-
MaybeObject* CreateOddball(const char* to_string,
|
1833
|
-
|
1834
|
-
|
2011
|
+
MUST_USE_RESULT MaybeObject* CreateOddball(const char* to_string,
|
2012
|
+
Object* to_number,
|
2013
|
+
byte kind);
|
1835
2014
|
|
1836
2015
|
// Allocate a JSArray with no elements
|
1837
2016
|
MUST_USE_RESULT MaybeObject* AllocateJSArray(
|
@@ -1884,7 +2063,6 @@ class Heap {
|
|
1884
2063
|
|
1885
2064
|
GCTracer* tracer_;
|
1886
2065
|
|
1887
|
-
|
1888
2066
|
// Allocates a small number to string cache.
|
1889
2067
|
MUST_USE_RESULT MaybeObject* AllocateInitialNumberStringCache();
|
1890
2068
|
// Creates and installs the full-sized number string cache.
|
@@ -1993,14 +2171,24 @@ class Heap {
|
|
1993
2171
|
|
1994
2172
|
void AdvanceIdleIncrementalMarking(intptr_t step_size);
|
1995
2173
|
|
2174
|
+
void ClearObjectStats(bool clear_last_time_stats = false);
|
1996
2175
|
|
1997
2176
|
static const int kInitialSymbolTableSize = 2048;
|
1998
2177
|
static const int kInitialEvalCacheSize = 64;
|
1999
2178
|
static const int kInitialNumberStringCacheSize = 256;
|
2000
2179
|
|
2180
|
+
// Object counts and used memory by InstanceType
|
2181
|
+
size_t object_counts_[OBJECT_STATS_COUNT];
|
2182
|
+
size_t object_counts_last_time_[OBJECT_STATS_COUNT];
|
2183
|
+
size_t object_sizes_[OBJECT_STATS_COUNT];
|
2184
|
+
size_t object_sizes_last_time_[OBJECT_STATS_COUNT];
|
2185
|
+
|
2001
2186
|
// Maximum GC pause.
|
2002
2187
|
int max_gc_pause_;
|
2003
2188
|
|
2189
|
+
// Total time spent in GC.
|
2190
|
+
int total_gc_time_ms_;
|
2191
|
+
|
2004
2192
|
// Maximum size of objects alive after GC.
|
2005
2193
|
intptr_t max_alive_after_gc_;
|
2006
2194
|
|
@@ -2012,6 +2200,12 @@ class Heap {
|
|
2012
2200
|
|
2013
2201
|
double last_gc_end_timestamp_;
|
2014
2202
|
|
2203
|
+
// Cumulative GC time spent in marking
|
2204
|
+
double marking_time_;
|
2205
|
+
|
2206
|
+
// Cumulative GC time spent in sweeping
|
2207
|
+
double sweeping_time_;
|
2208
|
+
|
2015
2209
|
MarkCompactCollector mark_compact_collector_;
|
2016
2210
|
|
2017
2211
|
StoreBuffer store_buffer_;
|
@@ -2029,6 +2223,10 @@ class Heap {
|
|
2029
2223
|
unsigned int gc_count_at_last_idle_gc_;
|
2030
2224
|
int scavenges_since_last_idle_round_;
|
2031
2225
|
|
2226
|
+
#ifdef VERIFY_HEAP
|
2227
|
+
int no_weak_embedded_maps_verification_scope_depth_;
|
2228
|
+
#endif
|
2229
|
+
|
2032
2230
|
static const int kMaxMarkSweepsInIdleRound = 7;
|
2033
2231
|
static const int kIdleScavengeThreshold = 5;
|
2034
2232
|
|
@@ -2041,20 +2239,26 @@ class Heap {
|
|
2041
2239
|
|
2042
2240
|
ExternalStringTable external_string_table_;
|
2043
2241
|
|
2242
|
+
ErrorObjectList error_object_list_;
|
2243
|
+
|
2044
2244
|
VisitorDispatchTable<ScavengingCallback> scavenging_visitors_table_;
|
2045
2245
|
|
2046
2246
|
MemoryChunk* chunks_queued_for_free_;
|
2047
2247
|
|
2248
|
+
Mutex* relocation_mutex_;
|
2249
|
+
|
2048
2250
|
friend class Factory;
|
2049
2251
|
friend class GCTracer;
|
2050
2252
|
friend class DisallowAllocationFailure;
|
2051
2253
|
friend class AlwaysAllocateScope;
|
2052
|
-
friend class LinearAllocationScope;
|
2053
2254
|
friend class Page;
|
2054
2255
|
friend class Isolate;
|
2055
2256
|
friend class MarkCompactCollector;
|
2056
|
-
friend class
|
2257
|
+
friend class MarkCompactMarkingVisitor;
|
2057
2258
|
friend class MapCompact;
|
2259
|
+
#ifdef VERIFY_HEAP
|
2260
|
+
friend class NoWeakEmbeddedMapsVerificationScope;
|
2261
|
+
#endif
|
2058
2262
|
|
2059
2263
|
DISALLOW_COPY_AND_ASSIGN(Heap);
|
2060
2264
|
};
|
@@ -2093,21 +2297,37 @@ class HeapStats {
|
|
2093
2297
|
};
|
2094
2298
|
|
2095
2299
|
|
2300
|
+
class DisallowAllocationFailure {
|
2301
|
+
public:
|
2302
|
+
inline DisallowAllocationFailure();
|
2303
|
+
inline ~DisallowAllocationFailure();
|
2304
|
+
|
2305
|
+
#ifdef DEBUG
|
2306
|
+
private:
|
2307
|
+
bool old_state_;
|
2308
|
+
#endif
|
2309
|
+
};
|
2310
|
+
|
2311
|
+
|
2096
2312
|
class AlwaysAllocateScope {
|
2097
2313
|
public:
|
2098
2314
|
inline AlwaysAllocateScope();
|
2099
2315
|
inline ~AlwaysAllocateScope();
|
2100
|
-
};
|
2101
2316
|
|
2317
|
+
private:
|
2318
|
+
// Implicitly disable artificial allocation failures.
|
2319
|
+
DisallowAllocationFailure disallow_allocation_failure_;
|
2320
|
+
};
|
2102
2321
|
|
2103
|
-
|
2322
|
+
#ifdef VERIFY_HEAP
|
2323
|
+
class NoWeakEmbeddedMapsVerificationScope {
|
2104
2324
|
public:
|
2105
|
-
inline
|
2106
|
-
inline ~
|
2325
|
+
inline NoWeakEmbeddedMapsVerificationScope();
|
2326
|
+
inline ~NoWeakEmbeddedMapsVerificationScope();
|
2107
2327
|
};
|
2328
|
+
#endif
|
2108
2329
|
|
2109
2330
|
|
2110
|
-
#ifdef DEBUG
|
2111
2331
|
// Visitor class to verify interior pointers in spaces that do not contain
|
2112
2332
|
// or care about intergenerational references. All heap object pointers have to
|
2113
2333
|
// point into the heap to a location that has a map pointer at its first word.
|
@@ -2117,7 +2337,6 @@ class VerifyPointersVisitor: public ObjectVisitor {
|
|
2117
2337
|
public:
|
2118
2338
|
inline void VisitPointers(Object** start, Object** end);
|
2119
2339
|
};
|
2120
|
-
#endif
|
2121
2340
|
|
2122
2341
|
|
2123
2342
|
// Space iterator for iterating over all spaces of the heap.
|
@@ -2276,7 +2495,7 @@ class KeyedLookupCache {
|
|
2276
2495
|
};
|
2277
2496
|
|
2278
2497
|
|
2279
|
-
// Cache for mapping (
|
2498
|
+
// Cache for mapping (map, property name) into descriptor index.
|
2280
2499
|
// The cache contains both positive and negative results.
|
2281
2500
|
// Descriptor index equals kNotFound means the property is absent.
|
2282
2501
|
// Cleared at startup and prior to any gc.
|
@@ -2284,21 +2503,21 @@ class DescriptorLookupCache {
|
|
2284
2503
|
public:
|
2285
2504
|
// Lookup descriptor index for (map, name).
|
2286
2505
|
// If absent, kAbsent is returned.
|
2287
|
-
int Lookup(
|
2506
|
+
int Lookup(Map* source, String* name) {
|
2288
2507
|
if (!StringShape(name).IsSymbol()) return kAbsent;
|
2289
|
-
int index = Hash(
|
2508
|
+
int index = Hash(source, name);
|
2290
2509
|
Key& key = keys_[index];
|
2291
|
-
if ((key.
|
2510
|
+
if ((key.source == source) && (key.name == name)) return results_[index];
|
2292
2511
|
return kAbsent;
|
2293
2512
|
}
|
2294
2513
|
|
2295
2514
|
// Update an element in the cache.
|
2296
|
-
void Update(
|
2515
|
+
void Update(Map* source, String* name, int result) {
|
2297
2516
|
ASSERT(result != kAbsent);
|
2298
2517
|
if (StringShape(name).IsSymbol()) {
|
2299
|
-
int index = Hash(
|
2518
|
+
int index = Hash(source, name);
|
2300
2519
|
Key& key = keys_[index];
|
2301
|
-
key.
|
2520
|
+
key.source = source;
|
2302
2521
|
key.name = name;
|
2303
2522
|
results_[index] = result;
|
2304
2523
|
}
|
@@ -2312,24 +2531,26 @@ class DescriptorLookupCache {
|
|
2312
2531
|
private:
|
2313
2532
|
DescriptorLookupCache() {
|
2314
2533
|
for (int i = 0; i < kLength; ++i) {
|
2315
|
-
keys_[i].
|
2534
|
+
keys_[i].source = NULL;
|
2316
2535
|
keys_[i].name = NULL;
|
2317
2536
|
results_[i] = kAbsent;
|
2318
2537
|
}
|
2319
2538
|
}
|
2320
2539
|
|
2321
|
-
static int Hash(
|
2540
|
+
static int Hash(Object* source, String* name) {
|
2322
2541
|
// Uses only lower 32 bits if pointers are larger.
|
2323
|
-
uint32_t
|
2324
|
-
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(
|
2542
|
+
uint32_t source_hash =
|
2543
|
+
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(source))
|
2544
|
+
>> kPointerSizeLog2;
|
2325
2545
|
uint32_t name_hash =
|
2326
|
-
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(name))
|
2327
|
-
|
2546
|
+
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(name))
|
2547
|
+
>> kPointerSizeLog2;
|
2548
|
+
return (source_hash ^ name_hash) % kLength;
|
2328
2549
|
}
|
2329
2550
|
|
2330
2551
|
static const int kLength = 64;
|
2331
2552
|
struct Key {
|
2332
|
-
|
2553
|
+
Map* source;
|
2333
2554
|
String* name;
|
2334
2555
|
};
|
2335
2556
|
|
@@ -2341,18 +2562,6 @@ class DescriptorLookupCache {
|
|
2341
2562
|
};
|
2342
2563
|
|
2343
2564
|
|
2344
|
-
#ifdef DEBUG
|
2345
|
-
class DisallowAllocationFailure {
|
2346
|
-
public:
|
2347
|
-
inline DisallowAllocationFailure();
|
2348
|
-
inline ~DisallowAllocationFailure();
|
2349
|
-
|
2350
|
-
private:
|
2351
|
-
bool old_state_;
|
2352
|
-
};
|
2353
|
-
#endif
|
2354
|
-
|
2355
|
-
|
2356
2565
|
// A helper class to document/test C++ scopes where we do not
|
2357
2566
|
// expect a GC. Usage:
|
2358
2567
|
//
|
@@ -2368,6 +2577,7 @@ class AssertNoAllocation {
|
|
2368
2577
|
#ifdef DEBUG
|
2369
2578
|
private:
|
2370
2579
|
bool old_state_;
|
2580
|
+
bool active_;
|
2371
2581
|
#endif
|
2372
2582
|
};
|
2373
2583
|
|
@@ -2380,6 +2590,7 @@ class DisableAssertNoAllocation {
|
|
2380
2590
|
#ifdef DEBUG
|
2381
2591
|
private:
|
2382
2592
|
bool old_state_;
|
2593
|
+
bool active_;
|
2383
2594
|
#endif
|
2384
2595
|
};
|
2385
2596
|
|
@@ -2441,6 +2652,18 @@ class GCTracer BASE_EMBEDDED {
|
|
2441
2652
|
promoted_objects_size_ += object_size;
|
2442
2653
|
}
|
2443
2654
|
|
2655
|
+
void increment_nodes_died_in_new_space() {
|
2656
|
+
nodes_died_in_new_space_++;
|
2657
|
+
}
|
2658
|
+
|
2659
|
+
void increment_nodes_copied_in_new_space() {
|
2660
|
+
nodes_copied_in_new_space_++;
|
2661
|
+
}
|
2662
|
+
|
2663
|
+
void increment_nodes_promoted() {
|
2664
|
+
nodes_promoted_++;
|
2665
|
+
}
|
2666
|
+
|
2444
2667
|
private:
|
2445
2668
|
// Returns a string matching the collector.
|
2446
2669
|
const char* CollectorString();
|
@@ -2485,6 +2708,15 @@ class GCTracer BASE_EMBEDDED {
|
|
2485
2708
|
// Size of objects promoted during the current collection.
|
2486
2709
|
intptr_t promoted_objects_size_;
|
2487
2710
|
|
2711
|
+
// Number of died nodes in the new space.
|
2712
|
+
int nodes_died_in_new_space_;
|
2713
|
+
|
2714
|
+
// Number of copied nodes to the new space.
|
2715
|
+
int nodes_copied_in_new_space_;
|
2716
|
+
|
2717
|
+
// Number of promoted nodes to the old space.
|
2718
|
+
int nodes_promoted_;
|
2719
|
+
|
2488
2720
|
// Incremental marking steps counters.
|
2489
2721
|
int steps_count_;
|
2490
2722
|
double steps_took_;
|
@@ -2499,24 +2731,31 @@ class GCTracer BASE_EMBEDDED {
|
|
2499
2731
|
};
|
2500
2732
|
|
2501
2733
|
|
2502
|
-
class
|
2734
|
+
class RegExpResultsCache {
|
2503
2735
|
public:
|
2504
|
-
|
2736
|
+
enum ResultsCacheType { REGEXP_MULTIPLE_INDICES, STRING_SPLIT_SUBSTRINGS };
|
2737
|
+
|
2738
|
+
// Attempt to retrieve a cached result. On failure, 0 is returned as a Smi.
|
2739
|
+
// On success, the returned result is guaranteed to be a COW-array.
|
2740
|
+
static Object* Lookup(Heap* heap,
|
2741
|
+
String* key_string,
|
2742
|
+
Object* key_pattern,
|
2743
|
+
ResultsCacheType type);
|
2744
|
+
// Attempt to add value_array to the cache specified by type. On success,
|
2745
|
+
// value_array is turned into a COW-array.
|
2505
2746
|
static void Enter(Heap* heap,
|
2506
|
-
|
2507
|
-
|
2508
|
-
|
2509
|
-
|
2747
|
+
String* key_string,
|
2748
|
+
Object* key_pattern,
|
2749
|
+
FixedArray* value_array,
|
2750
|
+
ResultsCacheType type);
|
2510
2751
|
static void Clear(FixedArray* cache);
|
2511
|
-
static const int
|
2752
|
+
static const int kRegExpResultsCacheSize = 0x100;
|
2512
2753
|
|
2513
2754
|
private:
|
2514
2755
|
static const int kArrayEntriesPerCacheEntry = 4;
|
2515
2756
|
static const int kStringOffset = 0;
|
2516
2757
|
static const int kPatternOffset = 1;
|
2517
2758
|
static const int kArrayOffset = 2;
|
2518
|
-
|
2519
|
-
static MaybeObject* WrapFixedArrayInJSArray(Object* fixed_array);
|
2520
2759
|
};
|
2521
2760
|
|
2522
2761
|
|
@@ -2646,7 +2885,7 @@ class IntrusiveMarking {
|
|
2646
2885
|
};
|
2647
2886
|
|
2648
2887
|
|
2649
|
-
#
|
2888
|
+
#ifdef DEBUG
|
2650
2889
|
// Helper class for tracing paths to a search target Object from all roots.
|
2651
2890
|
// The TracePathFrom() method can be used to trace paths from a specific
|
2652
2891
|
// object to the search target object.
|
@@ -2703,7 +2942,7 @@ class PathTracer : public ObjectVisitor {
|
|
2703
2942
|
private:
|
2704
2943
|
DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
|
2705
2944
|
};
|
2706
|
-
#endif // DEBUG
|
2945
|
+
#endif // DEBUG
|
2707
2946
|
|
2708
2947
|
} } // namespace v8::internal
|
2709
2948
|
|