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/scopeinfo.cc
CHANGED
@@ -38,10 +38,10 @@ namespace v8 {
|
|
38
38
|
namespace internal {
|
39
39
|
|
40
40
|
|
41
|
-
Handle<ScopeInfo> ScopeInfo::Create(Scope* scope) {
|
41
|
+
Handle<ScopeInfo> ScopeInfo::Create(Scope* scope, Zone* zone) {
|
42
42
|
// Collect stack and context locals.
|
43
|
-
ZoneList<Variable*> stack_locals(scope->StackLocalCount());
|
44
|
-
ZoneList<Variable*> context_locals(scope->ContextLocalCount());
|
43
|
+
ZoneList<Variable*> stack_locals(scope->StackLocalCount(), zone);
|
44
|
+
ZoneList<Variable*> context_locals(scope->ContextLocalCount(), zone);
|
45
45
|
scope->CollectStackAndContextLocals(&stack_locals, &context_locals);
|
46
46
|
const int stack_local_count = stack_locals.length();
|
47
47
|
const int context_local_count = context_locals.length();
|
@@ -193,7 +193,8 @@ int ScopeInfo::ContextLength() {
|
|
193
193
|
bool has_context = context_locals > 0 ||
|
194
194
|
function_name_context_slot ||
|
195
195
|
Type() == WITH_SCOPE ||
|
196
|
-
(Type() == FUNCTION_SCOPE && CallsEval())
|
196
|
+
(Type() == FUNCTION_SCOPE && CallsEval()) ||
|
197
|
+
Type() == MODULE_SCOPE;
|
197
198
|
if (has_context) {
|
198
199
|
return Context::MIN_CONTEXT_SLOTS + context_locals +
|
199
200
|
(function_name_context_slot ? 1 : 0);
|
@@ -222,11 +223,7 @@ bool ScopeInfo::HasHeapAllocatedLocals() {
|
|
222
223
|
|
223
224
|
|
224
225
|
bool ScopeInfo::HasContext() {
|
225
|
-
|
226
|
-
return ContextLength() > 0;
|
227
|
-
} else {
|
228
|
-
return false;
|
229
|
-
}
|
226
|
+
return ContextLength() > 0;
|
230
227
|
}
|
231
228
|
|
232
229
|
|
@@ -324,6 +321,7 @@ int ScopeInfo::ContextSlotIndex(String* name,
|
|
324
321
|
return result;
|
325
322
|
}
|
326
323
|
}
|
324
|
+
// Cache as not found. Mode and init flag don't matter.
|
327
325
|
context_slot_cache->Update(this, name, INTERNAL, kNeedsInitialization, -1);
|
328
326
|
}
|
329
327
|
return -1;
|
@@ -507,4 +505,32 @@ void ScopeInfo::Print() {
|
|
507
505
|
}
|
508
506
|
#endif // DEBUG
|
509
507
|
|
508
|
+
|
509
|
+
//---------------------------------------------------------------------------
|
510
|
+
// ModuleInfo.
|
511
|
+
|
512
|
+
Handle<ModuleInfo> ModuleInfo::Create(
|
513
|
+
Isolate* isolate, Interface* interface, Scope* scope) {
|
514
|
+
Handle<ModuleInfo> info = Allocate(isolate, interface->Length());
|
515
|
+
info->set_host_index(interface->Index());
|
516
|
+
int i = 0;
|
517
|
+
for (Interface::Iterator it = interface->iterator();
|
518
|
+
!it.done(); it.Advance(), ++i) {
|
519
|
+
Variable* var = scope->LocalLookup(it.name());
|
520
|
+
info->set_name(i, *it.name());
|
521
|
+
info->set_mode(i, var->mode());
|
522
|
+
ASSERT((var->mode() == MODULE) == (it.interface()->IsModule()));
|
523
|
+
if (var->mode() == MODULE) {
|
524
|
+
ASSERT(it.interface()->IsFrozen());
|
525
|
+
ASSERT(it.interface()->Index() >= 0);
|
526
|
+
info->set_index(i, it.interface()->Index());
|
527
|
+
} else {
|
528
|
+
ASSERT(var->index() >= 0);
|
529
|
+
info->set_index(i, var->index());
|
530
|
+
}
|
531
|
+
}
|
532
|
+
ASSERT(i == info->length());
|
533
|
+
return info;
|
534
|
+
}
|
535
|
+
|
510
536
|
} } // namespace v8::internal
|
data/vendor/v8/src/scopeinfo.h
CHANGED
@@ -114,9 +114,9 @@ class ContextSlotCache {
|
|
114
114
|
|
115
115
|
// Bit fields in value_ (type, shift, size). Must be public so the
|
116
116
|
// constants can be embedded in generated code.
|
117
|
-
class ModeField: public BitField<VariableMode, 0,
|
118
|
-
class InitField: public BitField<InitializationFlag,
|
119
|
-
class IndexField: public BitField<int,
|
117
|
+
class ModeField: public BitField<VariableMode, 0, 4> {};
|
118
|
+
class InitField: public BitField<InitializationFlag, 4, 1> {};
|
119
|
+
class IndexField: public BitField<int, 5, 32-5> {};
|
120
120
|
|
121
121
|
private:
|
122
122
|
uint32_t value_;
|
@@ -130,6 +130,67 @@ class ContextSlotCache {
|
|
130
130
|
};
|
131
131
|
|
132
132
|
|
133
|
+
|
134
|
+
|
135
|
+
//---------------------------------------------------------------------------
|
136
|
+
// Auxiliary class used for the description of module instances.
|
137
|
+
// Used by Runtime_DeclareModules.
|
138
|
+
|
139
|
+
class ModuleInfo: public FixedArray {
|
140
|
+
public:
|
141
|
+
static ModuleInfo* cast(Object* description) {
|
142
|
+
return static_cast<ModuleInfo*>(FixedArray::cast(description));
|
143
|
+
}
|
144
|
+
|
145
|
+
static Handle<ModuleInfo> Create(
|
146
|
+
Isolate* isolate, Interface* interface, Scope* scope);
|
147
|
+
|
148
|
+
// Index of module's context in host context.
|
149
|
+
int host_index() { return Smi::cast(get(HOST_OFFSET))->value(); }
|
150
|
+
|
151
|
+
// Name, mode, and index of the i-th export, respectively.
|
152
|
+
// For value exports, the index is the slot of the value in the module
|
153
|
+
// context, for exported modules it is the slot index of the
|
154
|
+
// referred module's context in the host context.
|
155
|
+
// TODO(rossberg): This format cannot yet handle exports of modules declared
|
156
|
+
// in earlier scripts.
|
157
|
+
String* name(int i) { return String::cast(get(name_offset(i))); }
|
158
|
+
VariableMode mode(int i) {
|
159
|
+
return static_cast<VariableMode>(Smi::cast(get(mode_offset(i)))->value());
|
160
|
+
}
|
161
|
+
int index(int i) { return Smi::cast(get(index_offset(i)))->value(); }
|
162
|
+
|
163
|
+
int length() { return (FixedArray::length() - HEADER_SIZE) / ITEM_SIZE; }
|
164
|
+
|
165
|
+
private:
|
166
|
+
// The internal format is: Index, (Name, VariableMode, Index)*
|
167
|
+
enum {
|
168
|
+
HOST_OFFSET,
|
169
|
+
NAME_OFFSET,
|
170
|
+
MODE_OFFSET,
|
171
|
+
INDEX_OFFSET,
|
172
|
+
HEADER_SIZE = NAME_OFFSET,
|
173
|
+
ITEM_SIZE = INDEX_OFFSET - NAME_OFFSET + 1
|
174
|
+
};
|
175
|
+
inline int name_offset(int i) { return NAME_OFFSET + i * ITEM_SIZE; }
|
176
|
+
inline int mode_offset(int i) { return MODE_OFFSET + i * ITEM_SIZE; }
|
177
|
+
inline int index_offset(int i) { return INDEX_OFFSET + i * ITEM_SIZE; }
|
178
|
+
|
179
|
+
static Handle<ModuleInfo> Allocate(Isolate* isolate, int length) {
|
180
|
+
return Handle<ModuleInfo>::cast(
|
181
|
+
isolate->factory()->NewFixedArray(HEADER_SIZE + ITEM_SIZE * length));
|
182
|
+
}
|
183
|
+
void set_host_index(int index) { set(HOST_OFFSET, Smi::FromInt(index)); }
|
184
|
+
void set_name(int i, String* name) { set(name_offset(i), name); }
|
185
|
+
void set_mode(int i, VariableMode mode) {
|
186
|
+
set(mode_offset(i), Smi::FromInt(mode));
|
187
|
+
}
|
188
|
+
void set_index(int i, int index) {
|
189
|
+
set(index_offset(i), Smi::FromInt(index));
|
190
|
+
}
|
191
|
+
};
|
192
|
+
|
193
|
+
|
133
194
|
} } // namespace v8::internal
|
134
195
|
|
135
196
|
#endif // V8_SCOPEINFO_H_
|
data/vendor/v8/src/scopes.cc
CHANGED
@@ -29,6 +29,7 @@
|
|
29
29
|
|
30
30
|
#include "scopes.h"
|
31
31
|
|
32
|
+
#include "accessors.h"
|
32
33
|
#include "bootstrapper.h"
|
33
34
|
#include "compiler.h"
|
34
35
|
#include "messages.h"
|
@@ -57,7 +58,9 @@ static bool Match(void* key1, void* key2) {
|
|
57
58
|
}
|
58
59
|
|
59
60
|
|
60
|
-
VariableMap::VariableMap(
|
61
|
+
VariableMap::VariableMap(Zone* zone)
|
62
|
+
: ZoneHashMap(Match, 8, ZoneAllocationPolicy(zone)),
|
63
|
+
zone_(zone) {}
|
61
64
|
VariableMap::~VariableMap() {}
|
62
65
|
|
63
66
|
|
@@ -69,24 +72,26 @@ Variable* VariableMap::Declare(
|
|
69
72
|
Variable::Kind kind,
|
70
73
|
InitializationFlag initialization_flag,
|
71
74
|
Interface* interface) {
|
72
|
-
Entry* p = ZoneHashMap::Lookup(name.location(), name->Hash(), true
|
75
|
+
Entry* p = ZoneHashMap::Lookup(name.location(), name->Hash(), true,
|
76
|
+
ZoneAllocationPolicy(zone()));
|
73
77
|
if (p->value == NULL) {
|
74
78
|
// The variable has not been declared yet -> insert it.
|
75
79
|
ASSERT(p->key == name.location());
|
76
|
-
p->value = new Variable(scope,
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
80
|
+
p->value = new(zone()) Variable(scope,
|
81
|
+
name,
|
82
|
+
mode,
|
83
|
+
is_valid_lhs,
|
84
|
+
kind,
|
85
|
+
initialization_flag,
|
86
|
+
interface);
|
83
87
|
}
|
84
88
|
return reinterpret_cast<Variable*>(p->value);
|
85
89
|
}
|
86
90
|
|
87
91
|
|
88
92
|
Variable* VariableMap::Lookup(Handle<String> name) {
|
89
|
-
Entry* p = ZoneHashMap::Lookup(name.location(), name->Hash(), false
|
93
|
+
Entry* p = ZoneHashMap::Lookup(name.location(), name->Hash(), false,
|
94
|
+
ZoneAllocationPolicy(NULL));
|
90
95
|
if (p != NULL) {
|
91
96
|
ASSERT(*reinterpret_cast<String**>(p->key) == *name);
|
92
97
|
ASSERT(p->value != NULL);
|
@@ -99,39 +104,42 @@ Variable* VariableMap::Lookup(Handle<String> name) {
|
|
99
104
|
// ----------------------------------------------------------------------------
|
100
105
|
// Implementation of Scope
|
101
106
|
|
102
|
-
Scope::Scope(Scope* outer_scope, ScopeType type)
|
107
|
+
Scope::Scope(Scope* outer_scope, ScopeType type, Zone* zone)
|
103
108
|
: isolate_(Isolate::Current()),
|
104
|
-
inner_scopes_(4),
|
105
|
-
variables_(),
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
109
|
+
inner_scopes_(4, zone),
|
110
|
+
variables_(zone),
|
111
|
+
internals_(4, zone),
|
112
|
+
temps_(4, zone),
|
113
|
+
params_(4, zone),
|
114
|
+
unresolved_(16, zone),
|
115
|
+
decls_(4, zone),
|
110
116
|
interface_(FLAG_harmony_modules &&
|
111
117
|
(type == MODULE_SCOPE || type == GLOBAL_SCOPE)
|
112
|
-
? Interface::NewModule() : NULL),
|
113
|
-
already_resolved_(false)
|
118
|
+
? Interface::NewModule(zone) : NULL),
|
119
|
+
already_resolved_(false),
|
120
|
+
zone_(zone) {
|
114
121
|
SetDefaults(type, outer_scope, Handle<ScopeInfo>::null());
|
115
|
-
//
|
116
|
-
|
117
|
-
// In that case, the ASSERT below needs to be adjusted.
|
118
|
-
ASSERT_EQ(type == GLOBAL_SCOPE, outer_scope == NULL);
|
122
|
+
// The outermost scope must be a global scope.
|
123
|
+
ASSERT(type == GLOBAL_SCOPE || outer_scope != NULL);
|
119
124
|
ASSERT(!HasIllegalRedeclaration());
|
120
125
|
}
|
121
126
|
|
122
127
|
|
123
128
|
Scope::Scope(Scope* inner_scope,
|
124
129
|
ScopeType type,
|
125
|
-
Handle<ScopeInfo> scope_info
|
130
|
+
Handle<ScopeInfo> scope_info,
|
131
|
+
Zone* zone)
|
126
132
|
: isolate_(Isolate::Current()),
|
127
|
-
inner_scopes_(4),
|
128
|
-
variables_(),
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
+
inner_scopes_(4, zone),
|
134
|
+
variables_(zone),
|
135
|
+
internals_(4, zone),
|
136
|
+
temps_(4, zone),
|
137
|
+
params_(4, zone),
|
138
|
+
unresolved_(16, zone),
|
139
|
+
decls_(4, zone),
|
133
140
|
interface_(NULL),
|
134
|
-
already_resolved_(true)
|
141
|
+
already_resolved_(true),
|
142
|
+
zone_(zone) {
|
135
143
|
SetDefaults(type, NULL, scope_info);
|
136
144
|
if (!scope_info.is_null()) {
|
137
145
|
num_heap_slots_ = scope_info_->ContextLength();
|
@@ -143,16 +151,18 @@ Scope::Scope(Scope* inner_scope,
|
|
143
151
|
}
|
144
152
|
|
145
153
|
|
146
|
-
Scope::Scope(Scope* inner_scope, Handle<String> catch_variable_name)
|
154
|
+
Scope::Scope(Scope* inner_scope, Handle<String> catch_variable_name, Zone* zone)
|
147
155
|
: isolate_(Isolate::Current()),
|
148
|
-
inner_scopes_(1),
|
149
|
-
variables_(),
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
156
|
+
inner_scopes_(1, zone),
|
157
|
+
variables_(zone),
|
158
|
+
internals_(0, zone),
|
159
|
+
temps_(0, zone),
|
160
|
+
params_(0, zone),
|
161
|
+
unresolved_(0, zone),
|
162
|
+
decls_(0, zone),
|
154
163
|
interface_(NULL),
|
155
|
-
already_resolved_(true)
|
164
|
+
already_resolved_(true),
|
165
|
+
zone_(zone) {
|
156
166
|
SetDefaults(CATCH_SCOPE, NULL, Handle<ScopeInfo>::null());
|
157
167
|
AddInnerScope(inner_scope);
|
158
168
|
++num_var_or_const_;
|
@@ -190,6 +200,8 @@ void Scope::SetDefaults(ScopeType type,
|
|
190
200
|
num_var_or_const_ = 0;
|
191
201
|
num_stack_slots_ = 0;
|
192
202
|
num_heap_slots_ = 0;
|
203
|
+
num_modules_ = 0;
|
204
|
+
module_var_ = NULL,
|
193
205
|
scope_info_ = scope_info;
|
194
206
|
start_position_ = RelocInfo::kNoPosition;
|
195
207
|
end_position_ = RelocInfo::kNoPosition;
|
@@ -200,36 +212,53 @@ void Scope::SetDefaults(ScopeType type,
|
|
200
212
|
}
|
201
213
|
|
202
214
|
|
203
|
-
Scope* Scope::DeserializeScopeChain(Context* context, Scope* global_scope
|
215
|
+
Scope* Scope::DeserializeScopeChain(Context* context, Scope* global_scope,
|
216
|
+
Zone* zone) {
|
204
217
|
// Reconstruct the outer scope chain from a closure's context chain.
|
205
218
|
Scope* current_scope = NULL;
|
206
219
|
Scope* innermost_scope = NULL;
|
207
220
|
bool contains_with = false;
|
208
|
-
while (!context->
|
221
|
+
while (!context->IsNativeContext()) {
|
209
222
|
if (context->IsWithContext()) {
|
210
|
-
Scope* with_scope = new Scope(current_scope,
|
211
|
-
|
212
|
-
|
223
|
+
Scope* with_scope = new(zone) Scope(current_scope,
|
224
|
+
WITH_SCOPE,
|
225
|
+
Handle<ScopeInfo>::null(),
|
226
|
+
zone);
|
213
227
|
current_scope = with_scope;
|
214
228
|
// All the inner scopes are inside a with.
|
215
229
|
contains_with = true;
|
216
230
|
for (Scope* s = innermost_scope; s != NULL; s = s->outer_scope()) {
|
217
231
|
s->scope_inside_with_ = true;
|
218
232
|
}
|
233
|
+
} else if (context->IsGlobalContext()) {
|
234
|
+
ScopeInfo* scope_info = ScopeInfo::cast(context->extension());
|
235
|
+
current_scope = new(zone) Scope(current_scope,
|
236
|
+
GLOBAL_SCOPE,
|
237
|
+
Handle<ScopeInfo>(scope_info),
|
238
|
+
zone);
|
239
|
+
} else if (context->IsModuleContext()) {
|
240
|
+
ScopeInfo* scope_info = ScopeInfo::cast(context->module()->scope_info());
|
241
|
+
current_scope = new(zone) Scope(current_scope,
|
242
|
+
MODULE_SCOPE,
|
243
|
+
Handle<ScopeInfo>(scope_info),
|
244
|
+
zone);
|
219
245
|
} else if (context->IsFunctionContext()) {
|
220
246
|
ScopeInfo* scope_info = context->closure()->shared()->scope_info();
|
221
|
-
current_scope = new Scope(current_scope,
|
222
|
-
|
223
|
-
|
247
|
+
current_scope = new(zone) Scope(current_scope,
|
248
|
+
FUNCTION_SCOPE,
|
249
|
+
Handle<ScopeInfo>(scope_info),
|
250
|
+
zone);
|
224
251
|
} else if (context->IsBlockContext()) {
|
225
252
|
ScopeInfo* scope_info = ScopeInfo::cast(context->extension());
|
226
|
-
current_scope = new Scope(current_scope,
|
227
|
-
|
228
|
-
|
253
|
+
current_scope = new(zone) Scope(current_scope,
|
254
|
+
BLOCK_SCOPE,
|
255
|
+
Handle<ScopeInfo>(scope_info),
|
256
|
+
zone);
|
229
257
|
} else {
|
230
258
|
ASSERT(context->IsCatchContext());
|
231
259
|
String* name = String::cast(context->extension());
|
232
|
-
current_scope = new Scope(
|
260
|
+
current_scope = new(zone) Scope(
|
261
|
+
current_scope, Handle<String>(name), zone);
|
233
262
|
}
|
234
263
|
if (contains_with) current_scope->RecordWithStatement();
|
235
264
|
if (innermost_scope == NULL) innermost_scope = current_scope;
|
@@ -261,7 +290,8 @@ bool Scope::Analyze(CompilationInfo* info) {
|
|
261
290
|
|
262
291
|
// Allocate the variables.
|
263
292
|
{
|
264
|
-
AstNodeFactory<AstNullVisitor> ast_node_factory(info->isolate()
|
293
|
+
AstNodeFactory<AstNullVisitor> ast_node_factory(info->isolate(),
|
294
|
+
info->zone());
|
265
295
|
if (!top->AllocateVariables(info, &ast_node_factory)) return false;
|
266
296
|
}
|
267
297
|
|
@@ -278,23 +308,6 @@ bool Scope::Analyze(CompilationInfo* info) {
|
|
278
308
|
}
|
279
309
|
#endif
|
280
310
|
|
281
|
-
if (FLAG_harmony_scoping) {
|
282
|
-
VariableProxy* proxy = scope->CheckAssignmentToConst();
|
283
|
-
if (proxy != NULL) {
|
284
|
-
// Found an assignment to const. Throw a syntax error.
|
285
|
-
MessageLocation location(info->script(),
|
286
|
-
proxy->position(),
|
287
|
-
proxy->position());
|
288
|
-
Isolate* isolate = info->isolate();
|
289
|
-
Factory* factory = isolate->factory();
|
290
|
-
Handle<JSArray> array = factory->NewJSArray(0);
|
291
|
-
Handle<Object> result =
|
292
|
-
factory->NewSyntaxError("harmony_const_assign", array);
|
293
|
-
isolate->Throw(*result, &location);
|
294
|
-
return false;
|
295
|
-
}
|
296
|
-
}
|
297
|
-
|
298
311
|
info->SetScope(scope);
|
299
312
|
return true;
|
300
313
|
}
|
@@ -305,7 +318,7 @@ void Scope::Initialize() {
|
|
305
318
|
|
306
319
|
// Add this scope as a new inner scope of the outer scope.
|
307
320
|
if (outer_scope_ != NULL) {
|
308
|
-
outer_scope_->inner_scopes_.Add(this);
|
321
|
+
outer_scope_->inner_scopes_.Add(this, zone());
|
309
322
|
scope_inside_with_ = outer_scope_->scope_inside_with_ || is_with_scope();
|
310
323
|
} else {
|
311
324
|
scope_inside_with_ = is_with_scope();
|
@@ -350,6 +363,7 @@ void Scope::Initialize() {
|
|
350
363
|
|
351
364
|
Scope* Scope::FinalizeBlockScope() {
|
352
365
|
ASSERT(is_block_scope());
|
366
|
+
ASSERT(internals_.is_empty());
|
353
367
|
ASSERT(temps_.is_empty());
|
354
368
|
ASSERT(params_.is_empty());
|
355
369
|
|
@@ -370,7 +384,7 @@ Scope* Scope::FinalizeBlockScope() {
|
|
370
384
|
|
371
385
|
// Move unresolved variables
|
372
386
|
for (int i = 0; i < unresolved_.length(); i++) {
|
373
|
-
outer_scope()->unresolved_.Add(unresolved_[i]);
|
387
|
+
outer_scope()->unresolved_.Add(unresolved_[i], zone());
|
374
388
|
}
|
375
389
|
|
376
390
|
return NULL;
|
@@ -401,13 +415,8 @@ Variable* Scope::LocalLookup(Handle<String> name) {
|
|
401
415
|
init_flag = kCreatedInitialized;
|
402
416
|
}
|
403
417
|
|
404
|
-
Variable* var =
|
405
|
-
|
406
|
-
name,
|
407
|
-
mode,
|
408
|
-
true,
|
409
|
-
Variable::NORMAL,
|
410
|
-
init_flag);
|
418
|
+
Variable* var = variables_.Declare(this, name, mode, true, Variable::NORMAL,
|
419
|
+
init_flag);
|
411
420
|
var->AllocateTo(location, index);
|
412
421
|
return var;
|
413
422
|
}
|
@@ -422,7 +431,7 @@ Variable* Scope::LookupFunctionVar(Handle<String> name,
|
|
422
431
|
VariableMode mode;
|
423
432
|
int index = scope_info_->FunctionContextSlotIndex(*name, &mode);
|
424
433
|
if (index < 0) return NULL;
|
425
|
-
Variable* var = new Variable(
|
434
|
+
Variable* var = new(zone()) Variable(
|
426
435
|
this, name, mode, true /* is valid LHS */,
|
427
436
|
Variable::NORMAL, kCreatedInitialized);
|
428
437
|
VariableProxy* proxy = factory->NewVariableProxy(var);
|
@@ -451,9 +460,9 @@ Variable* Scope::Lookup(Handle<String> name) {
|
|
451
460
|
void Scope::DeclareParameter(Handle<String> name, VariableMode mode) {
|
452
461
|
ASSERT(!already_resolved());
|
453
462
|
ASSERT(is_function_scope());
|
454
|
-
Variable* var = variables_.Declare(
|
455
|
-
|
456
|
-
params_.Add(var);
|
463
|
+
Variable* var = variables_.Declare(this, name, mode, true, Variable::NORMAL,
|
464
|
+
kCreatedInitialized);
|
465
|
+
params_.Add(var, zone());
|
457
466
|
}
|
458
467
|
|
459
468
|
|
@@ -465,17 +474,14 @@ Variable* Scope::DeclareLocal(Handle<String> name,
|
|
465
474
|
// This function handles VAR and CONST modes. DYNAMIC variables are
|
466
475
|
// introduces during variable allocation, INTERNAL variables are allocated
|
467
476
|
// explicitly, and TEMPORARY variables are allocated via NewTemporary().
|
468
|
-
ASSERT(mode
|
469
|
-
mode == CONST ||
|
470
|
-
mode == CONST_HARMONY ||
|
471
|
-
mode == LET);
|
477
|
+
ASSERT(IsDeclaredVariableMode(mode));
|
472
478
|
++num_var_or_const_;
|
473
479
|
return variables_.Declare(
|
474
480
|
this, name, mode, true, Variable::NORMAL, init_flag, interface);
|
475
481
|
}
|
476
482
|
|
477
483
|
|
478
|
-
Variable* Scope::
|
484
|
+
Variable* Scope::DeclareDynamicGlobal(Handle<String> name) {
|
479
485
|
ASSERT(is_global_scope());
|
480
486
|
return variables_.Declare(this,
|
481
487
|
name,
|
@@ -498,21 +504,34 @@ void Scope::RemoveUnresolved(VariableProxy* var) {
|
|
498
504
|
}
|
499
505
|
|
500
506
|
|
507
|
+
Variable* Scope::NewInternal(Handle<String> name) {
|
508
|
+
ASSERT(!already_resolved());
|
509
|
+
Variable* var = new(zone()) Variable(this,
|
510
|
+
name,
|
511
|
+
INTERNAL,
|
512
|
+
false,
|
513
|
+
Variable::NORMAL,
|
514
|
+
kCreatedInitialized);
|
515
|
+
internals_.Add(var, zone());
|
516
|
+
return var;
|
517
|
+
}
|
518
|
+
|
519
|
+
|
501
520
|
Variable* Scope::NewTemporary(Handle<String> name) {
|
502
521
|
ASSERT(!already_resolved());
|
503
|
-
Variable* var = new Variable(this,
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
temps_.Add(var);
|
522
|
+
Variable* var = new(zone()) Variable(this,
|
523
|
+
name,
|
524
|
+
TEMPORARY,
|
525
|
+
true,
|
526
|
+
Variable::NORMAL,
|
527
|
+
kCreatedInitialized);
|
528
|
+
temps_.Add(var, zone());
|
510
529
|
return var;
|
511
530
|
}
|
512
531
|
|
513
532
|
|
514
533
|
void Scope::AddDeclaration(Declaration* declaration) {
|
515
|
-
decls_.Add(declaration);
|
534
|
+
decls_.Add(declaration, zone());
|
516
535
|
}
|
517
536
|
|
518
537
|
|
@@ -555,27 +574,19 @@ Declaration* Scope::CheckConflictingVarDeclarations() {
|
|
555
574
|
}
|
556
575
|
|
557
576
|
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
return unresolved_[i];
|
566
|
-
}
|
567
|
-
}
|
568
|
-
}
|
569
|
-
|
570
|
-
// Check inner scopes.
|
571
|
-
for (int i = 0; i < inner_scopes_.length(); i++) {
|
572
|
-
VariableProxy* proxy = inner_scopes_[i]->CheckAssignmentToConst();
|
573
|
-
if (proxy != NULL) return proxy;
|
577
|
+
class VarAndOrder {
|
578
|
+
public:
|
579
|
+
VarAndOrder(Variable* var, int order) : var_(var), order_(order) { }
|
580
|
+
Variable* var() const { return var_; }
|
581
|
+
int order() const { return order_; }
|
582
|
+
static int Compare(const VarAndOrder* a, const VarAndOrder* b) {
|
583
|
+
return a->order_ - b->order_;
|
574
584
|
}
|
575
585
|
|
576
|
-
|
577
|
-
|
578
|
-
|
586
|
+
private:
|
587
|
+
Variable* var_;
|
588
|
+
int order_;
|
589
|
+
};
|
579
590
|
|
580
591
|
|
581
592
|
void Scope::CollectStackAndContextLocals(ZoneList<Variable*>* stack_locals,
|
@@ -583,26 +594,42 @@ void Scope::CollectStackAndContextLocals(ZoneList<Variable*>* stack_locals,
|
|
583
594
|
ASSERT(stack_locals != NULL);
|
584
595
|
ASSERT(context_locals != NULL);
|
585
596
|
|
597
|
+
// Collect internals which are always allocated on the heap.
|
598
|
+
for (int i = 0; i < internals_.length(); i++) {
|
599
|
+
Variable* var = internals_[i];
|
600
|
+
if (var->is_used()) {
|
601
|
+
ASSERT(var->IsContextSlot());
|
602
|
+
context_locals->Add(var, zone());
|
603
|
+
}
|
604
|
+
}
|
605
|
+
|
586
606
|
// Collect temporaries which are always allocated on the stack.
|
587
607
|
for (int i = 0; i < temps_.length(); i++) {
|
588
608
|
Variable* var = temps_[i];
|
589
609
|
if (var->is_used()) {
|
590
610
|
ASSERT(var->IsStackLocal());
|
591
|
-
stack_locals->Add(var);
|
611
|
+
stack_locals->Add(var, zone());
|
592
612
|
}
|
593
613
|
}
|
594
614
|
|
595
615
|
// Collect declared local variables.
|
616
|
+
ZoneList<VarAndOrder> vars(variables_.occupancy(), zone());
|
596
617
|
for (VariableMap::Entry* p = variables_.Start();
|
597
618
|
p != NULL;
|
598
619
|
p = variables_.Next(p)) {
|
599
620
|
Variable* var = reinterpret_cast<Variable*>(p->value);
|
600
621
|
if (var->is_used()) {
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
622
|
+
vars.Add(VarAndOrder(var, p->order), zone());
|
623
|
+
}
|
624
|
+
}
|
625
|
+
vars.Sort(VarAndOrder::Compare);
|
626
|
+
int var_count = vars.length();
|
627
|
+
for (int i = 0; i < var_count; i++) {
|
628
|
+
Variable* var = vars[i].var();
|
629
|
+
if (var->IsStackLocal()) {
|
630
|
+
stack_locals->Add(var, zone());
|
631
|
+
} else if (var->IsContextSlot()) {
|
632
|
+
context_locals->Add(var, zone());
|
606
633
|
}
|
607
634
|
}
|
608
635
|
}
|
@@ -619,21 +646,22 @@ bool Scope::AllocateVariables(CompilationInfo* info,
|
|
619
646
|
}
|
620
647
|
PropagateScopeInfo(outer_scope_calls_non_strict_eval);
|
621
648
|
|
622
|
-
// 2)
|
649
|
+
// 2) Allocate module instances.
|
650
|
+
if (FLAG_harmony_modules && (is_global_scope() || is_module_scope())) {
|
651
|
+
ASSERT(num_modules_ == 0);
|
652
|
+
AllocateModulesRecursively(this);
|
653
|
+
}
|
654
|
+
|
655
|
+
// 3) Resolve variables.
|
623
656
|
if (!ResolveVariablesRecursively(info, factory)) return false;
|
624
657
|
|
625
|
-
//
|
658
|
+
// 4) Allocate variables.
|
626
659
|
AllocateVariablesRecursively();
|
627
660
|
|
628
661
|
return true;
|
629
662
|
}
|
630
663
|
|
631
664
|
|
632
|
-
bool Scope::AllowsLazyCompilation() const {
|
633
|
-
return !force_eager_compilation_ && HasTrivialOuterContext();
|
634
|
-
}
|
635
|
-
|
636
|
-
|
637
665
|
bool Scope::HasTrivialContext() const {
|
638
666
|
// A function scope has a trivial context if it always is the global
|
639
667
|
// context. We iteratively scan out the context chain to see if
|
@@ -658,23 +686,31 @@ bool Scope::HasTrivialOuterContext() const {
|
|
658
686
|
}
|
659
687
|
|
660
688
|
|
661
|
-
bool Scope::
|
662
|
-
return !force_eager_compilation_ &&
|
663
|
-
!TrivialDeclarationScopesBeforeWithScope();
|
664
|
-
}
|
665
|
-
|
666
|
-
|
667
|
-
bool Scope::TrivialDeclarationScopesBeforeWithScope() const {
|
689
|
+
bool Scope::HasLazyCompilableOuterContext() const {
|
668
690
|
Scope* outer = outer_scope_;
|
669
|
-
if (outer == NULL) return
|
691
|
+
if (outer == NULL) return true;
|
692
|
+
// We have to prevent lazy compilation if this scope is inside a with scope
|
693
|
+
// and all declaration scopes between them have empty contexts. Such
|
694
|
+
// declaration scopes may become invisible during scope info deserialization.
|
670
695
|
outer = outer->DeclarationScope();
|
671
|
-
|
672
|
-
|
673
|
-
if (
|
674
|
-
|
675
|
-
|
696
|
+
bool found_non_trivial_declarations = false;
|
697
|
+
for (const Scope* scope = outer; scope != NULL; scope = scope->outer_scope_) {
|
698
|
+
if (scope->is_with_scope() && !found_non_trivial_declarations) return false;
|
699
|
+
if (scope->is_declaration_scope() && scope->num_heap_slots() > 0) {
|
700
|
+
found_non_trivial_declarations = true;
|
701
|
+
}
|
676
702
|
}
|
677
|
-
return
|
703
|
+
return true;
|
704
|
+
}
|
705
|
+
|
706
|
+
|
707
|
+
bool Scope::AllowsLazyCompilation() const {
|
708
|
+
return !force_eager_compilation_ && HasLazyCompilableOuterContext();
|
709
|
+
}
|
710
|
+
|
711
|
+
|
712
|
+
bool Scope::AllowsLazyCompilationWithoutContext() const {
|
713
|
+
return !force_eager_compilation_ && HasTrivialOuterContext();
|
678
714
|
}
|
679
715
|
|
680
716
|
|
@@ -688,6 +724,15 @@ int Scope::ContextChainLength(Scope* scope) {
|
|
688
724
|
}
|
689
725
|
|
690
726
|
|
727
|
+
Scope* Scope::GlobalScope() {
|
728
|
+
Scope* scope = this;
|
729
|
+
while (!scope->is_global_scope()) {
|
730
|
+
scope = scope->outer_scope();
|
731
|
+
}
|
732
|
+
return scope;
|
733
|
+
}
|
734
|
+
|
735
|
+
|
691
736
|
Scope* Scope::DeclarationScope() {
|
692
737
|
Scope* scope = this;
|
693
738
|
while (!scope->is_declaration_scope()) {
|
@@ -699,7 +744,7 @@ Scope* Scope::DeclarationScope() {
|
|
699
744
|
|
700
745
|
Handle<ScopeInfo> Scope::GetScopeInfo() {
|
701
746
|
if (scope_info_.is_null()) {
|
702
|
-
scope_info_ = ScopeInfo::Create(this);
|
747
|
+
scope_info_ = ScopeInfo::Create(this, zone());
|
703
748
|
}
|
704
749
|
return scope_info_;
|
705
750
|
}
|
@@ -861,6 +906,11 @@ void Scope::Print(int n) {
|
|
861
906
|
PrintVar(n1, temps_[i]);
|
862
907
|
}
|
863
908
|
|
909
|
+
Indent(n1, "// internal vars\n");
|
910
|
+
for (int i = 0; i < internals_.length(); i++) {
|
911
|
+
PrintVar(n1, internals_[i]);
|
912
|
+
}
|
913
|
+
|
864
914
|
Indent(n1, "// local vars\n");
|
865
915
|
PrintMap(n1, &variables_);
|
866
916
|
|
@@ -885,7 +935,7 @@ void Scope::Print(int n) {
|
|
885
935
|
|
886
936
|
|
887
937
|
Variable* Scope::NonLocal(Handle<String> name, VariableMode mode) {
|
888
|
-
if (dynamics_ == NULL) dynamics_ = new DynamicScopePart();
|
938
|
+
if (dynamics_ == NULL) dynamics_ = new(zone()) DynamicScopePart(zone());
|
889
939
|
VariableMap* map = dynamics_->GetMap(mode);
|
890
940
|
Variable* var = map->Lookup(name);
|
891
941
|
if (var == NULL) {
|
@@ -982,7 +1032,7 @@ bool Scope::ResolveVariable(CompilationInfo* info,
|
|
982
1032
|
// gave up on it (e.g. by encountering a local with the same in the outer
|
983
1033
|
// scope which was not promoted to a context, this can happen if we use
|
984
1034
|
// debugger to evaluate arbitrary expressions at a break point).
|
985
|
-
if (var->
|
1035
|
+
if (var->IsGlobalObjectProperty()) {
|
986
1036
|
var = NonLocal(proxy->name(), DYNAMIC_GLOBAL);
|
987
1037
|
} else if (var->is_dynamic()) {
|
988
1038
|
var = NonLocal(proxy->name(), DYNAMIC);
|
@@ -994,8 +1044,8 @@ bool Scope::ResolveVariable(CompilationInfo* info,
|
|
994
1044
|
break;
|
995
1045
|
|
996
1046
|
case UNBOUND:
|
997
|
-
// No binding has been found. Declare a variable
|
998
|
-
var = info->global_scope()->
|
1047
|
+
// No binding has been found. Declare a variable on the global object.
|
1048
|
+
var = info->global_scope()->DeclareDynamicGlobal(proxy->name());
|
999
1049
|
break;
|
1000
1050
|
|
1001
1051
|
case UNBOUND_EVAL_SHADOWED:
|
@@ -1011,7 +1061,20 @@ bool Scope::ResolveVariable(CompilationInfo* info,
|
|
1011
1061
|
}
|
1012
1062
|
|
1013
1063
|
ASSERT(var != NULL);
|
1014
|
-
|
1064
|
+
|
1065
|
+
if (FLAG_harmony_scoping && is_extended_mode() &&
|
1066
|
+
var->is_const_mode() && proxy->IsLValue()) {
|
1067
|
+
// Assignment to const. Throw a syntax error.
|
1068
|
+
MessageLocation location(
|
1069
|
+
info->script(), proxy->position(), proxy->position());
|
1070
|
+
Isolate* isolate = Isolate::Current();
|
1071
|
+
Factory* factory = isolate->factory();
|
1072
|
+
Handle<JSArray> array = factory->NewJSArray(0);
|
1073
|
+
Handle<Object> result =
|
1074
|
+
factory->NewSyntaxError("harmony_const_assign", array);
|
1075
|
+
isolate->Throw(*result, &location);
|
1076
|
+
return false;
|
1077
|
+
}
|
1015
1078
|
|
1016
1079
|
if (FLAG_harmony_modules) {
|
1017
1080
|
bool ok;
|
@@ -1019,7 +1082,7 @@ bool Scope::ResolveVariable(CompilationInfo* info,
|
|
1019
1082
|
if (FLAG_print_interface_details)
|
1020
1083
|
PrintF("# Resolve %s:\n", var->name()->ToAsciiArray());
|
1021
1084
|
#endif
|
1022
|
-
proxy->interface()->Unify(var->interface(), &ok);
|
1085
|
+
proxy->interface()->Unify(var->interface(), zone(), &ok);
|
1023
1086
|
if (!ok) {
|
1024
1087
|
#ifdef DEBUG
|
1025
1088
|
if (FLAG_print_interfaces) {
|
@@ -1033,9 +1096,8 @@ bool Scope::ResolveVariable(CompilationInfo* info,
|
|
1033
1096
|
|
1034
1097
|
// Inconsistent use of module. Throw a syntax error.
|
1035
1098
|
// TODO(rossberg): generate more helpful error message.
|
1036
|
-
MessageLocation location(
|
1037
|
-
|
1038
|
-
proxy->position());
|
1099
|
+
MessageLocation location(
|
1100
|
+
info->script(), proxy->position(), proxy->position());
|
1039
1101
|
Isolate* isolate = Isolate::Current();
|
1040
1102
|
Factory* factory = isolate->factory();
|
1041
1103
|
Handle<JSArray> array = factory->NewJSArray(1);
|
@@ -1047,6 +1109,8 @@ bool Scope::ResolveVariable(CompilationInfo* info,
|
|
1047
1109
|
}
|
1048
1110
|
}
|
1049
1111
|
|
1112
|
+
proxy->BindTo(var);
|
1113
|
+
|
1050
1114
|
return true;
|
1051
1115
|
}
|
1052
1116
|
|
@@ -1102,11 +1166,13 @@ bool Scope::MustAllocate(Variable* var) {
|
|
1102
1166
|
inner_scope_calls_eval_ ||
|
1103
1167
|
scope_contains_with_ ||
|
1104
1168
|
is_catch_scope() ||
|
1105
|
-
is_block_scope()
|
1169
|
+
is_block_scope() ||
|
1170
|
+
is_module_scope() ||
|
1171
|
+
is_global_scope())) {
|
1106
1172
|
var->set_is_used(true);
|
1107
1173
|
}
|
1108
1174
|
// Global variables do not need to be allocated.
|
1109
|
-
return !var->
|
1175
|
+
return !var->IsGlobalObjectProperty() && var->is_used();
|
1110
1176
|
}
|
1111
1177
|
|
1112
1178
|
|
@@ -1119,12 +1185,13 @@ bool Scope::MustAllocateInContext(Variable* var) {
|
|
1119
1185
|
// Exceptions: temporary variables are never allocated in a context;
|
1120
1186
|
// catch-bound variables are always allocated in a context.
|
1121
1187
|
if (var->mode() == TEMPORARY) return false;
|
1188
|
+
if (var->mode() == INTERNAL) return true;
|
1122
1189
|
if (is_catch_scope() || is_block_scope() || is_module_scope()) return true;
|
1190
|
+
if (is_global_scope() && IsLexicalVariableMode(var->mode())) return true;
|
1123
1191
|
return var->has_forced_context_allocation() ||
|
1124
1192
|
scope_calls_eval_ ||
|
1125
1193
|
inner_scope_calls_eval_ ||
|
1126
|
-
scope_contains_with_
|
1127
|
-
var->is_global();
|
1194
|
+
scope_contains_with_;
|
1128
1195
|
}
|
1129
1196
|
|
1130
1197
|
|
@@ -1225,11 +1292,21 @@ void Scope::AllocateNonParameterLocals() {
|
|
1225
1292
|
AllocateNonParameterLocal(temps_[i]);
|
1226
1293
|
}
|
1227
1294
|
|
1295
|
+
for (int i = 0; i < internals_.length(); i++) {
|
1296
|
+
AllocateNonParameterLocal(internals_[i]);
|
1297
|
+
}
|
1298
|
+
|
1299
|
+
ZoneList<VarAndOrder> vars(variables_.occupancy(), zone());
|
1228
1300
|
for (VariableMap::Entry* p = variables_.Start();
|
1229
1301
|
p != NULL;
|
1230
1302
|
p = variables_.Next(p)) {
|
1231
1303
|
Variable* var = reinterpret_cast<Variable*>(p->value);
|
1232
|
-
|
1304
|
+
vars.Add(VarAndOrder(var, p->order), zone());
|
1305
|
+
}
|
1306
|
+
vars.Sort(VarAndOrder::Compare);
|
1307
|
+
int var_count = vars.length();
|
1308
|
+
for (int i = 0; i < var_count; i++) {
|
1309
|
+
AllocateNonParameterLocal(vars[i].var());
|
1233
1310
|
}
|
1234
1311
|
|
1235
1312
|
// For now, function_ must be allocated at the very end. If it gets
|
@@ -1278,6 +1355,24 @@ void Scope::AllocateVariablesRecursively() {
|
|
1278
1355
|
}
|
1279
1356
|
|
1280
1357
|
|
1358
|
+
void Scope::AllocateModulesRecursively(Scope* host_scope) {
|
1359
|
+
if (already_resolved()) return;
|
1360
|
+
if (is_module_scope()) {
|
1361
|
+
ASSERT(interface_->IsFrozen());
|
1362
|
+
Handle<String> name = isolate_->factory()->LookupOneByteSymbol(
|
1363
|
+
STATIC_ASCII_VECTOR(".module"));
|
1364
|
+
ASSERT(module_var_ == NULL);
|
1365
|
+
module_var_ = host_scope->NewInternal(name);
|
1366
|
+
++host_scope->num_modules_;
|
1367
|
+
}
|
1368
|
+
|
1369
|
+
for (int i = 0; i < inner_scopes_.length(); i++) {
|
1370
|
+
Scope* inner_scope = inner_scopes_.at(i);
|
1371
|
+
inner_scope->AllocateModulesRecursively(host_scope);
|
1372
|
+
}
|
1373
|
+
}
|
1374
|
+
|
1375
|
+
|
1281
1376
|
int Scope::StackLocalCount() const {
|
1282
1377
|
return num_stack_slots() -
|
1283
1378
|
(function_ != NULL && function_->proxy()->var()->IsStackLocal() ? 1 : 0);
|