therubyracer 0.7.4 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of therubyracer might be problematic. Click here for more details.
- data/History.txt +11 -0
- data/Rakefile +1 -1
- data/ext/v8/extconf.rb +0 -18
- data/ext/v8/rr.cpp +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/AUTHORS +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/ChangeLog +239 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/LICENSE +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/SConstruct +29 -17
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-debug.h +61 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-profiler.h +182 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8.h +458 -257
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/SConscript +2 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.cc +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.cc +574 -30
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.h +12 -10
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apinatives.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apiutils.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arguments.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm-inl.h +38 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.cc +646 -101
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.h +174 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/builtins-arm.cc +56 -47
- data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.cc +2957 -1448
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.h +230 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.cc +25 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.h +16 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/cpu-arm.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/debug-arm.cc +76 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/disasm-arm.cc +168 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/fast-codegen-arm.cc +5 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.cc +4 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/full-codegen-arm.cc +1558 -248
- data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/jump-target-arm.cc +55 -103
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.cc +358 -185
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.h +136 -41
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.cc +26 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.cc +203 -22
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.h +7 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/stub-cache-arm.cc +531 -324
- data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.cc +247 -81
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.h +99 -83
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/array.js +2 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.cc +6 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.h +36 -10
- data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.cc +14 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.h +20 -35
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.cc +32 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.h +0 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.cc +50 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.h +2 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bytecodes-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cached-powers.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.h +8 -6
- data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.h +0 -26
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.cc +2 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.cc +44 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.h +310 -31
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.cc +28 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.h +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.cc +45 -14
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.cc +11 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.cc +25 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler-inl.h +2 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.cc +68 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.h +19 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-posix.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-readline.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-windows.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.js +55 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/date.js +68 -137
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.cc +2 -8
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.cc +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-debugger.js +81 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.cc +275 -81
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.h +85 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disasm.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/double.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dtoa-config.c +0 -0
- data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
- data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.cc +111 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.h +12 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.cc +25 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.h +16 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.cc +2 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.h +1 -2
- data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
- data/ext/v8/upstream/{2.1.10/src/jump-target-light.cc → 2.3.3/src/fixed-dtoa.h} +22 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flag-definitions.h +14 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.cc +5 -9
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.cc +5 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.cc +387 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.h +102 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.cc +8 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/globals.h +44 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.cc +19 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.h +8 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-inl.h +56 -14
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.cc +85 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.h +45 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.cc +994 -396
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.h +220 -65
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32-inl.h +41 -12
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.cc +94 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.h +32 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/builtins-ia32.cc +42 -30
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.cc +1758 -916
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.h +67 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/cpu-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/debug-ia32.cc +46 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/disasm-ia32.cc +37 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/full-codegen-ia32.cc +1465 -198
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/ic-ia32.cc +688 -367
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/jump-target-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.cc +82 -180
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.h +41 -25
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.cc +68 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.h +1 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/stub-cache-ia32.cc +649 -302
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.cc +23 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.h +18 -27
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic-inl.h +30 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.cc +384 -66
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.h +65 -24
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/json.js +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.cc +20 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy.cc +79 -13
- data/ext/v8/upstream/{2.1.10/src/jump-target.h → 2.3.3/src/jump-target-heavy.h} +5 -47
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-light-inl.h +16 -2
- data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
- data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target.cc +0 -64
- data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit-debugger.js +141 -28
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.cc +19 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.cc +12 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.h +12 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macro-assembler.h +0 -16
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macros.py +21 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.cc +120 -109
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.h +25 -37
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/math.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/memory.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.cc +8 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.h +2 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.js +15 -7
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.cc +12 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.h +4 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/builtins-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.cc +9 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.h +1 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.cc +5 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/cpu-mips.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/debug-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/disasm-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/fast-codegen-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/full-codegen-mips.cc +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/ic-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/jump-target-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/stub-cache-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.cc +3 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mirror-debugger.js +46 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mksnapshot.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/natives.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-debug.cc +8 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-inl.h +235 -62
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.cc +497 -231
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.h +355 -149
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.cc +31 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-freebsd.cc +9 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-linux.cc +26 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-macos.cc +11 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-nullos.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-openbsd.cc +6 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-posix.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-solaris.cc +69 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-win32.cc +15 -11
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform.h +10 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/powers-ten.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/profile-generator-inl.h +26 -2
- data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
- data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.cc +1 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp.js +25 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.cc +4 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.cc +85 -8
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.cc +547 -221
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.h +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.js +23 -31
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.cc +12 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.h +60 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.cc +156 -168
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.h +58 -62
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.cc +320 -242
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.h +81 -48
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/shell.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/simulator.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/smart-pointer.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-common.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-empty.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces-inl.h +177 -74
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.cc +138 -315
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.h +155 -124
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string.js +113 -119
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.cc +242 -97
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.h +118 -55
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/COPYING +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/dtoa.c +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/valgrind/valgrind.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.cc +107 -26
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.h +9 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.h +2 -2
- data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
- data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/uri.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.h +83 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.h +20 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.cc +5 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.h +0 -0
- data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8natives.js +210 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.cc +3 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy-inl.h +40 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light-inl.h +106 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light.cc +4 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state-inl.h +6 -3
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.cc +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.h +6 -4
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64-inl.h +42 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.cc +285 -53
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.h +54 -18
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/builtins-x64.cc +31 -33
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.cc +9787 -8722
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.h +82 -47
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/cpu-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/debug-x64.cc +55 -6
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/disasm-x64.cc +42 -19
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/fast-codegen-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.h +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/full-codegen-x64.cc +1487 -210
- data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/jump-target-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.cc +366 -338
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.h +83 -38
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.cc +82 -23
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.h +1 -2
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64-inl.h +6 -5
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.cc +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.h +1 -1
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/stub-cache-x64.cc +556 -377
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.cc +197 -98
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.h +37 -28
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone-inl.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.cc +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.h +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/codemap.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/consarray.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/csvparser.js +0 -0
- data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/generate-ten-powers.scm +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/gyp/v8.gyp +87 -20
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/js2c.py +19 -15
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/jsmin.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/logreader.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-nm +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-tick-processor +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/annotate +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/common +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/dump +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/report +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/reset +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/run +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/shutdown +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/start +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/presubmit.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/process-heap-prof.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile_view.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/run-valgrind.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/stats-viewer.py +25 -13
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/test.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor-driver.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.js +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.py +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/utils.py +0 -0
- data/ext/v8/upstream/2.3.3/tools/v8.xcodeproj/project.pbxproj +1855 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/README.txt +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/arm.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/common.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8js2c.cmd +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/debug.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/ia32.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/js2c.cmd +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/release.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base.vcproj +40 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_arm.vcproj +20 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_x64.vcproj +16 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest.vcproj +4 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.sln +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/x64.vsprops +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.bat +0 -0
- data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.py +0 -0
- data/ext/v8/upstream/Makefile +1 -1
- data/ext/v8/v8_template.cpp +94 -2
- data/ext/v8/v8_try_catch.cpp +2 -2
- data/lib/v8.rb +1 -1
- data/lib/v8/access.rb +93 -40
- data/lib/v8/cli.rb +1 -1
- data/lib/v8/function.rb +14 -2
- data/spec/redjs/jsapi_spec.rb +231 -42
- data/therubyracer.gemspec +3 -3
- metadata +463 -453
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2-inl.h +0 -263
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.cc +0 -1878
- data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.h +0 -1036
- data/ext/v8/upstream/2.1.10/src/arm/codegen-arm-inl.h +0 -72
- data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +0 -1833
- data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +0 -101
- data/ext/v8/upstream/2.1.10/src/profile-generator.cc +0 -583
- data/ext/v8/upstream/2.1.10/src/profile-generator.h +0 -364
- data/ext/v8/upstream/2.1.10/src/x64/ic-x64.cc +0 -1621
File without changes
|
@@ -27,6 +27,8 @@
|
|
27
27
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
31
|
+
|
30
32
|
#include "codegen-inl.h"
|
31
33
|
#include "compiler.h"
|
32
34
|
#include "debug.h"
|
@@ -43,7 +45,7 @@ void FullCodeGenerator::Generate(CompilationInfo* info, Mode mode) {
|
|
43
45
|
}
|
44
46
|
|
45
47
|
|
46
|
-
void FullCodeGenerator::EmitReturnSequence(
|
48
|
+
void FullCodeGenerator::EmitReturnSequence() {
|
47
49
|
UNIMPLEMENTED_MIPS();
|
48
50
|
}
|
49
51
|
|
@@ -271,3 +273,5 @@ void FullCodeGenerator::ExitFinallyBlock() {
|
|
271
273
|
#undef __
|
272
274
|
|
273
275
|
} } // namespace v8::internal
|
276
|
+
|
277
|
+
#endif // V8_TARGET_ARCH_MIPS
|
@@ -29,6 +29,8 @@
|
|
29
29
|
|
30
30
|
#include "v8.h"
|
31
31
|
|
32
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
33
|
+
|
32
34
|
#include "codegen-inl.h"
|
33
35
|
#include "ic-inl.h"
|
34
36
|
#include "runtime.h"
|
@@ -215,3 +217,4 @@ void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
|
|
215
217
|
|
216
218
|
} } // namespace v8::internal
|
217
219
|
|
220
|
+
#endif // V8_TARGET_ARCH_MIPS
|
@@ -28,6 +28,8 @@
|
|
28
28
|
|
29
29
|
#include "v8.h"
|
30
30
|
|
31
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
32
|
+
|
31
33
|
#include "codegen-inl.h"
|
32
34
|
#include "jump-target-inl.h"
|
33
35
|
#include "register-allocator-inl.h"
|
@@ -170,3 +172,4 @@ void BreakTarget::Bind(Result* arg) {
|
|
170
172
|
|
171
173
|
} } // namespace v8::internal
|
172
174
|
|
175
|
+
#endif // V8_TARGET_ARCH_MIPS
|
@@ -29,6 +29,8 @@
|
|
29
29
|
|
30
30
|
#include "v8.h"
|
31
31
|
|
32
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
33
|
+
|
32
34
|
#include "bootstrapper.h"
|
33
35
|
#include "codegen-inl.h"
|
34
36
|
#include "debug.h"
|
@@ -1321,3 +1323,4 @@ void MacroAssembler::AlignStack(int offset) {
|
|
1321
1323
|
|
1322
1324
|
} } // namespace v8::internal
|
1323
1325
|
|
1326
|
+
#endif // V8_TARGET_ARCH_MIPS
|
File without changes
|
File without changes
|
@@ -27,6 +27,8 @@
|
|
27
27
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
31
|
+
|
30
32
|
#include "codegen-inl.h"
|
31
33
|
#include "register-allocator-inl.h"
|
32
34
|
|
@@ -58,3 +60,4 @@ Result RegisterAllocator::AllocateByteRegisterWithoutSpilling() {
|
|
58
60
|
|
59
61
|
} } // namespace v8::internal
|
60
62
|
|
63
|
+
#endif // V8_TARGET_ARCH_MIPS
|
File without changes
|
@@ -29,6 +29,8 @@
|
|
29
29
|
#include <cstdarg>
|
30
30
|
#include "v8.h"
|
31
31
|
|
32
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
33
|
+
|
32
34
|
#include "disasm.h"
|
33
35
|
#include "assembler.h"
|
34
36
|
#include "globals.h" // Need the BitCast
|
@@ -1646,3 +1648,4 @@ uintptr_t Simulator::PopAddress() {
|
|
1646
1648
|
|
1647
1649
|
#endif // __mips
|
1648
1650
|
|
1651
|
+
#endif // V8_TARGET_ARCH_MIPS
|
File without changes
|
@@ -27,6 +27,8 @@
|
|
27
27
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
31
|
+
|
30
32
|
#include "ic-inl.h"
|
31
33
|
#include "codegen-inl.h"
|
32
34
|
#include "stub-cache.h"
|
@@ -398,3 +400,4 @@ Object* ConstructStubCompiler::CompileConstructStub(
|
|
398
400
|
|
399
401
|
} } // namespace v8::internal
|
400
402
|
|
403
|
+
#endif // V8_TARGET_ARCH_MIPS
|
@@ -29,6 +29,8 @@
|
|
29
29
|
|
30
30
|
#include "v8.h"
|
31
31
|
|
32
|
+
#if defined(V8_TARGET_ARCH_MIPS)
|
33
|
+
|
32
34
|
#include "codegen-inl.h"
|
33
35
|
#include "register-allocator-inl.h"
|
34
36
|
#include "scopes.h"
|
@@ -314,3 +316,4 @@ void VirtualFrame::EmitArgumentSlots(RegList reglist) {
|
|
314
316
|
|
315
317
|
} } // namespace v8::internal
|
316
318
|
|
319
|
+
#endif // V8_TARGET_ARCH_MIPS
|
File without changes
|
@@ -1240,8 +1240,9 @@ const kFrameDetailsArgumentCountIndex = 3;
|
|
1240
1240
|
const kFrameDetailsLocalCountIndex = 4;
|
1241
1241
|
const kFrameDetailsSourcePositionIndex = 5;
|
1242
1242
|
const kFrameDetailsConstructCallIndex = 6;
|
1243
|
-
const
|
1244
|
-
const
|
1243
|
+
const kFrameDetailsAtReturnIndex = 7;
|
1244
|
+
const kFrameDetailsDebuggerFrameIndex = 8;
|
1245
|
+
const kFrameDetailsFirstDynamicIndex = 9;
|
1245
1246
|
|
1246
1247
|
const kFrameDetailsNameIndex = 0;
|
1247
1248
|
const kFrameDetailsValueIndex = 1;
|
@@ -1258,8 +1259,11 @@ const kFrameDetailsNameValueSize = 2;
|
|
1258
1259
|
* 4: Local count
|
1259
1260
|
* 5: Source position
|
1260
1261
|
* 6: Construct call
|
1262
|
+
* 7: Is at return
|
1263
|
+
* 8: Debugger frame
|
1261
1264
|
* Arguments name, value
|
1262
1265
|
* Locals name, value
|
1266
|
+
* Return value if any
|
1263
1267
|
* @param {number} break_id Current break id
|
1264
1268
|
* @param {number} index Frame number
|
1265
1269
|
* @constructor
|
@@ -1294,6 +1298,12 @@ FrameDetails.prototype.isConstructCall = function() {
|
|
1294
1298
|
}
|
1295
1299
|
|
1296
1300
|
|
1301
|
+
FrameDetails.prototype.isAtReturn = function() {
|
1302
|
+
%CheckExecutionState(this.break_id_);
|
1303
|
+
return this.details_[kFrameDetailsAtReturnIndex];
|
1304
|
+
}
|
1305
|
+
|
1306
|
+
|
1297
1307
|
FrameDetails.prototype.isDebuggerFrame = function() {
|
1298
1308
|
%CheckExecutionState(this.break_id_);
|
1299
1309
|
return this.details_[kFrameDetailsDebuggerFrameIndex];
|
@@ -1341,7 +1351,8 @@ FrameDetails.prototype.sourcePosition = function() {
|
|
1341
1351
|
FrameDetails.prototype.localName = function(index) {
|
1342
1352
|
%CheckExecutionState(this.break_id_);
|
1343
1353
|
if (index >= 0 && index < this.localCount()) {
|
1344
|
-
var locals_offset = kFrameDetailsFirstDynamicIndex +
|
1354
|
+
var locals_offset = kFrameDetailsFirstDynamicIndex +
|
1355
|
+
this.argumentCount() * kFrameDetailsNameValueSize
|
1345
1356
|
return this.details_[locals_offset +
|
1346
1357
|
index * kFrameDetailsNameValueSize +
|
1347
1358
|
kFrameDetailsNameIndex]
|
@@ -1352,7 +1363,8 @@ FrameDetails.prototype.localName = function(index) {
|
|
1352
1363
|
FrameDetails.prototype.localValue = function(index) {
|
1353
1364
|
%CheckExecutionState(this.break_id_);
|
1354
1365
|
if (index >= 0 && index < this.localCount()) {
|
1355
|
-
var locals_offset = kFrameDetailsFirstDynamicIndex +
|
1366
|
+
var locals_offset = kFrameDetailsFirstDynamicIndex +
|
1367
|
+
this.argumentCount() * kFrameDetailsNameValueSize
|
1356
1368
|
return this.details_[locals_offset +
|
1357
1369
|
index * kFrameDetailsNameValueSize +
|
1358
1370
|
kFrameDetailsValueIndex]
|
@@ -1360,6 +1372,17 @@ FrameDetails.prototype.localValue = function(index) {
|
|
1360
1372
|
}
|
1361
1373
|
|
1362
1374
|
|
1375
|
+
FrameDetails.prototype.returnValue = function() {
|
1376
|
+
%CheckExecutionState(this.break_id_);
|
1377
|
+
var return_value_offset =
|
1378
|
+
kFrameDetailsFirstDynamicIndex +
|
1379
|
+
(this.argumentCount() + this.localCount()) * kFrameDetailsNameValueSize;
|
1380
|
+
if (this.details_[kFrameDetailsAtReturnIndex]) {
|
1381
|
+
return this.details_[return_value_offset];
|
1382
|
+
}
|
1383
|
+
}
|
1384
|
+
|
1385
|
+
|
1363
1386
|
FrameDetails.prototype.scopeCount = function() {
|
1364
1387
|
return %GetScopeCount(this.break_id_, this.frameId());
|
1365
1388
|
}
|
@@ -1412,6 +1435,11 @@ FrameMirror.prototype.isConstructCall = function() {
|
|
1412
1435
|
};
|
1413
1436
|
|
1414
1437
|
|
1438
|
+
FrameMirror.prototype.isAtReturn = function() {
|
1439
|
+
return this.details_.isAtReturn();
|
1440
|
+
};
|
1441
|
+
|
1442
|
+
|
1415
1443
|
FrameMirror.prototype.isDebuggerFrame = function() {
|
1416
1444
|
return this.details_.isDebuggerFrame();
|
1417
1445
|
};
|
@@ -1447,6 +1475,11 @@ FrameMirror.prototype.localValue = function(index) {
|
|
1447
1475
|
};
|
1448
1476
|
|
1449
1477
|
|
1478
|
+
FrameMirror.prototype.returnValue = function() {
|
1479
|
+
return MakeMirror(this.details_.returnValue());
|
1480
|
+
};
|
1481
|
+
|
1482
|
+
|
1450
1483
|
FrameMirror.prototype.sourcePosition = function() {
|
1451
1484
|
return this.details_.sourcePosition();
|
1452
1485
|
};
|
@@ -1574,6 +1607,11 @@ FrameMirror.prototype.invocationText = function() {
|
|
1574
1607
|
result += ')';
|
1575
1608
|
}
|
1576
1609
|
|
1610
|
+
if (this.isAtReturn()) {
|
1611
|
+
result += ' returning ';
|
1612
|
+
result += this.returnValue().toText();
|
1613
|
+
}
|
1614
|
+
|
1577
1615
|
return result;
|
1578
1616
|
}
|
1579
1617
|
|
@@ -2267,6 +2305,10 @@ JSONProtocolSerializer.prototype.serializeFrame_ = function(mirror, content) {
|
|
2267
2305
|
content.script = this.serializeReference(func.script());
|
2268
2306
|
}
|
2269
2307
|
content.constructCall = mirror.isConstructCall();
|
2308
|
+
content.atReturn = mirror.isAtReturn();
|
2309
|
+
if (mirror.isAtReturn()) {
|
2310
|
+
content.returnValue = this.serializeReference(mirror.returnValue());
|
2311
|
+
}
|
2270
2312
|
content.debuggerFrame = mirror.isDebuggerFrame();
|
2271
2313
|
var x = new Array(mirror.argumentCount());
|
2272
2314
|
for (var i = 0; i < mirror.argumentCount(); i++) {
|
File without changes
|
File without changes
|
@@ -539,6 +539,9 @@ void JSObject::JSObjectVerify() {
|
|
539
539
|
(map()->inobject_properties() + properties()->length() -
|
540
540
|
map()->NextFreePropertyIndex()));
|
541
541
|
}
|
542
|
+
ASSERT(map()->has_fast_elements() ==
|
543
|
+
(elements()->map() == Heap::fixed_array_map()));
|
544
|
+
ASSERT(map()->has_fast_elements() == HasFastElements());
|
542
545
|
}
|
543
546
|
|
544
547
|
|
@@ -552,12 +555,14 @@ static const char* TypeToString(InstanceType type) {
|
|
552
555
|
case CONS_SYMBOL_TYPE: return "CONS_SYMBOL";
|
553
556
|
case CONS_ASCII_SYMBOL_TYPE: return "CONS_ASCII_SYMBOL";
|
554
557
|
case EXTERNAL_ASCII_SYMBOL_TYPE:
|
558
|
+
case EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE:
|
555
559
|
case EXTERNAL_SYMBOL_TYPE: return "EXTERNAL_SYMBOL";
|
556
560
|
case ASCII_STRING_TYPE: return "ASCII_STRING";
|
557
561
|
case STRING_TYPE: return "TWO_BYTE_STRING";
|
558
562
|
case CONS_STRING_TYPE:
|
559
563
|
case CONS_ASCII_STRING_TYPE: return "CONS_STRING";
|
560
564
|
case EXTERNAL_ASCII_STRING_TYPE:
|
565
|
+
case EXTERNAL_STRING_WITH_ASCII_DATA_TYPE:
|
561
566
|
case EXTERNAL_STRING_TYPE: return "EXTERNAL_STRING";
|
562
567
|
case FIXED_ARRAY_TYPE: return "FIXED_ARRAY";
|
563
568
|
case BYTE_ARRAY_TYPE: return "BYTE_ARRAY";
|
@@ -784,6 +789,7 @@ void SharedFunctionInfo::SharedFunctionInfoVerify() {
|
|
784
789
|
CHECK(IsSharedFunctionInfo());
|
785
790
|
VerifyObjectField(kNameOffset);
|
786
791
|
VerifyObjectField(kCodeOffset);
|
792
|
+
VerifyObjectField(kScopeInfoOffset);
|
787
793
|
VerifyObjectField(kInstanceClassNameOffset);
|
788
794
|
VerifyObjectField(kFunctionDataOffset);
|
789
795
|
VerifyObjectField(kScriptOffset);
|
@@ -806,7 +812,8 @@ void JSGlobalProxy::JSGlobalProxyVerify() {
|
|
806
812
|
VerifyObjectField(JSGlobalProxy::kContextOffset);
|
807
813
|
// Make sure that this object has no properties, elements.
|
808
814
|
CHECK_EQ(0, properties()->length());
|
809
|
-
|
815
|
+
CHECK(HasFastElements());
|
816
|
+
CHECK_EQ(0, FixedArray::cast(elements())->length());
|
810
817
|
}
|
811
818
|
|
812
819
|
|
@@ -237,31 +237,20 @@ bool StringShape::IsSymbol() {
|
|
237
237
|
|
238
238
|
bool String::IsAsciiRepresentation() {
|
239
239
|
uint32_t type = map()->instance_type();
|
240
|
-
if ((type & kStringRepresentationMask) == kConsStringTag &&
|
241
|
-
ConsString::cast(this)->second()->length() == 0) {
|
242
|
-
return ConsString::cast(this)->first()->IsAsciiRepresentation();
|
243
|
-
}
|
244
240
|
return (type & kStringEncodingMask) == kAsciiStringTag;
|
245
241
|
}
|
246
242
|
|
247
243
|
|
248
244
|
bool String::IsTwoByteRepresentation() {
|
249
245
|
uint32_t type = map()->instance_type();
|
250
|
-
if ((type & kStringRepresentationMask) == kConsStringTag &&
|
251
|
-
ConsString::cast(this)->second()->length() == 0) {
|
252
|
-
return ConsString::cast(this)->first()->IsTwoByteRepresentation();
|
253
|
-
}
|
254
246
|
return (type & kStringEncodingMask) == kTwoByteStringTag;
|
255
247
|
}
|
256
248
|
|
257
249
|
|
258
|
-
bool String::
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
if (data[i] > kMaxAsciiCharCode) return false;
|
263
|
-
}
|
264
|
-
return true;
|
250
|
+
bool String::HasOnlyAsciiChars() {
|
251
|
+
uint32_t type = map()->instance_type();
|
252
|
+
return (type & kStringEncodingMask) == kAsciiStringTag ||
|
253
|
+
(type & kAsciiDataHintMask) == kAsciiDataHintTag;
|
265
254
|
}
|
266
255
|
|
267
256
|
|
@@ -759,7 +748,8 @@ Object* Object::GetProperty(String* key, PropertyAttributes* attributes) {
|
|
759
748
|
ASSERT(mode == SKIP_WRITE_BARRIER); \
|
760
749
|
ASSERT(Heap::InNewSpace(object) || \
|
761
750
|
!Heap::InNewSpace(READ_FIELD(object, offset)) || \
|
762
|
-
Page::
|
751
|
+
Page::FromAddress(object->address())-> \
|
752
|
+
IsRegionDirty(object->address() + offset)); \
|
763
753
|
}
|
764
754
|
|
765
755
|
#define READ_DOUBLE_FIELD(p, offset) \
|
@@ -1045,6 +1035,10 @@ Address MapWord::ToEncodedAddress() {
|
|
1045
1035
|
void HeapObject::VerifyObjectField(int offset) {
|
1046
1036
|
VerifyPointer(READ_FIELD(this, offset));
|
1047
1037
|
}
|
1038
|
+
|
1039
|
+
void HeapObject::VerifySmiField(int offset) {
|
1040
|
+
ASSERT(READ_FIELD(this, offset)->IsSmi());
|
1041
|
+
}
|
1048
1042
|
#endif
|
1049
1043
|
|
1050
1044
|
|
@@ -1064,7 +1058,7 @@ MapWord HeapObject::map_word() {
|
|
1064
1058
|
|
1065
1059
|
|
1066
1060
|
void HeapObject::set_map_word(MapWord map_word) {
|
1067
|
-
// WRITE_FIELD does not
|
1061
|
+
// WRITE_FIELD does not invoke write barrier, but there is no need
|
1068
1062
|
// here.
|
1069
1063
|
WRITE_FIELD(this, kMapOffset, reinterpret_cast<Object*>(map_word.value_));
|
1070
1064
|
}
|
@@ -1162,16 +1156,18 @@ int HeapNumber::get_sign() {
|
|
1162
1156
|
ACCESSORS(JSObject, properties, FixedArray, kPropertiesOffset)
|
1163
1157
|
|
1164
1158
|
|
1165
|
-
|
1159
|
+
HeapObject* JSObject::elements() {
|
1166
1160
|
Object* array = READ_FIELD(this, kElementsOffset);
|
1167
1161
|
// In the assert below Dictionary is covered under FixedArray.
|
1168
1162
|
ASSERT(array->IsFixedArray() || array->IsPixelArray() ||
|
1169
1163
|
array->IsExternalArray());
|
1170
|
-
return reinterpret_cast<
|
1164
|
+
return reinterpret_cast<HeapObject*>(array);
|
1171
1165
|
}
|
1172
1166
|
|
1173
1167
|
|
1174
|
-
void JSObject::set_elements(
|
1168
|
+
void JSObject::set_elements(HeapObject* value, WriteBarrierMode mode) {
|
1169
|
+
ASSERT(map()->has_fast_elements() ==
|
1170
|
+
(value->map() == Heap::fixed_array_map()));
|
1175
1171
|
// In the assert below Dictionary is covered under FixedArray.
|
1176
1172
|
ASSERT(value->IsFixedArray() || value->IsPixelArray() ||
|
1177
1173
|
value->IsExternalArray());
|
@@ -1187,11 +1183,21 @@ void JSObject::initialize_properties() {
|
|
1187
1183
|
|
1188
1184
|
|
1189
1185
|
void JSObject::initialize_elements() {
|
1186
|
+
ASSERT(map()->has_fast_elements());
|
1190
1187
|
ASSERT(!Heap::InNewSpace(Heap::empty_fixed_array()));
|
1191
1188
|
WRITE_FIELD(this, kElementsOffset, Heap::empty_fixed_array());
|
1192
1189
|
}
|
1193
1190
|
|
1194
1191
|
|
1192
|
+
Object* JSObject::ResetElements() {
|
1193
|
+
Object* obj = map()->GetFastElementsMap();
|
1194
|
+
if (obj->IsFailure()) return obj;
|
1195
|
+
set_map(Map::cast(obj));
|
1196
|
+
initialize_elements();
|
1197
|
+
return this;
|
1198
|
+
}
|
1199
|
+
|
1200
|
+
|
1195
1201
|
ACCESSORS(Oddball, to_string, String, kToStringOffset)
|
1196
1202
|
ACCESSORS(Oddball, to_number, Object, kToNumberOffset)
|
1197
1203
|
|
@@ -1329,6 +1335,21 @@ void JSObject::InitializeBody(int object_size) {
|
|
1329
1335
|
}
|
1330
1336
|
|
1331
1337
|
|
1338
|
+
bool JSObject::HasFastProperties() {
|
1339
|
+
return !properties()->IsDictionary();
|
1340
|
+
}
|
1341
|
+
|
1342
|
+
|
1343
|
+
int JSObject::MaxFastProperties() {
|
1344
|
+
// Allow extra fast properties if the object has more than
|
1345
|
+
// kMaxFastProperties in-object properties. When this is the case,
|
1346
|
+
// it is very unlikely that the object is being used as a dictionary
|
1347
|
+
// and there is a good chance that allowing more map transitions
|
1348
|
+
// will be worth it.
|
1349
|
+
return Max(map()->inobject_properties(), kMaxFastProperties);
|
1350
|
+
}
|
1351
|
+
|
1352
|
+
|
1332
1353
|
void Struct::InitializeBody(int object_size) {
|
1333
1354
|
Object* value = Heap::undefined_value();
|
1334
1355
|
for (int offset = kHeaderSize; offset < object_size; offset += kPointerSize) {
|
@@ -1337,20 +1358,15 @@ void Struct::InitializeBody(int object_size) {
|
|
1337
1358
|
}
|
1338
1359
|
|
1339
1360
|
|
1340
|
-
bool
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
bool Array::IndexFromObject(Object* object, uint32_t* index) {
|
1346
|
-
if (object->IsSmi()) {
|
1347
|
-
int value = Smi::cast(object)->value();
|
1361
|
+
bool Object::ToArrayIndex(uint32_t* index) {
|
1362
|
+
if (IsSmi()) {
|
1363
|
+
int value = Smi::cast(this)->value();
|
1348
1364
|
if (value < 0) return false;
|
1349
1365
|
*index = value;
|
1350
1366
|
return true;
|
1351
1367
|
}
|
1352
|
-
if (
|
1353
|
-
double value = HeapNumber::cast(
|
1368
|
+
if (IsHeapNumber()) {
|
1369
|
+
double value = HeapNumber::cast(this)->value();
|
1354
1370
|
uint32_t uint_value = static_cast<uint32_t>(value);
|
1355
1371
|
if (value == static_cast<double>(uint_value)) {
|
1356
1372
|
*index = uint_value;
|
@@ -1665,7 +1681,11 @@ HashTable<Shape, Key>* HashTable<Shape, Key>::cast(Object* obj) {
|
|
1665
1681
|
}
|
1666
1682
|
|
1667
1683
|
|
1668
|
-
|
1684
|
+
SMI_ACCESSORS(FixedArray, length, kLengthOffset)
|
1685
|
+
SMI_ACCESSORS(ByteArray, length, kLengthOffset)
|
1686
|
+
|
1687
|
+
INT_ACCESSORS(PixelArray, length, kLengthOffset)
|
1688
|
+
INT_ACCESSORS(ExternalArray, length, kLengthOffset)
|
1669
1689
|
|
1670
1690
|
|
1671
1691
|
SMI_ACCESSORS(String, length, kLengthOffset)
|
@@ -1678,6 +1698,9 @@ uint32_t String::hash_field() {
|
|
1678
1698
|
|
1679
1699
|
void String::set_hash_field(uint32_t value) {
|
1680
1700
|
WRITE_UINT32_FIELD(this, kHashFieldOffset, value);
|
1701
|
+
#if V8_HOST_ARCH_64_BIT
|
1702
|
+
WRITE_UINT32_FIELD(this, kHashFieldOffset + kIntSize, 0);
|
1703
|
+
#endif
|
1681
1704
|
}
|
1682
1705
|
|
1683
1706
|
|
@@ -1691,13 +1714,19 @@ bool String::Equals(String* other) {
|
|
1691
1714
|
|
1692
1715
|
|
1693
1716
|
Object* String::TryFlatten(PretenureFlag pretenure) {
|
1694
|
-
|
1695
|
-
|
1696
|
-
if (
|
1717
|
+
if (!StringShape(this).IsCons()) return this;
|
1718
|
+
ConsString* cons = ConsString::cast(this);
|
1719
|
+
if (cons->second()->length() == 0) return cons->first();
|
1697
1720
|
return SlowTryFlatten(pretenure);
|
1698
1721
|
}
|
1699
1722
|
|
1700
1723
|
|
1724
|
+
String* String::TryFlattenGetString(PretenureFlag pretenure) {
|
1725
|
+
Object* flat = TryFlatten(pretenure);
|
1726
|
+
return flat->IsFailure() ? this : String::cast(flat);
|
1727
|
+
}
|
1728
|
+
|
1729
|
+
|
1701
1730
|
uint16_t String::Get(int index) {
|
1702
1731
|
ASSERT(index >= 0 && index < length());
|
1703
1732
|
switch (StringShape(this).full_representation_tag()) {
|
@@ -2031,6 +2060,21 @@ void ExternalFloatArray::set(int index, float value) {
|
|
2031
2060
|
ptr[index] = value;
|
2032
2061
|
}
|
2033
2062
|
|
2063
|
+
inline Scavenger Map::scavenger() {
|
2064
|
+
Scavenger callback = reinterpret_cast<Scavenger>(
|
2065
|
+
READ_INTPTR_FIELD(this, kScavengerCallbackOffset));
|
2066
|
+
|
2067
|
+
ASSERT(callback == Heap::GetScavenger(instance_type(),
|
2068
|
+
instance_size()));
|
2069
|
+
|
2070
|
+
return callback;
|
2071
|
+
}
|
2072
|
+
|
2073
|
+
inline void Map::set_scavenger(Scavenger callback) {
|
2074
|
+
WRITE_INTPTR_FIELD(this,
|
2075
|
+
kScavengerCallbackOffset,
|
2076
|
+
reinterpret_cast<intptr_t>(callback));
|
2077
|
+
}
|
2034
2078
|
|
2035
2079
|
int Map::instance_size() {
|
2036
2080
|
return READ_BYTE_FIELD(this, kInstanceSizeOffset) << kPointerSizeLog2;
|
@@ -2170,6 +2214,20 @@ bool Map::is_access_check_needed() {
|
|
2170
2214
|
}
|
2171
2215
|
|
2172
2216
|
|
2217
|
+
void Map::set_is_extensible(bool value) {
|
2218
|
+
if (value) {
|
2219
|
+
set_bit_field2(bit_field2() | (1 << kIsExtensible));
|
2220
|
+
} else {
|
2221
|
+
set_bit_field2(bit_field2() & ~(1 << kIsExtensible));
|
2222
|
+
}
|
2223
|
+
}
|
2224
|
+
|
2225
|
+
bool Map::is_extensible() {
|
2226
|
+
return ((1 << kIsExtensible) & bit_field2()) != 0;
|
2227
|
+
}
|
2228
|
+
|
2229
|
+
|
2230
|
+
|
2173
2231
|
Code::Flags Code::flags() {
|
2174
2232
|
return static_cast<Flags>(READ_INT_FIELD(this, kFlagsOffset));
|
2175
2233
|
}
|
@@ -2178,7 +2236,8 @@ Code::Flags Code::flags() {
|
|
2178
2236
|
void Code::set_flags(Code::Flags flags) {
|
2179
2237
|
STATIC_ASSERT(Code::NUMBER_OF_KINDS <= (kFlagsKindMask >> kFlagsKindShift)+1);
|
2180
2238
|
// Make sure that all call stubs have an arguments count.
|
2181
|
-
ASSERT(ExtractKindFromFlags(flags) != CALL_IC
|
2239
|
+
ASSERT((ExtractKindFromFlags(flags) != CALL_IC &&
|
2240
|
+
ExtractKindFromFlags(flags) != KEYED_CALL_IC) ||
|
2182
2241
|
ExtractArgumentsCountFromFlags(flags) >= 0);
|
2183
2242
|
WRITE_INT_FIELD(this, kFlagsOffset, flags);
|
2184
2243
|
}
|
@@ -2214,7 +2273,7 @@ PropertyType Code::type() {
|
|
2214
2273
|
|
2215
2274
|
|
2216
2275
|
int Code::arguments_count() {
|
2217
|
-
ASSERT(is_call_stub() || kind() == STUB);
|
2276
|
+
ASSERT(is_call_stub() || is_keyed_call_stub() || kind() == STUB);
|
2218
2277
|
return ExtractArgumentsCountFromFlags(flags());
|
2219
2278
|
}
|
2220
2279
|
|
@@ -2243,13 +2302,15 @@ Code::Flags Code::ComputeFlags(Kind kind,
|
|
2243
2302
|
InLoopFlag in_loop,
|
2244
2303
|
InlineCacheState ic_state,
|
2245
2304
|
PropertyType type,
|
2246
|
-
int argc
|
2305
|
+
int argc,
|
2306
|
+
InlineCacheHolderFlag holder) {
|
2247
2307
|
// Compute the bit mask.
|
2248
2308
|
int bits = kind << kFlagsKindShift;
|
2249
2309
|
if (in_loop) bits |= kFlagsICInLoopMask;
|
2250
2310
|
bits |= ic_state << kFlagsICStateShift;
|
2251
2311
|
bits |= type << kFlagsTypeShift;
|
2252
2312
|
bits |= argc << kFlagsArgumentsCountShift;
|
2313
|
+
if (holder == PROTOTYPE_MAP) bits |= kFlagsCacheInPrototypeMapMask;
|
2253
2314
|
// Cast to flags and validate result before returning it.
|
2254
2315
|
Flags result = static_cast<Flags>(bits);
|
2255
2316
|
ASSERT(ExtractKindFromFlags(result) == kind);
|
@@ -2263,9 +2324,10 @@ Code::Flags Code::ComputeFlags(Kind kind,
|
|
2263
2324
|
|
2264
2325
|
Code::Flags Code::ComputeMonomorphicFlags(Kind kind,
|
2265
2326
|
PropertyType type,
|
2327
|
+
InlineCacheHolderFlag holder,
|
2266
2328
|
InLoopFlag in_loop,
|
2267
2329
|
int argc) {
|
2268
|
-
return ComputeFlags(kind, in_loop, MONOMORPHIC, type, argc);
|
2330
|
+
return ComputeFlags(kind, in_loop, MONOMORPHIC, type, argc, holder);
|
2269
2331
|
}
|
2270
2332
|
|
2271
2333
|
|
@@ -2298,6 +2360,12 @@ int Code::ExtractArgumentsCountFromFlags(Flags flags) {
|
|
2298
2360
|
}
|
2299
2361
|
|
2300
2362
|
|
2363
|
+
InlineCacheHolderFlag Code::ExtractCacheHolderFromFlags(Flags flags) {
|
2364
|
+
int bits = (flags & kFlagsCacheInPrototypeMapMask);
|
2365
|
+
return bits != 0 ? PROTOTYPE_MAP : OWN_MAP;
|
2366
|
+
}
|
2367
|
+
|
2368
|
+
|
2301
2369
|
Code::Flags Code::RemoveTypeFromFlags(Flags flags) {
|
2302
2370
|
int bits = flags & ~kFlagsTypeMask;
|
2303
2371
|
return static_cast<Flags>(bits);
|
@@ -2327,6 +2395,26 @@ void Map::set_prototype(Object* value, WriteBarrierMode mode) {
|
|
2327
2395
|
}
|
2328
2396
|
|
2329
2397
|
|
2398
|
+
Object* Map::GetFastElementsMap() {
|
2399
|
+
if (has_fast_elements()) return this;
|
2400
|
+
Object* obj = CopyDropTransitions();
|
2401
|
+
if (obj->IsFailure()) return obj;
|
2402
|
+
Map* new_map = Map::cast(obj);
|
2403
|
+
new_map->set_has_fast_elements(true);
|
2404
|
+
return new_map;
|
2405
|
+
}
|
2406
|
+
|
2407
|
+
|
2408
|
+
Object* Map::GetSlowElementsMap() {
|
2409
|
+
if (!has_fast_elements()) return this;
|
2410
|
+
Object* obj = CopyDropTransitions();
|
2411
|
+
if (obj->IsFailure()) return obj;
|
2412
|
+
Map* new_map = Map::cast(obj);
|
2413
|
+
new_map->set_has_fast_elements(false);
|
2414
|
+
return new_map;
|
2415
|
+
}
|
2416
|
+
|
2417
|
+
|
2330
2418
|
ACCESSORS(Map, instance_descriptors, DescriptorArray,
|
2331
2419
|
kInstanceDescriptorsOffset)
|
2332
2420
|
ACCESSORS(Map, code_cache, Object, kCodeCacheOffset)
|
@@ -2449,23 +2537,70 @@ BOOL_ACCESSORS(SharedFunctionInfo,
|
|
2449
2537
|
compiler_hints,
|
2450
2538
|
try_full_codegen,
|
2451
2539
|
kTryFullCodegen)
|
2540
|
+
BOOL_ACCESSORS(SharedFunctionInfo,
|
2541
|
+
compiler_hints,
|
2542
|
+
allows_lazy_compilation,
|
2543
|
+
kAllowLazyCompilation)
|
2452
2544
|
|
2453
|
-
|
2454
|
-
|
2545
|
+
#if V8_HOST_ARCH_32_BIT
|
2546
|
+
SMI_ACCESSORS(SharedFunctionInfo, length, kLengthOffset)
|
2547
|
+
SMI_ACCESSORS(SharedFunctionInfo, formal_parameter_count,
|
2455
2548
|
kFormalParameterCountOffset)
|
2456
|
-
|
2549
|
+
SMI_ACCESSORS(SharedFunctionInfo, expected_nof_properties,
|
2457
2550
|
kExpectedNofPropertiesOffset)
|
2458
|
-
|
2459
|
-
|
2551
|
+
SMI_ACCESSORS(SharedFunctionInfo, num_literals, kNumLiteralsOffset)
|
2552
|
+
SMI_ACCESSORS(SharedFunctionInfo, start_position_and_type,
|
2460
2553
|
kStartPositionAndTypeOffset)
|
2461
|
-
|
2462
|
-
|
2554
|
+
SMI_ACCESSORS(SharedFunctionInfo, end_position, kEndPositionOffset)
|
2555
|
+
SMI_ACCESSORS(SharedFunctionInfo, function_token_position,
|
2463
2556
|
kFunctionTokenPositionOffset)
|
2464
|
-
|
2557
|
+
SMI_ACCESSORS(SharedFunctionInfo, compiler_hints,
|
2465
2558
|
kCompilerHintsOffset)
|
2466
|
-
|
2559
|
+
SMI_ACCESSORS(SharedFunctionInfo, this_property_assignments_count,
|
2467
2560
|
kThisPropertyAssignmentsCountOffset)
|
2561
|
+
#else
|
2468
2562
|
|
2563
|
+
#define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \
|
2564
|
+
int holder::name() { \
|
2565
|
+
int value = READ_INT_FIELD(this, offset); \
|
2566
|
+
ASSERT(kHeapObjectTag == 1); \
|
2567
|
+
ASSERT((value & kHeapObjectTag) == 0); \
|
2568
|
+
return value >> 1; \
|
2569
|
+
} \
|
2570
|
+
void holder::set_##name(int value) { \
|
2571
|
+
ASSERT(kHeapObjectTag == 1); \
|
2572
|
+
ASSERT((value & 0xC0000000) == 0xC0000000 || \
|
2573
|
+
(value & 0xC0000000) == 0x000000000); \
|
2574
|
+
WRITE_INT_FIELD(this, \
|
2575
|
+
offset, \
|
2576
|
+
(value << 1) & ~kHeapObjectTag); \
|
2577
|
+
}
|
2578
|
+
|
2579
|
+
#define PSEUDO_SMI_ACCESSORS_HI(holder, name, offset) \
|
2580
|
+
INT_ACCESSORS(holder, name, offset)
|
2581
|
+
|
2582
|
+
|
2583
|
+
|
2584
|
+
PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, length, kLengthOffset)
|
2585
|
+
PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, formal_parameter_count,
|
2586
|
+
kFormalParameterCountOffset)
|
2587
|
+
|
2588
|
+
PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, expected_nof_properties,
|
2589
|
+
kExpectedNofPropertiesOffset)
|
2590
|
+
PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, num_literals, kNumLiteralsOffset)
|
2591
|
+
|
2592
|
+
PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, start_position_and_type,
|
2593
|
+
kStartPositionAndTypeOffset)
|
2594
|
+
PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, end_position, kEndPositionOffset)
|
2595
|
+
|
2596
|
+
PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, function_token_position,
|
2597
|
+
kFunctionTokenPositionOffset)
|
2598
|
+
PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, compiler_hints,
|
2599
|
+
kCompilerHintsOffset)
|
2600
|
+
|
2601
|
+
PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, this_property_assignments_count,
|
2602
|
+
kThisPropertyAssignmentsCountOffset)
|
2603
|
+
#endif
|
2469
2604
|
|
2470
2605
|
ACCESSORS(CodeCache, default_cache, FixedArray, kDefaultCacheOffset)
|
2471
2606
|
ACCESSORS(CodeCache, normal_type_cache, Object, kNormalTypeCacheOffset)
|
@@ -2512,6 +2647,19 @@ void SharedFunctionInfo::set_code(Code* value, WriteBarrierMode mode) {
|
|
2512
2647
|
}
|
2513
2648
|
|
2514
2649
|
|
2650
|
+
SerializedScopeInfo* SharedFunctionInfo::scope_info() {
|
2651
|
+
return reinterpret_cast<SerializedScopeInfo*>(
|
2652
|
+
READ_FIELD(this, kScopeInfoOffset));
|
2653
|
+
}
|
2654
|
+
|
2655
|
+
|
2656
|
+
void SharedFunctionInfo::set_scope_info(SerializedScopeInfo* value,
|
2657
|
+
WriteBarrierMode mode) {
|
2658
|
+
WRITE_FIELD(this, kScopeInfoOffset, reinterpret_cast<Object*>(value));
|
2659
|
+
CONDITIONAL_WRITE_BARRIER(this, kScopeInfoOffset, mode);
|
2660
|
+
}
|
2661
|
+
|
2662
|
+
|
2515
2663
|
bool SharedFunctionInfo::is_compiled() {
|
2516
2664
|
// TODO(1242782): Create a code kind for uncompiled code.
|
2517
2665
|
return code()->kind() != Code::STUB;
|
@@ -2530,7 +2678,13 @@ FunctionTemplateInfo* SharedFunctionInfo::get_api_func_data() {
|
|
2530
2678
|
|
2531
2679
|
|
2532
2680
|
bool SharedFunctionInfo::HasCustomCallGenerator() {
|
2533
|
-
return function_data()->
|
2681
|
+
return function_data()->IsSmi();
|
2682
|
+
}
|
2683
|
+
|
2684
|
+
|
2685
|
+
int SharedFunctionInfo::custom_call_generator_id() {
|
2686
|
+
ASSERT(HasCustomCallGenerator());
|
2687
|
+
return Smi::cast(function_data())->value();
|
2534
2688
|
}
|
2535
2689
|
|
2536
2690
|
|
@@ -2681,8 +2835,7 @@ JSValue* JSValue::cast(Object* obj) {
|
|
2681
2835
|
|
2682
2836
|
|
2683
2837
|
INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset)
|
2684
|
-
|
2685
|
-
INT_ACCESSORS(Code, sinfo_size, kSInfoSizeOffset)
|
2838
|
+
ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset)
|
2686
2839
|
|
2687
2840
|
|
2688
2841
|
byte* Code::instruction_start() {
|
@@ -2690,13 +2843,28 @@ byte* Code::instruction_start() {
|
|
2690
2843
|
}
|
2691
2844
|
|
2692
2845
|
|
2846
|
+
byte* Code::instruction_end() {
|
2847
|
+
return instruction_start() + instruction_size();
|
2848
|
+
}
|
2849
|
+
|
2850
|
+
|
2693
2851
|
int Code::body_size() {
|
2694
|
-
return RoundUp(instruction_size()
|
2852
|
+
return RoundUp(instruction_size(), kObjectAlignment);
|
2853
|
+
}
|
2854
|
+
|
2855
|
+
|
2856
|
+
ByteArray* Code::unchecked_relocation_info() {
|
2857
|
+
return reinterpret_cast<ByteArray*>(READ_FIELD(this, kRelocationInfoOffset));
|
2695
2858
|
}
|
2696
2859
|
|
2697
2860
|
|
2698
2861
|
byte* Code::relocation_start() {
|
2699
|
-
return
|
2862
|
+
return unchecked_relocation_info()->GetDataStartAddress();
|
2863
|
+
}
|
2864
|
+
|
2865
|
+
|
2866
|
+
int Code::relocation_size() {
|
2867
|
+
return unchecked_relocation_info()->length();
|
2700
2868
|
}
|
2701
2869
|
|
2702
2870
|
|
@@ -2711,11 +2879,6 @@ bool Code::contains(byte* pc) {
|
|
2711
2879
|
}
|
2712
2880
|
|
2713
2881
|
|
2714
|
-
byte* Code::sinfo_start() {
|
2715
|
-
return FIELD_ADDR(this, kHeaderSize + body_size());
|
2716
|
-
}
|
2717
|
-
|
2718
|
-
|
2719
2882
|
ACCESSORS(JSArray, length, Object, kLengthOffset)
|
2720
2883
|
|
2721
2884
|
|
@@ -2773,15 +2936,18 @@ void JSRegExp::SetDataAt(int index, Object* value) {
|
|
2773
2936
|
|
2774
2937
|
|
2775
2938
|
JSObject::ElementsKind JSObject::GetElementsKind() {
|
2776
|
-
|
2939
|
+
HeapObject* array = elements();
|
2777
2940
|
if (array->IsFixedArray()) {
|
2778
2941
|
// FAST_ELEMENTS or DICTIONARY_ELEMENTS are both stored in a FixedArray.
|
2779
2942
|
if (array->map() == Heap::fixed_array_map()) {
|
2943
|
+
ASSERT(map()->has_fast_elements());
|
2780
2944
|
return FAST_ELEMENTS;
|
2781
2945
|
}
|
2782
2946
|
ASSERT(array->IsDictionary());
|
2947
|
+
ASSERT(!map()->has_fast_elements());
|
2783
2948
|
return DICTIONARY_ELEMENTS;
|
2784
2949
|
}
|
2950
|
+
ASSERT(!map()->has_fast_elements());
|
2785
2951
|
if (array->IsExternalArray()) {
|
2786
2952
|
switch (array->map()->instance_type()) {
|
2787
2953
|
case EXTERNAL_BYTE_ARRAY_TYPE:
|
@@ -2896,15 +3062,20 @@ NumberDictionary* JSObject::element_dictionary() {
|
|
2896
3062
|
}
|
2897
3063
|
|
2898
3064
|
|
3065
|
+
bool String::IsHashFieldComputed(uint32_t field) {
|
3066
|
+
return (field & kHashNotComputedMask) == 0;
|
3067
|
+
}
|
3068
|
+
|
3069
|
+
|
2899
3070
|
bool String::HasHashCode() {
|
2900
|
-
return (hash_field()
|
3071
|
+
return IsHashFieldComputed(hash_field());
|
2901
3072
|
}
|
2902
3073
|
|
2903
3074
|
|
2904
3075
|
uint32_t String::Hash() {
|
2905
3076
|
// Fast case: has hash code already been computed?
|
2906
3077
|
uint32_t field = hash_field();
|
2907
|
-
if (field
|
3078
|
+
if (IsHashFieldComputed(field)) return field >> kHashShift;
|
2908
3079
|
// Slow case: compute hash code and set it.
|
2909
3080
|
return ComputeAndSetHash();
|
2910
3081
|
}
|
@@ -2977,7 +3148,9 @@ uint32_t StringHasher::GetHash() {
|
|
2977
3148
|
|
2978
3149
|
bool String::AsArrayIndex(uint32_t* index) {
|
2979
3150
|
uint32_t field = hash_field();
|
2980
|
-
if ((field
|
3151
|
+
if (IsHashFieldComputed(field) && (field & kIsNotArrayIndexMask)) {
|
3152
|
+
return false;
|
3153
|
+
}
|
2981
3154
|
return SlowAsArrayIndex(index);
|
2982
3155
|
}
|
2983
3156
|
|
@@ -3101,7 +3274,7 @@ void Map::ClearCodeCache() {
|
|
3101
3274
|
|
3102
3275
|
void JSArray::EnsureSize(int required_size) {
|
3103
3276
|
ASSERT(HasFastElements());
|
3104
|
-
|
3277
|
+
FixedArray* elts = FixedArray::cast(elements());
|
3105
3278
|
const int kArraySizeThatFitsComfortablyInNewSpace = 128;
|
3106
3279
|
if (elts->length() < required_size) {
|
3107
3280
|
// Doubling in size would be overkill, but leave some slack to avoid
|