therubyracer 0.6.3 → 0.7.0.pre
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/Rakefile +10 -9
- data/ext/v8/callbacks.cpp +15 -8
- data/ext/v8/converters.cpp +7 -8
- data/ext/v8/converters.h +0 -2
- data/ext/v8/extconf.rb +2 -0
- data/ext/v8/rr.cpp +169 -0
- data/ext/v8/rr.h +34 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/AUTHORS +8 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/ChangeLog +198 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/LICENSE +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/SConstruct +152 -38
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8-debug.h +52 -4
- data/ext/v8/upstream/2.1.10/include/v8-profiler.h +176 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8.h +227 -48
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/SConscript +60 -10
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.cc +5 -39
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.cc +477 -57
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.h +8 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apinatives.js +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apiutils.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arguments.h +5 -6
- data/ext/v8/upstream/{2.0.6/src/arm/assembler-thumb2-inl.h → 2.1.10/src/arm/assembler-arm-inl.h} +42 -27
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.cc +430 -216
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.h +199 -110
- data/ext/v8/upstream/{2.0.6/src/arm/assembler-arm-inl.h → 2.1.10/src/arm/assembler-thumb2-inl.h} +4 -18
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.cc +142 -85
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.h +18 -9
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/builtins-arm.cc +127 -87
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm-inl.h +3 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm.cc +4634 -1427
- data/ext/v8/upstream/2.1.10/src/arm/codegen-arm.h +946 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.cc +21 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.h +39 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/cpu-arm.cc +9 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/debug-arm.cc +34 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/disasm-arm.cc +262 -117
- data/ext/v8/upstream/2.1.10/src/arm/fast-codegen-arm.cc +238 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/arm/fast-codegen-arm.cc → 2.1.10/src/arm/full-codegen-arm.cc} +453 -283
- data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +1833 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/jump-target-arm.cc +3 -29
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.cc +564 -104
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.h +255 -46
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.cc +78 -104
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.h +6 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm-inl.h +0 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.h +2 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.cc +557 -180
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.h +52 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/stub-cache-arm.cc +904 -240
- data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.cc +668 -0
- data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.h +503 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/array.js +82 -109
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.cc +49 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.h +27 -5
- data/ext/v8/upstream/2.1.10/src/ast.cc +1138 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ast.h +354 -53
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.cc +609 -501
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.h +27 -8
- data/ext/v8/upstream/2.1.10/src/builtins.cc +1512 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/builtins.h +41 -25
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bytecodes-irregexp.h +0 -0
- data/ext/v8/upstream/2.1.10/src/cached-powers.h +119 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.h +25 -1
- data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +101 -0
- data/ext/v8/upstream/2.1.10/src/circular-queue.cc +121 -0
- data/ext/v8/upstream/2.1.10/src/circular-queue.h +129 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.cc +23 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.h +16 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen-inl.h +6 -34
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.cc +73 -92
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.h +164 -68
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.cc +117 -73
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.h +18 -17
- data/ext/v8/upstream/2.1.10/src/compiler.cc +623 -0
- data/ext/v8/upstream/2.1.10/src/compiler.h +299 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.h +8 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions-inl.h +28 -13
- data/ext/v8/upstream/2.1.10/src/conversions.cc +1105 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions.h +9 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.h +1 -1
- data/ext/v8/upstream/2.1.10/src/cpu-profiler-inl.h +99 -0
- data/ext/v8/upstream/2.1.10/src/cpu-profiler.cc +494 -0
- data/ext/v8/upstream/2.1.10/src/cpu-profiler.h +277 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/cpu.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.cc +15 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-posix.cc +18 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-readline.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-windows.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.cc +10 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.js +43 -38
- data/ext/v8/upstream/2.1.10/src/data-flow.cc +755 -0
- data/ext/v8/upstream/2.1.10/src/data-flow.h +278 -0
- data/ext/v8/upstream/{2.0.6/src/date-delay.js → 2.1.10/src/date.js} +100 -110
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser-inl.h +11 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.cc +24 -26
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.h +8 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.cc +3 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/debug-delay.js → 2.1.10/src/debug-debugger.js} +111 -15
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.cc +156 -96
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.h +53 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disasm.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.cc +2 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.h +0 -0
- data/ext/v8/upstream/2.1.10/src/diy-fp.cc +58 -0
- data/ext/v8/upstream/2.1.10/src/diy-fp.h +117 -0
- data/ext/v8/upstream/2.1.10/src/double.h +169 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dtoa-config.c +4 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.cc +22 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.h +17 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.cc +70 -46
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.h +27 -17
- data/ext/v8/upstream/2.1.10/src/fast-codegen.cc +746 -0
- data/ext/v8/upstream/2.1.10/src/fast-codegen.h +161 -0
- data/ext/v8/upstream/2.1.10/src/fast-dtoa.cc +512 -0
- data/ext/v8/upstream/2.1.10/src/fast-dtoa.h +59 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flag-definitions.h +32 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.h +0 -0
- data/ext/v8/upstream/2.1.10/src/flow-graph.cc +763 -0
- data/ext/v8/upstream/2.1.10/src/flow-graph.h +180 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.cc +1 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.h +49 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames-inl.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.cc +91 -17
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.h +24 -2
- data/ext/v8/upstream/{2.0.6/src/fast-codegen.cc → 2.1.10/src/full-codegen.cc} +549 -198
- data/ext/v8/upstream/{2.0.6/src/fast-codegen.h → 2.1.10/src/full-codegen.h} +109 -29
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/globals.h +67 -43
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.cc +124 -129
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.h +33 -15
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-inl.h +56 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.cc +413 -221
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.h +192 -67
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32-inl.h +6 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.cc +187 -32
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.h +31 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/builtins-ia32.cc +160 -133
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32.cc +5533 -2177
- data/ext/v8/upstream/{2.0.6/src/x64/codegen-x64.h → 2.1.10/src/ia32/codegen-ia32.h} +453 -134
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/cpu-ia32.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/debug-ia32.cc +63 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/disasm-ia32.cc +99 -16
- data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.cc +950 -0
- data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.h +155 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/ia32/fast-codegen-ia32.cc → 2.1.10/src/ia32/full-codegen-ia32.cc} +454 -253
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/ic-ia32.cc +545 -390
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/jump-target-ia32.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.cc +330 -139
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.h +96 -30
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.cc +73 -89
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.h +6 -21
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.cc +59 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/stub-cache-ia32.cc +745 -303
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.cc +278 -71
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.h +78 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.cc +172 -89
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.h +51 -20
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/json-delay.js → 2.1.10/src/json.js} +26 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.cc +151 -118
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.h +31 -7
- data/ext/v8/upstream/2.1.10/src/jump-target-heavy-inl.h +51 -0
- data/ext/v8/upstream/{2.0.6/src/jump-target.cc → 2.1.10/src/jump-target-heavy.cc} +164 -184
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target-inl.h +8 -9
- data/ext/v8/upstream/{2.0.6/src/usage-analyzer.h → 2.1.10/src/jump-target-light-inl.h} +9 -7
- data/ext/v8/upstream/2.1.10/src/jump-target-light.cc +86 -0
- data/ext/v8/upstream/2.1.10/src/jump-target.cc +155 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target.h +6 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list.h +2 -1
- data/ext/v8/upstream/2.1.10/src/liveedit-debugger.js +944 -0
- data/ext/v8/upstream/2.1.10/src/liveedit.cc +1468 -0
- data/ext/v8/upstream/2.1.10/src/liveedit.h +170 -0
- data/ext/v8/upstream/2.1.10/src/log-inl.h +59 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.cc +3 -9
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.h +1 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.cc +198 -95
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.h +50 -49
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macro-assembler.h +9 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macros.py +30 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.cc +464 -152
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.h +41 -20
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/math.js +9 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/memory.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.js +46 -9
- data/ext/v8/upstream/2.1.10/src/mips/assembler-mips-inl.h +215 -0
- data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.cc +1208 -0
- data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.h +665 -0
- data/ext/v8/upstream/2.1.10/src/mips/builtins-mips.cc +202 -0
- data/ext/v8/upstream/2.1.10/src/mips/codegen-mips-inl.h +70 -0
- data/ext/v8/upstream/2.1.10/src/mips/codegen-mips.cc +1428 -0
- data/ext/v8/upstream/{2.0.6/src/arm/codegen-arm.h → 2.1.10/src/mips/codegen-mips.h} +103 -205
- data/ext/v8/upstream/2.1.10/src/mips/constants-mips.cc +323 -0
- data/ext/v8/upstream/2.1.10/src/mips/constants-mips.h +525 -0
- data/ext/v8/upstream/2.1.10/src/mips/cpu-mips.cc +69 -0
- data/ext/v8/upstream/2.1.10/src/mips/debug-mips.cc +128 -0
- data/ext/v8/upstream/2.1.10/src/mips/disasm-mips.cc +784 -0
- data/ext/v8/upstream/2.1.10/src/mips/fast-codegen-mips.cc +74 -0
- data/ext/v8/upstream/2.1.10/src/mips/frames-mips.cc +99 -0
- data/ext/v8/upstream/2.1.10/src/mips/frames-mips.h +164 -0
- data/ext/v8/upstream/2.1.10/src/mips/full-codegen-mips.cc +273 -0
- data/ext/v8/upstream/2.1.10/src/mips/ic-mips.cc +217 -0
- data/ext/v8/upstream/2.1.10/src/mips/jump-target-mips.cc +172 -0
- data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.cc +1323 -0
- data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.h +461 -0
- data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips-inl.h +137 -0
- data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.cc +60 -0
- data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.h +46 -0
- data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.cc +1648 -0
- data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.h +311 -0
- data/ext/v8/upstream/2.1.10/src/mips/stub-cache-mips.cc +400 -0
- data/ext/v8/upstream/2.1.10/src/mips/virtual-frame-mips.cc +316 -0
- data/ext/v8/upstream/{2.0.6/src/arm/virtual-frame-arm.h → 2.1.10/src/mips/virtual-frame-mips.h} +87 -71
- data/ext/v8/upstream/{2.0.6/src/mirror-delay.js → 2.1.10/src/mirror-debugger.js} +51 -45
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mksnapshot.cc +97 -10
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/natives.h +6 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-debug.cc +47 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-inl.h +154 -38
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.cc +528 -280
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.h +302 -95
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.cc +25 -33
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.h +9 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.cc +444 -72
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.h +4 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-freebsd.cc +32 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-linux.cc +59 -25
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-macos.cc +30 -13
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-nullos.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-openbsd.cc +21 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-posix.cc +0 -18
- data/ext/v8/upstream/2.1.10/src/platform-solaris.cc +607 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-win32.cc +16 -17
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform.h +25 -8
- data/ext/v8/upstream/2.1.10/src/powers-ten.h +2461 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.cc +49 -29
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.h +3 -1
- data/ext/v8/upstream/2.1.10/src/profile-generator-inl.h +124 -0
- data/ext/v8/upstream/2.1.10/src/profile-generator.cc +583 -0
- data/ext/v8/upstream/2.1.10/src/profile-generator.h +364 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.cc +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.h +12 -24
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp-inl.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.cc +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.cc +33 -10
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.h +12 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/regexp-delay.js → 2.1.10/src/regexp.js} +180 -58
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator-inl.h +68 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.cc +5 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.h +42 -17
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.cc +110 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.cc +2733 -623
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.h +43 -20
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.js +46 -35
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.cc +278 -36
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.h +97 -26
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.cc +3 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.h +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.cc +11 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.h +0 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.cc +298 -175
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.h +184 -40
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/shell.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/simulator.h +2 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/smart-pointer.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot-common.cc +16 -31
- data/ext/v8/upstream/2.1.10/src/snapshot-empty.cc +50 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot.h +13 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces-inl.h +35 -27
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.cc +256 -42
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.h +136 -42
- data/ext/v8/upstream/{2.0.6/src/zone-inl.h → 2.1.10/src/splay-tree-inl.h} +102 -89
- data/ext/v8/upstream/2.1.10/src/splay-tree.h +203 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string.js +260 -149
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.cc +195 -69
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.h +127 -12
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/COPYING +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/dtoa.c +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/valgrind/valgrind.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.cc +26 -31
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.h +3 -4
- data/ext/v8/upstream/2.1.10/src/type-info.cc +53 -0
- data/ext/v8/upstream/2.1.10/src/type-info.h +244 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/uri.js +6 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.cc +0 -37
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.h +121 -50
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.h +130 -98
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.cc +42 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.h +4 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8natives.js +202 -37
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.cc +11 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.h +15 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.cc +7 -51
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.h +5 -35
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.cc +3 -3
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.h +0 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame-heavy-inl.h +152 -0
- data/ext/v8/upstream/{2.0.6/src/virtual-frame.cc → 2.1.10/src/virtual-frame-heavy.cc} +107 -176
- data/ext/v8/upstream/2.1.10/src/virtual-frame-inl.h +39 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame-light-inl.h +69 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame-light.cc +49 -0
- data/ext/v8/upstream/2.1.10/src/virtual-frame.cc +49 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/virtual-frame.h +2 -0
- data/ext/v8/upstream/{2.0.6/src/log-inl.h → 2.1.10/src/vm-state-inl.h} +28 -20
- data/ext/v8/upstream/{2.0.6/src/snapshot-empty.cc → 2.1.10/src/vm-state.cc} +5 -6
- data/ext/v8/upstream/2.1.10/src/vm-state.h +75 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64-inl.h +11 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.cc +285 -93
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.h +81 -78
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/builtins-x64.cc +130 -87
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64-inl.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64.cc +4520 -1317
- data/ext/v8/upstream/{2.0.6/src/ia32/codegen-ia32.h → 2.1.10/src/x64/codegen-x64.h} +362 -141
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/cpu-x64.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/debug-x64.cc +20 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/disasm-x64.cc +121 -44
- data/ext/v8/upstream/2.1.10/src/x64/fast-codegen-x64.cc +246 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.h +0 -0
- data/ext/v8/upstream/{2.0.6/src/x64/fast-codegen-x64.cc → 2.1.10/src/x64/full-codegen-x64.cc} +404 -231
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/ic-x64.cc +346 -117
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/jump-target-x64.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.cc +537 -181
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.h +140 -34
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.cc +74 -96
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.h +8 -25
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64-inl.h +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.cc +3 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.h +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.cc +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.h +2 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/stub-cache-x64.cc +785 -288
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.cc +128 -52
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.h +40 -19
- data/ext/v8/upstream/2.1.10/src/zone-inl.h +82 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.cc +1 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.h +6 -90
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/codemap.js +12 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/consarray.js +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/csvparser.js +22 -37
- data/ext/v8/upstream/2.1.10/tools/generate-ten-powers.scm +286 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/gyp/v8.gyp +86 -24
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/js2c.py +22 -22
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/jsmin.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor +10 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/logreader.js +34 -16
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-nm +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-tick-processor +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/annotate +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/common +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/dump +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/report +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/reset +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/run +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/shutdown +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/start +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/presubmit.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/process-heap-prof.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile.js +70 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile_view.js +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/run-valgrind.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.js +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/stats-viewer.py +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/test.py +7 -7
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor-driver.js +7 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.js +140 -9
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.py +40 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/utils.py +6 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/README.txt +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/arm.vsprops +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/common.vsprops +1 -2
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_arm.vcproj +193 -199
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_x64.vcproj +16 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8js2c.cmd +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/debug.vsprops +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/ia32.vsprops +5 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/js2c.cmd +1 -1
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/release.vsprops +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.sln +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.vcproj +11 -7
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.sln +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.vcproj +227 -223
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base.vcproj +137 -5
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_arm.vcproj +116 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_x64.vcproj +125 -4
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest.vcproj +12 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_arm.vcproj +12 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_x64.vcproj +11 -11
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_arm.vcproj +145 -151
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_x64.vcproj +16 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample.vcproj +0 -6
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -151
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_x64.vcproj +16 -8
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.sln +0 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.vcproj +11 -7
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/x64.vsprops +5 -1
- data/ext/v8/upstream/2.1.10/tools/windows-tick-processor.bat +29 -0
- data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/windows-tick-processor.py +0 -0
- data/ext/v8/upstream/Makefile +8 -2
- data/ext/v8/v8.cpp +21 -73
- data/ext/v8/v8_array.cpp +56 -0
- data/ext/v8/v8_array.h +8 -0
- data/ext/v8/v8_callbacks.cpp +121 -0
- data/ext/v8/v8_callbacks.h +8 -0
- data/ext/v8/v8_cxt.cpp +74 -77
- data/ext/v8/v8_cxt.h +2 -9
- data/ext/v8/v8_date.cpp +26 -0
- data/ext/v8/v8_date.h +6 -0
- data/ext/v8/v8_exception.cpp +55 -0
- data/ext/v8/v8_exception.h +6 -0
- data/ext/v8/v8_external.cpp +50 -0
- data/ext/v8/v8_external.h +8 -0
- data/ext/v8/v8_func.cpp +76 -18
- data/ext/v8/v8_func.h +5 -4
- data/ext/v8/v8_msg.cpp +55 -46
- data/ext/v8/v8_msg.h +3 -11
- data/ext/v8/v8_obj.cpp +67 -36
- data/ext/v8/v8_obj.h +6 -8
- data/ext/v8/v8_ref.cpp +25 -9
- data/ext/v8/v8_ref.h +3 -5
- data/ext/v8/v8_script.cpp +17 -10
- data/ext/v8/v8_script.h +3 -3
- data/ext/v8/v8_str.cpp +34 -6
- data/ext/v8/v8_str.h +4 -2
- data/ext/v8/v8_template.cpp +195 -33
- data/ext/v8/v8_template.h +4 -5
- data/ext/v8/v8_try_catch.cpp +99 -0
- data/ext/v8/v8_try_catch.h +5 -0
- data/ext/v8/v8_value.cpp +164 -0
- data/ext/v8/v8_value.h +10 -0
- data/lib/v8.rb +3 -1
- data/lib/v8/access.rb +60 -0
- data/lib/v8/array.rb +15 -0
- data/lib/v8/callbacks.rb +88 -0
- data/lib/v8/cli.rb +1 -1
- data/lib/v8/context.rb +55 -66
- data/lib/v8/function.rb +20 -2
- data/lib/v8/object.rb +14 -12
- data/lib/v8/ruby_error.rb +3 -0
- data/lib/v8/to.rb +59 -7
- data/spec/ext/cxt_spec.rb +2 -15
- data/spec/ext/func_spec.rb +17 -10
- data/spec/ext/try_catch_spec.rb +32 -0
- data/spec/foo.rb +17 -0
- data/spec/redjs/jsapi_spec.rb +173 -96
- data/spec/spec_helper.rb +7 -0
- data/spec/v8/to_spec.rb +0 -1
- data/therubyracer.gemspec +6 -6
- metadata +493 -386
- data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +0 -849
- data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +0 -412
- data/ext/v8/upstream/2.0.6/src/ast.cc +0 -512
- data/ext/v8/upstream/2.0.6/src/builtins.cc +0 -851
- data/ext/v8/upstream/2.0.6/src/compiler.cc +0 -1132
- data/ext/v8/upstream/2.0.6/src/compiler.h +0 -107
- data/ext/v8/upstream/2.0.6/src/conversions.cc +0 -709
- data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +0 -426
- data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +0 -5
- data/ext/v8/upstream/no-strict-aliasing.patch +0 -13
- data/ext/v8/v8_standalone.cpp +0 -69
- data/ext/v8/v8_standalone.h +0 -31
- data/spec/ext/obj_spec.rb +0 -13
@@ -81,9 +81,27 @@ const char* VFPRegisters::names_[kNumVFPRegisters] = {
|
|
81
81
|
};
|
82
82
|
|
83
83
|
|
84
|
-
const char* VFPRegisters::Name(int reg) {
|
84
|
+
const char* VFPRegisters::Name(int reg, bool is_double) {
|
85
85
|
ASSERT((0 <= reg) && (reg < kNumVFPRegisters));
|
86
|
-
return names_[reg];
|
86
|
+
return names_[reg + is_double ? kNumVFPSingleRegisters : 0];
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
int VFPRegisters::Number(const char* name, bool* is_double) {
|
91
|
+
for (int i = 0; i < kNumVFPRegisters; i++) {
|
92
|
+
if (strcmp(names_[i], name) == 0) {
|
93
|
+
if (i < kNumVFPSingleRegisters) {
|
94
|
+
*is_double = false;
|
95
|
+
return i;
|
96
|
+
} else {
|
97
|
+
*is_double = true;
|
98
|
+
return i - kNumVFPSingleRegisters;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
// No register with the requested name found.
|
104
|
+
return kNoRegister;
|
87
105
|
}
|
88
106
|
|
89
107
|
|
@@ -104,7 +122,7 @@ int Registers::Number(const char* name) {
|
|
104
122
|
i++;
|
105
123
|
}
|
106
124
|
|
107
|
-
// No register with the
|
125
|
+
// No register with the requested name found.
|
108
126
|
return kNoRegister;
|
109
127
|
}
|
110
128
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
3
3
|
// modification, are permitted provided that the following conditions are
|
4
4
|
// met:
|
@@ -72,6 +72,11 @@
|
|
72
72
|
# define CAN_USE_THUMB_INSTRUCTIONS 1
|
73
73
|
#endif
|
74
74
|
|
75
|
+
// Using blx may yield better code, so use it when required or when available
|
76
|
+
#if defined(USE_THUMB_INTERWORK) || defined(CAN_USE_ARMV5_INSTRUCTIONS)
|
77
|
+
#define USE_BLX 1
|
78
|
+
#endif
|
79
|
+
|
75
80
|
namespace assembler {
|
76
81
|
namespace arm {
|
77
82
|
|
@@ -79,7 +84,10 @@ namespace arm {
|
|
79
84
|
static const int kNumRegisters = 16;
|
80
85
|
|
81
86
|
// VFP support.
|
82
|
-
static const int
|
87
|
+
static const int kNumVFPSingleRegisters = 32;
|
88
|
+
static const int kNumVFPDoubleRegisters = 16;
|
89
|
+
static const int kNumVFPRegisters =
|
90
|
+
kNumVFPSingleRegisters + kNumVFPDoubleRegisters;
|
83
91
|
|
84
92
|
// PC is register 15.
|
85
93
|
static const int kPCRegister = 15;
|
@@ -143,24 +151,19 @@ enum Opcode {
|
|
143
151
|
};
|
144
152
|
|
145
153
|
|
146
|
-
//
|
147
|
-
enum
|
154
|
+
// The bits for bit 7-4 for some type 0 miscellaneous instructions.
|
155
|
+
enum MiscInstructionsBits74 {
|
156
|
+
// With bits 22-21 01.
|
148
157
|
BX = 1,
|
149
158
|
BXJ = 2,
|
150
159
|
BLX = 3,
|
151
|
-
BKPT = 7
|
152
|
-
};
|
160
|
+
BKPT = 7,
|
153
161
|
|
154
|
-
|
155
|
-
// Some special instructions encoded as a CMN with S=0 (bit 20).
|
156
|
-
enum Opcode11Bits {
|
162
|
+
// With bits 22-21 11.
|
157
163
|
CLZ = 1
|
158
164
|
};
|
159
165
|
|
160
166
|
|
161
|
-
// S
|
162
|
-
|
163
|
-
|
164
167
|
// Shifter types for Data-processing operands as defined in section A5.1.2.
|
165
168
|
enum Shift {
|
166
169
|
no_shift = -1,
|
@@ -237,6 +240,7 @@ class Instr {
|
|
237
240
|
inline int RnField() const { return Bits(19, 16); }
|
238
241
|
inline int RdField() const { return Bits(15, 12); }
|
239
242
|
|
243
|
+
inline int CoprocessorField() const { return Bits(11, 8); }
|
240
244
|
// Support for VFP.
|
241
245
|
// Vn(19-16) | Vd(15-12) | Vm(3-0)
|
242
246
|
inline int VnField() const { return Bits(19, 16); }
|
@@ -246,6 +250,16 @@ class Instr {
|
|
246
250
|
inline int MField() const { return Bit(5); }
|
247
251
|
inline int DField() const { return Bit(22); }
|
248
252
|
inline int RtField() const { return Bits(15, 12); }
|
253
|
+
inline int PField() const { return Bit(24); }
|
254
|
+
inline int UField() const { return Bit(23); }
|
255
|
+
inline int Opc1Field() const { return (Bit(23) << 2) | Bits(21, 20); }
|
256
|
+
inline int Opc2Field() const { return Bits(19, 16); }
|
257
|
+
inline int Opc3Field() const { return Bits(7, 6); }
|
258
|
+
inline int SzField() const { return Bit(8); }
|
259
|
+
inline int VLField() const { return Bit(20); }
|
260
|
+
inline int VCField() const { return Bit(8); }
|
261
|
+
inline int VAField() const { return Bits(23, 21); }
|
262
|
+
inline int VBField() const { return Bits(6, 5); }
|
249
263
|
|
250
264
|
// Fields used in Data processing instructions
|
251
265
|
inline Opcode OpcodeField() const {
|
@@ -291,11 +305,18 @@ class Instr {
|
|
291
305
|
// as well as multiplications).
|
292
306
|
inline bool IsSpecialType0() const { return (Bit(7) == 1) && (Bit(4) == 1); }
|
293
307
|
|
308
|
+
// Test for miscellaneous instructions encodings of type 0 instructions.
|
309
|
+
inline bool IsMiscType0() const { return (Bit(24) == 1)
|
310
|
+
&& (Bit(23) == 0)
|
311
|
+
&& (Bit(20) == 0)
|
312
|
+
&& ((Bit(7) == 0)); }
|
313
|
+
|
294
314
|
// Special accessors that test for existence of a value.
|
295
315
|
inline bool HasS() const { return SField() == 1; }
|
296
316
|
inline bool HasB() const { return BField() == 1; }
|
297
317
|
inline bool HasW() const { return WField() == 1; }
|
298
318
|
inline bool HasL() const { return LField() == 1; }
|
319
|
+
inline bool HasU() const { return UField() == 1; }
|
299
320
|
inline bool HasSign() const { return SignField() == 1; }
|
300
321
|
inline bool HasH() const { return HField() == 1; }
|
301
322
|
inline bool HasLink() const { return LinkField() == 1; }
|
@@ -335,7 +356,12 @@ class Registers {
|
|
335
356
|
class VFPRegisters {
|
336
357
|
public:
|
337
358
|
// Return the name of the register.
|
338
|
-
static const char* Name(int reg);
|
359
|
+
static const char* Name(int reg, bool is_double);
|
360
|
+
|
361
|
+
// Lookup the register number for the name provided.
|
362
|
+
// Set flag pointed by is_double to true if register
|
363
|
+
// is double-precision.
|
364
|
+
static int Number(const char* name, bool* is_double);
|
339
365
|
|
340
366
|
private:
|
341
367
|
static const char* names_[kNumVFPRegisters];
|
@@ -26,7 +26,7 @@
|
|
26
26
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
27
|
|
28
28
|
// CPU specific code for arm independent of OS goes here.
|
29
|
-
#
|
29
|
+
#ifdef __arm__
|
30
30
|
#include <sys/syscall.h> // for cache flushing.
|
31
31
|
#endif
|
32
32
|
|
@@ -35,6 +35,10 @@
|
|
35
35
|
#include "cpu.h"
|
36
36
|
#include "macro-assembler.h"
|
37
37
|
|
38
|
+
#ifndef __arm__
|
39
|
+
#include "simulator-arm.h" // for cache flushing.
|
40
|
+
#endif
|
41
|
+
|
38
42
|
namespace v8 {
|
39
43
|
namespace internal {
|
40
44
|
|
@@ -46,9 +50,11 @@ void CPU::Setup() {
|
|
46
50
|
void CPU::FlushICache(void* start, size_t size) {
|
47
51
|
#if !defined (__arm__)
|
48
52
|
// Not generating ARM instructions for C-code. This means that we are
|
49
|
-
// building an ARM emulator based target.
|
53
|
+
// building an ARM emulator based target. We should notify the simulator
|
54
|
+
// that the Icache was flushed.
|
50
55
|
// None of this code ends up in the snapshot so there are no issues
|
51
56
|
// around whether or not to generate the code when building snapshots.
|
57
|
+
assembler::arm::Simulator::FlushICache(start, size);
|
52
58
|
#else
|
53
59
|
// Ideally, we would call
|
54
60
|
// syscall(__ARM_NR_cacheflush, start,
|
@@ -122,7 +128,7 @@ void CPU::FlushICache(void* start, size_t size) {
|
|
122
128
|
|
123
129
|
|
124
130
|
void CPU::DebugBreak() {
|
125
|
-
#if !defined (__arm__)
|
131
|
+
#if !defined (__arm__) || !defined(CAN_USE_ARMV5_INSTRUCTIONS)
|
126
132
|
UNIMPLEMENTED(); // when building ARM emulator target
|
127
133
|
#else
|
128
134
|
asm volatile("bkpt 0");
|
@@ -46,13 +46,23 @@ void BreakLocationIterator::SetDebugBreakAtReturn() {
|
|
46
46
|
// add sp, sp, #4
|
47
47
|
// bx lr
|
48
48
|
// to a call to the debug break return code.
|
49
|
+
// #if USE_BLX
|
50
|
+
// ldr ip, [pc, #0]
|
51
|
+
// blx ip
|
52
|
+
// #else
|
49
53
|
// mov lr, pc
|
50
54
|
// ldr pc, [pc, #-4]
|
55
|
+
// #endif
|
51
56
|
// <debug break return code entry point address>
|
52
57
|
// bktp 0
|
53
58
|
CodePatcher patcher(rinfo()->pc(), 4);
|
59
|
+
#ifdef USE_BLX
|
60
|
+
patcher.masm()->ldr(v8::internal::ip, MemOperand(v8::internal::pc, 0));
|
61
|
+
patcher.masm()->blx(v8::internal::ip);
|
62
|
+
#else
|
54
63
|
patcher.masm()->mov(v8::internal::lr, v8::internal::pc);
|
55
64
|
patcher.masm()->ldr(v8::internal::pc, MemOperand(v8::internal::pc, -4));
|
65
|
+
#endif
|
56
66
|
patcher.Emit(Debug::debug_break_return()->entry());
|
57
67
|
patcher.masm()->bkpt(0);
|
58
68
|
}
|
@@ -98,7 +108,7 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm,
|
|
98
108
|
__ mov(r0, Operand(0)); // no arguments
|
99
109
|
__ mov(r1, Operand(ExternalReference::debug_break()));
|
100
110
|
|
101
|
-
|
111
|
+
CEntryStub ceb(1, ExitFrame::MODE_DEBUG);
|
102
112
|
__ CallStub(&ceb);
|
103
113
|
|
104
114
|
// Restore the register values containing object pointers from the expression
|
@@ -123,12 +133,12 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm,
|
|
123
133
|
void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) {
|
124
134
|
// Calling convention for IC load (from ic-arm.cc).
|
125
135
|
// ----------- S t a t e -------------
|
126
|
-
// -- r0 : receiver
|
127
136
|
// -- r2 : name
|
128
137
|
// -- lr : return address
|
138
|
+
// -- r0 : receiver
|
129
139
|
// -- [sp] : receiver
|
130
140
|
// -----------------------------------
|
131
|
-
// Registers r0 and r2 contain objects that
|
141
|
+
// Registers r0 and r2 contain objects that need to be pushed on the
|
132
142
|
// expression stack of the fake JS frame.
|
133
143
|
Generate_DebugBreakCallHelper(masm, r0.bit() | r2.bit());
|
134
144
|
}
|
@@ -137,23 +147,24 @@ void Debug::GenerateLoadICDebugBreak(MacroAssembler* masm) {
|
|
137
147
|
void Debug::GenerateStoreICDebugBreak(MacroAssembler* masm) {
|
138
148
|
// Calling convention for IC store (from ic-arm.cc).
|
139
149
|
// ----------- S t a t e -------------
|
140
|
-
// -- r0 :
|
150
|
+
// -- r0 : value
|
151
|
+
// -- r1 : receiver
|
141
152
|
// -- r2 : name
|
142
153
|
// -- lr : return address
|
143
|
-
// -- [sp] : receiver
|
144
154
|
// -----------------------------------
|
145
|
-
// Registers r0 and r2 contain objects that
|
155
|
+
// Registers r0, r1, and r2 contain objects that need to be pushed on the
|
146
156
|
// expression stack of the fake JS frame.
|
147
|
-
Generate_DebugBreakCallHelper(masm, r0.bit() | r2.bit());
|
157
|
+
Generate_DebugBreakCallHelper(masm, r0.bit() | r1.bit() | r2.bit());
|
148
158
|
}
|
149
159
|
|
150
160
|
|
151
161
|
void Debug::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
|
152
162
|
// ---------- S t a t e --------------
|
153
163
|
// -- lr : return address
|
164
|
+
// -- r0 : key
|
154
165
|
// -- sp[0] : key
|
155
166
|
// -- sp[4] : receiver
|
156
|
-
Generate_DebugBreakCallHelper(masm,
|
167
|
+
Generate_DebugBreakCallHelper(masm, r0.bit());
|
157
168
|
}
|
158
169
|
|
159
170
|
|
@@ -206,8 +217,23 @@ void Debug::GenerateStubNoRegistersDebugBreak(MacroAssembler* masm) {
|
|
206
217
|
}
|
207
218
|
|
208
219
|
|
220
|
+
void Debug::GeneratePlainReturnLiveEdit(MacroAssembler* masm) {
|
221
|
+
masm->Abort("LiveEdit frame dropping is not supported on arm");
|
222
|
+
}
|
223
|
+
|
224
|
+
void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
|
225
|
+
masm->Abort("LiveEdit frame dropping is not supported on arm");
|
226
|
+
}
|
227
|
+
|
209
228
|
#undef __
|
210
229
|
|
230
|
+
|
231
|
+
void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
|
232
|
+
Handle<Code> code) {
|
233
|
+
UNREACHABLE();
|
234
|
+
}
|
235
|
+
const int Debug::kFrameDropperFrameSize = -1;
|
236
|
+
|
211
237
|
#endif // ENABLE_DEBUGGER_SUPPORT
|
212
238
|
|
213
239
|
} } // namespace v8::internal
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
3
3
|
// modification, are permitted provided that the following conditions are
|
4
4
|
// met:
|
@@ -34,10 +34,9 @@
|
|
34
34
|
// NameConverter converter;
|
35
35
|
// Disassembler d(converter);
|
36
36
|
// for (byte* pc = begin; pc < end;) {
|
37
|
-
// char buffer
|
38
|
-
// buffer[0] = '\0';
|
37
|
+
// v8::internal::EmbeddedVector<char, 256> buffer;
|
39
38
|
// byte* prev_pc = pc;
|
40
|
-
// pc += d.InstructionDecode(buffer,
|
39
|
+
// pc += d.InstructionDecode(buffer, pc);
|
41
40
|
// printf("%p %08x %s\n",
|
42
41
|
// prev_pc, *reinterpret_cast<int32_t*>(prev_pc), buffer);
|
43
42
|
// }
|
@@ -129,6 +128,10 @@ class Decoder {
|
|
129
128
|
void DecodeTypeVFP(Instr* instr);
|
130
129
|
void DecodeType6CoprocessorIns(Instr* instr);
|
131
130
|
|
131
|
+
void DecodeVMOVBetweenCoreAndSinglePrecisionRegisters(Instr* instr);
|
132
|
+
void DecodeVCMP(Instr* instr);
|
133
|
+
void DecodeVCVTBetweenDoubleAndSingle(Instr* instr);
|
134
|
+
void DecodeVCVTBetweenFloatingPointAndInteger(Instr* instr);
|
132
135
|
|
133
136
|
const disasm::NameConverter& converter_;
|
134
137
|
v8::internal::Vector<char> out_buffer_;
|
@@ -181,12 +184,12 @@ void Decoder::PrintRegister(int reg) {
|
|
181
184
|
|
182
185
|
// Print the VFP S register name according to the active name converter.
|
183
186
|
void Decoder::PrintSRegister(int reg) {
|
184
|
-
Print(assembler::arm::VFPRegisters::Name(reg));
|
187
|
+
Print(assembler::arm::VFPRegisters::Name(reg, false));
|
185
188
|
}
|
186
189
|
|
187
190
|
// Print the VFP D register name according to the active name converter.
|
188
191
|
void Decoder::PrintDRegister(int reg) {
|
189
|
-
Print(assembler::arm::VFPRegisters::Name(reg
|
192
|
+
Print(assembler::arm::VFPRegisters::Name(reg, true));
|
190
193
|
}
|
191
194
|
|
192
195
|
|
@@ -429,12 +432,30 @@ int Decoder::FormatOption(Instr* instr, const char* format) {
|
|
429
432
|
return 3;
|
430
433
|
}
|
431
434
|
case 'o': {
|
432
|
-
if (format[3] == '1') {
|
435
|
+
if ((format[3] == '1') && (format[4] == '2')) {
|
433
436
|
// 'off12: 12-bit offset for load and store instructions
|
434
437
|
ASSERT(STRING_STARTS_WITH(format, "off12"));
|
435
438
|
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
436
439
|
"%d", instr->Offset12Field());
|
437
440
|
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
|
+
} else if (format[3] == '0') {
|
452
|
+
// 'off0to3and8to19 16-bit immediate encoded in bits 19-8 and 3-0.
|
453
|
+
ASSERT(STRING_STARTS_WITH(format, "off0to3and8to19"));
|
454
|
+
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
|
455
|
+
"%d",
|
456
|
+
(instr->Bits(19, 8) << 4) +
|
457
|
+
instr->Bits(3, 0));
|
458
|
+
return 15;
|
438
459
|
}
|
439
460
|
// 'off8: 8-bit offset for extra load and store instructions
|
440
461
|
ASSERT(STRING_STARTS_WITH(format, "off8"));
|
@@ -636,6 +657,34 @@ void Decoder::DecodeType01(Instr* instr) {
|
|
636
657
|
}
|
637
658
|
return;
|
638
659
|
}
|
660
|
+
} else if ((type == 0) && instr->IsMiscType0()) {
|
661
|
+
if (instr->Bits(22, 21) == 1) {
|
662
|
+
switch (instr->Bits(7, 4)) {
|
663
|
+
case BX:
|
664
|
+
Format(instr, "bx'cond 'rm");
|
665
|
+
break;
|
666
|
+
case BLX:
|
667
|
+
Format(instr, "blx'cond 'rm");
|
668
|
+
break;
|
669
|
+
case BKPT:
|
670
|
+
Format(instr, "bkpt 'off0to3and8to19");
|
671
|
+
break;
|
672
|
+
default:
|
673
|
+
Unknown(instr); // not used by V8
|
674
|
+
break;
|
675
|
+
}
|
676
|
+
} else if (instr->Bits(22, 21) == 3) {
|
677
|
+
switch (instr->Bits(7, 4)) {
|
678
|
+
case CLZ:
|
679
|
+
Format(instr, "clz'cond 'rd, 'rm");
|
680
|
+
break;
|
681
|
+
default:
|
682
|
+
Unknown(instr); // not used by V8
|
683
|
+
break;
|
684
|
+
}
|
685
|
+
} else {
|
686
|
+
Unknown(instr); // not used by V8
|
687
|
+
}
|
639
688
|
} else {
|
640
689
|
switch (instr->OpcodeField()) {
|
641
690
|
case AND: {
|
@@ -682,17 +731,9 @@ void Decoder::DecodeType01(Instr* instr) {
|
|
682
731
|
if (instr->HasS()) {
|
683
732
|
Format(instr, "teq'cond 'rn, 'shift_op");
|
684
733
|
} else {
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
break;
|
689
|
-
case BLX:
|
690
|
-
Format(instr, "blx'cond 'rm");
|
691
|
-
break;
|
692
|
-
default:
|
693
|
-
Unknown(instr); // not used by V8
|
694
|
-
break;
|
695
|
-
}
|
734
|
+
// Other instructions matching this pattern are handled in the
|
735
|
+
// miscellaneous instructions part above.
|
736
|
+
UNREACHABLE();
|
696
737
|
}
|
697
738
|
break;
|
698
739
|
}
|
@@ -708,14 +749,9 @@ void Decoder::DecodeType01(Instr* instr) {
|
|
708
749
|
if (instr->HasS()) {
|
709
750
|
Format(instr, "cmn'cond 'rn, 'shift_op");
|
710
751
|
} else {
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
break;
|
715
|
-
default:
|
716
|
-
Unknown(instr); // not used by V8
|
717
|
-
break;
|
718
|
-
}
|
752
|
+
// Other instructions matching this pattern are handled in the
|
753
|
+
// miscellaneous instructions part above.
|
754
|
+
UNREACHABLE();
|
719
755
|
}
|
720
756
|
break;
|
721
757
|
}
|
@@ -795,7 +831,18 @@ void Decoder::DecodeType3(Instr* instr) {
|
|
795
831
|
break;
|
796
832
|
}
|
797
833
|
case 3: {
|
798
|
-
|
834
|
+
if (instr->HasW() && (instr->Bits(6, 4) == 0x5)) {
|
835
|
+
uint32_t widthminus1 = static_cast<uint32_t>(instr->Bits(20, 16));
|
836
|
+
uint32_t lsbit = static_cast<uint32_t>(instr->ShiftAmountField());
|
837
|
+
uint32_t msbit = widthminus1 + lsbit;
|
838
|
+
if (msbit <= 31) {
|
839
|
+
Format(instr, "ubfx'cond 'rd, 'rm, #'off7to11, #'off16to20");
|
840
|
+
} else {
|
841
|
+
UNREACHABLE();
|
842
|
+
}
|
843
|
+
} else {
|
844
|
+
Format(instr, "'memop'cond'b 'rd, ['rn, +'shift_rm]'w");
|
845
|
+
}
|
799
846
|
break;
|
800
847
|
}
|
801
848
|
default: {
|
@@ -909,87 +956,151 @@ void Decoder::DecodeUnconditional(Instr* instr) {
|
|
909
956
|
// VMRS
|
910
957
|
void Decoder::DecodeTypeVFP(Instr* instr) {
|
911
958
|
ASSERT((instr->TypeField() == 7) && (instr->Bit(24) == 0x0) );
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
(instr
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
959
|
+
ASSERT(instr->Bits(11, 9) == 0x5);
|
960
|
+
|
961
|
+
if (instr->Bit(4) == 0) {
|
962
|
+
if (instr->Opc1Field() == 0x7) {
|
963
|
+
// Other data processing instructions
|
964
|
+
if ((instr->Opc2Field() == 0x7) && (instr->Opc3Field() == 0x3)) {
|
965
|
+
DecodeVCVTBetweenDoubleAndSingle(instr);
|
966
|
+
} else if ((instr->Opc2Field() == 0x8) && (instr->Opc3Field() & 0x1)) {
|
967
|
+
DecodeVCVTBetweenFloatingPointAndInteger(instr);
|
968
|
+
} else if (((instr->Opc2Field() >> 1) == 0x6) &&
|
969
|
+
(instr->Opc3Field() & 0x1)) {
|
970
|
+
DecodeVCVTBetweenFloatingPointAndInteger(instr);
|
971
|
+
} else if (((instr->Opc2Field() == 0x4) || (instr->Opc2Field() == 0x5)) &&
|
972
|
+
(instr->Opc3Field() & 0x1)) {
|
973
|
+
DecodeVCMP(instr);
|
974
|
+
} else {
|
975
|
+
Unknown(instr); // Not used by V8.
|
976
|
+
}
|
977
|
+
} else if (instr->Opc1Field() == 0x3) {
|
978
|
+
if (instr->SzField() == 0x1) {
|
979
|
+
if (instr->Opc3Field() & 0x1) {
|
980
|
+
Format(instr, "vsub.f64'cond 'Dd, 'Dn, 'Dm");
|
981
|
+
} else {
|
982
|
+
Format(instr, "vadd.f64'cond 'Dd, 'Dn, 'Dm");
|
983
|
+
}
|
984
|
+
} else {
|
985
|
+
Unknown(instr); // Not used by V8.
|
986
|
+
}
|
987
|
+
} else if ((instr->Opc1Field() == 0x2) && !(instr->Opc3Field() & 0x1)) {
|
988
|
+
if (instr->SzField() == 0x1) {
|
989
|
+
Format(instr, "vmul.f64'cond 'Dd, 'Dn, 'Dm");
|
990
|
+
} else {
|
991
|
+
Unknown(instr); // Not used by V8.
|
992
|
+
}
|
993
|
+
} else if ((instr->Opc1Field() == 0x4) && !(instr->Opc3Field() & 0x1)) {
|
994
|
+
if (instr->SzField() == 0x1) {
|
935
995
|
Format(instr, "vdiv.f64'cond 'Dd, 'Dn, 'Dm");
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
(instr->Bit(8) == 0x1) &&
|
940
|
-
(instr->Bit(6) == 0x1) &&
|
941
|
-
(instr->Bit(4) == 0x0)) {
|
942
|
-
Format(instr, "vcmp.f64'cond 'Dd, 'Dm");
|
943
|
-
} else if ((instr->Bits(23, 20) == 0xF) &&
|
944
|
-
(instr->Bits(19, 16) == 0x1) &&
|
945
|
-
(instr->Bits(11, 8) == 0xA) &&
|
946
|
-
(instr->Bits(7, 5) == 0x0) &&
|
947
|
-
(instr->Bit(4) == 0x1) &&
|
948
|
-
(instr->Bits(3, 0) == 0x0)) {
|
949
|
-
if (instr->Bits(15, 12) == 0xF)
|
950
|
-
Format(instr, "vmrs'cond APSR, FPSCR");
|
951
|
-
else
|
952
|
-
Unknown(instr); // Not used by V8.
|
996
|
+
} else {
|
997
|
+
Unknown(instr); // Not used by V8.
|
998
|
+
}
|
953
999
|
} else {
|
954
1000
|
Unknown(instr); // Not used by V8.
|
955
1001
|
}
|
956
|
-
} else
|
957
|
-
if ((instr->
|
958
|
-
(instr->
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
Format(instr, "vsub.f64'cond 'Dd, 'Dn, 'Dm");
|
969
|
-
} else if ((instr->Bit(20) == 0x0) &&
|
970
|
-
(instr->Bits(11, 9) == 0x5) &&
|
971
|
-
(instr->Bit(8) == 0x1) &&
|
972
|
-
(instr->Bit(6) == 0) &&
|
973
|
-
(instr->Bit(4) == 0)) {
|
974
|
-
Format(instr, "vmul.f64'cond 'Dd, 'Dn, 'Dm");
|
1002
|
+
} else {
|
1003
|
+
if ((instr->VCField() == 0x0) &&
|
1004
|
+
(instr->VAField() == 0x0)) {
|
1005
|
+
DecodeVMOVBetweenCoreAndSinglePrecisionRegisters(instr);
|
1006
|
+
} else if ((instr->VLField() == 0x1) &&
|
1007
|
+
(instr->VCField() == 0x0) &&
|
1008
|
+
(instr->VAField() == 0x7) &&
|
1009
|
+
(instr->Bits(19, 16) == 0x1)) {
|
1010
|
+
if (instr->Bits(15, 12) == 0xF)
|
1011
|
+
Format(instr, "vmrs'cond APSR, FPSCR");
|
1012
|
+
else
|
1013
|
+
Unknown(instr); // Not used by V8.
|
975
1014
|
} else {
|
976
1015
|
Unknown(instr); // Not used by V8.
|
977
1016
|
}
|
1017
|
+
}
|
1018
|
+
}
|
1019
|
+
|
1020
|
+
|
1021
|
+
void Decoder::DecodeVMOVBetweenCoreAndSinglePrecisionRegisters(Instr* instr) {
|
1022
|
+
ASSERT((instr->Bit(4) == 1) && (instr->VCField() == 0x0) &&
|
1023
|
+
(instr->VAField() == 0x0));
|
1024
|
+
|
1025
|
+
bool to_arm_register = (instr->VLField() == 0x1);
|
1026
|
+
|
1027
|
+
if (to_arm_register) {
|
1028
|
+
Format(instr, "vmov'cond 'rt, 'Sn");
|
978
1029
|
} else {
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
1030
|
+
Format(instr, "vmov'cond 'Sn, 'rt");
|
1031
|
+
}
|
1032
|
+
}
|
1033
|
+
|
1034
|
+
|
1035
|
+
void Decoder::DecodeVCMP(Instr* instr) {
|
1036
|
+
ASSERT((instr->Bit(4) == 0) && (instr->Opc1Field() == 0x7));
|
1037
|
+
ASSERT(((instr->Opc2Field() == 0x4) || (instr->Opc2Field() == 0x5)) &&
|
1038
|
+
(instr->Opc3Field() & 0x1));
|
1039
|
+
|
1040
|
+
// Comparison.
|
1041
|
+
bool dp_operation = (instr->SzField() == 1);
|
1042
|
+
bool raise_exception_for_qnan = (instr->Bit(7) == 0x1);
|
1043
|
+
|
1044
|
+
if (dp_operation && !raise_exception_for_qnan) {
|
1045
|
+
Format(instr, "vcmp.f64'cond 'Dd, 'Dm");
|
1046
|
+
} else {
|
1047
|
+
Unknown(instr); // Not used by V8.
|
1048
|
+
}
|
1049
|
+
}
|
1050
|
+
|
1051
|
+
|
1052
|
+
void Decoder::DecodeVCVTBetweenDoubleAndSingle(Instr* instr) {
|
1053
|
+
ASSERT((instr->Bit(4) == 0) && (instr->Opc1Field() == 0x7));
|
1054
|
+
ASSERT((instr->Opc2Field() == 0x7) && (instr->Opc3Field() == 0x3));
|
1055
|
+
|
1056
|
+
bool double_to_single = (instr->SzField() == 1);
|
1057
|
+
|
1058
|
+
if (double_to_single) {
|
1059
|
+
Format(instr, "vcvt.f32.f64'cond 'Sd, 'Dm");
|
1060
|
+
} else {
|
1061
|
+
Format(instr, "vcvt.f64.f32'cond 'Dd, 'Sm");
|
1062
|
+
}
|
1063
|
+
}
|
1064
|
+
|
1065
|
+
|
1066
|
+
void Decoder::DecodeVCVTBetweenFloatingPointAndInteger(Instr* instr) {
|
1067
|
+
ASSERT((instr->Bit(4) == 0) && (instr->Opc1Field() == 0x7));
|
1068
|
+
ASSERT(((instr->Opc2Field() == 0x8) && (instr->Opc3Field() & 0x1)) ||
|
1069
|
+
(((instr->Opc2Field() >> 1) == 0x6) && (instr->Opc3Field() & 0x1)));
|
1070
|
+
|
1071
|
+
bool to_integer = (instr->Bit(18) == 1);
|
1072
|
+
bool dp_operation = (instr->SzField() == 1);
|
1073
|
+
if (to_integer) {
|
1074
|
+
bool unsigned_integer = (instr->Bit(16) == 0);
|
1075
|
+
|
1076
|
+
if (dp_operation) {
|
1077
|
+
if (unsigned_integer) {
|
1078
|
+
Format(instr, "vcvt.u32.f64'cond 'Sd, 'Dm");
|
1079
|
+
} else {
|
1080
|
+
Format(instr, "vcvt.s32.f64'cond 'Sd, 'Dm");
|
1081
|
+
}
|
991
1082
|
} else {
|
992
|
-
|
1083
|
+
if (unsigned_integer) {
|
1084
|
+
Format(instr, "vcvt.u32.f32'cond 'Sd, 'Sm");
|
1085
|
+
} else {
|
1086
|
+
Format(instr, "vcvt.s32.f32'cond 'Sd, 'Sm");
|
1087
|
+
}
|
1088
|
+
}
|
1089
|
+
} else {
|
1090
|
+
bool unsigned_integer = (instr->Bit(7) == 0);
|
1091
|
+
|
1092
|
+
if (dp_operation) {
|
1093
|
+
if (unsigned_integer) {
|
1094
|
+
Format(instr, "vcvt.f64.u32'cond 'Dd, 'Sm");
|
1095
|
+
} else {
|
1096
|
+
Format(instr, "vcvt.f64.s32'cond 'Dd, 'Sm");
|
1097
|
+
}
|
1098
|
+
} else {
|
1099
|
+
if (unsigned_integer) {
|
1100
|
+
Format(instr, "vcvt.f32.u32'cond 'Sd, 'Sm");
|
1101
|
+
} else {
|
1102
|
+
Format(instr, "vcvt.f32.s32'cond 'Sd, 'Sm");
|
1103
|
+
}
|
993
1104
|
}
|
994
1105
|
}
|
995
1106
|
}
|
@@ -998,29 +1109,63 @@ void Decoder::DecodeTypeVFP(Instr* instr) {
|
|
998
1109
|
// Decode Type 6 coprocessor instructions.
|
999
1110
|
// Dm = vmov(Rt, Rt2)
|
1000
1111
|
// <Rt, Rt2> = vmov(Dm)
|
1112
|
+
// Ddst = MEM(Rbase + 4*offset).
|
1113
|
+
// MEM(Rbase + 4*offset) = Dsrc.
|
1001
1114
|
void Decoder::DecodeType6CoprocessorIns(Instr* instr) {
|
1002
1115
|
ASSERT((instr->TypeField() == 6));
|
1003
1116
|
|
1004
|
-
if (instr->
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1117
|
+
if (instr->CoprocessorField() == 0xA) {
|
1118
|
+
switch (instr->OpcodeField()) {
|
1119
|
+
case 0x8:
|
1120
|
+
if (instr->HasL()) {
|
1121
|
+
Format(instr, "vldr'cond 'Sd, ['rn - 4*'off8]");
|
1122
|
+
} else {
|
1123
|
+
Format(instr, "vstr'cond 'Sd, ['rn - 4*'off8]");
|
1124
|
+
}
|
1125
|
+
break;
|
1126
|
+
case 0xC:
|
1127
|
+
if (instr->HasL()) {
|
1128
|
+
Format(instr, "vldr'cond 'Sd, ['rn + 4*'off8]");
|
1129
|
+
} else {
|
1130
|
+
Format(instr, "vstr'cond 'Sd, ['rn + 4*'off8]");
|
1131
|
+
}
|
1132
|
+
break;
|
1133
|
+
default:
|
1134
|
+
Unknown(instr); // Not used by V8.
|
1135
|
+
break;
|
1136
|
+
}
|
1137
|
+
} else if (instr->CoprocessorField() == 0xB) {
|
1138
|
+
switch (instr->OpcodeField()) {
|
1139
|
+
case 0x2:
|
1140
|
+
// Load and store double to two GP registers
|
1141
|
+
if (instr->Bits(7, 4) != 0x1) {
|
1142
|
+
Unknown(instr); // Not used by V8.
|
1143
|
+
} else if (instr->HasL()) {
|
1144
|
+
Format(instr, "vmov'cond 'rt, 'rn, 'Dm");
|
1145
|
+
} else {
|
1146
|
+
Format(instr, "vmov'cond 'Dm, 'rt, 'rn");
|
1147
|
+
}
|
1148
|
+
break;
|
1149
|
+
case 0x8:
|
1150
|
+
if (instr->HasL()) {
|
1151
|
+
Format(instr, "vldr'cond 'Dd, ['rn - 4*'off8]");
|
1152
|
+
} else {
|
1153
|
+
Format(instr, "vstr'cond 'Dd, ['rn - 4*'off8]");
|
1154
|
+
}
|
1155
|
+
break;
|
1156
|
+
case 0xC:
|
1157
|
+
if (instr->HasL()) {
|
1158
|
+
Format(instr, "vldr'cond 'Dd, ['rn + 4*'off8]");
|
1159
|
+
} else {
|
1160
|
+
Format(instr, "vstr'cond 'Dd, ['rn + 4*'off8]");
|
1161
|
+
}
|
1162
|
+
break;
|
1163
|
+
default:
|
1164
|
+
Unknown(instr); // Not used by V8.
|
1165
|
+
break;
|
1019
1166
|
}
|
1020
|
-
} else if (instr->Bit(21) == 1) {
|
1021
|
-
Unknown(instr); // Not used by V8.
|
1022
1167
|
} else {
|
1023
|
-
|
1168
|
+
UNIMPLEMENTED(); // Not used by V8.
|
1024
1169
|
}
|
1025
1170
|
}
|
1026
1171
|
|