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
@@ -30,9 +30,9 @@
|
|
30
30
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
31
31
|
// OF THE POSSIBILITY OF SUCH DAMAGE.
|
32
32
|
|
33
|
-
// The original source code covered by the above license above has been
|
34
|
-
// significantly by Google Inc.
|
35
|
-
// Copyright
|
33
|
+
// The original source code covered by the above license above has been
|
34
|
+
// modified significantly by Google Inc.
|
35
|
+
// Copyright 2010 the V8 project authors. All rights reserved.
|
36
36
|
|
37
37
|
#include "v8.h"
|
38
38
|
|
@@ -51,9 +51,14 @@ void CpuFeatures::Probe() {
|
|
51
51
|
// If the compiler is allowed to use vfp then we can use vfp too in our
|
52
52
|
// code generation.
|
53
53
|
#if !defined(__arm__)
|
54
|
-
// For the simulator=arm build,
|
55
|
-
|
56
|
-
|
54
|
+
// For the simulator=arm build, use VFP when FLAG_enable_vfp3 is enabled.
|
55
|
+
if (FLAG_enable_vfp3) {
|
56
|
+
supported_ |= 1u << VFP3;
|
57
|
+
}
|
58
|
+
// For the simulator=arm build, use ARMv7 when FLAG_enable_armv7 is enabled
|
59
|
+
if (FLAG_enable_armv7) {
|
60
|
+
supported_ |= 1u << ARMv7;
|
61
|
+
}
|
57
62
|
#else
|
58
63
|
if (Serializer::enabled()) {
|
59
64
|
supported_ |= OS::CpuFeaturesImpliedByPlatform();
|
@@ -66,6 +71,11 @@ void CpuFeatures::Probe() {
|
|
66
71
|
supported_ |= 1u << VFP3;
|
67
72
|
found_by_runtime_probing_ |= 1u << VFP3;
|
68
73
|
}
|
74
|
+
|
75
|
+
if (OS::ArmCpuHasFeature(ARMv7)) {
|
76
|
+
supported_ |= 1u << ARMv7;
|
77
|
+
found_by_runtime_probing_ |= 1u << ARMv7;
|
78
|
+
}
|
69
79
|
#endif
|
70
80
|
}
|
71
81
|
|
@@ -83,9 +93,9 @@ Register r4 = { 4 };
|
|
83
93
|
Register r5 = { 5 };
|
84
94
|
Register r6 = { 6 };
|
85
95
|
Register r7 = { 7 };
|
86
|
-
Register r8 = { 8 };
|
96
|
+
Register r8 = { 8 }; // Used as context register.
|
87
97
|
Register r9 = { 9 };
|
88
|
-
Register r10 = { 10 };
|
98
|
+
Register r10 = { 10 }; // Used as roots register.
|
89
99
|
Register fp = { 11 };
|
90
100
|
Register ip = { 12 };
|
91
101
|
Register sp = { 13 };
|
@@ -264,9 +274,9 @@ MemOperand::MemOperand(Register rn, Register rm,
|
|
264
274
|
|
265
275
|
|
266
276
|
// -----------------------------------------------------------------------------
|
267
|
-
// Implementation of Assembler
|
277
|
+
// Implementation of Assembler.
|
268
278
|
|
269
|
-
// Instruction encoding bits
|
279
|
+
// Instruction encoding bits.
|
270
280
|
enum {
|
271
281
|
H = 1 << 5, // halfword (or byte)
|
272
282
|
S6 = 1 << 6, // signed (or unsigned)
|
@@ -299,14 +309,14 @@ enum {
|
|
299
309
|
B26 = 1 << 26,
|
300
310
|
B27 = 1 << 27,
|
301
311
|
|
302
|
-
// Instruction bit masks
|
312
|
+
// Instruction bit masks.
|
303
313
|
RdMask = 15 << 12, // in str instruction
|
304
314
|
CondMask = 15 << 28,
|
305
315
|
CoprocessorMask = 15 << 8,
|
306
316
|
OpCodeMask = 15 << 21, // in data-processing instructions
|
307
317
|
Imm24Mask = (1 << 24) - 1,
|
308
318
|
Off12Mask = (1 << 12) - 1,
|
309
|
-
// Reserved condition
|
319
|
+
// Reserved condition.
|
310
320
|
nv = 15 << 28
|
311
321
|
};
|
312
322
|
|
@@ -327,13 +337,13 @@ const Instr kMovLrPc = al | 13*B21 | pc.code() | lr.code() * B12;
|
|
327
337
|
// ldr pc, [pc, #XXX]
|
328
338
|
const Instr kLdrPCPattern = al | B26 | L | pc.code() * B16;
|
329
339
|
|
330
|
-
//
|
340
|
+
// Spare buffer.
|
331
341
|
static const int kMinimalBufferSize = 4*KB;
|
332
342
|
static byte* spare_buffer_ = NULL;
|
333
343
|
|
334
344
|
Assembler::Assembler(void* buffer, int buffer_size) {
|
335
345
|
if (buffer == NULL) {
|
336
|
-
//
|
346
|
+
// Do our own buffer management.
|
337
347
|
if (buffer_size <= kMinimalBufferSize) {
|
338
348
|
buffer_size = kMinimalBufferSize;
|
339
349
|
|
@@ -351,14 +361,14 @@ Assembler::Assembler(void* buffer, int buffer_size) {
|
|
351
361
|
own_buffer_ = true;
|
352
362
|
|
353
363
|
} else {
|
354
|
-
//
|
364
|
+
// Use externally provided buffer instead.
|
355
365
|
ASSERT(buffer_size > 0);
|
356
366
|
buffer_ = static_cast<byte*>(buffer);
|
357
367
|
buffer_size_ = buffer_size;
|
358
368
|
own_buffer_ = false;
|
359
369
|
}
|
360
370
|
|
361
|
-
//
|
371
|
+
// Setup buffer pointers.
|
362
372
|
ASSERT(buffer_ != NULL);
|
363
373
|
pc_ = buffer_;
|
364
374
|
reloc_info_writer.Reposition(buffer_ + buffer_size, pc_);
|
@@ -386,11 +396,11 @@ Assembler::~Assembler() {
|
|
386
396
|
|
387
397
|
|
388
398
|
void Assembler::GetCode(CodeDesc* desc) {
|
389
|
-
//
|
399
|
+
// Emit constant pool if necessary.
|
390
400
|
CheckConstPool(true, false);
|
391
401
|
ASSERT(num_prinfo_ == 0);
|
392
402
|
|
393
|
-
//
|
403
|
+
// Setup code descriptor.
|
394
404
|
desc->buffer = buffer_;
|
395
405
|
desc->buffer_size = buffer_size_;
|
396
406
|
desc->instr_size = pc_offset();
|
@@ -539,7 +549,7 @@ void Assembler::bind_to(Label* L, int pos) {
|
|
539
549
|
void Assembler::link_to(Label* L, Label* appendix) {
|
540
550
|
if (appendix->is_linked()) {
|
541
551
|
if (L->is_linked()) {
|
542
|
-
//
|
552
|
+
// Append appendix to L's list.
|
543
553
|
int fixup_pos;
|
544
554
|
int link = L->pos();
|
545
555
|
do {
|
@@ -549,7 +559,7 @@ void Assembler::link_to(Label* L, Label* appendix) {
|
|
549
559
|
ASSERT(link == kEndOfChain);
|
550
560
|
target_at_put(fixup_pos, appendix->pos());
|
551
561
|
} else {
|
552
|
-
// L is empty, simply use appendix
|
562
|
+
// L is empty, simply use appendix.
|
553
563
|
*L = *appendix;
|
554
564
|
}
|
555
565
|
}
|
@@ -575,12 +585,12 @@ void Assembler::next(Label* L) {
|
|
575
585
|
}
|
576
586
|
|
577
587
|
|
578
|
-
// Low-level code emission routines depending on the addressing mode
|
588
|
+
// Low-level code emission routines depending on the addressing mode.
|
579
589
|
static bool fits_shifter(uint32_t imm32,
|
580
590
|
uint32_t* rotate_imm,
|
581
591
|
uint32_t* immed_8,
|
582
592
|
Instr* instr) {
|
583
|
-
// imm32 must be unsigned
|
593
|
+
// imm32 must be unsigned.
|
584
594
|
for (int rot = 0; rot < 16; rot++) {
|
585
595
|
uint32_t imm8 = (imm32 << 2*rot) | (imm32 >> (32 - 2*rot));
|
586
596
|
if ((imm8 <= 0xff)) {
|
@@ -589,7 +599,7 @@ static bool fits_shifter(uint32_t imm32,
|
|
589
599
|
return true;
|
590
600
|
}
|
591
601
|
}
|
592
|
-
//
|
602
|
+
// If the opcode is mov or mvn and if ~imm32 fits, change the opcode.
|
593
603
|
if (instr != NULL && (*instr & 0xd*B21) == 0xd*B21) {
|
594
604
|
if (fits_shifter(~imm32, rotate_imm, immed_8, NULL)) {
|
595
605
|
*instr ^= 0x2*B21;
|
@@ -626,7 +636,7 @@ void Assembler::addrmod1(Instr instr,
|
|
626
636
|
CheckBuffer();
|
627
637
|
ASSERT((instr & ~(CondMask | OpCodeMask | S)) == 0);
|
628
638
|
if (!x.rm_.is_valid()) {
|
629
|
-
//
|
639
|
+
// Immediate.
|
630
640
|
uint32_t rotate_imm;
|
631
641
|
uint32_t immed_8;
|
632
642
|
if (MustUseIp(x.rmode_) ||
|
@@ -634,7 +644,7 @@ void Assembler::addrmod1(Instr instr,
|
|
634
644
|
// The immediate operand cannot be encoded as a shifter operand, so load
|
635
645
|
// it first to register ip and change the original instruction to use ip.
|
636
646
|
// However, if the original instruction is a 'mov rd, x' (not setting the
|
637
|
-
// condition code), then replace it with a 'ldr rd, [pc]'
|
647
|
+
// condition code), then replace it with a 'ldr rd, [pc]'.
|
638
648
|
RecordRelocInfo(x.rmode_, x.imm32_);
|
639
649
|
CHECK(!rn.is(ip)); // rn should never be ip, or will be trashed
|
640
650
|
Condition cond = static_cast<Condition>(instr & CondMask);
|
@@ -648,16 +658,16 @@ void Assembler::addrmod1(Instr instr,
|
|
648
658
|
}
|
649
659
|
instr |= I | rotate_imm*B8 | immed_8;
|
650
660
|
} else if (!x.rs_.is_valid()) {
|
651
|
-
//
|
661
|
+
// Immediate shift.
|
652
662
|
instr |= x.shift_imm_*B7 | x.shift_op_ | x.rm_.code();
|
653
663
|
} else {
|
654
|
-
//
|
664
|
+
// Register shift.
|
655
665
|
ASSERT(!rn.is(pc) && !rd.is(pc) && !x.rm_.is(pc) && !x.rs_.is(pc));
|
656
666
|
instr |= x.rs_.code()*B8 | x.shift_op_ | B4 | x.rm_.code();
|
657
667
|
}
|
658
668
|
emit(instr | rn.code()*B16 | rd.code()*B12);
|
659
669
|
if (rn.is(pc) || x.rm_.is(pc))
|
660
|
-
//
|
670
|
+
// Block constant pool emission for one instruction after reading pc.
|
661
671
|
BlockConstPoolBefore(pc_offset() + kInstrSize);
|
662
672
|
}
|
663
673
|
|
@@ -666,15 +676,15 @@ void Assembler::addrmod2(Instr instr, Register rd, const MemOperand& x) {
|
|
666
676
|
ASSERT((instr & ~(CondMask | B | L)) == B26);
|
667
677
|
int am = x.am_;
|
668
678
|
if (!x.rm_.is_valid()) {
|
669
|
-
//
|
679
|
+
// Immediate offset.
|
670
680
|
int offset_12 = x.offset_;
|
671
681
|
if (offset_12 < 0) {
|
672
682
|
offset_12 = -offset_12;
|
673
683
|
am ^= U;
|
674
684
|
}
|
675
685
|
if (!is_uint12(offset_12)) {
|
676
|
-
//
|
677
|
-
// rn (and rd in a load) should never be ip, or will be trashed
|
686
|
+
// Immediate offset cannot be encoded, load it first to register ip
|
687
|
+
// rn (and rd in a load) should never be ip, or will be trashed.
|
678
688
|
ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
|
679
689
|
mov(ip, Operand(x.offset_), LeaveCC,
|
680
690
|
static_cast<Condition>(instr & CondMask));
|
@@ -684,9 +694,9 @@ void Assembler::addrmod2(Instr instr, Register rd, const MemOperand& x) {
|
|
684
694
|
ASSERT(offset_12 >= 0); // no masking needed
|
685
695
|
instr |= offset_12;
|
686
696
|
} else {
|
687
|
-
//
|
697
|
+
// Register offset (shift_imm_ and shift_op_ are 0) or scaled
|
688
698
|
// register offset the constructors make sure than both shift_imm_
|
689
|
-
// and shift_op_ are initialized
|
699
|
+
// and shift_op_ are initialized.
|
690
700
|
ASSERT(!x.rm_.is(pc));
|
691
701
|
instr |= B25 | x.shift_imm_*B7 | x.shift_op_ | x.rm_.code();
|
692
702
|
}
|
@@ -700,15 +710,15 @@ void Assembler::addrmod3(Instr instr, Register rd, const MemOperand& x) {
|
|
700
710
|
ASSERT(x.rn_.is_valid());
|
701
711
|
int am = x.am_;
|
702
712
|
if (!x.rm_.is_valid()) {
|
703
|
-
//
|
713
|
+
// Immediate offset.
|
704
714
|
int offset_8 = x.offset_;
|
705
715
|
if (offset_8 < 0) {
|
706
716
|
offset_8 = -offset_8;
|
707
717
|
am ^= U;
|
708
718
|
}
|
709
719
|
if (!is_uint8(offset_8)) {
|
710
|
-
//
|
711
|
-
// rn (and rd in a load) should never be ip, or will be trashed
|
720
|
+
// Immediate offset cannot be encoded, load it first to register ip
|
721
|
+
// rn (and rd in a load) should never be ip, or will be trashed.
|
712
722
|
ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
|
713
723
|
mov(ip, Operand(x.offset_), LeaveCC,
|
714
724
|
static_cast<Condition>(instr & CondMask));
|
@@ -718,15 +728,15 @@ void Assembler::addrmod3(Instr instr, Register rd, const MemOperand& x) {
|
|
718
728
|
ASSERT(offset_8 >= 0); // no masking needed
|
719
729
|
instr |= B | (offset_8 >> 4)*B8 | (offset_8 & 0xf);
|
720
730
|
} else if (x.shift_imm_ != 0) {
|
721
|
-
//
|
722
|
-
// rn (and rd in a load) should never be ip, or will be trashed
|
731
|
+
// Scaled register offset not supported, load index first
|
732
|
+
// rn (and rd in a load) should never be ip, or will be trashed.
|
723
733
|
ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
|
724
734
|
mov(ip, Operand(x.rm_, x.shift_op_, x.shift_imm_), LeaveCC,
|
725
735
|
static_cast<Condition>(instr & CondMask));
|
726
736
|
addrmod3(instr, rd, MemOperand(x.rn_, ip, x.am_));
|
727
737
|
return;
|
728
738
|
} else {
|
729
|
-
//
|
739
|
+
// Register offset.
|
730
740
|
ASSERT((am & (P|W)) == P || !x.rm_.is(pc)); // no pc index with writeback
|
731
741
|
instr |= x.rm_.code();
|
732
742
|
}
|
@@ -744,7 +754,7 @@ void Assembler::addrmod4(Instr instr, Register rn, RegList rl) {
|
|
744
754
|
|
745
755
|
|
746
756
|
void Assembler::addrmod5(Instr instr, CRegister crd, const MemOperand& x) {
|
747
|
-
//
|
757
|
+
// Unindexed addressing is not encoded by this function.
|
748
758
|
ASSERT_EQ((B27 | B26),
|
749
759
|
(instr & ~(CondMask | CoprocessorMask | P | U | N | W | L)));
|
750
760
|
ASSERT(x.rn_.is_valid() && !x.rm_.is_valid());
|
@@ -759,7 +769,7 @@ void Assembler::addrmod5(Instr instr, CRegister crd, const MemOperand& x) {
|
|
759
769
|
ASSERT(is_uint8(offset_8)); // unsigned word offset must fit in a byte
|
760
770
|
ASSERT((am & (P|W)) == P || !x.rn_.is(pc)); // no pc base with writeback
|
761
771
|
|
762
|
-
//
|
772
|
+
// Post-indexed addressing requires W == 1; different than in addrmod2/3.
|
763
773
|
if ((am & P) == 0)
|
764
774
|
am |= W;
|
765
775
|
|
@@ -782,7 +792,7 @@ int Assembler::branch_offset(Label* L, bool jump_elimination_allowed) {
|
|
782
792
|
}
|
783
793
|
|
784
794
|
// Block the emission of the constant pool, since the branch instruction must
|
785
|
-
// be emitted at the pc offset recorded by the label
|
795
|
+
// be emitted at the pc offset recorded by the label.
|
786
796
|
BlockConstPoolBefore(pc_offset() + kInstrSize);
|
787
797
|
return target_pos - (pc_offset() + kPcLoadDelta);
|
788
798
|
}
|
@@ -804,7 +814,7 @@ void Assembler::label_at_put(Label* L, int at_offset) {
|
|
804
814
|
}
|
805
815
|
|
806
816
|
|
807
|
-
// Branch instructions
|
817
|
+
// Branch instructions.
|
808
818
|
void Assembler::b(int branch_offset, Condition cond) {
|
809
819
|
ASSERT((branch_offset & 3) == 0);
|
810
820
|
int imm24 = branch_offset >> 2;
|
@@ -812,7 +822,7 @@ void Assembler::b(int branch_offset, Condition cond) {
|
|
812
822
|
emit(cond | B27 | B25 | (imm24 & Imm24Mask));
|
813
823
|
|
814
824
|
if (cond == al)
|
815
|
-
//
|
825
|
+
// Dead code is a good location to emit the constant pool.
|
816
826
|
CheckConstPool(false, false);
|
817
827
|
}
|
818
828
|
|
@@ -849,7 +859,22 @@ void Assembler::bx(Register target, Condition cond) { // v5 and above, plus v4t
|
|
849
859
|
}
|
850
860
|
|
851
861
|
|
852
|
-
// Data-processing instructions
|
862
|
+
// Data-processing instructions.
|
863
|
+
|
864
|
+
// UBFX <Rd>,<Rn>,#<lsb>,#<width - 1>
|
865
|
+
// Instruction details available in ARM DDI 0406A, A8-464.
|
866
|
+
// cond(31-28) | 01111(27-23)| 1(22) | 1(21) | widthm1(20-16) |
|
867
|
+
// Rd(15-12) | lsb(11-7) | 101(6-4) | Rn(3-0)
|
868
|
+
void Assembler::ubfx(Register dst, Register src1, const Operand& src2,
|
869
|
+
const Operand& src3, Condition cond) {
|
870
|
+
ASSERT(!src2.rm_.is_valid() && !src3.rm_.is_valid());
|
871
|
+
ASSERT(static_cast<uint32_t>(src2.imm32_) <= 0x1f);
|
872
|
+
ASSERT(static_cast<uint32_t>(src3.imm32_) <= 0x1f);
|
873
|
+
emit(cond | 0x3F*B21 | src3.imm32_*B16 |
|
874
|
+
dst.code()*B12 | src2.imm32_*B7 | 0x5*B4 | src1.code());
|
875
|
+
}
|
876
|
+
|
877
|
+
|
853
878
|
void Assembler::and_(Register dst, Register src1, const Operand& src2,
|
854
879
|
SBit s, Condition cond) {
|
855
880
|
addrmod1(cond | 0*B21 | s, src1, dst, src2);
|
@@ -886,7 +911,7 @@ void Assembler::add(Register dst, Register src1, const Operand& src2,
|
|
886
911
|
if (FLAG_push_pop_elimination &&
|
887
912
|
last_bound_pos_ <= (pc_offset() - pattern_size) &&
|
888
913
|
reloc_info_writer.last_pc() <= (pc_ - pattern_size) &&
|
889
|
-
//
|
914
|
+
// Pattern.
|
890
915
|
instr_at(pc_ - 1 * kInstrSize) == kPopInstruction &&
|
891
916
|
(instr_at(pc_ - 2 * kInstrSize) & ~RdMask) == kPushRegPattern) {
|
892
917
|
pc_ -= 2 * kInstrSize;
|
@@ -960,7 +985,7 @@ void Assembler::mvn(Register dst, const Operand& src, SBit s, Condition cond) {
|
|
960
985
|
}
|
961
986
|
|
962
987
|
|
963
|
-
// Multiply instructions
|
988
|
+
// Multiply instructions.
|
964
989
|
void Assembler::mla(Register dst, Register src1, Register src2, Register srcA,
|
965
990
|
SBit s, Condition cond) {
|
966
991
|
ASSERT(!dst.is(pc) && !src1.is(pc) && !src2.is(pc) && !srcA.is(pc));
|
@@ -1029,7 +1054,7 @@ void Assembler::umull(Register dstL,
|
|
1029
1054
|
}
|
1030
1055
|
|
1031
1056
|
|
1032
|
-
// Miscellaneous arithmetic instructions
|
1057
|
+
// Miscellaneous arithmetic instructions.
|
1033
1058
|
void Assembler::clz(Register dst, Register src, Condition cond) {
|
1034
1059
|
// v5 and above.
|
1035
1060
|
ASSERT(!dst.is(pc) && !src.is(pc));
|
@@ -1038,7 +1063,7 @@ void Assembler::clz(Register dst, Register src, Condition cond) {
|
|
1038
1063
|
}
|
1039
1064
|
|
1040
1065
|
|
1041
|
-
// Status register access instructions
|
1066
|
+
// Status register access instructions.
|
1042
1067
|
void Assembler::mrs(Register dst, SRegister s, Condition cond) {
|
1043
1068
|
ASSERT(!dst.is(pc));
|
1044
1069
|
emit(cond | B24 | s | 15*B16 | dst.code()*B12);
|
@@ -1050,12 +1075,12 @@ void Assembler::msr(SRegisterFieldMask fields, const Operand& src,
|
|
1050
1075
|
ASSERT(fields >= B16 && fields < B20); // at least one field set
|
1051
1076
|
Instr instr;
|
1052
1077
|
if (!src.rm_.is_valid()) {
|
1053
|
-
//
|
1078
|
+
// Immediate.
|
1054
1079
|
uint32_t rotate_imm;
|
1055
1080
|
uint32_t immed_8;
|
1056
1081
|
if (MustUseIp(src.rmode_) ||
|
1057
1082
|
!fits_shifter(src.imm32_, &rotate_imm, &immed_8, NULL)) {
|
1058
|
-
//
|
1083
|
+
// Immediate operand cannot be encoded, load it first to register ip.
|
1059
1084
|
RecordRelocInfo(src.rmode_, src.imm32_);
|
1060
1085
|
ldr(ip, MemOperand(pc, 0), cond);
|
1061
1086
|
msr(fields, Operand(ip), cond);
|
@@ -1070,7 +1095,7 @@ void Assembler::msr(SRegisterFieldMask fields, const Operand& src,
|
|
1070
1095
|
}
|
1071
1096
|
|
1072
1097
|
|
1073
|
-
// Load/Store instructions
|
1098
|
+
// Load/Store instructions.
|
1074
1099
|
void Assembler::ldr(Register dst, const MemOperand& src, Condition cond) {
|
1075
1100
|
if (dst.is(pc)) {
|
1076
1101
|
WriteRecordedPositions();
|
@@ -1085,7 +1110,7 @@ void Assembler::ldr(Register dst, const MemOperand& src, Condition cond) {
|
|
1085
1110
|
if (FLAG_push_pop_elimination &&
|
1086
1111
|
last_bound_pos_ <= (pc_offset() - pattern_size) &&
|
1087
1112
|
reloc_info_writer.last_pc() <= (pc_ - pattern_size) &&
|
1088
|
-
//
|
1113
|
+
// Pattern.
|
1089
1114
|
instr_at(pc_ - 1 * kInstrSize) == (kPopRegPattern | dst.code() * B12) &&
|
1090
1115
|
instr_at(pc_ - 2 * kInstrSize) == (kPushRegPattern | dst.code() * B12)) {
|
1091
1116
|
pc_ -= 2 * kInstrSize;
|
@@ -1106,6 +1131,7 @@ void Assembler::str(Register src, const MemOperand& dst, Condition cond) {
|
|
1106
1131
|
if (FLAG_push_pop_elimination &&
|
1107
1132
|
last_bound_pos_ <= (pc_offset() - pattern_size) &&
|
1108
1133
|
reloc_info_writer.last_pc() <= (pc_ - pattern_size) &&
|
1134
|
+
// Pattern.
|
1109
1135
|
instr_at(pc_ - 1 * kInstrSize) == (kPushRegPattern | src.code() * B12) &&
|
1110
1136
|
instr_at(pc_ - 2 * kInstrSize) == kPopInstruction) {
|
1111
1137
|
pc_ -= 2 * kInstrSize;
|
@@ -1147,17 +1173,17 @@ void Assembler::ldrsh(Register dst, const MemOperand& src, Condition cond) {
|
|
1147
1173
|
}
|
1148
1174
|
|
1149
1175
|
|
1150
|
-
// Load/Store multiple instructions
|
1176
|
+
// Load/Store multiple instructions.
|
1151
1177
|
void Assembler::ldm(BlockAddrMode am,
|
1152
1178
|
Register base,
|
1153
1179
|
RegList dst,
|
1154
1180
|
Condition cond) {
|
1155
|
-
// ABI stack constraint: ldmxx base, {..sp..} base != sp is not restartable
|
1181
|
+
// ABI stack constraint: ldmxx base, {..sp..} base != sp is not restartable.
|
1156
1182
|
ASSERT(base.is(sp) || (dst & sp.bit()) == 0);
|
1157
1183
|
|
1158
1184
|
addrmod4(cond | B27 | am | L, base, dst);
|
1159
1185
|
|
1160
|
-
//
|
1186
|
+
// Emit the constant pool after a function return implemented by ldm ..{..pc}.
|
1161
1187
|
if (cond == al && (dst & pc.bit()) != 0) {
|
1162
1188
|
// There is a slight chance that the ldm instruction was actually a call,
|
1163
1189
|
// in which case it would be wrong to return into the constant pool; we
|
@@ -1177,7 +1203,7 @@ void Assembler::stm(BlockAddrMode am,
|
|
1177
1203
|
}
|
1178
1204
|
|
1179
1205
|
|
1180
|
-
// Semaphore instructions
|
1206
|
+
// Semaphore instructions.
|
1181
1207
|
void Assembler::swp(Register dst, Register src, Register base, Condition cond) {
|
1182
1208
|
ASSERT(!dst.is(pc) && !src.is(pc) && !base.is(pc));
|
1183
1209
|
ASSERT(!dst.is(base) && !src.is(base));
|
@@ -1197,7 +1223,7 @@ void Assembler::swpb(Register dst,
|
|
1197
1223
|
}
|
1198
1224
|
|
1199
1225
|
|
1200
|
-
// Exception-generating instructions and debugging support
|
1226
|
+
// Exception-generating instructions and debugging support.
|
1201
1227
|
void Assembler::stop(const char* msg) {
|
1202
1228
|
#if !defined(__arm__)
|
1203
1229
|
// The simulator handles these special instructions and stops execution.
|
@@ -1222,7 +1248,7 @@ void Assembler::swi(uint32_t imm24, Condition cond) {
|
|
1222
1248
|
}
|
1223
1249
|
|
1224
1250
|
|
1225
|
-
// Coprocessor instructions
|
1251
|
+
// Coprocessor instructions.
|
1226
1252
|
void Assembler::cdp(Coprocessor coproc,
|
1227
1253
|
int opcode_1,
|
1228
1254
|
CRegister crd,
|
@@ -1307,7 +1333,7 @@ void Assembler::ldc(Coprocessor coproc,
|
|
1307
1333
|
int option,
|
1308
1334
|
LFlag l,
|
1309
1335
|
Condition cond) {
|
1310
|
-
//
|
1336
|
+
// Unindexed addressing.
|
1311
1337
|
ASSERT(is_uint8(option));
|
1312
1338
|
emit(cond | B27 | B26 | U | l | L | rn.code()*B16 | crd.code()*B12 |
|
1313
1339
|
coproc*B8 | (option & 255));
|
@@ -1346,7 +1372,7 @@ void Assembler::stc(Coprocessor coproc,
|
|
1346
1372
|
int option,
|
1347
1373
|
LFlag l,
|
1348
1374
|
Condition cond) {
|
1349
|
-
//
|
1375
|
+
// Unindexed addressing.
|
1350
1376
|
ASSERT(is_uint8(option));
|
1351
1377
|
emit(cond | B27 | B26 | U | l | rn.code()*B16 | crd.code()*B12 |
|
1352
1378
|
coproc*B8 | (option & 255));
|
@@ -1371,6 +1397,36 @@ void Assembler::stc2(Coprocessor coproc,
|
|
1371
1397
|
|
1372
1398
|
|
1373
1399
|
// Support for VFP.
|
1400
|
+
void Assembler::vldr(const DwVfpRegister dst,
|
1401
|
+
const Register base,
|
1402
|
+
int offset,
|
1403
|
+
const Condition cond) {
|
1404
|
+
// Ddst = MEM(Rbase + offset).
|
1405
|
+
// Instruction details available in ARM DDI 0406A, A8-628.
|
1406
|
+
// cond(31-28) | 1101(27-24)| 1001(23-20) | Rbase(19-16) |
|
1407
|
+
// Vdst(15-12) | 1011(11-8) | offset
|
1408
|
+
ASSERT(CpuFeatures::IsEnabled(VFP3));
|
1409
|
+
ASSERT(offset % 4 == 0);
|
1410
|
+
emit(cond | 0xD9*B20 | base.code()*B16 | dst.code()*B12 |
|
1411
|
+
0xB*B8 | ((offset / 4) & 255));
|
1412
|
+
}
|
1413
|
+
|
1414
|
+
|
1415
|
+
void Assembler::vstr(const DwVfpRegister src,
|
1416
|
+
const Register base,
|
1417
|
+
int offset,
|
1418
|
+
const Condition cond) {
|
1419
|
+
// MEM(Rbase + offset) = Dsrc.
|
1420
|
+
// Instruction details available in ARM DDI 0406A, A8-786.
|
1421
|
+
// cond(31-28) | 1101(27-24)| 1000(23-20) | | Rbase(19-16) |
|
1422
|
+
// Vsrc(15-12) | 1011(11-8) | (offset/4)
|
1423
|
+
ASSERT(CpuFeatures::IsEnabled(VFP3));
|
1424
|
+
ASSERT(offset % 4 == 0);
|
1425
|
+
emit(cond | 0xD8*B20 | base.code()*B16 | src.code()*B12 |
|
1426
|
+
0xB*B8 | ((offset / 4) & 255));
|
1427
|
+
}
|
1428
|
+
|
1429
|
+
|
1374
1430
|
void Assembler::vmov(const DwVfpRegister dst,
|
1375
1431
|
const Register src1,
|
1376
1432
|
const Register src2,
|
@@ -1434,7 +1490,7 @@ void Assembler::vcvt(const DwVfpRegister dst,
|
|
1434
1490
|
const Condition cond) {
|
1435
1491
|
// Dd = Sm (integer in Sm converted to IEEE 64-bit doubles in Dd).
|
1436
1492
|
// Instruction details available in ARM DDI 0406A, A8-576.
|
1437
|
-
// cond(31-28) | 11101(27-23)| D=?(22) | 11(21-20) | 1(19) |opc2=000(18-16) |
|
1493
|
+
// cond(31-28) | 11101(27-23)| D=?(22) | 11(21-20) | 1(19) | opc2=000(18-16) |
|
1438
1494
|
// Vd(15-12) | 101(11-9) | sz(8)=1 | op(7)=1 | 1(6) | M=?(5) | 0(4) | Vm(3-0)
|
1439
1495
|
ASSERT(CpuFeatures::IsEnabled(VFP3));
|
1440
1496
|
emit(cond | 0xE*B24 | B23 | 0x3*B20 | B19 |
|
@@ -1541,14 +1597,14 @@ void Assembler::vmrs(Register dst, Condition cond) {
|
|
1541
1597
|
}
|
1542
1598
|
|
1543
1599
|
|
1544
|
-
// Pseudo instructions
|
1600
|
+
// Pseudo instructions.
|
1545
1601
|
void Assembler::lea(Register dst,
|
1546
1602
|
const MemOperand& x,
|
1547
1603
|
SBit s,
|
1548
1604
|
Condition cond) {
|
1549
1605
|
int am = x.am_;
|
1550
1606
|
if (!x.rm_.is_valid()) {
|
1551
|
-
//
|
1607
|
+
// Immediate offset.
|
1552
1608
|
if ((am & P) == 0) // post indexing
|
1553
1609
|
mov(dst, Operand(x.rn_), s, cond);
|
1554
1610
|
else if ((am & U) == 0) // negative indexing
|
@@ -1582,7 +1638,7 @@ void Assembler::BlockConstPoolFor(int instructions) {
|
|
1582
1638
|
}
|
1583
1639
|
|
1584
1640
|
|
1585
|
-
// Debugging
|
1641
|
+
// Debugging.
|
1586
1642
|
void Assembler::RecordJSReturn() {
|
1587
1643
|
WriteRecordedPositions();
|
1588
1644
|
CheckBuffer();
|
@@ -1635,7 +1691,7 @@ void Assembler::WriteRecordedPositions() {
|
|
1635
1691
|
void Assembler::GrowBuffer() {
|
1636
1692
|
if (!own_buffer_) FATAL("external code buffer is too small");
|
1637
1693
|
|
1638
|
-
//
|
1694
|
+
// Compute new buffer size.
|
1639
1695
|
CodeDesc desc; // the new buffer
|
1640
1696
|
if (buffer_size_ < 4*KB) {
|
1641
1697
|
desc.buffer_size = 4*KB;
|
@@ -1646,20 +1702,20 @@ void Assembler::GrowBuffer() {
|
|
1646
1702
|
}
|
1647
1703
|
CHECK_GT(desc.buffer_size, 0); // no overflow
|
1648
1704
|
|
1649
|
-
//
|
1705
|
+
// Setup new buffer.
|
1650
1706
|
desc.buffer = NewArray<byte>(desc.buffer_size);
|
1651
1707
|
|
1652
1708
|
desc.instr_size = pc_offset();
|
1653
1709
|
desc.reloc_size = (buffer_ + buffer_size_) - reloc_info_writer.pos();
|
1654
1710
|
|
1655
|
-
//
|
1711
|
+
// Copy the data.
|
1656
1712
|
int pc_delta = desc.buffer - buffer_;
|
1657
1713
|
int rc_delta = (desc.buffer + desc.buffer_size) - (buffer_ + buffer_size_);
|
1658
1714
|
memmove(desc.buffer, buffer_, desc.instr_size);
|
1659
1715
|
memmove(reloc_info_writer.pos() + rc_delta,
|
1660
1716
|
reloc_info_writer.pos(), desc.reloc_size);
|
1661
1717
|
|
1662
|
-
//
|
1718
|
+
// Switch buffers.
|
1663
1719
|
DeleteArray(buffer_);
|
1664
1720
|
buffer_ = desc.buffer;
|
1665
1721
|
buffer_size_ = desc.buffer_size;
|
@@ -1667,11 +1723,11 @@ void Assembler::GrowBuffer() {
|
|
1667
1723
|
reloc_info_writer.Reposition(reloc_info_writer.pos() + rc_delta,
|
1668
1724
|
reloc_info_writer.last_pc() + pc_delta);
|
1669
1725
|
|
1670
|
-
//
|
1726
|
+
// None of our relocation types are pc relative pointing outside the code
|
1671
1727
|
// buffer nor pc absolute pointing inside the code buffer, so there is no need
|
1672
|
-
// to relocate any emitted relocation entries
|
1728
|
+
// to relocate any emitted relocation entries.
|
1673
1729
|
|
1674
|
-
//
|
1730
|
+
// Relocate pending relocation entries.
|
1675
1731
|
for (int i = 0; i < num_prinfo_; i++) {
|
1676
1732
|
RelocInfo& rinfo = prinfo_[i];
|
1677
1733
|
ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
|
@@ -1686,16 +1742,16 @@ void Assembler::GrowBuffer() {
|
|
1686
1742
|
void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
|
1687
1743
|
RelocInfo rinfo(pc_, rmode, data); // we do not try to reuse pool constants
|
1688
1744
|
if (rmode >= RelocInfo::JS_RETURN && rmode <= RelocInfo::STATEMENT_POSITION) {
|
1689
|
-
// Adjust code for new modes
|
1745
|
+
// Adjust code for new modes.
|
1690
1746
|
ASSERT(RelocInfo::IsJSReturn(rmode)
|
1691
1747
|
|| RelocInfo::IsComment(rmode)
|
1692
1748
|
|| RelocInfo::IsPosition(rmode));
|
1693
|
-
//
|
1749
|
+
// These modes do not need an entry in the constant pool.
|
1694
1750
|
} else {
|
1695
1751
|
ASSERT(num_prinfo_ < kMaxNumPRInfo);
|
1696
1752
|
prinfo_[num_prinfo_++] = rinfo;
|
1697
1753
|
// Make sure the constant pool is not emitted in place of the next
|
1698
|
-
// instruction for which we just recorded relocation info
|
1754
|
+
// instruction for which we just recorded relocation info.
|
1699
1755
|
BlockConstPoolBefore(pc_offset() + kInstrSize);
|
1700
1756
|
}
|
1701
1757
|
if (rinfo.rmode() != RelocInfo::NONE) {
|
@@ -1722,7 +1778,7 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
|
|
1722
1778
|
// blocked for a specific range.
|
1723
1779
|
next_buffer_check_ = pc_offset() + kCheckConstInterval;
|
1724
1780
|
|
1725
|
-
// There is nothing to do if there are no pending relocation info entries
|
1781
|
+
// There is nothing to do if there are no pending relocation info entries.
|
1726
1782
|
if (num_prinfo_ == 0) return;
|
1727
1783
|
|
1728
1784
|
// We emit a constant pool at regular intervals of about kDistBetweenPools
|
@@ -1748,10 +1804,11 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
|
|
1748
1804
|
// no_const_pool_before_, which is checked here. Also, recursive calls to
|
1749
1805
|
// CheckConstPool are blocked by no_const_pool_before_.
|
1750
1806
|
if (pc_offset() < no_const_pool_before_) {
|
1751
|
-
// Emission is currently blocked; make sure we try again as soon as
|
1807
|
+
// Emission is currently blocked; make sure we try again as soon as
|
1808
|
+
// possible.
|
1752
1809
|
next_buffer_check_ = no_const_pool_before_;
|
1753
1810
|
|
1754
|
-
// Something is wrong if emission is forced and blocked at the same time
|
1811
|
+
// Something is wrong if emission is forced and blocked at the same time.
|
1755
1812
|
ASSERT(!force_emit);
|
1756
1813
|
return;
|
1757
1814
|
}
|
@@ -1765,23 +1822,23 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
|
|
1765
1822
|
jump_instr + kInstrSize + num_prinfo_*(kInstrSize + kMaxRelocSize);
|
1766
1823
|
while (buffer_space() <= (max_needed_space + kGap)) GrowBuffer();
|
1767
1824
|
|
1768
|
-
// Block recursive calls to CheckConstPool
|
1825
|
+
// Block recursive calls to CheckConstPool.
|
1769
1826
|
BlockConstPoolBefore(pc_offset() + jump_instr + kInstrSize +
|
1770
1827
|
num_prinfo_*kInstrSize);
|
1771
1828
|
// Don't bother to check for the emit calls below.
|
1772
1829
|
next_buffer_check_ = no_const_pool_before_;
|
1773
1830
|
|
1774
|
-
// Emit jump over constant pool if necessary
|
1831
|
+
// Emit jump over constant pool if necessary.
|
1775
1832
|
Label after_pool;
|
1776
1833
|
if (require_jump) b(&after_pool);
|
1777
1834
|
|
1778
1835
|
RecordComment("[ Constant Pool");
|
1779
1836
|
|
1780
|
-
// Put down constant pool marker
|
1781
|
-
//
|
1837
|
+
// Put down constant pool marker "Undefined instruction" as specified by
|
1838
|
+
// A3.1 Instruction set encoding.
|
1782
1839
|
emit(0x03000000 | num_prinfo_);
|
1783
1840
|
|
1784
|
-
// Emit constant pool entries
|
1841
|
+
// Emit constant pool entries.
|
1785
1842
|
for (int i = 0; i < num_prinfo_; i++) {
|
1786
1843
|
RelocInfo& rinfo = prinfo_[i];
|
1787
1844
|
ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
|
@@ -1789,8 +1846,8 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
|
|
1789
1846
|
rinfo.rmode() != RelocInfo::STATEMENT_POSITION);
|
1790
1847
|
Instr instr = instr_at(rinfo.pc());
|
1791
1848
|
|
1792
|
-
// Instruction to patch must be a ldr/str [pc, #offset]
|
1793
|
-
// P and U set, B and W clear, Rn == pc, offset12 still 0
|
1849
|
+
// Instruction to patch must be a ldr/str [pc, #offset].
|
1850
|
+
// P and U set, B and W clear, Rn == pc, offset12 still 0.
|
1794
1851
|
ASSERT((instr & (7*B25 | P | U | B | W | 15*B16 | Off12Mask)) ==
|
1795
1852
|
(2*B25 | P | U | pc.code()*B16));
|
1796
1853
|
int delta = pc_ - rinfo.pc() - 8;
|