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
@@ -27,6 +27,8 @@
|
|
27
27
|
|
28
28
|
#include "v8.h"
|
29
29
|
|
30
|
+
#if defined(V8_TARGET_ARCH_ARM)
|
31
|
+
|
30
32
|
#include "constants-arm.h"
|
31
33
|
|
32
34
|
|
@@ -35,6 +37,26 @@ namespace arm {
|
|
35
37
|
|
36
38
|
namespace v8i = v8::internal;
|
37
39
|
|
40
|
+
double Instr::DoubleImmedVmov() const {
|
41
|
+
// Reconstruct a double from the immediate encoded in the vmov instruction.
|
42
|
+
//
|
43
|
+
// instruction: [xxxxxxxx,xxxxabcd,xxxxxxxx,xxxxefgh]
|
44
|
+
// double: [aBbbbbbb,bbcdefgh,00000000,00000000,
|
45
|
+
// 00000000,00000000,00000000,00000000]
|
46
|
+
//
|
47
|
+
// where B = ~b. Only the high 16 bits are affected.
|
48
|
+
uint64_t high16;
|
49
|
+
high16 = (Bits(17, 16) << 4) | Bits(3, 0); // xxxxxxxx,xxcdefgh.
|
50
|
+
high16 |= (0xff * Bit(18)) << 6; // xxbbbbbb,bbxxxxxx.
|
51
|
+
high16 |= (Bit(18) ^ 1) << 14; // xBxxxxxx,xxxxxxxx.
|
52
|
+
high16 |= Bit(19) << 15; // axxxxxxx,xxxxxxxx.
|
53
|
+
|
54
|
+
uint64_t imm = high16 << 48;
|
55
|
+
double d;
|
56
|
+
memcpy(&d, &imm, 8);
|
57
|
+
return d;
|
58
|
+
}
|
59
|
+
|
38
60
|
|
39
61
|
// These register names are defined in a way to match the native disassembler
|
40
62
|
// formatting. See for example the command "objdump -d <binary file>".
|
@@ -83,7 +105,7 @@ const char* VFPRegisters::names_[kNumVFPRegisters] = {
|
|
83
105
|
|
84
106
|
const char* VFPRegisters::Name(int reg, bool is_double) {
|
85
107
|
ASSERT((0 <= reg) && (reg < kNumVFPRegisters));
|
86
|
-
return names_[reg + is_double ? kNumVFPSingleRegisters : 0];
|
108
|
+
return names_[reg + (is_double ? kNumVFPSingleRegisters : 0)];
|
87
109
|
}
|
88
110
|
|
89
111
|
|
@@ -128,3 +150,5 @@ int Registers::Number(const char* name) {
|
|
128
150
|
|
129
151
|
|
130
152
|
} } // namespace assembler::arm
|
153
|
+
|
154
|
+
#endif // V8_TARGET_ARCH_ARM
|
@@ -66,10 +66,19 @@
|
|
66
66
|
# define CAN_USE_THUMB_INSTRUCTIONS 1
|
67
67
|
#endif
|
68
68
|
|
69
|
-
// Simulator should support ARM5 instructions.
|
69
|
+
// Simulator should support ARM5 instructions and unaligned access by default.
|
70
70
|
#if !defined(__arm__)
|
71
71
|
# define CAN_USE_ARMV5_INSTRUCTIONS 1
|
72
72
|
# define CAN_USE_THUMB_INSTRUCTIONS 1
|
73
|
+
|
74
|
+
# ifndef CAN_USE_UNALIGNED_ACCESSES
|
75
|
+
# define CAN_USE_UNALIGNED_ACCESSES 1
|
76
|
+
# endif
|
77
|
+
|
78
|
+
#endif
|
79
|
+
|
80
|
+
#if CAN_USE_UNALIGNED_ACCESSES
|
81
|
+
#define V8_TARGET_CAN_READ_UNALIGNED 1
|
73
82
|
#endif
|
74
83
|
|
75
84
|
// Using blx may yield better code, so use it when required or when available
|
@@ -275,6 +284,9 @@ class Instr {
|
|
275
284
|
// with immediate
|
276
285
|
inline int RotateField() const { return Bits(11, 8); }
|
277
286
|
inline int Immed8Field() const { return Bits(7, 0); }
|
287
|
+
inline int Immed4Field() const { return Bits(19, 16); }
|
288
|
+
inline int ImmedMovwMovtField() const {
|
289
|
+
return Immed4Field() << 12 | Offset12Field(); }
|
278
290
|
|
279
291
|
// Fields used in Load/Store instructions
|
280
292
|
inline int PUField() const { return Bits(24, 23); }
|
@@ -321,6 +333,9 @@ class Instr {
|
|
321
333
|
inline bool HasH() const { return HField() == 1; }
|
322
334
|
inline bool HasLink() const { return LinkField() == 1; }
|
323
335
|
|
336
|
+
// Decoding the double immediate in the vmov instruction.
|
337
|
+
double DoubleImmedVmov() const;
|
338
|
+
|
324
339
|
// Instructions are read of out a code stream. The only way to get a
|
325
340
|
// reference to an instruction is to convert a pointer. There is no way
|
326
341
|
// to allocate or create instances of class Instr.
|
@@ -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 "debug.h"
|
32
34
|
|
@@ -55,7 +57,7 @@ void BreakLocationIterator::SetDebugBreakAtReturn() {
|
|
55
57
|
// #endif
|
56
58
|
// <debug break return code entry point address>
|
57
59
|
// bktp 0
|
58
|
-
CodePatcher patcher(rinfo()->pc(),
|
60
|
+
CodePatcher patcher(rinfo()->pc(), Assembler::kJSReturnSequenceInstructions);
|
59
61
|
#ifdef USE_BLX
|
60
62
|
patcher.masm()->ldr(v8::internal::ip, MemOperand(v8::internal::pc, 0));
|
61
63
|
patcher.masm()->blx(v8::internal::ip);
|
@@ -71,17 +73,59 @@ void BreakLocationIterator::SetDebugBreakAtReturn() {
|
|
71
73
|
// Restore the JS frame exit code.
|
72
74
|
void BreakLocationIterator::ClearDebugBreakAtReturn() {
|
73
75
|
rinfo()->PatchCode(original_rinfo()->pc(),
|
74
|
-
Assembler::
|
76
|
+
Assembler::kJSReturnSequenceInstructions);
|
75
77
|
}
|
76
78
|
|
77
79
|
|
78
|
-
// A debug break in the exit code is identified by
|
80
|
+
// A debug break in the frame exit code is identified by the JS frame exit code
|
81
|
+
// having been patched with a call instruction.
|
79
82
|
bool Debug::IsDebugBreakAtReturn(RelocInfo* rinfo) {
|
80
83
|
ASSERT(RelocInfo::IsJSReturn(rinfo->rmode()));
|
81
84
|
return rinfo->IsPatchedReturnSequence();
|
82
85
|
}
|
83
86
|
|
84
87
|
|
88
|
+
bool BreakLocationIterator::IsDebugBreakAtSlot() {
|
89
|
+
ASSERT(IsDebugBreakSlot());
|
90
|
+
// Check whether the debug break slot instructions have been patched.
|
91
|
+
return rinfo()->IsPatchedDebugBreakSlotSequence();
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
void BreakLocationIterator::SetDebugBreakAtSlot() {
|
96
|
+
ASSERT(IsDebugBreakSlot());
|
97
|
+
// Patch the code changing the debug break slot code from
|
98
|
+
// mov r2, r2
|
99
|
+
// mov r2, r2
|
100
|
+
// mov r2, r2
|
101
|
+
// to a call to the debug break slot code.
|
102
|
+
// #if USE_BLX
|
103
|
+
// ldr ip, [pc, #0]
|
104
|
+
// blx ip
|
105
|
+
// #else
|
106
|
+
// mov lr, pc
|
107
|
+
// ldr pc, [pc, #-4]
|
108
|
+
// #endif
|
109
|
+
// <debug break slot code entry point address>
|
110
|
+
CodePatcher patcher(rinfo()->pc(), Assembler::kDebugBreakSlotInstructions);
|
111
|
+
#ifdef USE_BLX
|
112
|
+
patcher.masm()->ldr(v8::internal::ip, MemOperand(v8::internal::pc, 0));
|
113
|
+
patcher.masm()->blx(v8::internal::ip);
|
114
|
+
#else
|
115
|
+
patcher.masm()->mov(v8::internal::lr, v8::internal::pc);
|
116
|
+
patcher.masm()->ldr(v8::internal::pc, MemOperand(v8::internal::pc, -4));
|
117
|
+
#endif
|
118
|
+
patcher.Emit(Debug::debug_break_return()->entry());
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
void BreakLocationIterator::ClearDebugBreakAtSlot() {
|
123
|
+
ASSERT(IsDebugBreakSlot());
|
124
|
+
rinfo()->PatchCode(original_rinfo()->pc(),
|
125
|
+
Assembler::kDebugBreakSlotInstructions);
|
126
|
+
}
|
127
|
+
|
128
|
+
|
85
129
|
#define __ ACCESS_MASM(masm)
|
86
130
|
|
87
131
|
|
@@ -170,10 +214,11 @@ void Debug::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
|
|
170
214
|
|
171
215
|
void Debug::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
|
172
216
|
// ---------- S t a t e --------------
|
217
|
+
// -- r0 : value
|
218
|
+
// -- r1 : key
|
219
|
+
// -- r2 : receiver
|
173
220
|
// -- lr : return address
|
174
|
-
|
175
|
-
// -- sp[4] : receiver
|
176
|
-
Generate_DebugBreakCallHelper(masm, 0);
|
221
|
+
Generate_DebugBreakCallHelper(masm, r0.bit() | r1.bit() | r2.bit());
|
177
222
|
}
|
178
223
|
|
179
224
|
|
@@ -217,10 +262,33 @@ void Debug::GenerateStubNoRegistersDebugBreak(MacroAssembler* masm) {
|
|
217
262
|
}
|
218
263
|
|
219
264
|
|
265
|
+
void Debug::GenerateSlot(MacroAssembler* masm) {
|
266
|
+
// Generate enough nop's to make space for a call instruction. Avoid emitting
|
267
|
+
// the constant pool in the debug break slot code.
|
268
|
+
Assembler::BlockConstPoolScope block_const_pool(masm);
|
269
|
+
Label check_codesize;
|
270
|
+
__ bind(&check_codesize);
|
271
|
+
__ RecordDebugBreakSlot();
|
272
|
+
for (int i = 0; i < Assembler::kDebugBreakSlotInstructions; i++) {
|
273
|
+
__ nop(2);
|
274
|
+
}
|
275
|
+
ASSERT_EQ(Assembler::kDebugBreakSlotInstructions,
|
276
|
+
masm->InstructionsGeneratedSince(&check_codesize));
|
277
|
+
}
|
278
|
+
|
279
|
+
|
280
|
+
void Debug::GenerateSlotDebugBreak(MacroAssembler* masm) {
|
281
|
+
// In the places where a debug break slot is inserted no registers can contain
|
282
|
+
// object pointers.
|
283
|
+
Generate_DebugBreakCallHelper(masm, 0);
|
284
|
+
}
|
285
|
+
|
286
|
+
|
220
287
|
void Debug::GeneratePlainReturnLiveEdit(MacroAssembler* masm) {
|
221
288
|
masm->Abort("LiveEdit frame dropping is not supported on arm");
|
222
289
|
}
|
223
290
|
|
291
|
+
|
224
292
|
void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
|
225
293
|
masm->Abort("LiveEdit frame dropping is not supported on arm");
|
226
294
|
}
|
@@ -237,3 +305,5 @@ const int Debug::kFrameDropperFrameSize = -1;
|
|
237
305
|
#endif // ENABLE_DEBUGGER_SUPPORT
|
238
306
|
|
239
307
|
} } // namespace v8::internal
|
308
|
+
|
309
|
+
#endif // V8_TARGET_ARCH_ARM
|
@@ -56,6 +56,8 @@
|
|
56
56
|
|
57
57
|
#include "v8.h"
|
58
58
|
|
59
|
+
#if defined(V8_TARGET_ARCH_ARM)
|
60
|
+
|
59
61
|
#include "constants-arm.h"
|
60
62
|
#include "disasm.h"
|
61
63
|
#include "macro-assembler.h"
|
@@ -99,10 +101,12 @@ class Decoder {
|
|
99
101
|
void PrintSRegister(int reg);
|
100
102
|
void PrintDRegister(int reg);
|
101
103
|
int FormatVFPRegister(Instr* instr, const char* format);
|
104
|
+
void PrintMovwMovt(Instr* instr);
|
102
105
|
int FormatVFPinstruction(Instr* instr, const char* format);
|
103
106
|
void PrintCondition(Instr* instr);
|
104
107
|
void PrintShiftRm(Instr* instr);
|
105
108
|
void PrintShiftImm(Instr* instr);
|
109
|
+
void PrintShiftSat(Instr* instr);
|
106
110
|
void PrintPU(Instr* instr);
|
107
111
|
void PrintSoftwareInterrupt(SoftwareInterruptCodes swi);
|
108
112
|
|
@@ -245,6 +249,18 @@ void Decoder::PrintShiftImm(Instr* instr) {
|
|
245
249
|
}
|
246
250
|
|
247
251
|
|
252
|
+
// Print the optional shift and immediate used by saturating instructions.
|
253
|
+
void Decoder::PrintShiftSat(Instr* instr) {
|
254
|
+
int shift = instr->Bits(11, 7);
|
255
|
+
if (shift > 0) {
|
256
|
+
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
257
|
+
", %s #%d",
|
258
|
+
shift_names[instr->Bit(6) * 2],
|
259
|
+
instr->Bits(11, 7));
|
260
|
+
}
|
261
|
+
}
|
262
|
+
|
263
|
+
|
248
264
|
// Print PU formatting to reduce complexity of FormatOption.
|
249
265
|
void Decoder::PrintPU(Instr* instr) {
|
250
266
|
switch (instr->PUField()) {
|
@@ -373,6 +389,16 @@ int Decoder::FormatVFPinstruction(Instr* instr, const char* format) {
|
|
373
389
|
}
|
374
390
|
|
375
391
|
|
392
|
+
// Print the movw or movt instruction.
|
393
|
+
void Decoder::PrintMovwMovt(Instr* instr) {
|
394
|
+
int imm = instr->ImmedMovwMovtField();
|
395
|
+
int rd = instr->RdField();
|
396
|
+
PrintRegister(rd);
|
397
|
+
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
398
|
+
", #%d", imm);
|
399
|
+
}
|
400
|
+
|
401
|
+
|
376
402
|
// FormatOption takes a formatting string and interprets it based on
|
377
403
|
// the current instructions. The format string points to the first
|
378
404
|
// character of the option string (the option escape has already been
|
@@ -399,6 +425,26 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
|
|
399
425
|
PrintCondition(instr);
|
400
426
|
return 4;
|
401
427
|
}
|
428
|
+
case 'd': { // 'd: vmov double immediate.
|
429
|
+
double d = instr->DoubleImmedVmov();
|
430
|
+
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
431
|
+
"#%g", d);
|
432
|
+
return 1;
|
433
|
+
}
|
434
|
+
case 'f': { // 'f: bitfield instructions - v7 and above.
|
435
|
+
uint32_t lsbit = instr->Bits(11, 7);
|
436
|
+
uint32_t width = instr->Bits(20, 16) + 1;
|
437
|
+
if (instr->Bit(21) == 0) {
|
438
|
+
// BFC/BFI:
|
439
|
+
// Bits 20-16 represent most-significant bit. Covert to width.
|
440
|
+
width -= lsbit;
|
441
|
+
ASSERT(width > 0);
|
442
|
+
}
|
443
|
+
ASSERT((width + lsbit) <= 32);
|
444
|
+
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
445
|
+
"#%d, #%d", lsbit, width);
|
446
|
+
return 1;
|
447
|
+
}
|
402
448
|
case 'h': { // 'h: halfword operation for extra loads and stores
|
403
449
|
if (instr->HasH()) {
|
404
450
|
Print("h");
|
@@ -407,6 +453,20 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
|
|
407
453
|
}
|
408
454
|
return 1;
|
409
455
|
}
|
456
|
+
case 'i': { // 'i: immediate value from adjacent bits.
|
457
|
+
// Expects tokens in the form imm%02d@%02d, ie. imm05@07, imm10@16
|
458
|
+
int width = (format[3] - '0') * 10 + (format[4] - '0');
|
459
|
+
int lsb = (format[6] - '0') * 10 + (format[7] - '0');
|
460
|
+
|
461
|
+
ASSERT((width >= 1) && (width <= 32));
|
462
|
+
ASSERT((lsb >= 0) && (lsb <= 31));
|
463
|
+
ASSERT((width + lsb) <= 32);
|
464
|
+
|
465
|
+
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
466
|
+
"#%d",
|
467
|
+
instr->Bits(width + lsb - 1, lsb));
|
468
|
+
return 8;
|
469
|
+
}
|
410
470
|
case 'l': { // 'l: branch and link
|
411
471
|
if (instr->HasLink()) {
|
412
472
|
Print("l");
|
@@ -414,10 +474,21 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
|
|
414
474
|
return 1;
|
415
475
|
}
|
416
476
|
case 'm': {
|
417
|
-
if (format[1] == '
|
477
|
+
if (format[1] == 'w') {
|
478
|
+
// 'mw: movt/movw instructions.
|
479
|
+
PrintMovwMovt(instr);
|
480
|
+
return 2;
|
481
|
+
}
|
482
|
+
if (format[1] == 'e') { // 'memop: load/store instructions.
|
418
483
|
ASSERT(STRING_STARTS_WITH(format, "memop"));
|
419
484
|
if (instr->HasL()) {
|
420
485
|
Print("ldr");
|
486
|
+
} else if ((instr->Bits(27, 25) == 0) && (instr->Bit(20) == 0)) {
|
487
|
+
if (instr->Bits(7, 4) == 0xf) {
|
488
|
+
Print("strd");
|
489
|
+
} else {
|
490
|
+
Print("ldrd");
|
491
|
+
}
|
421
492
|
} else {
|
422
493
|
Print("str");
|
423
494
|
}
|
@@ -438,16 +509,6 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
|
|
438
509
|
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
439
510
|
"%d", instr->Offset12Field());
|
440
511
|
return 5;
|
441
|
-
} else if ((format[3] == '1') && (format[4] == '6')) {
|
442
|
-
ASSERT(STRING_STARTS_WITH(format, "off16to20"));
|
443
|
-
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
444
|
-
"%d", instr->Bits(20, 16) +1);
|
445
|
-
return 9;
|
446
|
-
} else if (format[3] == '7') {
|
447
|
-
ASSERT(STRING_STARTS_WITH(format, "off7to11"));
|
448
|
-
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
449
|
-
"%d", instr->ShiftAmountField());
|
450
|
-
return 8;
|
451
512
|
} else if (format[3] == '0') {
|
452
513
|
// 'off0to3and8to19 16-bit immediate encoded in bits 19-8 and 3-0.
|
453
514
|
ASSERT(STRING_STARTS_WITH(format, "off0to3and8to19"));
|
@@ -473,7 +534,7 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
|
|
473
534
|
return FormatRegister(instr, format);
|
474
535
|
}
|
475
536
|
case 's': {
|
476
|
-
if (format[1] == 'h') { // 'shift_op or 'shift_rm
|
537
|
+
if (format[1] == 'h') { // 'shift_op or 'shift_rm or 'shift_sat.
|
477
538
|
if (format[6] == 'o') { // 'shift_op
|
478
539
|
ASSERT(STRING_STARTS_WITH(format, "shift_op"));
|
479
540
|
if (instr->TypeField() == 0) {
|
@@ -483,6 +544,10 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
|
|
483
544
|
PrintShiftImm(instr);
|
484
545
|
}
|
485
546
|
return 8;
|
547
|
+
} else if (format[6] == 's') { // 'shift_sat.
|
548
|
+
ASSERT(STRING_STARTS_WITH(format, "shift_sat"));
|
549
|
+
PrintShiftSat(instr);
|
550
|
+
return 9;
|
486
551
|
} else { // 'shift_rm
|
487
552
|
ASSERT(STRING_STARTS_WITH(format, "shift_rm"));
|
488
553
|
PrintShiftRm(instr);
|
@@ -614,6 +679,47 @@ void Decoder::DecodeType01(Instr* instr) {
|
|
614
679
|
} else {
|
615
680
|
Unknown(instr); // not used by V8
|
616
681
|
}
|
682
|
+
} else if ((instr->Bit(20) == 0) && ((instr->Bits(7, 4) & 0xd) == 0xd)) {
|
683
|
+
// ldrd, strd
|
684
|
+
switch (instr->PUField()) {
|
685
|
+
case 0: {
|
686
|
+
if (instr->Bit(22) == 0) {
|
687
|
+
Format(instr, "'memop'cond's 'rd, ['rn], -'rm");
|
688
|
+
} else {
|
689
|
+
Format(instr, "'memop'cond's 'rd, ['rn], #-'off8");
|
690
|
+
}
|
691
|
+
break;
|
692
|
+
}
|
693
|
+
case 1: {
|
694
|
+
if (instr->Bit(22) == 0) {
|
695
|
+
Format(instr, "'memop'cond's 'rd, ['rn], +'rm");
|
696
|
+
} else {
|
697
|
+
Format(instr, "'memop'cond's 'rd, ['rn], #+'off8");
|
698
|
+
}
|
699
|
+
break;
|
700
|
+
}
|
701
|
+
case 2: {
|
702
|
+
if (instr->Bit(22) == 0) {
|
703
|
+
Format(instr, "'memop'cond's 'rd, ['rn, -'rm]'w");
|
704
|
+
} else {
|
705
|
+
Format(instr, "'memop'cond's 'rd, ['rn, #-'off8]'w");
|
706
|
+
}
|
707
|
+
break;
|
708
|
+
}
|
709
|
+
case 3: {
|
710
|
+
if (instr->Bit(22) == 0) {
|
711
|
+
Format(instr, "'memop'cond's 'rd, ['rn, +'rm]'w");
|
712
|
+
} else {
|
713
|
+
Format(instr, "'memop'cond's 'rd, ['rn, #+'off8]'w");
|
714
|
+
}
|
715
|
+
break;
|
716
|
+
}
|
717
|
+
default: {
|
718
|
+
// The PU field is a 2-bit field.
|
719
|
+
UNREACHABLE();
|
720
|
+
break;
|
721
|
+
}
|
722
|
+
}
|
617
723
|
} else {
|
618
724
|
// extra load/store instructions
|
619
725
|
switch (instr->PUField()) {
|
@@ -723,7 +829,7 @@ void Decoder::DecodeType01(Instr* instr) {
|
|
723
829
|
if (instr->HasS()) {
|
724
830
|
Format(instr, "tst'cond 'rn, 'shift_op");
|
725
831
|
} else {
|
726
|
-
|
832
|
+
Format(instr, "movw'cond 'mw");
|
727
833
|
}
|
728
834
|
break;
|
729
835
|
}
|
@@ -741,7 +847,7 @@ void Decoder::DecodeType01(Instr* instr) {
|
|
741
847
|
if (instr->HasS()) {
|
742
848
|
Format(instr, "cmp'cond 'rn, 'shift_op");
|
743
849
|
} else {
|
744
|
-
|
850
|
+
Format(instr, "movt'cond 'mw");
|
745
851
|
}
|
746
852
|
break;
|
747
853
|
}
|
@@ -822,8 +928,16 @@ void Decoder::DecodeType3(Instr* instr) {
|
|
822
928
|
break;
|
823
929
|
}
|
824
930
|
case 1: {
|
825
|
-
|
826
|
-
|
931
|
+
if (instr->HasW()) {
|
932
|
+
ASSERT(instr->Bits(5, 4) == 0x1);
|
933
|
+
if (instr->Bit(22) == 0x1) {
|
934
|
+
Format(instr, "usat 'rd, 'imm05@16, 'rm'shift_sat");
|
935
|
+
} else {
|
936
|
+
UNREACHABLE(); // SSAT.
|
937
|
+
}
|
938
|
+
} else {
|
939
|
+
Format(instr, "'memop'cond'b 'rd, ['rn], +'shift_rm");
|
940
|
+
}
|
827
941
|
break;
|
828
942
|
}
|
829
943
|
case 2: {
|
@@ -833,10 +947,26 @@ void Decoder::DecodeType3(Instr* instr) {
|
|
833
947
|
case 3: {
|
834
948
|
if (instr->HasW() && (instr->Bits(6, 4) == 0x5)) {
|
835
949
|
uint32_t widthminus1 = static_cast<uint32_t>(instr->Bits(20, 16));
|
836
|
-
uint32_t lsbit = static_cast<uint32_t>(instr->
|
950
|
+
uint32_t lsbit = static_cast<uint32_t>(instr->Bits(11, 7));
|
837
951
|
uint32_t msbit = widthminus1 + lsbit;
|
838
952
|
if (msbit <= 31) {
|
839
|
-
|
953
|
+
if (instr->Bit(22)) {
|
954
|
+
Format(instr, "ubfx'cond 'rd, 'rm, 'f");
|
955
|
+
} else {
|
956
|
+
Format(instr, "sbfx'cond 'rd, 'rm, 'f");
|
957
|
+
}
|
958
|
+
} else {
|
959
|
+
UNREACHABLE();
|
960
|
+
}
|
961
|
+
} else if (!instr->HasW() && (instr->Bits(6, 4) == 0x1)) {
|
962
|
+
uint32_t lsbit = static_cast<uint32_t>(instr->Bits(11, 7));
|
963
|
+
uint32_t msbit = static_cast<uint32_t>(instr->Bits(20, 16));
|
964
|
+
if (msbit >= lsbit) {
|
965
|
+
if (instr->RmField() == 15) {
|
966
|
+
Format(instr, "bfc'cond 'rd, 'f");
|
967
|
+
} else {
|
968
|
+
Format(instr, "bfi'cond 'rd, 'rm, 'f");
|
969
|
+
}
|
840
970
|
} else {
|
841
971
|
UNREACHABLE();
|
842
972
|
}
|
@@ -953,7 +1083,8 @@ void Decoder::DecodeUnconditional(Instr* instr) {
|
|
953
1083
|
// Dd = vmul(Dn, Dm)
|
954
1084
|
// Dd = vdiv(Dn, Dm)
|
955
1085
|
// vcmp(Dd, Dm)
|
956
|
-
//
|
1086
|
+
// vmrs
|
1087
|
+
// Dd = vsqrt(Dm)
|
957
1088
|
void Decoder::DecodeTypeVFP(Instr* instr) {
|
958
1089
|
ASSERT((instr->TypeField() == 7) && (instr->Bit(24) == 0x0) );
|
959
1090
|
ASSERT(instr->Bits(11, 9) == 0x5);
|
@@ -961,7 +1092,14 @@ void Decoder::DecodeTypeVFP(Instr* instr) {
|
|
961
1092
|
if (instr->Bit(4) == 0) {
|
962
1093
|
if (instr->Opc1Field() == 0x7) {
|
963
1094
|
// Other data processing instructions
|
964
|
-
if ((instr->Opc2Field() ==
|
1095
|
+
if ((instr->Opc2Field() == 0x0) && (instr->Opc3Field() == 0x1)) {
|
1096
|
+
// vmov register to register.
|
1097
|
+
if (instr->SzField() == 0x1) {
|
1098
|
+
Format(instr, "vmov.f64'cond 'Dd, 'Dm");
|
1099
|
+
} else {
|
1100
|
+
Format(instr, "vmov.f32'cond 'Sd, 'Sm");
|
1101
|
+
}
|
1102
|
+
} else if ((instr->Opc2Field() == 0x7) && (instr->Opc3Field() == 0x3)) {
|
965
1103
|
DecodeVCVTBetweenDoubleAndSingle(instr);
|
966
1104
|
} else if ((instr->Opc2Field() == 0x8) && (instr->Opc3Field() & 0x1)) {
|
967
1105
|
DecodeVCVTBetweenFloatingPointAndInteger(instr);
|
@@ -971,6 +1109,14 @@ void Decoder::DecodeTypeVFP(Instr* instr) {
|
|
971
1109
|
} else if (((instr->Opc2Field() == 0x4) || (instr->Opc2Field() == 0x5)) &&
|
972
1110
|
(instr->Opc3Field() & 0x1)) {
|
973
1111
|
DecodeVCMP(instr);
|
1112
|
+
} else if (((instr->Opc2Field() == 0x1)) && (instr->Opc3Field() == 0x3)) {
|
1113
|
+
Format(instr, "vsqrt.f64'cond 'Dd, 'Dm");
|
1114
|
+
} else if (instr->Opc3Field() == 0x0) {
|
1115
|
+
if (instr->SzField() == 0x1) {
|
1116
|
+
Format(instr, "vmov.f64'cond 'Dd, 'd");
|
1117
|
+
} else {
|
1118
|
+
Unknown(instr); // Not used by V8.
|
1119
|
+
}
|
974
1120
|
} else {
|
975
1121
|
Unknown(instr); // Not used by V8.
|
976
1122
|
}
|
@@ -1309,3 +1455,5 @@ void Disassembler::Disassemble(FILE* f, byte* begin, byte* end) {
|
|
1309
1455
|
|
1310
1456
|
|
1311
1457
|
} // namespace disasm
|
1458
|
+
|
1459
|
+
#endif // V8_TARGET_ARCH_ARM
|