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
@@ -0,0 +1,59 @@
|
|
1
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
2
|
+
// Redistribution and use in source and binary forms, with or without
|
3
|
+
// modification, are permitted provided that the following conditions are
|
4
|
+
// met:
|
5
|
+
//
|
6
|
+
// * Redistributions of source code must retain the above copyright
|
7
|
+
// notice, this list of conditions and the following disclaimer.
|
8
|
+
// * Redistributions in binary form must reproduce the above
|
9
|
+
// copyright notice, this list of conditions and the following
|
10
|
+
// disclaimer in the documentation and/or other materials provided
|
11
|
+
// with the distribution.
|
12
|
+
// * Neither the name of Google Inc. nor the names of its
|
13
|
+
// contributors may be used to endorse or promote products derived
|
14
|
+
// from this software without specific prior written permission.
|
15
|
+
//
|
16
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
20
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
23
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
24
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
28
|
+
#ifndef V8_VIRTUAL_FRAME_ARM_INL_H_
|
29
|
+
#define V8_VIRTUAL_FRAME_ARM_INL_H_
|
30
|
+
|
31
|
+
#include "assembler-arm.h"
|
32
|
+
#include "virtual-frame-arm.h"
|
33
|
+
|
34
|
+
namespace v8 {
|
35
|
+
namespace internal {
|
36
|
+
|
37
|
+
// These VirtualFrame methods should actually be in a virtual-frame-arm-inl.h
|
38
|
+
// file if such a thing existed.
|
39
|
+
MemOperand VirtualFrame::ParameterAt(int index) {
|
40
|
+
// Index -1 corresponds to the receiver.
|
41
|
+
ASSERT(-1 <= index); // -1 is the receiver.
|
42
|
+
ASSERT(index <= parameter_count());
|
43
|
+
return MemOperand(fp, (1 + parameter_count() - index) * kPointerSize);
|
44
|
+
}
|
45
|
+
|
46
|
+
// The receiver frame slot.
|
47
|
+
MemOperand VirtualFrame::Receiver() {
|
48
|
+
return ParameterAt(-1);
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
void VirtualFrame::Forget(int count) {
|
53
|
+
SpillAll();
|
54
|
+
LowerHeight(count);
|
55
|
+
}
|
56
|
+
|
57
|
+
} } // namespace v8::internal
|
58
|
+
|
59
|
+
#endif // V8_VIRTUAL_FRAME_ARM_INL_H_
|
@@ -27,6 +27,8 @@
|
|
27
27
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
|
+
#if defined(V8_TARGET_ARCH_ARM)
|
31
|
+
|
30
32
|
#include "codegen-inl.h"
|
31
33
|
#include "register-allocator-inl.h"
|
32
34
|
#include "scopes.h"
|
@@ -38,115 +40,125 @@ namespace internal {
|
|
38
40
|
#define __ ACCESS_MASM(masm())
|
39
41
|
|
40
42
|
void VirtualFrame::PopToR1R0() {
|
41
|
-
VirtualFrame where_to_go = *this;
|
42
43
|
// Shuffle things around so the top of stack is in r0 and r1.
|
43
|
-
|
44
|
-
MergeTo(&where_to_go);
|
44
|
+
MergeTOSTo(R0_R1_TOS);
|
45
45
|
// Pop the two registers off the stack so they are detached from the frame.
|
46
|
-
|
46
|
+
LowerHeight(2);
|
47
47
|
top_of_stack_state_ = NO_TOS_REGISTERS;
|
48
48
|
}
|
49
49
|
|
50
50
|
|
51
51
|
void VirtualFrame::PopToR1() {
|
52
|
-
VirtualFrame where_to_go = *this;
|
53
52
|
// Shuffle things around so the top of stack is only in r1.
|
54
|
-
|
55
|
-
MergeTo(&where_to_go);
|
53
|
+
MergeTOSTo(R1_TOS);
|
56
54
|
// Pop the register off the stack so it is detached from the frame.
|
57
|
-
|
55
|
+
LowerHeight(1);
|
58
56
|
top_of_stack_state_ = NO_TOS_REGISTERS;
|
59
57
|
}
|
60
58
|
|
61
59
|
|
62
60
|
void VirtualFrame::PopToR0() {
|
63
|
-
VirtualFrame where_to_go = *this;
|
64
61
|
// Shuffle things around so the top of stack only in r0.
|
65
|
-
|
66
|
-
MergeTo(&where_to_go);
|
62
|
+
MergeTOSTo(R0_TOS);
|
67
63
|
// Pop the register off the stack so it is detached from the frame.
|
68
|
-
|
64
|
+
LowerHeight(1);
|
69
65
|
top_of_stack_state_ = NO_TOS_REGISTERS;
|
70
66
|
}
|
71
67
|
|
72
68
|
|
73
|
-
void VirtualFrame::MergeTo(VirtualFrame* expected) {
|
69
|
+
void VirtualFrame::MergeTo(const VirtualFrame* expected, Condition cond) {
|
70
|
+
if (Equals(expected)) return;
|
71
|
+
ASSERT(expected->IsCompatibleWith(this));
|
72
|
+
MergeTOSTo(expected->top_of_stack_state_, cond);
|
73
|
+
ASSERT(register_allocation_map_ == expected->register_allocation_map_);
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
void VirtualFrame::MergeTo(VirtualFrame* expected, Condition cond) {
|
74
78
|
if (Equals(expected)) return;
|
79
|
+
expected->tos_known_smi_map_ &= tos_known_smi_map_;
|
80
|
+
MergeTOSTo(expected->top_of_stack_state_, cond);
|
81
|
+
ASSERT(register_allocation_map_ == expected->register_allocation_map_);
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
void VirtualFrame::MergeTOSTo(
|
86
|
+
VirtualFrame::TopOfStack expected_top_of_stack_state, Condition cond) {
|
75
87
|
#define CASE_NUMBER(a, b) ((a) * TOS_STATES + (b))
|
76
|
-
switch (CASE_NUMBER(top_of_stack_state_,
|
88
|
+
switch (CASE_NUMBER(top_of_stack_state_, expected_top_of_stack_state)) {
|
77
89
|
case CASE_NUMBER(NO_TOS_REGISTERS, NO_TOS_REGISTERS):
|
78
90
|
break;
|
79
91
|
case CASE_NUMBER(NO_TOS_REGISTERS, R0_TOS):
|
80
|
-
__ pop(r0);
|
92
|
+
__ pop(r0, cond);
|
81
93
|
break;
|
82
94
|
case CASE_NUMBER(NO_TOS_REGISTERS, R1_TOS):
|
83
|
-
__ pop(r1);
|
95
|
+
__ pop(r1, cond);
|
84
96
|
break;
|
85
97
|
case CASE_NUMBER(NO_TOS_REGISTERS, R0_R1_TOS):
|
86
|
-
__ pop(r0);
|
87
|
-
__ pop(r1);
|
98
|
+
__ pop(r0, cond);
|
99
|
+
__ pop(r1, cond);
|
88
100
|
break;
|
89
101
|
case CASE_NUMBER(NO_TOS_REGISTERS, R1_R0_TOS):
|
90
|
-
__ pop(r1);
|
91
|
-
__ pop(r0);
|
102
|
+
__ pop(r1, cond);
|
103
|
+
__ pop(r0, cond);
|
92
104
|
break;
|
93
105
|
case CASE_NUMBER(R0_TOS, NO_TOS_REGISTERS):
|
94
|
-
__ push(r0);
|
106
|
+
__ push(r0, cond);
|
95
107
|
break;
|
96
108
|
case CASE_NUMBER(R0_TOS, R0_TOS):
|
97
109
|
break;
|
98
110
|
case CASE_NUMBER(R0_TOS, R1_TOS):
|
99
|
-
__ mov(r1, r0);
|
111
|
+
__ mov(r1, r0, LeaveCC, cond);
|
100
112
|
break;
|
101
113
|
case CASE_NUMBER(R0_TOS, R0_R1_TOS):
|
102
|
-
__ pop(r1);
|
114
|
+
__ pop(r1, cond);
|
103
115
|
break;
|
104
116
|
case CASE_NUMBER(R0_TOS, R1_R0_TOS):
|
105
|
-
__ mov(r1, r0);
|
106
|
-
__ pop(r0);
|
117
|
+
__ mov(r1, r0, LeaveCC, cond);
|
118
|
+
__ pop(r0, cond);
|
107
119
|
break;
|
108
120
|
case CASE_NUMBER(R1_TOS, NO_TOS_REGISTERS):
|
109
|
-
__ push(r1);
|
121
|
+
__ push(r1, cond);
|
110
122
|
break;
|
111
123
|
case CASE_NUMBER(R1_TOS, R0_TOS):
|
112
|
-
__ mov(r0, r1);
|
124
|
+
__ mov(r0, r1, LeaveCC, cond);
|
113
125
|
break;
|
114
126
|
case CASE_NUMBER(R1_TOS, R1_TOS):
|
115
127
|
break;
|
116
128
|
case CASE_NUMBER(R1_TOS, R0_R1_TOS):
|
117
|
-
__ mov(r0, r1);
|
118
|
-
__ pop(r1);
|
129
|
+
__ mov(r0, r1, LeaveCC, cond);
|
130
|
+
__ pop(r1, cond);
|
119
131
|
break;
|
120
132
|
case CASE_NUMBER(R1_TOS, R1_R0_TOS):
|
121
|
-
__ pop(r0);
|
133
|
+
__ pop(r0, cond);
|
122
134
|
break;
|
123
135
|
case CASE_NUMBER(R0_R1_TOS, NO_TOS_REGISTERS):
|
124
|
-
__ Push(r1, r0);
|
136
|
+
__ Push(r1, r0, cond);
|
125
137
|
break;
|
126
138
|
case CASE_NUMBER(R0_R1_TOS, R0_TOS):
|
127
|
-
__ push(r1);
|
139
|
+
__ push(r1, cond);
|
128
140
|
break;
|
129
141
|
case CASE_NUMBER(R0_R1_TOS, R1_TOS):
|
130
|
-
__ push(r1);
|
131
|
-
__ mov(r1, r0);
|
142
|
+
__ push(r1, cond);
|
143
|
+
__ mov(r1, r0, LeaveCC, cond);
|
132
144
|
break;
|
133
145
|
case CASE_NUMBER(R0_R1_TOS, R0_R1_TOS):
|
134
146
|
break;
|
135
147
|
case CASE_NUMBER(R0_R1_TOS, R1_R0_TOS):
|
136
|
-
__ Swap(r0, r1, ip);
|
148
|
+
__ Swap(r0, r1, ip, cond);
|
137
149
|
break;
|
138
150
|
case CASE_NUMBER(R1_R0_TOS, NO_TOS_REGISTERS):
|
139
|
-
__ Push(r0, r1);
|
151
|
+
__ Push(r0, r1, cond);
|
140
152
|
break;
|
141
153
|
case CASE_NUMBER(R1_R0_TOS, R0_TOS):
|
142
|
-
__ push(r0);
|
143
|
-
__ mov(r0, r1);
|
154
|
+
__ push(r0, cond);
|
155
|
+
__ mov(r0, r1, LeaveCC, cond);
|
144
156
|
break;
|
145
157
|
case CASE_NUMBER(R1_R0_TOS, R1_TOS):
|
146
|
-
__ push(r0);
|
158
|
+
__ push(r0, cond);
|
147
159
|
break;
|
148
160
|
case CASE_NUMBER(R1_R0_TOS, R0_R1_TOS):
|
149
|
-
__ Swap(r0, r1, ip);
|
161
|
+
__ Swap(r0, r1, ip, cond);
|
150
162
|
break;
|
151
163
|
case CASE_NUMBER(R1_R0_TOS, R1_R0_TOS):
|
152
164
|
break;
|
@@ -154,7 +166,16 @@ void VirtualFrame::MergeTo(VirtualFrame* expected) {
|
|
154
166
|
UNREACHABLE();
|
155
167
|
#undef CASE_NUMBER
|
156
168
|
}
|
157
|
-
|
169
|
+
// A conditional merge will be followed by a conditional branch and the
|
170
|
+
// fall-through code will have an unchanged virtual frame state. If the
|
171
|
+
// merge is unconditional ('al'ways) then it might be followed by a fall
|
172
|
+
// through. We need to update the virtual frame state to match the code we
|
173
|
+
// are falling into. The final case is an unconditional merge followed by an
|
174
|
+
// unconditional branch, in which case it doesn't matter what we do to the
|
175
|
+
// virtual frame state, because the virtual frame will be invalidated.
|
176
|
+
if (cond == al) {
|
177
|
+
top_of_stack_state_ = expected_top_of_stack_state;
|
178
|
+
}
|
158
179
|
}
|
159
180
|
|
160
181
|
|
@@ -255,7 +276,8 @@ void VirtualFrame::PushTryHandler(HandlerType type) {
|
|
255
276
|
|
256
277
|
void VirtualFrame::CallJSFunction(int arg_count) {
|
257
278
|
// InvokeFunction requires function in r1.
|
258
|
-
|
279
|
+
PopToR1();
|
280
|
+
SpillAll();
|
259
281
|
|
260
282
|
// +1 for receiver.
|
261
283
|
Forget(arg_count + 1);
|
@@ -268,7 +290,7 @@ void VirtualFrame::CallJSFunction(int arg_count) {
|
|
268
290
|
|
269
291
|
|
270
292
|
void VirtualFrame::CallRuntime(Runtime::Function* f, int arg_count) {
|
271
|
-
|
293
|
+
SpillAll();
|
272
294
|
Forget(arg_count);
|
273
295
|
ASSERT(cgen()->HasValidEntryRegisters());
|
274
296
|
__ CallRuntime(f, arg_count);
|
@@ -276,6 +298,7 @@ void VirtualFrame::CallRuntime(Runtime::Function* f, int arg_count) {
|
|
276
298
|
|
277
299
|
|
278
300
|
void VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) {
|
301
|
+
SpillAll();
|
279
302
|
Forget(arg_count);
|
280
303
|
ASSERT(cgen()->HasValidEntryRegisters());
|
281
304
|
__ CallRuntime(id, arg_count);
|
@@ -300,7 +323,8 @@ void VirtualFrame::InvokeBuiltin(Builtins::JavaScript id,
|
|
300
323
|
|
301
324
|
void VirtualFrame::CallLoadIC(Handle<String> name, RelocInfo::Mode mode) {
|
302
325
|
Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize));
|
303
|
-
|
326
|
+
PopToR0();
|
327
|
+
SpillAll();
|
304
328
|
__ mov(r2, Operand(name));
|
305
329
|
CallCodeObject(ic, mode, 0);
|
306
330
|
}
|
@@ -323,14 +347,17 @@ void VirtualFrame::CallStoreIC(Handle<String> name, bool is_contextual) {
|
|
323
347
|
|
324
348
|
void VirtualFrame::CallKeyedLoadIC() {
|
325
349
|
Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize));
|
326
|
-
|
350
|
+
PopToR1R0();
|
351
|
+
SpillAll();
|
327
352
|
CallCodeObject(ic, RelocInfo::CODE_TARGET, 0);
|
328
353
|
}
|
329
354
|
|
330
355
|
|
331
356
|
void VirtualFrame::CallKeyedStoreIC() {
|
332
|
-
ASSERT(SpilledScope::is_spilled());
|
333
357
|
Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
|
358
|
+
PopToR1R0();
|
359
|
+
SpillAll();
|
360
|
+
EmitPop(r2);
|
334
361
|
CallCodeObject(ic, RelocInfo::CODE_TARGET, 0);
|
335
362
|
}
|
336
363
|
|
@@ -340,6 +367,7 @@ void VirtualFrame::CallCodeObject(Handle<Code> code,
|
|
340
367
|
int dropped_args) {
|
341
368
|
switch (code->kind()) {
|
342
369
|
case Code::CALL_IC:
|
370
|
+
case Code::KEYED_CALL_IC:
|
343
371
|
case Code::FUNCTION:
|
344
372
|
break;
|
345
373
|
case Code::KEYED_LOAD_IC:
|
@@ -402,7 +430,7 @@ void VirtualFrame::Drop(int count) {
|
|
402
430
|
}
|
403
431
|
if (count == 0) return;
|
404
432
|
__ add(sp, sp, Operand(count * kPointerSize));
|
405
|
-
|
433
|
+
LowerHeight(count);
|
406
434
|
}
|
407
435
|
|
408
436
|
|
@@ -412,19 +440,19 @@ void VirtualFrame::Pop() {
|
|
412
440
|
} else {
|
413
441
|
top_of_stack_state_ = kStateAfterPop[top_of_stack_state_];
|
414
442
|
}
|
415
|
-
|
443
|
+
LowerHeight(1);
|
416
444
|
}
|
417
445
|
|
418
446
|
|
419
447
|
void VirtualFrame::EmitPop(Register reg) {
|
420
|
-
ASSERT(!is_used(reg));
|
448
|
+
ASSERT(!is_used(RegisterAllocator::ToNumber(reg)));
|
421
449
|
if (top_of_stack_state_ == NO_TOS_REGISTERS) {
|
422
450
|
__ pop(reg);
|
423
451
|
} else {
|
424
452
|
__ mov(reg, kTopRegister[top_of_stack_state_]);
|
425
453
|
top_of_stack_state_ = kStateAfterPop[top_of_stack_state_];
|
426
454
|
}
|
427
|
-
|
455
|
+
LowerHeight(1);
|
428
456
|
}
|
429
457
|
|
430
458
|
|
@@ -454,6 +482,32 @@ void VirtualFrame::SpillAllButCopyTOSToR0() {
|
|
454
482
|
}
|
455
483
|
|
456
484
|
|
485
|
+
void VirtualFrame::SpillAllButCopyTOSToR1() {
|
486
|
+
switch (top_of_stack_state_) {
|
487
|
+
case NO_TOS_REGISTERS:
|
488
|
+
__ ldr(r1, MemOperand(sp, 0));
|
489
|
+
break;
|
490
|
+
case R0_TOS:
|
491
|
+
__ push(r0);
|
492
|
+
__ mov(r1, r0);
|
493
|
+
break;
|
494
|
+
case R1_TOS:
|
495
|
+
__ push(r1);
|
496
|
+
break;
|
497
|
+
case R0_R1_TOS:
|
498
|
+
__ Push(r1, r0);
|
499
|
+
__ mov(r1, r0);
|
500
|
+
break;
|
501
|
+
case R1_R0_TOS:
|
502
|
+
__ Push(r0, r1);
|
503
|
+
break;
|
504
|
+
default:
|
505
|
+
UNREACHABLE();
|
506
|
+
}
|
507
|
+
top_of_stack_state_ = NO_TOS_REGISTERS;
|
508
|
+
}
|
509
|
+
|
510
|
+
|
457
511
|
void VirtualFrame::SpillAllButCopyTOSToR1R0() {
|
458
512
|
switch (top_of_stack_state_) {
|
459
513
|
case NO_TOS_REGISTERS:
|
@@ -496,35 +550,100 @@ Register VirtualFrame::Peek() {
|
|
496
550
|
}
|
497
551
|
|
498
552
|
|
499
|
-
|
553
|
+
Register VirtualFrame::Peek2() {
|
500
554
|
AssertIsNotSpilled();
|
501
555
|
switch (top_of_stack_state_) {
|
502
556
|
case NO_TOS_REGISTERS:
|
503
|
-
__ ldr(r0, MemOperand(sp, 0));
|
504
|
-
top_of_stack_state_ = R0_TOS;
|
505
|
-
break;
|
506
557
|
case R0_TOS:
|
507
|
-
__ mov(r1, r0);
|
508
|
-
top_of_stack_state_ = R0_R1_TOS;
|
509
|
-
break;
|
510
|
-
case R1_TOS:
|
511
|
-
__ mov(r0, r1);
|
512
|
-
top_of_stack_state_ = R0_R1_TOS;
|
513
|
-
break;
|
514
558
|
case R0_R1_TOS:
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
break;
|
559
|
+
MergeTOSTo(R0_R1_TOS);
|
560
|
+
return r1;
|
561
|
+
case R1_TOS:
|
519
562
|
case R1_R0_TOS:
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
563
|
+
MergeTOSTo(R1_R0_TOS);
|
564
|
+
return r0;
|
565
|
+
}
|
566
|
+
UNREACHABLE();
|
567
|
+
return no_reg;
|
568
|
+
}
|
569
|
+
|
570
|
+
|
571
|
+
void VirtualFrame::Dup() {
|
572
|
+
if (SpilledScope::is_spilled()) {
|
573
|
+
__ ldr(ip, MemOperand(sp, 0));
|
574
|
+
__ push(ip);
|
575
|
+
} else {
|
576
|
+
switch (top_of_stack_state_) {
|
577
|
+
case NO_TOS_REGISTERS:
|
578
|
+
__ ldr(r0, MemOperand(sp, 0));
|
579
|
+
top_of_stack_state_ = R0_TOS;
|
580
|
+
break;
|
581
|
+
case R0_TOS:
|
582
|
+
__ mov(r1, r0);
|
583
|
+
// r0 and r1 contains the same value. Prefer state with r0 holding TOS.
|
584
|
+
top_of_stack_state_ = R0_R1_TOS;
|
585
|
+
break;
|
586
|
+
case R1_TOS:
|
587
|
+
__ mov(r0, r1);
|
588
|
+
// r0 and r1 contains the same value. Prefer state with r0 holding TOS.
|
589
|
+
top_of_stack_state_ = R0_R1_TOS;
|
590
|
+
break;
|
591
|
+
case R0_R1_TOS:
|
592
|
+
__ push(r1);
|
593
|
+
__ mov(r1, r0);
|
594
|
+
// r0 and r1 contains the same value. Prefer state with r0 holding TOS.
|
595
|
+
top_of_stack_state_ = R0_R1_TOS;
|
596
|
+
break;
|
597
|
+
case R1_R0_TOS:
|
598
|
+
__ push(r0);
|
599
|
+
__ mov(r0, r1);
|
600
|
+
// r0 and r1 contains the same value. Prefer state with r0 holding TOS.
|
601
|
+
top_of_stack_state_ = R0_R1_TOS;
|
602
|
+
break;
|
603
|
+
default:
|
604
|
+
UNREACHABLE();
|
605
|
+
}
|
526
606
|
}
|
527
|
-
|
607
|
+
RaiseHeight(1, tos_known_smi_map_ & 1);
|
608
|
+
}
|
609
|
+
|
610
|
+
|
611
|
+
void VirtualFrame::Dup2() {
|
612
|
+
if (SpilledScope::is_spilled()) {
|
613
|
+
__ ldr(ip, MemOperand(sp, kPointerSize));
|
614
|
+
__ push(ip);
|
615
|
+
__ ldr(ip, MemOperand(sp, kPointerSize));
|
616
|
+
__ push(ip);
|
617
|
+
} else {
|
618
|
+
switch (top_of_stack_state_) {
|
619
|
+
case NO_TOS_REGISTERS:
|
620
|
+
__ ldr(r0, MemOperand(sp, 0));
|
621
|
+
__ ldr(r1, MemOperand(sp, kPointerSize));
|
622
|
+
top_of_stack_state_ = R0_R1_TOS;
|
623
|
+
break;
|
624
|
+
case R0_TOS:
|
625
|
+
__ push(r0);
|
626
|
+
__ ldr(r1, MemOperand(sp, kPointerSize));
|
627
|
+
top_of_stack_state_ = R0_R1_TOS;
|
628
|
+
break;
|
629
|
+
case R1_TOS:
|
630
|
+
__ push(r1);
|
631
|
+
__ ldr(r0, MemOperand(sp, kPointerSize));
|
632
|
+
top_of_stack_state_ = R1_R0_TOS;
|
633
|
+
break;
|
634
|
+
case R0_R1_TOS:
|
635
|
+
__ Push(r1, r0);
|
636
|
+
top_of_stack_state_ = R0_R1_TOS;
|
637
|
+
break;
|
638
|
+
case R1_R0_TOS:
|
639
|
+
__ Push(r0, r1);
|
640
|
+
top_of_stack_state_ = R1_R0_TOS;
|
641
|
+
break;
|
642
|
+
default:
|
643
|
+
UNREACHABLE();
|
644
|
+
}
|
645
|
+
}
|
646
|
+
RaiseHeight(2, tos_known_smi_map_ & 3);
|
528
647
|
}
|
529
648
|
|
530
649
|
|
@@ -532,8 +651,7 @@ Register VirtualFrame::PopToRegister(Register but_not_to_this_one) {
|
|
532
651
|
ASSERT(but_not_to_this_one.is(r0) ||
|
533
652
|
but_not_to_this_one.is(r1) ||
|
534
653
|
but_not_to_this_one.is(no_reg));
|
535
|
-
|
536
|
-
element_count_--;
|
654
|
+
LowerHeight(1);
|
537
655
|
if (top_of_stack_state_ == NO_TOS_REGISTERS) {
|
538
656
|
if (but_not_to_this_one.is(r0)) {
|
539
657
|
__ pop(r1);
|
@@ -561,9 +679,19 @@ void VirtualFrame::EnsureOneFreeTOSRegister() {
|
|
561
679
|
}
|
562
680
|
|
563
681
|
|
564
|
-
void VirtualFrame::EmitPush(Register reg) {
|
565
|
-
|
682
|
+
void VirtualFrame::EmitPush(Register reg, TypeInfo info) {
|
683
|
+
RaiseHeight(1, info.IsSmi() ? 1 : 0);
|
684
|
+
if (reg.is(cp)) {
|
685
|
+
// If we are pushing cp then we are about to make a call and things have to
|
686
|
+
// be pushed to the physical stack. There's nothing to be gained my moving
|
687
|
+
// to a TOS register and then pushing that, we might as well push to the
|
688
|
+
// physical stack immediately.
|
689
|
+
MergeTOSTo(NO_TOS_REGISTERS);
|
690
|
+
__ push(reg);
|
691
|
+
return;
|
692
|
+
}
|
566
693
|
if (SpilledScope::is_spilled()) {
|
694
|
+
ASSERT(top_of_stack_state_ == NO_TOS_REGISTERS);
|
567
695
|
__ push(reg);
|
568
696
|
return;
|
569
697
|
}
|
@@ -584,6 +712,42 @@ void VirtualFrame::EmitPush(Register reg) {
|
|
584
712
|
}
|
585
713
|
|
586
714
|
|
715
|
+
void VirtualFrame::SetElementAt(Register reg, int this_far_down) {
|
716
|
+
if (this_far_down < kTOSKnownSmiMapSize) {
|
717
|
+
tos_known_smi_map_ &= ~(1 << this_far_down);
|
718
|
+
}
|
719
|
+
if (this_far_down == 0) {
|
720
|
+
Pop();
|
721
|
+
Register dest = GetTOSRegister();
|
722
|
+
if (dest.is(reg)) {
|
723
|
+
// We already popped one item off the top of the stack. If the only
|
724
|
+
// free register is the one we were asked to push then we have been
|
725
|
+
// asked to push a register that was already in use, which cannot
|
726
|
+
// happen. It therefore folows that there are two free TOS registers:
|
727
|
+
ASSERT(top_of_stack_state_ == NO_TOS_REGISTERS);
|
728
|
+
dest = dest.is(r0) ? r1 : r0;
|
729
|
+
}
|
730
|
+
__ mov(dest, reg);
|
731
|
+
EmitPush(dest);
|
732
|
+
} else if (this_far_down == 1) {
|
733
|
+
int virtual_elements = kVirtualElements[top_of_stack_state_];
|
734
|
+
if (virtual_elements < 2) {
|
735
|
+
__ str(reg, ElementAt(this_far_down));
|
736
|
+
} else {
|
737
|
+
ASSERT(virtual_elements == 2);
|
738
|
+
ASSERT(!reg.is(r0));
|
739
|
+
ASSERT(!reg.is(r1));
|
740
|
+
Register dest = kBottomRegister[top_of_stack_state_];
|
741
|
+
__ mov(dest, reg);
|
742
|
+
}
|
743
|
+
} else {
|
744
|
+
ASSERT(this_far_down >= 2);
|
745
|
+
ASSERT(kVirtualElements[top_of_stack_state_] <= 2);
|
746
|
+
__ str(reg, ElementAt(this_far_down));
|
747
|
+
}
|
748
|
+
}
|
749
|
+
|
750
|
+
|
587
751
|
Register VirtualFrame::GetTOSRegister() {
|
588
752
|
if (SpilledScope::is_spilled()) return r0;
|
589
753
|
|
@@ -592,8 +756,8 @@ Register VirtualFrame::GetTOSRegister() {
|
|
592
756
|
}
|
593
757
|
|
594
758
|
|
595
|
-
void VirtualFrame::EmitPush(Operand operand) {
|
596
|
-
|
759
|
+
void VirtualFrame::EmitPush(Operand operand, TypeInfo info) {
|
760
|
+
RaiseHeight(1, info.IsSmi() ? 1 : 0);
|
597
761
|
if (SpilledScope::is_spilled()) {
|
598
762
|
__ mov(r0, operand);
|
599
763
|
__ push(r0);
|
@@ -605,8 +769,8 @@ void VirtualFrame::EmitPush(Operand operand) {
|
|
605
769
|
}
|
606
770
|
|
607
771
|
|
608
|
-
void VirtualFrame::EmitPush(MemOperand operand) {
|
609
|
-
|
772
|
+
void VirtualFrame::EmitPush(MemOperand operand, TypeInfo info) {
|
773
|
+
RaiseHeight(1, info.IsSmi() ? 1 : 0);
|
610
774
|
if (SpilledScope::is_spilled()) {
|
611
775
|
__ ldr(r0, operand);
|
612
776
|
__ push(r0);
|
@@ -619,7 +783,7 @@ void VirtualFrame::EmitPush(MemOperand operand) {
|
|
619
783
|
|
620
784
|
|
621
785
|
void VirtualFrame::EmitPushRoot(Heap::RootListIndex index) {
|
622
|
-
|
786
|
+
RaiseHeight(1, 0);
|
623
787
|
if (SpilledScope::is_spilled()) {
|
624
788
|
__ LoadRoot(r0, index);
|
625
789
|
__ push(r0);
|
@@ -666,3 +830,5 @@ void VirtualFrame::SpillAll() {
|
|
666
830
|
#undef __
|
667
831
|
|
668
832
|
} } // namespace v8::internal
|
833
|
+
|
834
|
+
#endif // V8_TARGET_ARCH_ARM
|