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
data/lib/v8/to.rb
CHANGED
@@ -5,23 +5,75 @@ module V8
|
|
5
5
|
def ruby(value)
|
6
6
|
case value
|
7
7
|
when V8::C::Function then V8::Function.new(value)
|
8
|
+
when V8::C::Array then V8::Array.new(value)
|
8
9
|
when V8::C::Object then V8::Object.new(value)
|
9
|
-
when V8::C::String then
|
10
|
+
when V8::C::String then value.Utf8Value()
|
11
|
+
when V8::C::Date then Time.at(value.NumberValue())
|
10
12
|
else
|
11
13
|
value
|
12
14
|
end
|
13
15
|
end
|
14
|
-
|
16
|
+
|
17
|
+
alias_method :rb, :ruby
|
18
|
+
|
15
19
|
def v8(value)
|
16
20
|
case value
|
17
|
-
when
|
18
|
-
|
19
|
-
when
|
20
|
-
|
21
|
+
when V8::Object
|
22
|
+
value.instance_eval {@native}
|
23
|
+
when String, Symbol
|
24
|
+
C::String::New(value.to_s)
|
25
|
+
when Proc,Method
|
26
|
+
template = C::FunctionTemplate::New() do |arguments|
|
27
|
+
rbargs = []
|
28
|
+
for i in 0..arguments.Length() - 1
|
29
|
+
rbargs << To.ruby(arguments[i])
|
30
|
+
end
|
31
|
+
V8::Function.rubycall(value, *rbargs)
|
32
|
+
end
|
33
|
+
return template.GetFunction()
|
34
|
+
when ::Array
|
35
|
+
C::Array::New(value.length).tap do |a|
|
36
|
+
value.each_with_index do |item, i|
|
37
|
+
a.Set(i, To.v8(item))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
when ::Hash
|
41
|
+
C::Object::New().tap do |o|
|
42
|
+
value.each do |key, value|
|
43
|
+
o.Set(To.v8(key), To.v8(value))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
when ::Time
|
47
|
+
C::Date::New(value)
|
48
|
+
when nil,Numeric,TrueClass,FalseClass
|
21
49
|
value
|
50
|
+
else
|
51
|
+
rubyobject = C::ObjectTemplate::New()
|
52
|
+
rubyobject.SetNamedPropertyHandler(
|
53
|
+
NamedPropertyGetter,
|
54
|
+
NamedPropertySetter,
|
55
|
+
nil,
|
56
|
+
nil,
|
57
|
+
NamedPropertyEnumerator
|
58
|
+
)
|
59
|
+
obj = nil
|
60
|
+
unless C::Context::InContext()
|
61
|
+
cxt = C::Context::New()
|
62
|
+
cxt.Enter()
|
63
|
+
begin
|
64
|
+
obj = rubyobject.NewInstance()
|
65
|
+
obj.SetHiddenValue(C::String::New("TheRubyRacer::RubyObject"), C::External::Wrap(value))
|
66
|
+
ensure
|
67
|
+
cxt.Exit()
|
68
|
+
end
|
69
|
+
else
|
70
|
+
obj = rubyobject.NewInstance()
|
71
|
+
obj.SetHiddenValue(C::String::New("TheRubyRacer::RubyObject"), C::External::Wrap(value))
|
72
|
+
end
|
73
|
+
return obj
|
22
74
|
end
|
23
75
|
end
|
24
|
-
|
76
|
+
|
25
77
|
def camel_case(str)
|
26
78
|
str.to_s.gsub(/_(\w)/) {$1.upcase}
|
27
79
|
end
|
data/spec/ext/cxt_spec.rb
CHANGED
@@ -6,20 +6,7 @@ include V8
|
|
6
6
|
describe C::Context do
|
7
7
|
|
8
8
|
it "should not have a current context if no context is open" do
|
9
|
-
C::Context::
|
10
|
-
end
|
11
|
-
|
12
|
-
it "can determine if there is a current context" do
|
13
|
-
C::Context::InContext().should be(false)
|
14
|
-
C::Context.new.open do |cxt|
|
15
|
-
C::Context::InContext().should be(true)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
it "returns the currently open context" do
|
20
|
-
C::Context.new.open do |cxt|
|
21
|
-
cxt.should be_eql(C::Context::GetCurrent())
|
22
|
-
cxt.should == C::Context::GetCurrent()
|
23
|
-
end
|
9
|
+
C::Context::GetEntered().should be_nil
|
24
10
|
end
|
11
|
+
|
25
12
|
end
|
data/spec/ext/func_spec.rb
CHANGED
@@ -4,39 +4,46 @@ include V8
|
|
4
4
|
|
5
5
|
describe C::Function do
|
6
6
|
it "is callable" do
|
7
|
-
|
7
|
+
Context.new do |cxt|
|
8
8
|
f = cxt.eval('(function() {return "Hello World"})', '<eval>');
|
9
|
-
f.
|
9
|
+
f.call(nil).should == "Hello World"
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
it "receives proper argument length from ruby" do
|
14
|
-
|
14
|
+
Context.new do |cxt|
|
15
15
|
f = cxt.eval('(function() {return arguments.length})', 'eval')
|
16
|
-
f.
|
16
|
+
f.call(nil,1, 2, 3).should == 3
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
it "maps all arguments from ruby" do
|
21
|
-
|
21
|
+
Context.new do |cxt|
|
22
22
|
f = cxt.eval('(function(one, two, three) {return one + two + three})', 'eval')
|
23
|
-
f.
|
23
|
+
f.call(nil, 1,2,3).should == 6
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
it "properly maps ruby objects back and forth from arguments to return value" do
|
28
|
-
|
28
|
+
Context.new do |cxt|
|
29
29
|
Object.new.tap do |this|
|
30
30
|
f = cxt.eval('(function() {return this})', 'eval')
|
31
|
-
f.
|
31
|
+
f.call(this).should be(this)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
it "can be called outside of a context" do
|
37
|
-
|
37
|
+
Context.new do |cxt|
|
38
38
|
@f = cxt.eval('(function() {return "Call Me"})', 'eval')
|
39
39
|
end
|
40
|
-
@f.
|
40
|
+
@f.call(nil).should == "Call Me"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "is reflected properly" do
|
44
|
+
Context.new do |cxt|
|
45
|
+
cxt['say'] = lambda {|word, times| word * times}
|
46
|
+
cxt.eval('say("Hello", 3)').should == "HelloHelloHello"
|
47
|
+
end
|
41
48
|
end
|
42
49
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../spec_helper.rb"
|
2
|
+
|
3
|
+
include V8
|
4
|
+
|
5
|
+
describe C::TryCatch do
|
6
|
+
|
7
|
+
it "does not allow instance creation by default" do
|
8
|
+
lambda {
|
9
|
+
C::TryCatch.new
|
10
|
+
}.should raise_error
|
11
|
+
end
|
12
|
+
|
13
|
+
it "will do nothing if not passed a block" do
|
14
|
+
C::TryCatch.try.should == nil
|
15
|
+
end
|
16
|
+
|
17
|
+
it "executes a block in the context of a C++ stack frame" do
|
18
|
+
C::TryCatch.try do |catch|
|
19
|
+
catch.HasCaught().should be(false)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "raises an erro if you try to access it outside of its scope" do
|
24
|
+
tc = C::TryCatch.try do |catch|
|
25
|
+
catch.tap {}
|
26
|
+
end
|
27
|
+
lambda {
|
28
|
+
tc.HasCaught()
|
29
|
+
}.should raise_error(ScriptError)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
data/spec/foo.rb
ADDED
data/spec/redjs/jsapi_spec.rb
CHANGED
@@ -4,76 +4,89 @@ require "#{File.dirname(__FILE__)}/../redjs_helper.rb"
|
|
4
4
|
describe "Ruby Javascript API" do
|
5
5
|
|
6
6
|
describe "Basic Evaluation" do
|
7
|
+
|
8
|
+
before do
|
9
|
+
@cxt = Context.new
|
10
|
+
end
|
11
|
+
|
7
12
|
it "can evaluate some javascript" do
|
8
|
-
|
13
|
+
@cxt.eval("5 + 3").should == 8
|
9
14
|
end
|
10
15
|
|
11
16
|
it "can pass back null to ruby" do
|
12
|
-
|
17
|
+
@cxt.eval("null").should be_nil
|
13
18
|
end
|
14
19
|
|
15
20
|
it "can pass back undefined to ruby" do
|
16
|
-
|
21
|
+
@cxt.eval("this.undefined").should be_nil
|
17
22
|
end
|
18
23
|
|
19
24
|
it "can pass the empty string back to ruby" do
|
20
|
-
|
25
|
+
@cxt.eval("''").should == ""
|
21
26
|
end
|
22
27
|
|
23
28
|
it "can pass doubles back to ruby" do
|
24
|
-
|
29
|
+
@cxt.eval("2.5").should == 2.5
|
25
30
|
end
|
26
31
|
|
27
32
|
it "can pass fixed numbers back to ruby" do
|
28
|
-
|
33
|
+
@cxt.eval("1").should == 1
|
29
34
|
end
|
30
35
|
|
31
36
|
it "can pass boolean values back to ruby" do
|
32
|
-
|
33
|
-
|
37
|
+
@cxt.eval("true").should be(true)
|
38
|
+
@cxt.eval("false").should be(false)
|
34
39
|
end
|
35
40
|
|
36
41
|
it "treats nil and the empty string as the same thing when it comes to eval" do
|
37
|
-
|
42
|
+
@cxt.eval(nil).should == Context.eval('')
|
38
43
|
end
|
39
44
|
|
40
45
|
it "can pass back strings to ruby" do
|
41
|
-
|
42
|
-
|
43
|
-
cxt.eval("foo").should == "Hello World"
|
44
|
-
end
|
46
|
+
@cxt['foo'] = "Hello World"
|
47
|
+
@cxt.eval("foo").should == "Hello World"
|
45
48
|
end
|
46
49
|
|
47
50
|
it "can pass back very long strings to ruby" do
|
48
51
|
lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis faucibus, diam vel pellentesque aliquet, nisl sapien molestie eros, vitae vehicula libero massa vel neque. Phasellus tempor pharetra ipsum vel venenatis. Quisque vitae nisl vitae quam mattis pellentesque et in sapien. Sed at lectus quis eros pharetra feugiat non ac neque. Vivamus lacus eros, feugiat at volutpat at, viverra id nisl. Vivamus ac dolor eleifend libero venenatis pharetra ut iaculis arcu. Donec neque nibh, vehicula non porta a, consectetur eu erat. Sed eleifend, metus vel euismod placerat, lectus lectus sollicitudin nisl, ac elementum sem quam nec dolor. In hac habitasse platea dictumst. Proin vitae suscipit orci. Suspendisse a ipsum vel lorem tempus scelerisque et vitae neque. Proin sodales, tellus sit amet consequat cursus, odio massa ultricies enim, eu fermentum velit lectus in lacus. Quisque eu porttitor diam. Nunc felis purus, facilisis non tristique ac, pulvinar nec nulla. Duis dolor risus, egestas nec tristique ac, ullamcorper cras amet."
|
49
|
-
|
50
|
-
cxt.eval("'#{lorem}'").should == lorem
|
51
|
-
end
|
52
|
+
@cxt.eval("'#{lorem}'").should == lorem
|
52
53
|
end
|
53
54
|
|
54
55
|
it "can pass objects back to ruby" do
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
embedded['badda'].should == 'bing'
|
64
|
-
end
|
56
|
+
@cxt.eval("({foo: 'bar', baz: 'bang', '5': 5, embedded: {badda: 'bing'}})").tap do |object|
|
57
|
+
object.should_not be_nil
|
58
|
+
object['foo'].should == 'bar'
|
59
|
+
object['baz'].should == 'bang'
|
60
|
+
object['5'].should == 5
|
61
|
+
object['embedded'].tap do |embedded|
|
62
|
+
embedded.should_not be_nil
|
63
|
+
embedded['badda'].should == 'bing'
|
65
64
|
end
|
66
65
|
end
|
67
66
|
end
|
68
67
|
|
69
68
|
it "unwraps ruby objects returned by embedded ruby code to maintain referential integrity" do
|
70
69
|
Object.new.tap do |o|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
70
|
+
@cxt['get'] = lambda {o}
|
71
|
+
@cxt.eval('get()').should be(o)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
it "converts arrays to javascript" do
|
76
|
+
@cxt['a'] = [1,2,4]
|
77
|
+
@cxt.eval('var sum = 0;for (var i = 0; i < a.length; i++) {sum += a[i]}; sum').should == 7
|
78
|
+
@cxt.eval('[1,2,3]').tap do |a|
|
79
|
+
a.length.should == 3
|
80
|
+
a.to_a.should == [1,2,3]
|
75
81
|
end
|
76
|
-
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it "converts ruby hashes to javascript objects" do
|
85
|
+
@cxt['h'] = {:foo => 'bar', :baz => 'bang', :bar => {'hello' => 'world'}}
|
86
|
+
@cxt['h']['foo'].should == 'bar'
|
87
|
+
@cxt['h']['baz'].should == 'bang'
|
88
|
+
@cxt['h']['bar']['hello'].should == 'world'
|
89
|
+
end
|
77
90
|
end
|
78
91
|
|
79
92
|
describe "Calling Ruby Code From Within Javascript" do
|
@@ -81,15 +94,54 @@ describe "Ruby Javascript API" do
|
|
81
94
|
before(:each) do
|
82
95
|
@class = Class.new
|
83
96
|
@instance = @class.new
|
97
|
+
@cxt = Context.new
|
98
|
+
@cxt['puts'] = lambda {|o| puts o.inspect}
|
99
|
+
@cxt['o'] = @instance
|
84
100
|
end
|
85
101
|
|
86
102
|
it "can embed a closure into a context and call it" do
|
87
|
-
|
88
|
-
|
89
|
-
|
103
|
+
@cxt["say"] = lambda {|word, times| word * times}
|
104
|
+
@cxt.eval("say('Hello',2)").should == "HelloHello"
|
105
|
+
end
|
106
|
+
|
107
|
+
it "translates ruby Array to Javascript Array" do
|
108
|
+
class_eval do
|
109
|
+
def ruby_array
|
110
|
+
[]
|
111
|
+
end
|
90
112
|
end
|
113
|
+
evaljs('o.ruby_array instanceof Array').should == true
|
91
114
|
end
|
92
115
|
|
116
|
+
it "translates ruby Time to Javascript Date" do
|
117
|
+
class_eval do
|
118
|
+
def ruby_time
|
119
|
+
Time.new
|
120
|
+
end
|
121
|
+
end
|
122
|
+
evaljs('o.ruby_time instanceof Date').should == true
|
123
|
+
evaljs('o.ruby_time.valueOf()').should == Time.new.to_i
|
124
|
+
evaljs('new Date()').should be_kind_of(Time)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "translates ruby true to Javascript true" do
|
128
|
+
class_eval do
|
129
|
+
def bool
|
130
|
+
true
|
131
|
+
end
|
132
|
+
end
|
133
|
+
evaljs('o.bool === true').should == true
|
134
|
+
end
|
135
|
+
|
136
|
+
it "translates ruby false to Javascript false" do
|
137
|
+
class_eval do
|
138
|
+
def bool
|
139
|
+
false
|
140
|
+
end
|
141
|
+
end
|
142
|
+
evaljs('o.bool === false').should == true
|
143
|
+
end
|
144
|
+
|
93
145
|
it "can embed a ruby object into a context and call its methods" do
|
94
146
|
class_eval do
|
95
147
|
def say_hello(to)
|
@@ -109,14 +161,13 @@ describe "Ruby Javascript API" do
|
|
109
161
|
end
|
110
162
|
new(5)
|
111
163
|
end
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
end
|
164
|
+
|
165
|
+
@cxt['timesfive'] = five.method(:times)
|
166
|
+
@cxt.eval('timesfive(3)').should == 15
|
116
167
|
end
|
117
168
|
|
118
169
|
it "reports ruby methods that do not exist as undefined" do
|
119
|
-
Context.
|
170
|
+
Context.new(:with => Object.new) do |cxt|
|
120
171
|
cxt.eval('this.foobar').should be_nil
|
121
172
|
end
|
122
173
|
end
|
@@ -167,15 +218,13 @@ describe "Ruby Javascript API" do
|
|
167
218
|
end
|
168
219
|
|
169
220
|
it "will see a method that appears after the wrapper was first created" do
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
"whiz#{str}!"
|
175
|
-
end
|
221
|
+
@cxt['o'] = @instance
|
222
|
+
class_eval do
|
223
|
+
def whiz(str)
|
224
|
+
"whiz#{str}!"
|
176
225
|
end
|
177
|
-
cxt.eval("o.whiz('bang')").should == "whizbang!"
|
178
226
|
end
|
227
|
+
@cxt.eval("o.whiz('bang')").should == "whizbang!"
|
179
228
|
end
|
180
229
|
|
181
230
|
it "treats ruby methods that have an arity of 0 as javascript properties by default" do
|
@@ -215,11 +264,7 @@ describe "Ruby Javascript API" do
|
|
215
264
|
end
|
216
265
|
|
217
266
|
def evaljs(str)
|
218
|
-
|
219
|
-
cxt['puts'] = lambda {|o| puts o.inspect}
|
220
|
-
cxt['o'] = @instance
|
221
|
-
cxt.eval(str)
|
222
|
-
end
|
267
|
+
@cxt.eval(str)
|
223
268
|
end
|
224
269
|
|
225
270
|
def class_eval(&body)
|
@@ -229,22 +274,28 @@ describe "Ruby Javascript API" do
|
|
229
274
|
end
|
230
275
|
|
231
276
|
describe "Calling JavaScript Code From Within Ruby" do
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
f.call(nil, 1,2).should == 3
|
236
|
-
end
|
277
|
+
|
278
|
+
before(:each) do
|
279
|
+
@cxt = Context.new
|
237
280
|
end
|
238
281
|
|
239
|
-
it "
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
282
|
+
it "allows you to capture a reference to a javascript function and call it" do
|
283
|
+
f = @cxt.eval('(function add(lhs, rhs) {return lhs + rhs})')
|
284
|
+
f.call(nil, 1,2).should == 3
|
285
|
+
end
|
286
|
+
|
287
|
+
it "unwraps objects that are backed by javascript objects to pass their native equivalents" do |cxt|
|
288
|
+
@cxt.eval('obj = {foo: "bar"}')
|
289
|
+
f = @cxt.eval('(function() {return this == obj})')
|
290
|
+
f.call(@cxt['obj']).should be(true)
|
244
291
|
end
|
245
292
|
end
|
246
293
|
|
247
294
|
describe "Setting up the Host Environment" do
|
295
|
+
before(:each) do
|
296
|
+
@cxt = Context.new
|
297
|
+
end
|
298
|
+
|
248
299
|
it "can eval javascript with a given ruby object as the scope." do
|
249
300
|
scope = Class.new.class_eval do
|
250
301
|
def plus(lhs, rhs)
|
@@ -258,7 +309,7 @@ describe "Ruby Javascript API" do
|
|
258
309
|
new
|
259
310
|
end
|
260
311
|
|
261
|
-
Context.
|
312
|
+
Context.new(:with => scope) do |cxt|
|
262
313
|
cxt.eval("plus(1,2)").should == 3
|
263
314
|
cxt.eval("minus(10, 20)").should == -10
|
264
315
|
cxt.eval("this").should be(scope)
|
@@ -266,18 +317,22 @@ describe "Ruby Javascript API" do
|
|
266
317
|
end
|
267
318
|
|
268
319
|
it "can directly embed ruby values into javascript" do
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
320
|
+
@cxt["bar"] = 9
|
321
|
+
@cxt['foo'] = "bar"
|
322
|
+
@cxt['num'] = 3.14
|
323
|
+
@cxt['trU'] = true
|
324
|
+
@cxt['falls'] = false
|
325
|
+
@cxt.eval("bar + 10").should be(19)
|
326
|
+
@cxt.eval('foo').should == "bar"
|
327
|
+
@cxt.eval('num').should == 3.14
|
328
|
+
@cxt.eval('trU').should be(true)
|
329
|
+
@cxt.eval('falls').should be(false)
|
330
|
+
end
|
331
|
+
|
332
|
+
it "has the global object available as a javascript value" do
|
333
|
+
@cxt['foo'] = 'bar'
|
334
|
+
@cxt.scope.should be_kind_of(V8::Object)
|
335
|
+
@cxt.scope['foo'].should == 'bar'
|
281
336
|
end
|
282
337
|
|
283
338
|
it "extends object to allow for the arbitrary execution of javascript with any object as the scope" do
|
@@ -298,7 +353,7 @@ describe "Ruby Javascript API" do
|
|
298
353
|
it "can limit the number of instructions that are executed in the context" do
|
299
354
|
pending "haven't figured out how to constrain resources in V8"
|
300
355
|
lambda {
|
301
|
-
Context.
|
356
|
+
Context.new do |cxt|
|
302
357
|
cxt.instruction_limit = 100 * 1000
|
303
358
|
timeout(1) do
|
304
359
|
cxt.eval('while (true);')
|
@@ -325,7 +380,7 @@ describe "Ruby Javascript API" do
|
|
325
380
|
foo = 'bar'
|
326
381
|
five();
|
327
382
|
EOJS
|
328
|
-
Context.
|
383
|
+
Context.new do |cxt|
|
329
384
|
cxt.eval(source, "StringIO").should == 5
|
330
385
|
cxt['foo'].should == "bar"
|
331
386
|
end
|
@@ -334,7 +389,7 @@ describe "Ruby Javascript API" do
|
|
334
389
|
it "can load a file into the runtime" do
|
335
390
|
mock(:JavascriptSourceFile).tap do |file|
|
336
391
|
File.should_receive(:open).with("path/to/mysource.js").and_yield(file)
|
337
|
-
Context.
|
392
|
+
Context.new do |cxt|
|
338
393
|
cxt.should_receive(:evaluate).with(file, "path/to/mysource.js", 1)
|
339
394
|
cxt.load("path/to/mysource.js")
|
340
395
|
end
|
@@ -346,16 +401,12 @@ describe "Ruby Javascript API" do
|
|
346
401
|
describe "A Javascript Object Reflected Into Ruby" do
|
347
402
|
|
348
403
|
before(:each) do
|
349
|
-
@
|
350
|
-
|
351
|
-
cxt.eval("o = new Object(); o")
|
352
|
-
end
|
404
|
+
@cxt = Context.new
|
405
|
+
@o = @cxt.eval("o = new Object(); o")
|
353
406
|
end
|
354
407
|
|
355
408
|
def evaljs(js)
|
356
|
-
@cxt.
|
357
|
-
@cxt.eval(js)
|
358
|
-
end
|
409
|
+
@cxt.eval(js)
|
359
410
|
end
|
360
411
|
|
361
412
|
it "can have its properties manipulated via ruby style [] hash access" do
|
@@ -377,7 +428,7 @@ describe "Ruby Javascript API" do
|
|
377
428
|
end
|
378
429
|
|
379
430
|
it "traverses the prototype chain when hash accessing properties from the ruby object" do
|
380
|
-
Context.
|
431
|
+
Context.new do |cxt|
|
381
432
|
cxt.eval(<<EOJS)['bar'].should == "baz"
|
382
433
|
function Foo() {}
|
383
434
|
Foo.prototype.bar = 'baz'
|
@@ -387,14 +438,12 @@ EOJS
|
|
387
438
|
end
|
388
439
|
|
389
440
|
it "is enumenable" do
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
h[k] = v
|
395
|
-
end
|
396
|
-
h.should == {"foo" => 'bar', "bang" => 'baz', 5 => 'flip'}
|
441
|
+
evaljs("o.foo = 'bar'; o.bang = 'baz'; o[5] = 'flip'")
|
442
|
+
{}.tap do |h|
|
443
|
+
@o.each do |k,v|
|
444
|
+
h[k] = v
|
397
445
|
end
|
446
|
+
h.should == {"foo" => 'bar', "bang" => 'baz', 5 => 'flip'}
|
398
447
|
end
|
399
448
|
end
|
400
449
|
end
|
@@ -402,7 +451,7 @@ end
|
|
402
451
|
describe "Exception Handling" do
|
403
452
|
it "raises javascript exceptions as ruby exceptions" do
|
404
453
|
lambda {
|
405
|
-
Context.
|
454
|
+
Context.eval('foo')
|
406
455
|
}.should raise_error(JavascriptError)
|
407
456
|
end
|
408
457
|
|
@@ -414,13 +463,41 @@ end
|
|
414
463
|
|
415
464
|
it "should track message state" do
|
416
465
|
begin
|
417
|
-
Context.
|
418
|
-
cxt.eval("var foo = 'bar';\nsyntax error!", "foo.js")
|
419
|
-
end
|
466
|
+
Context.new.eval("var foo = 'bar';\nsyntax error!", "foo.js")
|
420
467
|
rescue JavascriptError => e
|
421
468
|
e.line_number.should == 2
|
422
469
|
e.source_name.should == "foo.js"
|
423
470
|
end
|
424
471
|
end
|
472
|
+
|
473
|
+
it "translates ruby exceptions into javascript exceptions if they are thrown from code called it javascript" do
|
474
|
+
Context.new do |cxt|
|
475
|
+
cxt['rputs'] = lambda {|msg| rputs msg}
|
476
|
+
cxt['boom'] = lambda do
|
477
|
+
raise "BOOM!"
|
478
|
+
end
|
479
|
+
cxt.eval('var msg;try {boom()} catch (e) {msg = e.message};msg').should == 'BOOM!'
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
it "will allow exceptions to pass through multiple languages boundaries (i.e. js -> rb -> js -> rb)" do
|
484
|
+
Context.new do |cxt|
|
485
|
+
cxt['one'] = lambda do
|
486
|
+
cxt.eval('two()', 'one.js')
|
487
|
+
end
|
488
|
+
cxt['two'] = lambda do
|
489
|
+
cxt.eval('three()', 'two.js')
|
490
|
+
end
|
491
|
+
cxt['three'] = lambda do
|
492
|
+
cxt.eval('throw "BOOM!"', "three.js")
|
493
|
+
end
|
494
|
+
lambda {
|
495
|
+
cxt['one'].call(cxt.scope)
|
496
|
+
}.should raise_error {|e|
|
497
|
+
#TODO: assert something about the contents of the stack?
|
498
|
+
#--cowboyd 05/25/2010
|
499
|
+
}
|
500
|
+
end
|
501
|
+
end
|
425
502
|
end
|
426
503
|
end
|